如何将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。

演练

  1. 创建可启动的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

  2. 使用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

  3. 将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}

  4. 取出SD卡并重新启动