Jetson Nano上的Rauc和Yocto-找不到主引导插槽

Jetson Nano上的Rauc和Yocto-找不到主引导插槽,yocto,u-boot,nvidia-jetson,nvidia-jetson-nano,Yocto,U Boot,Nvidia Jetson,Nvidia 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 [更

这是本书的延续

我已经设法用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
[更新]:

几乎所有的副本都贴在了纸上

然后我在bsp层中添加了一个bb文件

并将rauc添加到我的镜像安装中

当我用我的图像启动nano时,rauc没有正常工作。当我使用
systemctl status rauc检查服务的状态时,请标记服务良好。服务
返回:

● 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状态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: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
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: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插槽最终被标记为good,但
systemctl status rauc
显示引导状态为bad


我错过了什么

我将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}

结果它成功了。显然,uboot脚本中的
引导顺序“system0 system1”
存在一些问题,这与RAUC system.conf中的有所不同。当我重新编写脚本时,没有问题,RAUC运行良好。

安装了相应的程序,它直接安装到eMMC引导分区。我可以在/etc/fw_env.config中找到它,但它只包含TX1 u-boot参数,而没有关于Jetson Nano u-boot的任何内容。Jetson Nano甚至没有mmcblk0boot1分区。我发现它显然有一个解决方案,但目前对我不起作用。系统分区中u-boot环境的问题是,它在每次系统更新时都会被RAUC覆盖?它不应该在一个单独的分区中吗?好吧,我会试一试,但是非常感谢你帮助我走到这一步,我非常感激。你能给我看看你的local.conf或layer.conf文件吗。PS我正试图让rauc以与您使用raspberrypi3相同的方式工作,我一直在设置uboot环境。据我所知,rauc与我的local.conf相关的唯一内容是行“DEBUG_PREFIX_MAP=”“”,它可以防止位烘焙错误,layer.conf只是标准配置。你有什么错误或问题?我在这里发布了一个问题