Я создал собственный дистрибутив Linux и могу создать полный файл образа диска для пользователя без полномочий root, с одним исключением - установкой загрузчика. Я использую syslinux (на самом деле extlinux), и для его установки я должен монтировать загрузочный раздел с обратной петлей, для чего требуются права 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 в файл образа диска, не требуя прав суперпользователя?
Ответы:
Это возможно для
syslinux
:syslinux
Инсталлятор содержит достаточно магии , чтобы быть запущен на убранной файловой системы. (На самом деле, он предназначен для этого.) Однакоextlinux
установщик ожидает запуска в смонтированной файловой системе.Почти наверняка можно разделить
extlinux
установщик на часть, которая копирует файлы ( что-то вроде mtools для FAT , что встречается редко, но существует , хотя их можно просто интегрировать напрямуюgenext2fs
), и часть, которая устанавливает загрузочный сектор ( Я мог бы сделать это вместе).Я сделал что-то подобное для GRUB 2, который устанавливается в пространство между MBR и первым разделом для Grml ; на самом деле это было проще сделать, потому что GRUB, в отличие от SYSLINUX, не требует столько от загрузочного сектора. Это в основном зависит от ваших более широких требований. Если вышеприведенная часть о SYSLINUX не поможет вам, свяжитесь со мной, чтобы мы могли что-то решить.
источник
grub-install
, но это все еще требует, чтобы загрузочный раздел был установлен.core.img
поколение ... дай мне посмотреть ... проверить здесь дляgrub-mkimage
вызова. Это сильно зависит от целевой среды (в основном, какие модули необходимы для динамической загрузки других; GRUB 1 был намного проще).Если вы добавите строку,
/etc/fstab
говоря что-то вроде:затем вы можете смонтировать / размонтировать
/dev/loop0
как обычный пользователь.И если вы делаете
chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
тоextlinux
,losetup
,mkfs
и т.д. может быть сделаноyouruser
.источник
disk
группу. (Или создайтеloop
группу и используйте это ...)