Saya ingin mengatur perangkat loop saat boot. Saya bertanya-tanya apa cara terbaik untuk melakukan ini.
Saya sudah mencarinya di google. Beberapa mengatakan menambahkan aturan udev, beberapa mengatakan memasukkan skrip /etc/init.d
, beberapa bahkan memodifikasi initramfs.
Jadi apa cara terbaik atau benar untuk melakukan ini? Bisakah Anda memberikan beberapa detail (tentang bagaimana melakukannya)?
Terima kasih.
/etc/init.d/something
, atau/etc/rc.local
, tetapi saya menyarankan untuk tetap dengan metode apa pun yang berhasil.mount /disk.img /mnt -o loop,offset=2048
untuk partisi pertama). Offset dapat ditemukan menggunakan parted atau fdisk setelah perangkat loop diatur (lihat jawaban saya di bawah ini untuk itu).Jawaban:
Setidaknya ada tiga cara "tepat" untuk melakukan hal-hal startup di Ubuntu (dengan anggapan Anda tidak hanya ingin memasangnya), tercantum di sini dalam urutan menurun:
/etc/init/*.conf
(Pemula)/etc/init.d/*
(sysvinit)/etc/rc.local
(skrip perubahan runlevel)Ada juga kemungkinan menggunakan aturan udev, tetapi akan berbelit-belit. Saya merekomendasikan untuk tidak melakukannya. Skrip sysvinit terlalu banyak untuk hal sekecil itu, jadi saya akan fokus pada dua opsi lainnya. Skrip perubahan runlevel paling sederhana (meskipun paling tidak disukai), jadi saya akan mulai dari sana.
The
/etc/rc.local
file hanya dijalankan oleh/etc/init.d/rc.local
skrip sysvinit, yang (secara default) dieksekusi lalu setelah beralih ke setiap normal "pada" runlevel (misalnya ketika anda boot secara normal, tetapi tidak ketika Anda mematikan atau pergi ke recovery mode). Untuk menerapkan pengaturan perangkat boot, cukup tambahkan ini di akhir/etc/rc.local
, dengan asumsi bahwa file Anda dipanggil/srv/diskimage
dan Anda ingin menggunakan/dev/loop0
sebagai perangkat loop:Hanya itu yang ada di sana. Tentu saja, ganti nama file dengan apa pun yang paling berhasil di pengaturan Anda.
Jika Anda ingin sedikit lebih spesifik tentang itu, Anda dapat membuat pekerjaan pemula untuk itu yang mengaturnya setelah filesystem memegangnya telah di-mount. Contohnya adalah sebagai berikut, dengan asumsi bahwa
/srv
itu adalah titik pemasangan yang berisidiskimage
file Anda :Ini harus cukup sederhana untuk diikuti secara konseptual: Baris pertama hanya komentar untuk pembaca manusia, dan itu instruksi untuk Pemula untuk menunggu sampai sistem
/srv
file dipasang, jalankan proses losetup, dan anggap diri Anda selesai ketika proses keluar dengan sukses (a " tugas ", sebagai lawan dari layanan yang persisten). Masukkan saja konten tersebut ke dalam file yang cocok/etc/init/*.conf
. Saya akan memilih/etc/init/losetup.conf
sendiri.Keuntungan dari pekerjaan pemula daripada
/etc/rc.local
hal-hal sederhana seperti itu kecil tapi penting. Pertama,/etc/rc.local
sudah usang, dan penggunaannya hanya sebagai "kotak pasir berantakan untuk menyelesaikan sesuatu" disukai banyak orang hari ini. Di antara alasan-alasan lain untuk tidak menyukai penggunaannya, beberapa program yang menggunakan file itu hanya akan menimpa konten, dan sulit untuk mendamaikan skrip yang berbeda yang perlu masuk ke file yang sama. Kedua, Pemula sebenarnya menangani dependensi memeriksa untuk Anda (memastikan filesystem sudah terpasang pertama), jadi jika ada masalah me-mount sistem file itu tidak akancoba atur perangkat loop .... tetapi setelah Anda menyelesaikan dan memasangnya. Ketiga, Upstart jauh lebih fleksibel: Anda dapat, misalnya, cukup pintar untuk menemukan perangkat loop yang tidak digunakan, dan "memancarkan" perangkat loop itu untuk digunakan dalam pekerjaan pemula lainnya, mirip dengan bagaimana kami menggunakan variabel "MOUNTPOINT" dalam contoh di atas.sumber
Seperti yang ditunjukkan oleh @psusi, cara termudah adalah menambahkan baris berikut ke dalam
/etc/fstab
file AndaSekarang reboot atau jalankan
mount -a
sebagai root. Maka perangkat harus dipasang. Anda dapat memeriksanya denganlsblk
.sumber