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:
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 /srv
itu adalah titik pemasangan yang berisi diskimage
file 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 /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.
/etc/init.d/something
, atau/etc/rc.local
, tetapi saya menyarankan untuk tetap dengan metode apa pun yang berhasil.