Ini akan menjadi agak lebih cepat di C, tetapi pilihan bahasa bukan yang paling mempengaruhi kinerja. Biasanya lebih efektif untuk melakukan berbagai tugas secara paralel, daripada menunggu masing-masing untuk menyelesaikan secara berurutan seperti yang dilakukan oleh sistem init yang lebih sederhana. Sebagai contoh, sshd dan httpd dapat dimulai pada saat yang bersamaan, karena keduanya tidak membutuhkan yang lain untuk sudah berjalan.
Tidak ada "urutan boot Linux" tunggal. Setiap distribusi memiliki sendiri; bahkan tidak ada satu pun kesamaan yang mereka miliki. Itu bisa dalam C, Perl, Haskell, apa pun; satu-satunya persyaratan adalah bahwa executable name /init
harus ada di initramfs, atau /sbin/init
di sistem file root.
The /etc/rc?.d
Skema hanyalah perpanjangan dari proses boot Unix dari 20 tahun yang lalu, bahkan mungkin 30 tahun. Sistem Unix yang paling awal jarang di-boot-ulang, sehingga mereka akan memiliki skrip sederhana, /etc/rc
atau serupa, yang akan diluncurkan oleh init dan memulai berbagai daemon secara berurutan.
Bahkan saat ini SysV init sedang digunakan untuk memulai semua skrip tersebut, meskipun metode yang tepat dapat bervariasi. Awalnya, sebuah sistem akan memulai semua skrip /etc/rc?.d
secara berurutan; saat ini Debian menggunakan dependensi gaya Makefile.
Beberapa distribusi - Ubuntu, Chrome OS, Fedora hingga v14 - telah beralih ke Upstart , yang ditulis dalam C dan "berbasis-event", memungkinkan daemon dimulai secara paralel. Sistem init lain, systemd , tampaknya meningkat dengan cepat dalam popularitas - digunakan secara default di Fedora dan OpenSuSE. Itu juga ditulis dalam C. (Kedua sistem masih membaca file konfigurasi tekstual untuk memutuskan daemon mana yang akan dijalankan.)
Distribusi yang masih melekat dengan SysVinit biasanya melakukannya untuk "kesederhanaan"; argumen [rujukan?] yang paling sering terdengar tampaknya tentang skrip shell lebih mudah dipelihara daripada kode C yang setara (meskipun skrip shell tersebut terdiri dari 90% copypasta), serta ketakutan fana untuk memperkenalkan dependensi perpustakaan tambahan [subjektif] . Anda dapat melihat sendiri di utas ini , ini , ini dan ini di milis Debian mulai Mei 2012.
(Penafian: Saya sendiri pengguna systemd .)
Untuk kompatibilitas lintas platform dan karena itu memungkinkan untuk menggunakan file sh untuk menggambarkan proses boot. Mempertahankan skrip boot di C akan menjadi PITA.
Tidak banyak. Sementara beberapa bagian akan lebih cepat, kenaikan kecepatan keseluruhan akan menjadi marjinal. Sebagian besar proses boot secara berurutan, khususnya langkah-langkah di init 1 dan 2. Dari init 3 dan ke atas, proses booting dapat dibatalkan menggunakan sesuatu seperti Runit , yang akan membuat Anda memperoleh kecepatan tinggi.
sumber
fstab
untuk sistem file), misalnya, ini .sh
skrip mengandalkan sejumlah besar program eksternal; bahkan jika mereka di-cache dalam memori, fork () ing mereka masih memiliki biaya yang lebih besar daripada satu mount () syscall (seperti dalam contoh OP). Adapun rasa sakit admin, satu-satunya perubahan yang saya lihat sejauh ini adalah penurunan . (Saya merasa bahwa saya terlibat dalam flamewar ketiga minggu ini. Saya harus berhenti.)Sebagian besar waktu yang dihabiskannya adalah menunggu sesuatu, satu demi satu: sistem file, jaringan, dll.
Jika Anda menginginkan urutan boot yang sangat cepat, boot dengan init = / bin / sh - prompt perintah instan! Jika ini adalah sistem tertanam, Anda dapat mem-boot-nya langsung ke aplikasi Anda.
sumber