Как прошить ядро ​​Snappy Ubuntu на eMMC BeagleBone Black?

Я успешно следовал инструкциям в разделе Snappy: Начало работы с Beaglebone Black, и в настоящее время мой BeagleBone Black всегда загружает Ubuntu Core с карты microSD.

Можно ли прошить Ubuntu Core на саму встроенную флэш-память (eMMC), чтобы мне больше не нужна SD-карта? (Емкость eMMC составляет ~4 ГБ.)

1 ответ

Решение

Результат и остающаяся проблема
В этом пошаговом руководстве загружается ядро ​​Snappy Ubuntu из eMMC Beaglebone Black (BBB) ​​вместо загрузки по умолчанию с SD-карты. Но для того, чтобы это сработало, он ломает резервный механизм a / b, созданный на шаге U-boot образа Snappy Core по умолчанию. Причина, по которой отказоустойчивый механизм не работает, заключается в том, что он использует команду U-boot "saveenv", которая по неизвестной пока причине не работает на eMMC BBB.

Прохождение

  1. Создайте загрузочную SD-карту для SD-карты Snappy Core в eMMC BBB.

    • Загрузите последний образ Debian, предоставленный beaglebone.org:

      $ wget https: // debian.beagleboard.org/images/bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz

    • Распакуйте и скопируйте образ Debian на вашу SD-карту. БУДЬТЕ ОСТОРОЖНЫ, вы можете перезаписать свою корневую файловую систему, если выберете не то устройство! Проверьте "dmesg | tail", вставляя SD-карту, найдите правильное устройство.

      $ unxz -c bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz | sudo dd of = / dev / sdX bs = 32M
      $ sync

  2. Перезаписать образ eMMC по умолчанию образом Snappy Ubuntu Core.

    • Загрузите сжатый образ Snappy Ubuntu Core на SD-карту.
      Вставьте недавно созданную SD-карту Debian в 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 в eMMC BBB.

      $ unxz -c ubuntu-15.04-snappy-armhf-bbb.img.xz | sudo dd of = / 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=asnappy_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-карту и перезагрузитесь
Другие вопросы по тегам