Beaglebone Black更新系统的方法

来源:互联网 发布:阿里云盒子root 编辑:程序博客网 时间:2024/06/06 06:47

正在写这篇随笔的时候,我的Beaglebone Black Rev. C正在烧写中。这个简单的操作竟然耗费了我将近3天的时间(当然,其中包括了下载系统镜像的时间)。

基本上,跟着官方的更新系统文档(可以在Beaglebone上电之后在设备内找到),就可以进行系统最新镜像的查找、下载、准备……然后烧写失败,其实最后发现不能烧写的原因非常简单,但可能是我做事粗心马虎吧,反正我是没有在官方的文档中找到,最后度娘了一下,解决了,为了不让后来者继续受此折磨(可能人家根本遇不到这个问题,我承认,我很浮躁),我决定还是整理一下,写出来。

0. 为什么要更新镜像

不太了解别人的动机,我的动机很简单,板子随带的系统是Debian 7,Linux的内核有点老。入手Beaglebone的原因其实主要是考虑其扩展IO比较多,不像树莓派;而且CPU是TI的AM335x系列的,正好和我接下来要做的一个项目吻合;最重要的是,比较小巧,携带起来比较方便。但我买之前实在是没有仔细看过官方的文档,以至于入手之后才发现,官方推荐的开发工具竟然是——Javascript,当我知道的时候顿时被雷的无比酸爽,Why Javascript? Why not Python?为了不同而不同吗?

不过好在我买他基本也是为了Hack,玩底层的一些东西,上层本来是计划用QT做个界面,然后开发一个Framebuffer设备,在上面装上一个液晶的,生活的本质就是折腾,用现成的东西就不如直接用笔记本了。

从这种意义上来讲,更新系统其实更主要的是对这个板子有一个深入的理解,我玩板子这么多年的经验告诉我,这个阶段遇到的问题越多,后期做底层开发时就会更容易,因为有了很多惨痛的经验和教训,失败和挫折绝对不是坏事儿。

1. 系统镜像的准备

基本上就别瞎折腾了,跟着官方的说明来,到http://beagleboard.org/latest-images去找最新的系统镜像,比如我用Debian 8.2,下载自不必谈,推荐用迅雷,原因就不解释了。

 

2. 烧写SD卡

下载之后的镜像通常是tar.xz的,windows下直接用7zip解压即可;如果是mac x或者linux,先xz -d xxx.tar.xz,然后再tar -xvf xxx.tar,最后得到img文件。

这个时候一个新手经常犯的错误就来了,如果你对SD卡的文件格式不了解,对你的操作系统也不够熟悉,我的建议是:绝对不要使用笔记本自带的SD卡插槽,用那种SD转USB的小东东最好,很多新手经常会在这个地方失败。

Windows下建议使用Win32DiskImager(到网上一搜一大把),如果是Mac X系统,建议使用命令行的方式,烧写方法可以参见树莓派的升级方法,基本上是一个dd的命令行操作,这里就不细说了。

不要想当然你把SD卡当成U盘来看待,认为直接把img镜像解压然后“拽”到盘符里就ok了,这样是不行的,具体原因要解释需要很长很长的篇幅,这里就不说了,如果对dd命令了解的话应该知道为什么。

 

3. 烧写eMMC

现在有了带有更新镜像的SD卡,开始进行Beaglebone的eMMC烧写了。

首先,最好验证一下你下载并烧写到SD卡上的系统镜像是好用的。先把SD卡插入到板子的SD卡插槽上,然后上电。

用SSH的方式登陆到板子上(192.168.7.2),系统应该自动从SD卡启动,应该会在登陆欢迎信息中看到Linux的版本,比如Debian 8,这就说明,系统镜像是好用的。

然后,给板子断电,拔掉SD卡,重新上电。

这里是tricky的部分,大部分按照官方说明却发现无法烧写eMMC的朋友大多是因为这个地方。板子默认是禁止掉这个烧写功能的,所以重启,通过SSH的方式再次登陆到板子上,注意,这次是登陆到板子eMMC上自带的系统(也就是旧的系统,如果忘记拔掉SD卡……鄙视一下自己吧,注意看一下登陆的欢迎信息,确定你登陆的是eMMC上的系统)。

修改/boot/uEnv.txt文件,搜索关键字eMMC Flasher,会定位到如下信息:

##enable BBB: eMMC Flasher:

#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

看到了吧?这个feature是默认被禁止掉的,将cmdline前面的注释#去掉,然后保存。

 

给板子断电(当然可以温柔一点shutdown -h now之类的,随你了),插上SD卡

按住BOOT按键(那个孤零零的按键),然后给板子上电,等LED等开始有反应的时候,就可以把BOOT键松开了,这个时候要注意,稍等片刻之后,这四个LED等一定应该是跑马灯的形式(0123,3210)不停的跑,才证明是在烧写,否则就不是,一定是因为你在上电的时候没有按住BOOT(手抖了,手抖了,手抖了……)。

不用像官方说的45分钟那么长时间,大概6分钟左右吧,这个时候板子的LED等会全亮(官方的说法),反正我的是全灭了。

拔掉SD卡,重启板子。

用SSH登陆到板子上,check一下,(或者在板子上打开ID那个文件也行),确定一下烧写是否成功。

 

0 0