将操作系统映像的启动分区安装为环回设备时忽略标签

将操作系统映像的启动分区安装为环回设备时忽略标签

我想安装启动分区ubuntu-21.10-preinstalled-server-arm64+raspi.img.xzRaspberry PI 网站下载。

使用以下命令解压映像文件并挂载启动分区

mount -o loop,offset=1048576,sizelimit=268435456 ubuntu-21.10-preinstalled-server-arm64+raspi.img /var/nfs/ubuntu-21.10-boot

... 运行正常。您可以看到已安装的映像和/dev/mmcblk0p1设备:

mount | grep boot
/dev/mmcblk0p1 on /boot/firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
/var/nfs/ubuntu-21.10-preinstalled-server-arm64+raspi.img on /var/nfs/ubuntu-21.10-boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)

但是,当我将相同的挂载添加/etc/fstab到已经存在的挂载时/boot/firmware

LABEL=system-boot       /boot/firmware  vfat    defaults        0       1
/var/nfs/ubuntu-21.10-preinstalled-server-arm64+raspi.img /var/nfs/ubuntu-21.10-boot ext4 loop,offset=1048576,sizelimit=268435456 0 0

... 并重新启动系统(或运行mount -a),映像的启动分区将按/var/nfs/ubuntu-21.10-boot预期安装在 ,同时也安装在/boot/firmware,从而替换 处的真实固件/dev/mmcblk0p1

mount | grep boot
/var/nfs/ubuntu-21.10-preinstalled-server-arm64+raspi.img on /var/nfs/ubuntu-21.10-boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
/var/nfs/ubuntu-21.10-preinstalled-server-arm64+raspi.img on /boot/firmware type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)

这显然是因为映像的启动分区的标记与以相同方式标记的标记system-boot相冲突。/dev/mmcblk0p1

(挂载手册页指定了fstab当指定设备和挂载点时将被忽略,这解释了为什么手动挂载可以按预期工作。)

我可以想到以下解决方法来避免固件安装被覆盖:

  • 避免在 rc 脚本中手动使用 fstab 和 mount
  • 重新标记映像文件的启动分区
  • 替换LABEL=system-boot为保存固件的实际设备(如下面@Tilman 的回答中所建议的)

... 但

有没有办法阻止 fstab 条目通过标签自动挂载?

答案1

该条款LABEL=system-boot要求mount安装任何文件系统在该挂载点上具有卷标system-boot。如果您不想要,则不要使用该子句。将其替换为/dev/mmcblk0p1which 指示mount准确挂载该设备,而忽略标签。

相关内容