如何在不需要 root 权限的情况下将 syslinux/extlinux 安装到磁盘映像文件

如何在不需要 root 权限的情况下将 syslinux/extlinux 安装到磁盘映像文件

我已经构建了一个自制的 Linux 发行版,并且我可以以非 root 用户身份制作完整的磁盘映像文件,但有一个例外 - 安装引导加载程序。我正在使用 syslinux(实际上是 extlinux),要安装它,我必须环回挂载引导分区,这需要 root/sudo 权限。这些命令是从 makefile 运行的,变量名称应该清楚地表明用什么来替换它们。

sudo losetup -o $(BOOT_FS_PARTITION_OFFSET) $(LOOP_DEVICE) $(IMAGE_FILE_NAME)
sudo mount $(LOOP_DEVICE) $(LOOP_MOUNT_POINT)
sudo $(EXTLINUX) -S $(DISK_SECTORS) -H $(DISK_HEADS) -i $(LOOP_MOUNT_POINT)
sudo umount $(LOOP_MOUNT_POINT)
sudo losetup -d $(LOOP_DEVICE)

有没有一种方法可以将 syslinux 或 extlinux 写入磁盘映像文件而不需要 root 权限?

答案1

这对于以下情况是可能的syslinux

syslinux ~/floppy.ima

安装syslinux程序包含足够的魔力,可以在未安装的文件系统上运行。 (事实上​​,它就是为了做到这一点而设计的。)extlinux不过,安装程序希望在已安装的文件系统上运行。

几乎可以肯定,可以将extlinux安装程序分成复制文件的部分(类似于 FAT 的 mtools,即稀有的似乎存在,尽管可以直接将它们与genext2fs) 和安装引导扇区的部分集成(我也许可以将其拼凑在一起)。

我对 GRUB 2 做了类似的操作,它安装到 MBR 和第一个分区之间的空间中,用于格米尔;这实际上更容易做到,因为 GRUB 与 SYSLINUX 不同,不需要引导扇区那么多。这基本上取决于您更广泛的要求。如果以上有关 SYSLINUX 的部分对您没有帮助,请与我联系,以便我们可以解决问题。

答案2

如果你添加一行/etc/fstab这样的话:

/dev/loop0      /mnt                                    ext4    defaults,user   0 0

然后您可以/dev/loop0作为普通用户安装/卸载。

如果你chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>这样做extlinux,那么losetup,,mkfs等等可以完成youruser

相关内容