Ich habe eine eigens entwickelte Linux-Distribution erstellt und kann die gesamte Disk-Image-Datei als Benutzer ohne Rootberechtigung erstellen, mit einer Ausnahme: Installation des Bootloaders. Ich verwende syslinux (eigentlich extlinux), und um es zu installieren, muss ich die Boot-Partition, die root / sudo-Rechte erfordert, per Loopback einhängen. Die Befehle werden von einem Makefile ausgeführt, und die Variablennamen sollten klar angeben, durch was sie ersetzt werden sollen.
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)
Gibt es eine Möglichkeit, Syslinux oder Extlinux in die Disk-Image-Datei zu schreiben, ohne Root-Rechte zu benötigen?
Antworten:
Dies ist möglich für
syslinux
:Das
syslinux
Installationsprogramm enthält genügend Magie, um auf einem nicht gemounteten Dateisystem ausgeführt zu werden. (Tatsächlich wurde es dafür entwickelt.) Dasextlinux
Installationsprogramm erwartet jedoch, dass es auf einem bereitgestellten Dateisystem ausgeführt wird.Es ist mit ziemlicher Sicherheit möglich, das
extlinux
Installationsprogramm in einen Teil, der die Dateien kopiert (so etwas wie mtools für FAT , was selten ist, aber zu existieren scheint , obwohl man sie einfach direkt integrieren kanngenext2fs
), und einen Teil, der den Bootsektor installiert ( Ich könnte das zusammenschustern.Ich habe so etwas wie dies für GRUB 2, die zwischen dem MBR und der ersten Partition, für in den Raum installiert Grml ; Dies war tatsächlich einfacher, da GRUB im Gegensatz zu SYSLINUX nicht so viel vom Bootsektor benötigt. Dies hängt im Wesentlichen von Ihren allgemeinen Anforderungen ab. Wenn der obige Teil über SYSLINUX Ihnen nicht hilft, kontaktieren Sie mich, damit wir etwas ausarbeiten können.
quelle
grub-install
, aber es erfordert immer noch die Boot-Partition gemountet werden.core.img
Generation ... lass mal sehen ... hier nach demgrub-mkimage
Anruf suchen . Dies hängt stark von der Zielumgebung ab (im Grunde genommen, welche Module benötigt werden, um die anderen dynamisch zu laden; GRUB 1 war viel einfacher).Wenn Sie eine Zeile hinzufügen, in der
/etc/fstab
Folgendes gesagt wird:Sie können dann
/dev/loop0
als normaler Benutzer die Bereitstellung aufheben / aufheben .Und wenn Sie
chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
dann tunextlinux
,losetup
könnenmkfs
, usw. als getan werdenyouruser
.quelle
disk
Gruppe hinzufügen . (Oder erstellen Sie eineloop
Gruppe und verwenden Sie diese ...)