Pat*_*ick 13 not-root-user system-installation syslinux disk-image
我已经构建了一个本土的 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)
Run Code Online (Sandbox Code Playgroud)
有没有办法在不需要root权限的情况下将syslinux或extlinux写入磁盘映像文件?
这是可能的syslinux
:
syslinux ~/floppy.ima
Run Code Online (Sandbox Code Playgroud)
该syslinux
安装程序包含足够的魔法要在一个文件系统卸载运行。(事实上,它就是为此而设计的。)不过,extlinux
安装程序希望在已挂载的文件系统上运行。
几乎肯定可以将extlinux
安装程序分成复制文件的部分(类似于用于 FAT 的 mtools,这种情况很少见但似乎存在,尽管可以直接将它们与 集成genext2fs
),以及安装引导扇区的部分(我也许可以拼凑起来)。
我为 GRUB 2 做了类似的事情,它安装在 MBR 和第一个分区之间的空间中,用于Grml;这实际上更容易做到,因为与 SYSLINUX 不同,GRUB 不需要那么多引导扇区。它基本上取决于您更广泛的要求。如果以上有关SYSLINUX的部分对您没有帮助,请与我联系,以便我们解决问题。
如果您添加一行内容,/etc/fstab
例如:
/dev/loop0 /mnt ext4 defaults,user 0 0
Run Code Online (Sandbox Code Playgroud)
然后您可以/dev/loop0
以普通用户身份挂载/卸载。
如果你这样做chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
,然后extlinux
,losetup
,mkfs
,等可以做到youruser
。
归档时间: |
|
查看次数: |
2005 次 |
最近记录: |