Showing posts with label beaglebone black. Show all posts
Showing posts with label beaglebone black. Show all posts

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的使用。

Saturday, August 2, 2014

beaglebone black简单入门(一)

玩了一阵arduino,感觉偏硬件很多,做一些复杂的软硬结合的工作不够方便,加之板子都扔在了国内,所以最近考虑换一个平台玩玩。在raspbery和beaglebone black(BBB)选择了BBB,因为觉得BBB配置会更高一些,接口也更丰富一点,当然BBB的教程资源和生态环境是不如raspberry的,但是仗着自己会一点点linux,和更喜欢用python开发,就硬着头皮入手了BBB。

下面简单介绍一点我的BBB的配置心得。

首先有一块BBB板子和usb cable足矣,什么屏幕,无线网卡都不需要,就可以开始尝试了,当然以后你可以完善这些外围配置,只是我觉得有网卡应该就ok了。

http://elinux.org/Beagleboard:BeagleBoneBlack
http://beagleboard.org/black
从这两个页面出发,把所有的链接文章都读一遍会帮助很大。

初始配置如下:
software:putty,http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
以windows 7为例

硬件:BBB,usb cable,带有网络连接的电脑。

在http://beagleboard.org/getting-started#step2下载BBB的driver安装。
如果插上BBB后出现相应的U盘,说明驱动工作正常。

打开BBB后,按https://learn.adafruit.com/downloads/pdf/ssh-to-beaglebone-black-over-usb.pdf的说明就可以使用ssh控制BBB了。

用户root,密码需要的话就是root。

根据http://lanceme.blogspot.com/2013/06/windows-7-internet-sharing-for.html的说明配置来配置BBB共享windows联网。
需要说明的是windows 7的ICS需要使用192.168.0.1来配置网关,如果你上网路由器已经使用了这个网址,就会弹出错误对话框,需要将路由器的地址设为别的地址,如果碰上这种情况请自行google。

联网之后就可以更新系统和安装软件了,前提是对linux有一定了解。

安装系统篇:
如果对默认的系统不满意,可以自己安装系统,参照http://elinux.org/Beagleboard:Debian_On_BeagleBone_Black.

如果有sd卡,可以使用sd卡来扩展系统空间,参照
http://elinux.org/Beagleboard:MicroSD_As_Extra_Storage
我的理解就是需要将系统分为两个区,第一个区是fat32格式,第二个区是linux分区就可以了,我都是手动在BBB上讲分区搞定的。需要用到fdisk和mkfs。
update:只是一个分区也可以挂载了。

网络设置
购买了TP-LINK WNT725N wifi module,但用得是8188的芯片,默认debian系统没有驱动,所以需要自己编译安装。
按照http://coremega.tumblr.com/post/78194792401/install-tp-link-wireless-n-adapter-tl-wn725n-on的步奏就可以。但是在第27步时需要在auto wlan0后面加入一行allow-hotplug wlan0,不然开机后还需要用ifup wlan0来手工启动wifi module。

再参考http://svay.com/blog/setting-up-a-wifi-connection-on-the-raspberrypi/进行配置。
在参照上面的设置后就可以无线上网了,但是驱动还是不太稳定,再进行大量下载时,系统有时就无端崩溃,因为我经常是远程操控,所以无法回来重启系统,最后还是选择用ethernet来连接网络。

使用ethernet不需要额外设置,直接连接就可以,经过多天的使用,网络连接非常稳定,不会造成系统崩溃。

经过上面的系统设置,beaglebone就可以正常的上网更新和安装软件了,后续阅读是beaglebone black简单入门(二)--- 系统配置, (三)---如何优化sd卡性能。