Thursday, February 26, 2015

beaglebone black简单入门(二)

从(一)中的简单配置,beaglebone black已经可以开始工作了。以下的设置假设操作系统是debian其安装在emmc中,有sd卡作为普通存储介质,emmc只作为系统盘。有可用的网络。

简单的术语:

在系统中emmc将被识别为/dev/mmcblk1,sd卡将被识别为/dev/mmcblk0,如果有移动硬盘接入,可能会识别为/dev/sdaX。

sd卡的格式化和挂载是一个很值得深入研究的问题,将在(3)中详细介绍。

假设你已经使用root用户通过ssh登陆了系统。

进行系统设置的第一步是创建用户和修改密码,系统默认的用户是root:root和debian:temppwd,这些都是公开的,所以为了安全起见,首先需要修改root和debian的用户密

码,同时为了更加安全,我希望创建一个全新的用户,拥有和debian一样的权限。

1.输入passwd修改root用户密码,在使用passwd debian修改debian用户密码。

2.创建新用户,比如beaglebone。
>>useradd beaglebone
该命令将创建beaglebone,处于同名的beaglebone group中。
用groups debian查看debian的用户组权限。
beaglebone@beaglebone:~$ groups debian
debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users netdev i2c admin spi systemd-journal weston-launch xenomai

将beaglebone添加进还没有加入的group中,比如
>>useradd -G adm,kmem,dialout,cdrom,floppy,audio,dip,video,plugdev,users, netdev, i2c,admin,spi ,systemd-journal,weston-launch,xenomai beaglebone

3.设置beaglebone用于sudo权限

首先用update-alternatives --config editor来修改系统默认的编辑器,我习惯用vim。

1)切换到root,运行:
su - (注意:su的后面有“-”符号,su - 和 su是不一样的)

2) sudo visudo
在root ALL=(ALL) ALL行的下面添加如下:
your-user-name ALL=(ALL) ALL
如果想在sudo的时候不需输入密码,则在root ALL=(ALL) ALL行的下面添加如下:
your-user-name ALL=(ALL) NOPASSWD: ALL

用户配置完毕。

重启beaglebone,用beaglebone远程登录beaglebone black。

beaglebone black没有ntc模块,所以系统时间无法保存,系统时间不对的话,会引起各种各样的问题,比如更新时间不对,编译出错。

查看时间的命令是
>>date

可以用
>>date -s mm/dd/yyyy来手工设定时间

用ntp来同步网络时间。
>>sudo apt-get update
>>sudo apt-get install ntp ntpdate

安装后ntp service也许有各种问题无法自动更新时间,所以可以用
>>ntpdate -u -s -b pool.ntp.org来手动更新时间

首先检查是否有xorg桌面比如lxde,因为我默认是要使用beaglebone作为服务器使用,所以不希望GUI占用太多存储空间和内存,所以要先进行系统精简。

参考下面的链接:
https://hifiduino.wordpress.com/2014/03/17/beaglebone-black-base-operating-system/

简单的总结就是:
>>dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
#查看安装程序占用空间

开始清理系统:

Remove X11 package (GUI)
>>apt-get remove -y x11-common
>>apt-get autoremove

Remove Desktop environment GNOME and GTK
>>apt-get remove libgtk-3-common --purge
>>apt-get autoremove
>>apt-get remove libgtk2.0-common --purge
>>apt-get autoremove
>>rm -r /usr/share/icons
>>apt-get remove gnome-* --purge
>>apt-get autoremove
>>apt-get remove desktop-base --purge
>>apt-get autoremove

>>df -h
查看系统空间占用

重启

内网转发

在router上设置内网转发

首先将router的访问端口由80改为8080,因为80端口是最不太可能被封锁的网络端口,所以当访问beaglebone black时,我希望用80端口访问。

假设beagleone black的局域网ip是192.168.1.7,在虚拟服务器,创建转发规则如下:
服务端口号:80
内部端口号:22
ip地址:192.168.1.7
协议:all

具体设置可以google路由器型号+远程web管理,转发规则等。

这样假设router的外网ip是212.168.1.1,在外部网络用ssh软件登陆212.168.1.1,端口80就可以访问beaglebone black了。ssh软件推荐mobaXterm,功能强大,且登陆后自动打开stfp功能,可以直接上传和下载文件。

中文化处理

自行google debian 中文化
在产生utf8_zh-CN的locale后,还需要在terminal进行设置。
>>vim ~/.profile
在最后加入
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

重启后,console就可以正常的显示和处理中文了,如果还有乱码,则需要将ssh软件的交互编码修改为utf8。

关于sd卡的挂载,网上有一堆方法,比如用udev规则或是udisks等等,设置相当繁琐,且经常不起作用,我的方案就是写个脚本用mount命令挂载即可。

手工mount最头疼的就是访问权限的问题,不同的format需要有不同的挂载参数。假设我需要挂载sd卡和一个外置硬盘。其访问node分别是/dev/mmcblk0p1和/dev/sda1,sd卡是ext4格式,外置硬盘是ntfs格式。

在/media下创建挂载点:
>>sudo mkdir /media/sd
>>sudo mkdir /media/usbhdd

再用chown来改变文件夹的用户属性
>>sudo chown beaglebone:beaglebone /media/sd
>>sudo chown beaglebone:beaglebone /media/usbhdd

用chmod改变访问权限为755
>>chmod -R 755 /media/sd
>>chmod -R 755 /media/usbhdd

准备工作都做好之后就可以mount了
sudo mount /dev/mmcblk0p1 /media/sd
sudo mount -t ntfs -o uid=beaglebone,gid=beaglebone /dev/sda1 /media/usbhdd

其中uid和gid是vfat和ntfs分区的权限管理参数,设置为当前用户后,其实对所有用户都是可读写的,所以如果用beaglebone black当多用户服务器的话,一定要小心。

另一个奇怪的现象是mount后的sd文件夹所属用户被改为了root用户组,当前用户无法读写。

这里需要重新用chown将sd改为beaglebone所有,这个动作将分区上的权限设置重新覆盖。
>>sudo chown beaglebone:beaglebone /media/sd
>>sudo umount /media/sd

再次mount
>>sudo mount /dev/mmcblk0p1 /media/sd

再用ls -l /media/sd查看,发现用户组已经是beaglebone了,以后就可以正常的mount,不用担心无权限访问了。

在~下创建脚本bbb-init
#!/bin/bash
mount /dev/mmcblk0p1 /media/sd
mount -t ntfs -o uid=beaglebone,gid=beaglebone /dev/sda1 /media/usbhdd

每次开机后用sudo执行以下就可以了。

关机脚本pd-bbb
#!/bin/bash
umount /media/sd
umount /media/usbhdd
reboot

关机时用这个指令

网络爬虫和编程

安装python3和相关的module库。

可以用sudo apt-cache search python3*来选择

安装sqlite3

安装phantomjs(需要编译安装)和selenium。

如果希望用firefox抓取,也可以安装xvfb和iceweasel。

网络浏览用w3m和links2,其他不推荐,因为是用ssh隧道,不支持frame buffer,所以是无法浏览图片的。

安装samba

安装vsftpd,unzip,tmux,ntfs-3g,mc,ipython3

tmux是很重要的工具,它最重要的一点就是可以运行命令与当前ssh进程隔离,这样如果ssh进程因为网络问题断开后,运行的程序不会因此而终止。请自行google tmux的使用。

No comments: