Bagaimana cara menginstal syslinux / extlinux ke file gambar disk tanpa memerlukan hak akses root


13

Saya telah membangun distribusi Linux buatan sendiri, dan saya dapat membuat file image disk lengkap sebagai pengguna non-root dengan satu pengecualian - menginstal boot loader. Saya menggunakan syslinux (sebenarnya extlinux), dan untuk menginstalnya saya harus me-mount kembali partisi boot, yang memerlukan hak root / sudo. Perintah dijalankan dari makefile, dan nama variabel harus dengan jelas menunjukkan apa yang harus diganti.

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)

Apakah ada cara untuk menulis syslinux atau extlinux ke file gambar disk tanpa memerlukan hak akses root?


Apakah Anda bertanya-tanya apakah mungkin untuk melakukan semua perintah itu tanpa root? Atau hanya perintah extlinux?
BenjiWiebe

@ BenjiWiebe Jika ada cara lain, maka perintah apa pun yang diperlukan, tetapi seperti yang saya pahami, Anda memerlukan sistem file yang dipasang untuk menjalankan extlinux, dan kemudian extlinux perlu dijalankan dengan hak akses root ketika dilakukan dengan cara ini.

Jawaban:


8

Ini dimungkinkan untuk syslinux:

syslinux ~/floppy.ima

The syslinuxinstaller mengandung cukup ajaib untuk dijalankan pada filesystem unmount. (Bahkan, ia dirancang untuk melakukan itu.) extlinuxInstaller berharap untuk dijalankan pada sistem file yang sudah terpasang.

Hampir dapat dipastikan untuk memisahkan extlinuxinstaller menjadi bagian yang menyalin file ( sesuatu seperti mtools untuk FAT , yang jarang tetapi tampaknya ada , meskipun orang hanya dapat mengintegrasikannya secara langsung dengan genext2fs), dan bagian yang menginstal bootsector ( Saya mungkin bisa memperbaiki ini bersama).

Saya melakukan sesuatu seperti ini untuk GRUB 2, yang menginstal ke dalam ruang antara MBR dan partisi pertama, untuk Grml ; ini sebenarnya lebih mudah dilakukan karena GRUB, tidak seperti SYSLINUX, tidak memerlukan banyak dari bootsector. Ini pada dasarnya tergantung pada kebutuhan Anda yang lebih luas. Jika bagian di atas tentang SYSLINUX tidak membantu Anda, hubungi saya, sehingga kami dapat menyelesaikan sesuatu.


Terima kasih atas info ini. Saya menggunakan genext2fs, jadi saran Anda sepertinya pilihan terbaik. Apakah hanya masalah memasukkan kode extlinux ke MBR dan menyalin file ke fs, atau apakah file perlu masuk dalam blok tertentu dalam fs?

Saya belum melihat EXTLINUX secara detail (akan melakukannya dan kemudian menghapus komentar ini, tetapi beri saya sedikit waktu) tetapi untuk SYSLINUX, LILO, GRUB dan bootloader lainnya, biasanya kode tersebut disalin ke PBR (catatan boot partisi, vulgo bootsector, bukan MBR), dan kemudian kode diedit untuk memiliki posisi file yang di-hardcode di dalamnya (maka kebutuhan untuk installer). Aku akan membuatkan sesuatu untukmu.
mirabilos

@ Patrick Saya punya beberapa kebutuhan untuk diskusi tentang ini, saya membuka obrolan
mirabilos

Bisakah Anda mengarahkan saya ke implementasi Anda menggunakan grub ini? Saat ini saya miliki grub-install, tetapi masih membutuhkan partisi boot untuk dipasang.
salin

@copy ini adalah bagaimana hal itu digunakan dalam OpenADK, yang memiliki generasi gambar bahkan lebih fleksibel daripada grml (yang hanya perlu menciptakan ISO 9660 filesystem). Mungkin itu membantu? Jika tidak, hubungi saya langsung. - Sunting: oh tunggu, tidak, core.imggenerasi ... biar lihat ... periksa di sini untuk grub-mkimagepanggilan. Ini sangat tergantung pada lingkungan target (pada dasarnya, modul mana yang diperlukan untuk memuat yang lain secara dinamis; GRUB 1 jauh lebih mudah).
mirabilos

5

Jika Anda menambahkan baris dalam /etc/fstabmengatakan sesuatu seperti:

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

Anda kemudian dapat melakukan mount / unmount /dev/loop0sebagai pengguna biasa.

Dan jika Anda melakukannya chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>maka extlinux, losetup, mkfs, dll bisa dilakukan sebagai youruser.


Saya ingin ini menjadi bagian dari proses pembuatan generik, dan lokasi file gambar dan titik pemasangan dapat bervariasi dari pengguna ke pengguna. Saya lebih suka tidak memerlukan pengeditan fstab untuk setiap pengguna.

@Patrick Editing fstab bersifat global.
BenjiWiebe

Tapi losetup tetap hanya root, bukan?
bmargulies

@margulies Tidak ketika perangkat loop telah di-chown'd atau chmod'ed sehingga pengguna memiliki akses ke sana ... atau, setidaknya pada Fedora, Anda bisa menambahkan pengguna ke diskgrup. (Atau buat loopgrup dan gunakan itu ...)
BenjiWiebe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.