Як встановити syslinux / extlinux у файл образу диска, не вимагаючи привілеїв root


13

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


Вам цікаво, чи можна виконувати всі ці команди без кореня? Або просто команда extlinux?
BenjiWiebe

@BenjiWiebe Якщо є інший спосіб, будь-які команди потрібні, але, як я розумію, вам потрібна змонтована файлова система для запуску extlinux, а потім extlinux повинен працювати з кореневими привілеями, коли це зроблено таким чином.

Відповіді:


8

Це можливо для syslinux:

syslinux ~/floppy.ima

Програма syslinuxвстановлення містить достатньо магії, щоб запустити її у відключеній файловій системі. (Насправді, він призначений для цього.) Програма extlinuxінсталятора розраховує запуститись на змонтованій файловій системі.

Майже напевно можливо розділити extlinuxінсталятор на частину, яка копіює файли ( щось на зразок mtools для FAT , що рідко, але, здається, існує , хоча можна просто інтегрувати їх безпосередньо з genext2fs), і на частину, яка встановлює завантажувач ( Я, можливо, зможу це зробити спільно).

Я зробив щось подібне для GRUB 2, який встановлюється у простір між MBR та першим розділом, для Grml ; це було насправді простіше зробити, тому що GRUB, на відміну від SYSLINUX, не вимагає стільки від завантажувача. Це в основному залежить від ваших більш широких вимог. Якщо вищезазначена частина про SYSLINUX не допомагає вам, зв’яжіться зі мною, щоб ми могли щось розробити.


Дякую за цю інформацію. Я використовую genext2fs, тому ваша пропозиція звучить як найкращий варіант. Це просто питання введення коду extlinux в MBR і копіювання файлів у fs, або потрібно, щоб файли переходили в певні блоки всередині fs?

Я ще не детально розглядав EXTLINUX (зроблю це, а потім видаляю цей коментар, але дайте мені трохи часу), але для SYSLINUX, LILO, GRUB та інших завантажувачів, як правило, так, що код скопіюється в PBR (запис завантаження розділів, завантажувач vulgo, а не MBR), а потім редагується код, щоб у ньому було твердо закодовано положення файлу (звідси необхідність встановлення). Я разом щось для вас обмотаю.
mirabilos

@Patrick У мене є певна потреба в обговоренні цього питання, я відкрив чат
mirabilos

Чи можете ви вказати мені на вашу реалізацію цього за допомогою grub? Наразі у мене є grub-install, але він все ще вимагає встановлення завантажувального розділу.
копія

@copy - це так , як він використовується у OpenADK, який має ще більш гнучку генерацію зображень, ніж Grml (для створення якої потрібно лише файлова система ISO 9660) Можливо, це допомагає? Якщо ні, зв’яжіться зі мною безпосередньо. - Змінити: Ой , зачекайте, немає, core.imgпокоління ... Лем дивись ... перевірити тут для grub-mkimageвиклику. Це сильно залежить від цільового середовища (в основному, які модулі потрібні для динамічного завантаження інших; GRUB 1 набагато простіше).
mirabilos

5

Якщо ви додасте рядок, /etc/fstabсказавши щось на зразок:

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

потім ви можете змонтувати / відключити /dev/loop0як звичайний користувач.

І якщо ви робите chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>те extlinux, losetup, mkfsі т.д. може бути зроблено youruser.


Я хочу, щоб це було частиною загального процесу збирання, і розташування файлу зображення та точки монтажу можуть відрізнятись від користувача до користувача. Я вважаю за краще не вимагати редагування fstab для кожного користувача.

@Patrick Редагування fstab є глобальним.
BenjiWiebe

Але втрата даних залишається лише корінною, ні?
bmargulies

@bmargulies Не тоді, коли циклічний пристрій був замінений або chmod'ed, щоб користувач мав доступ до нього ... або, принаймні, у Fedora, ви можете просто додати користувача до diskгрупи. (Або створіть loopгрупу і скористайтеся цим ...)
BenjiWiebe
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.