Beaglebone Black——k安装ubuntu系统

本文介绍了如何在Beaglebone Black上从Angstrom系统切换到Ubuntu系统,主要原因是Angstrom系统中缺少NFS客户端。作者选择了通过烧写预编译的Ubuntu镜像文件到SD卡来安装系统,并提供了相关资源链接和烧录过程的详细说明,包括使用dd命令、loop设备和mount操作。
摘要由CSDN通过智能技术生成

        拿到beaglebone black板子之后,默认安装的是Angstrom系统,这个系统根分区文件系统占据eMMC中1.3GB的空间,原因是里面安装了图形界面,同时还有其他一些gcc、g++、vim等一些常用的软件都安装进去了,所以体积才会变大。由于最近想要BBB板子挂载一下宿主机的NFS,但是在做尝试时发现Angstrom原装的系统中没有NFS的客户端,还需要安装一个客户端nfs-common,但是在板子上运行opkg update更新倒是可以,可是opkg install nfs-common或者安装其他包一律无法识别,除了一些常用的的诸如vim、g++倒是能识别,即使识别了一样还是不能安装,而在网站上我又没有找到nfs-common的源码包,倒是找到了nfs-uti**这么一个替代源码包,可是手动安装一个软件带来的困难是,它需要依赖一些其他的库,那么又要安装其他的库,即为了安装A,得先安装好B,为了安装B,又得先安装C.........无奈,只好选择换系统,最后选择了自己最喜欢的ubuntu。

 

        要在BBB板子上安装一个系统可以有三种方法,1)通过烧写一个预编译好的镜像文件到SD卡,插到板子上,将eMMC烧写即可。2)通过网络安装。3)完全手动安装,这种方式主要是u-boot、内核、根文件系统都是自己编译或者做,最后组装成系统,对于学习系统启动原理很有帮助,有点Linux from scratch的味道。后面两种方法限于时间没有尝试过,ubuntu的安装是第一种方法。

 

参考资料:

更新ubuntu系统的方法,提供了一些镜像的下载链接,linux下使用dd命令将镜像文件烧写到SD卡,以及一些ubuntu的软件,比如讲解如何配置无线网卡

http://elinux.org/BeagleBoardUbuntu#Wi-Fi_Networking_.28command_line.29

安装系统后如何启动系统

http://elinux.org/Beagleboard:Ubuntu_On_BeagleBone_Black#Flashing_Ubuntu_13.04_to_the_eMMC

使用kpartx来将一个镜像文件和loop设备连接起来并查看其内容,更重要的讲解了镜像文件中包含的脚本文件以及build文件中的脚本工具和根文件系统是如何在启动之后运行脚本,从而将eMMC更新的。不同的镜像更新方法可能不一样。

http://www.crashcourse.ca/wiki/index.php/BBB_software_update_process

国外的一个网站,上面提供了支持BBB板子的ubuntu12.04LTS、ubuntu14.04LTS这两个系统的启动文件和根文件系统,通过这些文件即可轻松制作出一张带有ubuntu系统的SD启动卡,该镜像文件不能烧写eMMC。

http://www.armhf.com/index.php/boards/beaglebone-black/

一些关于SD卡更新eMMC的脚本git库,以供参考

https://github.com/RobertCNelson/boot-scripts/blob/master/tools/eMMC/init-eMMC-flasher-v2.sh


将镜像文件链接成loop设备,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件,在使用之前,一个 loop 设备必须要和一个文件(指的就是*.img文件)进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。如下所示,

zhouyu@zhouyu-virtual-machine:~/zystore$ ls
BBB-eMMC-flasher-ubuntu-14.04-console-armhf-2014-08-13-2gb.img
fat
linux-3.12.10-ti2013.12.01
lost+found
rootfs
u-boot-2013.10-ti2013.12.01
ubuntu-precise-12.04-LTS
zhouyu@zhouyu-virtual-machine:~/zystore$ sudo kpartx -a -v BBB-eMMC-flasher-ubuntu-14.04-console-armhf-2014-08-13-2gb.img 
[sudo] password for zhouyu: 
add map loop0p1 (252:0): 0 196608 linear /dev/loop0 2048
add map loop0p2 (252:1): 0 3282944 linear /dev/loop0 198656

上述可以看出,和.img文件进行连接之后,loop0设备出现了两个分区。接下来将loop设备的两个分区分别挂载回原来的文件系统,挂载到本目录下的fat和rootfs文件夹。.img文件本身是原来文件系统的文件,将其和loop设备链接之后,又将loop设备挂载回原来的文件系统,于是loop名字由此而来。其中用到了一个工具kpartx,这个工具我觉得其实就相当于windows下面的虚拟光驱的作用,虚拟光驱也是将一个镜像文件和虚拟设备进行连接。

zhouyu@zhouyu-virtual-machine:~/zystore$ sudo mount /dev/mapper/loop0p1 fat/
zhouyu@zhouyu-virtual-machine:~/zystore$ sudo mount /dev/mapper/loop0p2 rootfs/

查看.img文件的内容

zhouyu@zhouyu-virtual-machine:~/zystore/fat$ ls
App          Drivers      nfs-uEnv.txt  scripts     uEnv.txt
autorun.inf  LICENSE.txt  README.htm    START.htm
Docs         MLO          README.md     u-boot.img
zhouyu@zhouyu-virtual-machine:~/zystore/fat$ cd ../rootfs/
zhouyu@zhouyu-virtual-machine:~/zystore/rootfs$ ls
bin   dev  home  lost+found  mnt  proc  run   srv  tmp  var
boot  etc  lib   media       opt  root  sbin  sys  usr

接下来将.img文件原封不动的搬到SD卡里面

sudo dd if=*.img of=/dev/sdX bs=1M

dd命令用处多多,诸如这种将镜像文件烧写到SD卡,以及一些硬盘对拷、硬盘的备份和还原都非常好,感觉就像windows下面的Ghost程序。它基本上是把一个存储介质里面的数据原封不动的搬过去,不同于我们通常的文件复制哦。所以使用这个命令不再需要自己制作SD卡,进行分区,然后拷贝文件。


这一步完成之后。记得先将文件系统卸载,再接着删除虚拟设备(也就是loop设备)。

sudo umount fat/
sudo umount rootfs/
sudo kpartx -d *.img


OK,一张ubuntu的SD启动卡只做好了。接下来按照流程操作就好。

关于镜像文件

         关于安装系统方面的镜像有两种版本,一种版本是做到SD卡里面用于烧写eMMC以进行重新安装系统,另一种版本是做到SD卡里面用于从SD卡启动系统。其实两本版本的镜像差不太多。第一种版本的SD卡插到板子上按住boot键上电启动后,也是和第二种版本一样先从SD卡启动,然后接着有一个用于更新eMMC的进程被初始化,这个进程的工作,就是讲SD卡里面带的MOL、u-boot.img、根文件系统(包含内核)分别复制到eMMC的启动分区和根分区,从而更新系统。这些进行系统更新的脚本文件可能放在根文件系统的/opt/scripts/目录下,也有可能是在/usr/bin/目录下,不同的人制作的可能就不同。

         以下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值