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

Я создал домашний дистрибутив Linux, и я могу сделать полный файл образа диска как пользователя без полномочий root с одним исключением - установка загрузчика. Я использую 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?

13 голосов | спросил Patrick 20 Maypm14 2014, 23:31:21

2 ответа


8

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

syslinux ~/floppy.ima

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

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

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

ответил mirabilos 21 Mayam14 2014, 00:54:12
5

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

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

вы можете установить /размонтировать /dev/loop0 в качестве обычного пользователя.

И если вы выполните chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>, затем extlinux, losetup, mkfs и т. д. может выполняться как youruser.

ответил BenjiWiebe 20 Maypm14 2014, 23:50:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132