Раук и Йокто на Jetson Nano - не удалось найти основной загрузочный слот

Это продолжение моей другой пост.

Мне удалось создать образ с помощью u-boot и rauce.

Я сделал простой rauc system.conf:

[system]
compatible=Jetson Nano
bootloader=uboot 
#
[slot.rootfs.0]
device=/dev/mmcblk0p1
type=ext4
bootname=system0
# 
[slot.rootfs.1]
device=/dev/mmcblk0p13
type=ext4
bootname=system1

[ОБНОВЛЕНО]:

Скрипт contrib uboot.sh в значительной степени скопирован.

Затем я добавил файл bb отсюда на мой уровень bsp.

И добавил раук в свой IMAGE_INSTALL.

Когда я загружаю nano со своим образом, rauc работает не так, как должен. Когда я проверяю статус службы с помощью systemctl status rauc-mark-service-good.service, он возвращает:

● rauc-mark-good.service - Rauc Good-marking Service
   Loaded: loaded (/lib/systemd/system/rauc-mark-good.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2019-10-01 07:51:22 UTC; 4s ago
  Process: 4147 ExecStart=/usr/bin/rauc status mark-good (code=exited, status=0/SUCCESS)
 Main PID: 4147 (code=exited, status=0/SUCCESS)

Oct 01 07:51:22 jetson-nano systemd[1]: Started Rauc Good-marking Service.
Oct 01 07:51:22 jetson-nano rauc[4147]: Failed getting primary slot: Failed getting primary slot: Unable to find primary boot slot
Oct 01 07:51:22 jetson-nano rauc[4147]: rauc mark: marked slot rootfs.0 as good
Oct 01 07:51:22 jetson-nano systemd[1]: rauc-mark-good.service: Succeeded.

systemctl status rauc возвращает:

● rauc.service - Rauc Update Service
   Loaded: loaded (/lib/systemd/system/rauc.service; static; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-01 07:49:36 UTC; 2min 0s ago
     Docs: https://rauc.readthedocs.io
 Main PID: 4092 (rauc)
    Tasks: 3 (limit: 4178)
   Memory: 4.4M
   CGroup: /system.slice/rauc.service
           └─4092 /usr/bin/rauc --mount=/run/rauc service

Oct 01 07:49:36 jetson-nano systemd[1]: Starting Rauc Update Service...
Oct 01 07:49:36 jetson-nano systemd[1]: Started Rauc Update Service.
Oct 01 07:49:48 jetson-nano rauc[4092]: Failed getting primary slot: Failed getting primary slot: Unable to find primary boot slot
Oct 01 07:49:48 jetson-nano rauc[4092]: Failed to load status file /slot.raucs: No such file or directory
Oct 01 07:49:48 jetson-nano rauc[4092]: mounting slot /dev/mmcblk0p13
Oct 01 07:49:48 jetson-nano rauc[4092]: Failed to load status file /run/rauc/rootfs.1/slot.raucs: No such file or directory
Oct 01 07:51:22 jetson-nano rauc[4092]: Failed getting primary slot: Failed getting primary slot: Unable to find primary boot slot
Oct 01 07:51:22 jetson-nano rauc[4092]: rauc mark: marked slot rootfs.0 as good

И rauc status возвращает:


(rauc:4195): rauc-WARNING **: 07:51:46.126: Failed getting primary slot: Failed getting primary slot: Unable to find primary boot slot

Compatible:  Jetson Nano
Variant:
Booted from: rootfs.0 (/dev/mmcblk0p1)
Activated:   (null) ((null))
slot states:
  rootfs.0: class=rootfs, device=/dev/mmcblk0p1, type=ext4, bootname=system0
      state=booted, description=, parent=(none), mountpoint=/
      boot status=bad
  rootfs.1: class=rootfs, device=/dev/mmcblk0p13, type=ext4, bootname=system1
      state=inactive, description=, parent=(none), mountpoint=(none)
      boot status=bad

Таким образом, нет файла /slot.raucs, и ему не удалось найти основной загрузочный слот.

После этого systemctl status rauc-mark-good возвращает, что слот rootfs.0 в конце был помечен как хороший, но systemctl status rauc показывает, что статус загрузки плохой.

Что мне здесь не хватает?


person Varyag    schedule 07.10.2019    source источник
comment
u-boot-fw-utils-tegra устанавливает соответствующий fw_env.config, он устанавливает его непосредственно в загрузочный раздел eMMC.   -  person Nayfe    schedule 08.10.2019
comment
Ну, я могу найти в /etc/fw_env.config, но он содержит только параметры u-boot TX1 и ничего о u-boot Jetson Nano. В Jetson Nano даже нет раздела mmcblk0boot1.   -  person Varyag    schedule 08.10.2019
comment
Я нашел этот пост, в котором, по-видимому, есть решение, но в данный момент оно не работает для меня.   -  person Varyag    schedule 08.10.2019
comment
Проблема с окружением u-boot в системном разделе заключается в том, что он будет перезаписываться RAUC при каждом обновлении системы? Разве это не должно быть в отдельном разделе?   -  person Nayfe    schedule 08.10.2019
comment
Да, я понимаю вашу точку зрения. Но тогда я не знаю, как я могу использовать u-boot и RAUC в комплекте Jetson Nano Dev? Похоже, что RAUC ищет загрузочный раздел, чтобы он мог работать, но как тогда я могу предоставить необходимую информацию?   -  person Varyag    schedule 08.10.2019
comment
Я не знаю вашу схему разделов Jetson Nano и планируете ли вы обновлять загрузчик с RAUC. Что-то довольно простое - создать отдельный раздел для файла fw_env и указать на него в конфигурации EXT4_ENV_DEVICE_AND_PART u-boot.   -  person Nayfe    schedule 08.10.2019
comment
Я постараюсь это сделать. Думаю, я знаю, как создать еще один раздел, но как указать на него в конфигурации u-boot, мне придется разобраться.   -  person Varyag    schedule 08.10.2019
comment
Но мне все еще нужно знать, что поместить в файл fw_env.config? Я добавил свою схему разделов к вопросу вверху.   -  person Varyag    schedule 08.10.2019
comment
<path>/uboot.env 0x0000 0x2000 в зависимости от EXT4_ENV_FILE. 0x2000 отражает значение CONFIG_ENV_SIZE и 0x0000 CONFIG_ENV_OFFSET. В обычное время это позволяет u-boot записывать в неформатированный раздел в определенное место на устройстве.   -  person Nayfe    schedule 08.10.2019
comment
Я обновил свой вопрос в EDIT 4, указав свой прогресс и новые вопросы. Спасибо за помощь!   -  person Varyag    schedule 09.10.2019
comment
@Nayfe мне удалось получить среду u-boot для SPI благодаря разработчику уровня метатегры. Я снова обновил вопрос, ты.   -  person Varyag    schedule 15.10.2019
comment
Я не использую RAUC, поэтому я больше не могу вам помочь, может быть, попытаться связаться с ML [email protected]?   -  person Nayfe    schedule 15.10.2019
comment
Хорошо, я попробую, но большое спасибо за то, что помогли мне зайти так далеко, я ценю это.   -  person Varyag    schedule 15.10.2019


Ответы (1)


Я отредактировал сценарий uboot следующим образом:

test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "system0 system1"
test -n "${BOOT_system0_LEFT}" || setenv BOOT_system0_LEFT 3
test -n "${BOOT_system1_LEFT}" || setenv BOOT_system1_LEFT 3

setenv bootargs
for BOOT_SLOT in "${BOOT_ORDER}"; do
  if test "x${bootargs}" != "x"; then
    # skip remaining slots
  elif test "x${BOOT_SLOT}" = "xsystem0"; then
    if test ${BOOT_system0_LEFT} -gt 0; then
      setexpr BOOT_system0_LEFT ${BOOT_system0_LEFT} - 1
      echo "Found valid slot system0, ${BOOT_system0_LEFT} attempts remaining"
      setenv distro_bootpart "1"
      setenv boot_line "mmc 1:1 any ${scriptaddr} /boot/extlinux/extlinux.conf"
    fi
  elif test "x${BOOT_SLOT}" = "xsystem1"; then
    if test ${BOOT_system1_LEFT} -gt 0; then
      setexpr BOOT_system1_LEFT ${BOOT_system1_LEFT} - 1
      echo "Found valid slot system1, ${BOOT_system1_LEFT} attempts remaining"
      setenv distro_bootpart "13"
      setenv boot_line "mmc 1:D any ${scriptaddr} /boot/extlinux/extlinux.conf"
    fi
  fi
done

if test -n "${bootargs}"; then
  saveenv
else
  echo "No valid slot found, resetting tries to 3"
  setenv BOOT_system0_LEFT 3
  setenv BOOT_system1_LEFT 3
  saveenv
  reset
fi

sysboot ${boot_line}

И это сработало. По-видимому, были некоторые проблемы с BOOT_ORDER "system0 system1" в сценарии uboot, который почему-то отличался от RAUC system.conf. Когда я переписал сценарий, проблем не было, и RAUC работал нормально.

person Varyag    schedule 15.10.2019
comment
Можете ли вы также показать мне ваш файл local.conf или layer.conf. PS Я пытаюсь заставить rauc работать так же, как вы это делали с raspberrypi3, я застрял с настройкой среды uboot - person apex; 22.05.2020
comment
Насколько я помню, единственное, что rauc связано с моим local.conf, - это строка DEBUG_PREFIX_MAP =, которая предотвращает ошибку битовой обработки, а layer.conf является стандартным. Какие ошибки или проблемы у вас возникли? - person Varyag; 25.05.2020
comment
Я разместил здесь проблему github.com/rauc/rauc/issues/594 - person apex; 29.05.2020