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.localfile hanya dijalankan oleh /etc/init.d/rc.localskrip 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/diskimagedan Anda ingin menggunakan /dev/loop0sebagai perangkat loop:
losetup /dev/loop0 /srv/diskimage
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 /srvitu adalah titik pemasangan yang berisi diskimagefile Anda :
description "Setup loop devices after filesystems are mounted"
start on mounted MOUNTPOINT=/srv
task
exec losetup /dev/loop0 /srv/diskimage
Ini harus cukup sederhana untuk diikuti secara konseptual: Baris pertama hanya komentar untuk pembaca manusia, dan itu instruksi untuk Pemula untuk menunggu sampai sistem /srvfile 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.confsendiri.
Keuntungan dari pekerjaan pemula daripada /etc/rc.localhal-hal sederhana seperti itu kecil tapi penting. Pertama, /etc/rc.localsudah 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.
/etc/init.d/something, atau/etc/rc.local, tetapi saya menyarankan untuk tetap dengan metode apa pun yang berhasil.