前言
原创文章,转载引用务必注明链接。水平有限,欢迎指正。
本文使用markdown写成,为获得更好的阅读体验,推荐访问我的博客原文:
http://www.omoikane.cn/2016/09/15/bbb_debian/
系统环境:Windows 7 Home Pentium x64|Deepin Linux 15.2 x64;Debian On BBB Industrial
预装系统介绍
相信之前用过BeagleBone Black的都记得预装的Ångström Linux系统,官方主页一度停止更新,opkg软件仓库也不再维护,不过经MOP小弟提醒发现其github项目主页依然活跃,向这些默默努力的人致敬!但是BeagleBoard官方提供的镜像还停留在2013年6月20日的版本,现在4G版BBB都是使用Debian。我们来看一看官方预装的系统情况,使用一根MicroUSB线(这个接口已经相对不多见了)与电脑连接后,下载安装驱动后,打开SSH客户端(Kitty或Xshell等),主机地址填192.168.7.2或beaglebone.local,用户名root,密码为空(另一个默认账户是debian:temppwd)。输入以下命令:
l***_release -a
cat /proc/version
uname -a
df -Th
netstat -lnp
可以看到当前系统版本为Debian 7.9 Wheezy,在wandboard (飞思卡尔 imx6q四核SoC)上编译,内核版本3.8.13,预装apache2 Web服务器,rdp远程桌面服务器,udhcpd DHCP服务器。
我们打开官方系统更新页面,可以看到目前最新的是发布于2016年5月13日的Debian 8.5 Jessie MicroSD卡镜像(然而下载链接写的8.4),要求至少4G存储空间(eMMC或者SD),另外官方提供了烧录到板载eMMC存储的方法。
FAQ:
-
如何从MicroSD卡启动
BBB默认从板载eMMC启动,按住USB接口旁边的USER/BOOT按钮(S2)然后开机即可从MicroSD启动
-
我不需要图形界面,默认系统占用空间过大
除了官方包含LXQT的Debian镜像,
访问这里可以看到更多选择,其中console版就是仅包含核心功能的镜像,但是没有USB Gadget驱动(无法模拟串口、以太网卡和存储设备),没有预装Apache2,X11,xrdp等。
-
除了Debian还有那些系统可用
-
串口调试功能如何使用
-
BBB上有没有类似树莓派的RPi.GPIO,wringPi这种操控GPIO的库
有,
BoneScript Library
-
通过 USB Gadget 驱动BBB的USB接口实现哪些功能
-
模拟以太网接口:192.168.7.2,劫持局域网dns解析后使用beaglebone.local也能访问
-
模拟Mass Storage (MSG):在宿主机中显示BEAGLEBONE的磁盘
-
模拟串口:可以查看串口输出,但是因为是模拟的,所以开关机信息和uboot无法查看调试
-
有没有比较全的文档wiki
看这里——elinux.org
更新板载系统
所需硬件:
所需软件(以Windows为例):
烧录系统(MicroSD+eMMC):
插上MicroSD卡,打开Win32 Disk Imager,选择解压出来的bone-debian-8.4-lxqt-4gb-ARMhf-2016-05-13-4gb.img文件,选择正确的写入设备(MicroSD卡),点击Write等待片刻即可。
烧录完成,将MicroSD卡插入BBB卡槽,按住USER/BOOT按钮后开机,即可从SD存储启动。
当然,我们的最终目的是升级eMMC的板载系统,具体方法官网也有讲到:
To turn these images into eMMC flasher images, edit the /boot/uEnv.txt file on the Linux partition on the microSD card and remove the '#' on the line with 'cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh'. Enabling this will cause booting the microSD card to flash the eMMC. Images are no longer provided here for this to avoid people accidentally overwriting their eMMC flash.
烧录好系统到MicroSD卡后,编辑/boot/uEnv.txt文件,取消注释cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh,从而开启自动烧录到eMMC的功能脚本。之所以不再提供单独的eMMC镜像是为了防止有些人大脑不清楚的时候误操作覆盖掉eMMC里面的系统文件(怎么感觉是官方自己这么干过得到的血的教训。。。)
注意!
l***lk |grep -q mmcblk1 && mkdir /media/sd && mount /dev/mmcblk1p1 /media/sd && sed -i 's/#cmdline=init/cmdline=init/g' /media/sd/boot/uEnv.txt && umount /media/sd && poweroff || echo please insert ur sdcard properly!
别看命令这么长,其实shell编程逻辑比较简单,|表示上一个命令的输出作为下一个命令的输入,&&表示上一命令执行成功则执行此命令,||表示上一命令失败则执行此命令。
所以上述命令的意思是查看当前存储设备——查找是否有sd卡插入——有则创建/media/sd目录并挂载——修改uEnv.txt文件,取消注释——卸载sd卡,关机(&& poweroff,方便烧录,可选)——如果没有检测到会提醒你正确插入sd卡。sed命令的用法看这里。
好的,趁着等待的这会儿,我去吃饭了~
吃完饭继续更新
咦,这和剧本写得不一样啊导演!四个灯全灭而不是全亮,不管了,拔掉MicroSD卡重启看看,当然这时如果有串口调试模块就好了。等了好一会儿,宿主机显示出BEAGLEBONE磁盘,SSH和虚拟串口都可以使用了。我们再看看新系统:
可以看到,更新后的系统是Debian Jessie 8.4(官网骗人啊),使用英伟达 (Nvidia,造显卡那个) jetson tk1开发板编译,内核版本4.4.9,默认没有安装rdp远程桌面服务。可用空间218M什么鬼。。。
更多信息可以使用以下命令:
cat /proc/cpuinfo # 查看CPU信息
dmesg | grep scheduler # 支持的系统I/O调度
cat /sys/block/mmcblk0/queue/scheduler # 当前所使用的I/O调度算法
cat /proc/driver/rtc # 板载RTC信息
cat /sys/power/state # 支持的电源管理模式
0