Как установить syslinux / extlinux в файл образа диска, не требуя привилегий root

Я создал родной дистрибутив Linux, и я могу сделать полный файл образа диска некорректным пользователем с одним исключением – установка загрузчика. Я использую syslinux (на самом деле extlinux), и для его установки мне нужно установить loop-back в загрузочный раздел, который требует привилегий root / sudo. Команды запускаются из make-файла, а имена переменных должны четко указывать, что их заменить.

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?

2 Solutions collect form web for “Как установить syslinux / extlinux в файл образа диска, не требуя привилегий root”

Это возможно для syslinux :

 syslinux ~/floppy.ima 

Установщик syslinux содержит достаточно магии для запуска в размонтированной файловой системе. (На самом деле, он предназначен для этого.) extlinux ожидает, что он будет запущен на смонтированной файловой системе.

Почти наверняка можно extlinux установщик extlinux с частью, которая копирует файлы ( что-то вроде mtools для FAT , что редко, но похоже, существует , хотя можно просто интегрировать их непосредственно с genext2fs ), а также часть, которая устанавливает bootsector (я мог бы собрать это вместе).

Я сделал что-то подобное для GRUB 2, который устанавливается в пространство между MBR и первым разделом, для Grml ; это было фактически легче сделать, потому что GRUB, в отличие от SYSLINUX, не требует столько же от bootsector. Это в основном зависит от ваших более широких требований. Если приведенная выше часть о SYSLINUX вам не поможет, свяжитесь со мной, чтобы мы могли что-то сделать.

Если вы добавите строку в /etc/fstab говорилось что-то вроде:

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

вы можете подключить / размонтировать /dev/loop0 как обычный пользователь.

И если вы делаете chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE> тогда extlinux , losetup , mkfs и т. Д. Могут быть выполнены как youruser .

Linux и Unix - лучшая ОС в мире.