Zbudowałem własną dystrybucję Linuksa i mogę zrobić pełny plik obrazu dysku jako użytkownik inny niż root, z jednym wyjątkiem - instalacją modułu ładującego. Korzystam z syslinux (właściwie extlinux) i aby go zainstalować, muszę zamontować partycję rozruchową z pętlą wsteczną, co wymaga uprawnień root / sudo. Polecenia są uruchamiane z pliku makefile, a nazwy zmiennych powinny wyraźnie wskazywać, na co je zastąpić.
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)
Czy istnieje sposób na zapisanie syslinux lub extlinux do pliku obrazu dysku bez konieczności posiadania uprawnień roota?
Odpowiedzi:
Jest to możliwe dla
syslinux
:syslinux
Instalator zawiera wystarczającą ilość magii być uruchamiane na odmontowanej plików. (W rzeczywistości jest to zaprojektowane.)extlinux
Instalator spodziewa się jednak, że zostanie uruchomiony na zamontowanym systemie plików.Niemal na pewno możliwe jest podzielenie
extlinux
instalatora na część, która kopiuje pliki ( coś takiego jak mtools dla FAT , co jest rzadkie, ale wydaje się , że istnieje , chociaż można je po prostu bezpośrednio zintegrowaćgenext2fs
), oraz część, która instaluje bootsector ( Być może uda mi się to połączyć).Zrobiłem coś takiego dla GRUB 2, który instaluje się w przestrzeni między MBR a pierwszą partycją dla Grml ; było to w rzeczywistości łatwiejsze, ponieważ GRUB, w przeciwieństwie do SYSLINUX, nie wymaga tyle od bootsectora. Zasadniczo zależy to od twoich szerszych wymagań. Jeśli powyższa część dotycząca SYSLINUX ci nie pomoże, skontaktuj się ze mną, abyśmy mogli coś wypracować.
źródło
grub-install
, ale nadal wymaga zamontowania partycji rozruchowej.core.img
generacja… daj mi zobaczyć… sprawdź tutaj, aby uzyskaćgrub-mkimage
połączenie. Jest to wysoce zależne od środowiska docelowego (w zasadzie, które moduły są potrzebne do dynamicznego ładowania innych; GRUB 1 był znacznie łatwiejszy).Jeśli dodasz wiersz
/etc/fstab
mówiąc:następnie możesz zamontować / odmontować
/dev/loop0
jako zwykły użytkownik.A jeśli nie
chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
wtedyextlinux
,losetup
,mkfs
itp mogą być wykonane jakoyouruser
.źródło
disk
grupy. (Lub stwórzloop
grupę i użyj tego ...)