如何将Snappy Ubuntu Core闪存到BeagleBone Black的eMMC上?
我已成功按照Snappy的说明:开始使用Beaglebone Black ,目前我的BeagleBone Black总是从microSD卡启动Ubuntu Core。
是否可以在板载闪存( eMMC )本身上闪存 Ubuntu Core,这样我就不再需要SD卡了? (eMMC的存储容量约为4GB。)
结果和剩下的问题
本演练从Beaglebone Black(BBB)eMMC启动Snappy Ubuntu Core,而不是SD卡的默认启动。 但为了实现这一点,它打破了Snappy Core默认图像的U-boot步骤中构建的a / b回退机制。 回退机制被破坏的原因是因为它使用了“saveenv”U-boot命令,这仍然是未知原因似乎不适用于BBB的eMMC。
演练
-
创建可启动的SD卡,将Snappy Core img添加到BBB的eMMC。
-
下载beaglebone.org提供的最新Debian映像:
$ wget https:// debian.beagleboard.org/images/bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz
-
将debian映像解压缩并复制到SD卡。 小心 ,如果选错了设备,你可以覆盖你的根文件系统! 插入SD卡时检查“dmesg | tail”找到正确的设备。
$ unxz -c bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz | sudo dd = / dev / sdX bs = 32M
$ sync
-
-
使用Snappy Ubuntu Core映像覆盖eMMC默认映像。
-
在SD卡上下载压缩的Snappy Ubuntu Core映像。
将新创建的Debian SD卡插入BBB,然后使用启动按钮从中启动。 启动后,将Snappy Ubuntu Core压缩映像下载到SD卡。$ wget http://releases.ubuntu.com/15.04/ubuntu-15.04-snappy-armhf-bbb.img.xz
-
找出哪个设备是eMMC。
在启动过程中,debian映像会将根文件系统从SD卡挂载到“/”。 通常这是“/ dev / mmcblk0”。$ cat / etc / fstab | grep mmc
/ dev / mmcblk0p2 / ext4 noatime,erros = remount -ro 0 1检查哪个是另一个可用的mmc设备。 通常这意味着eMMC是/ dev / mmcblk1。
$ ls / dev / mmcblk?
/ dev / mmcblk0 / dev / mmcblk1 -
将Snappy Ubuntu Core映像解压缩并打印到BBB的eMMC。
$ unxz -c ubuntu-15.04-snappy-armhf-bbb.img.xz | sudo dd = / dev / mmcblk1 bs = 32M
$ sync
-
- 将U-Boot设置更改为从eMMC而不是SD卡启动。
默认情况下,U-boot无法启动,因为U-boot环境仍然指向SD卡。 我使用了uEnv.txt示例来开始并调整一些内容以指向eMMC。 实际上有3行改变了:- 将mmc设备从SD卡(1)更改为eMMC(0)
原版的
mmcdev=0
新:
mmcdev=1
- 将snappy_ab后备系统更改为snappy_kernel = a,现在已修复为第一个rootfs(a)。
原版的
snappy_ab=a
snappy_boot=if test "${snappy_mode}" = "try"; then if test "${snappy_trial_boot}" = "1"; then setenv snappy_os "${snappy_good_os}"; setenv snappy_kernel "${snappy_good_kernel}"; saveenv; else setenv snappy_trial_boot 1; saveenv; fi; fi; run loadfiles; setenv mmcroot /dev/disk/by-label/writable ${snappy_cmdline} snappy_os=${snappy_os} snappy_kernel=${snappy_kernel}; run mmcargs; bootz ${loadaddr} ${initrd_addr}:${initrd_size} ${fdtaddr}
新
snappy_kernel=a
snappy_boot=run loadfiles; setenv mmcroot /dev/disk/by-label/system-${snappy_kernel} ${snappy_cmdline} snappy_os=${snappy_os} snappy_kernel=${snappy_kernel} rootfstype=ext4; run mmcargs; bootz ${loadaddr} ${initrd_addr}:${initrd_size} ${fdtaddr}
snappy_boot=run loadfiles; setenv mmcroot /dev/disk/by-label/system-${snappy_kernel} ${snappy_cmdline} snappy_os=${snappy_os} snappy_kernel=${snappy_kernel} rootfstype=ext4; run mmcargs; bootz ${loadaddr} ${initrd_addr}:${initrd_size} ${fdtaddr}
- 将mmc设备从SD卡(1)更改为eMMC(0)
- 取出SD卡并重新启动