Foto Slide
ULAMA-ULAMA NUSANTARA
11/07/2008
Bagaimana boot Linux
Bagaimana boot Linux
Karena ternyata, tidak terlalu besar untuk proses boot:
1. A bootloader menemukan kernel pada disk, load ke memori, dan itu dimulai.
2. Kernel initializes perangkat dan driver.
3. Kernel mount filesystem root.
4. Kernel dimulai sebuah program bernama init.
5. init menentukan sisa dari proses dalam gerakan.
6. Terakhir proses init yang dimulai sebagai bagian dari urutan boot yang memungkinkan anda untuk login
Mengidentifikasi setiap tahap proses boot yang tak ternilai dalam pemasangan masalah boot dan memahami sistem secara keseluruhan. Untuk mulai, nol pada bootloader, yang merupakan awal layar atau memberitahu Anda setelah mendapatkan komputer yang tidak daya-sendiri-tes, yang meminta untuk menjalankan sistem operasi. Setelah Anda membuat pilihan, bootloader yang menjalankan kernel Linux, gunakan kontrol dari sistem untuk kernel.
Ada diskusi rinci dari kernel di tempat lain dalam buku ini dari yang artikel ini adalah excerpted. Artikel ini meliputi kernel initialization panggung, stage ketika kernel cetak marah atau pesan tentang hardware yang tersedia di sistem. Kernel dimulai setelah init hanya menampilkan pesan karena kernel telah mount filesystem root:
VFS: Mount root (ext2 filesystem) readonly.
Tak lama kemudian Anda akan melihat pesan tentang init dimulai, diikuti oleh sistem startup layanan pesan, dan akhirnya Anda mendapatkan prompt login dari beberapa macam.
CATATAN Pada Red Hat Linux, init catatan sangat jelas, karena "menyambut baik" Anda untuk "Red Hat Linux." Semua pesan itu menunjukkan keberhasilan atau kegagalan dalam kurung di sebelah kanan layar.
Sebagian besar bab ini berurusan dengan init, karena itu adalah bagian dari urutan boot di mana Anda memiliki sebagian besar kontrol.
init
Tidak ada ketentuan khusus mengenai init. Ini merupakan program yang baru lainnya seperti pada sistem Linux, dan Anda akan menemukannya di / sbin bersama dengan sistem binari lainnya. Tujuan utama adalah init untuk memulai dan menghentikan program lain dalam urutan tertentu. Anda harus tahu ini adalah bagaimana urutan bekerja.
Ada beberapa variasi yang berbeda, namun sebagian besar distribusi Linux menggunakan Sistem V gaya dibahas di sini. Beberapa distro menggunakan versi yang lebih sederhana yang mirip dengan BSD init, tetapi Anda juga tidak mungkin untuk menghadapi ini.
Runlevel
Pada suatu waktu pada sistem Linux, suatu dasar yang mengatur proses sedang berjalan. Negara ini dari mesin disebut dengan runlevel, dan itu adalah denoted dengan angka dari 0 sampai dengan 6. Sistem yang menghabiskan sebagian besar waktu dalam satu runlevel. Namun, bila Anda mematikan mesin bawah, init beralih ke runlevel yang berbeda untuk menghentikan sistem layanan secara tertib mode dan kirim ke kernel untuk berhenti. Namun lain untuk runlevel adalah satu-mode pengguna, bicarakan nanti.
Cara termudah untuk mendapatkan menangani pada runlevel adalah untuk memeriksa init file konfigurasi / etc / inittab. Cari baris seperti berikut:
id: 5: initdefault:
Ini berarti bahwa baris runlevel default pada sistem 5. Semua baris dalam file inittab mengambil formulir ini, dengan empat kolom dipisahkan oleh titik terjadi dalam urutan sebagai berikut:
# Yang unik (string pendek, seperti id pada contoh sebelumnya)
# Runlevel yang berlaku nomor (s)
# Tindakan yang harus mengambil init (pada contoh sebelumnya, aksi ini adalah untuk menetapkan standar untuk runlevel 5)
# A untuk menjalankan perintah (opsional)
Tidak ada perintah untuk menjalankan dalam init contoh sebelumnya karena perintah tidak masuk akal dalam konteks pengaturan runlevel default. Melihat sedikit lebih lanjut di bawah inittab, sampai anda melihat baris seperti ini:
L5: 5: wait: / etc / rc.d / rc 5
Baris ini memicu sebagian besar sistem konfigurasi dan layanan melalui rc *. d init.d dan direktori. Anda dapat melihat bahwa init diatur untuk menjalankan perintah yang disebut / etc / rc.d / rc 5 ketika berada di runlevel 5. Menunggu tindakan yang memberitahukan kapan dan bagaimana init menjalankan perintah: menjalankan rc 5 sekali ketika memasuki runlevel 5, dan kemudian menunggu perintah ini selesai sebelum melakukan apa-apa lagi.
Ada beberapa tindakan yang berbeda di samping init dan menunggu, terutama yang berkaitan dengan manajemen daya, dan inittab (5) manual halaman memberitahu anda semua tentang mereka. Yang anda yang paling mungkin untuk menemukan dijelaskan dalam seksi berikut.
respawn
Respawn tindakan yang menyebabkan init untuk menjalankan perintah yang berikut, dan jika perintah selesai dijalankan, untuk menjalankannya lagi. Anda bisa melihat sesuatu yang mirip dengan baris ini di file inittab:
1:2345: respawn: / sbin / mingetty tty1
Getty program yang menyediakan layar login. Sebelumnya baris pertama adalah untuk konsol virtual (/ dev/tty1), yang anda lihat ketika anda menekan ALT-F1 atau PENGAWALAN-ALT-F1. Respawn tindakan yang membawa prompt login kembali setelah Anda keluar.
ctrlaltdel
Tindakan yang ctrlaltdel sistem kontrol apa yang tidak ketika Anda menekan PENGAWALAN-ALT-DELETE pada konsol virtual. Pada kebanyakan sistem, ini adalah semacam perintah reboot menggunakan perintah shutdown.
sysinit
Sysinit adalah tindakan yang sangat init hal pertama yang harus dijalankan ketika dijalankan, sebelum masuk setiap runlevel.
Bagaimana proses di runlevel mulai
Anda sekarang sudah siap untuk mulai mempelajari bagaimana sistem init layanan, hanya sebelum memungkinkan Anda log in Recall ini inittab baris dari sebelumnya:
L5: 5: wait: / etc / rc.d / rc 5
Baris kecil ini memicu banyak program lain. rc berdiri untuk menjalankan perintah, dan Anda akan mendengar orang merujuk kepada perintah sebagai script, program, atau layanan. Jadi, di mana ini adalah perintah, anyway?
Untuk runlevel 5, dalam contoh ini, perintah yang mungkin baik di / etc/rc.d/rc5.d atau / etc/rc5.d. Rc1.d menggunakan runlevel 1, 2 runlevel menggunakan rc2.d, dan sebagainya. Anda mungkin menemukan beberapa hal berikut di direktori rc5.d:
S10sysklogd S20ppp S99gpm
S12kerneld S25netstd_nfs S99httpd
S15netstd_init S30netstd_misc S99rmnologin
S18netbase S45pcmcia S99sshd
S20acct S89atd
S20logoutd S89cron
Rc 5 perintah mulai program ini di direktori runlevel dengan menjalankan perintah berikut:
S10sysklogd mulai
S12kerneld mulai
S15netstd_init mulai
S18netbase mulai
...
S99sshd mulai
Pemberitahuan awal argumen dalam setiap perintah. S yang di perintah nama berarti harus menjalankan perintah mulai di modus, dan nomor (00 sampai 99) dalam menentukan dimana urutan perintah rc dimulai.
Rc *. d perintah biasanya skrip shell yang menjalankan program di / sbin atau / usr / sbin. Biasanya, Anda dapat mengetahui apa yang salah satu perintah sebenarnya tidak melihat script dengan kurang pager atau program lain.
Anda dapat memulai salah satu layanan ini dengan tangan. Misalnya, jika Anda ingin memulai program httpd server web secara manual, S99httpd mulai berjalan. Demikian pula, jika Anda merasa perlu untuk membunuh salah satu layanan ketika komputer aktif, Anda dapat menjalankan perintah di rc *. d direktori dengan menghentikan argumen (S99httpd berhenti, misalnya).
Beberapa rc *. d direktori berisi perintah yang dimulai dengan K (untuk "membunuh," atau menghentikan modus). Dalam hal ini, rc menjalankan perintah dengan menghentikan argumen bukan awal. Anda yang paling mungkin untuk menghadapi K perintah dalam runlevel yang mematikan sistem bawah.
Menambah dan menghapus layanan
Jika Anda ingin menambahkan, menghapus, atau memodifikasi pelayanan di rc *. d direktori, Anda perlu melihat di dalam file. Sebuah daftar panjang yang menunjukkan struktur seperti ini:
lrwxrwxrwx. . . S10sysklogd -> .. / init.d / sysklogd
lrwxrwxrwx. . . S12kerneld -> .. / init.d / kerneld
lrwxrwxrwx. . . S15netstd_init -> .. / init.d / netstd_init
lrwxrwxrwx. . . S18netbase -> .. / init.d / netbase
...
Perintah di rc *. d direktori sebenarnya adalah symlink ke file dalam sebuah direktori init.d, biasanya di / etc atau / etc / rc.d. Linux distro berisi link tersebut agar mereka dapat menggunakan skrip startup yang sama untuk semua runlevel. Konvensi ini adalah dengan persyaratan yang tidak berarti, tetapi sering membuat organisasi sedikit lebih mudah.
Untuk mencegah salah satu perintah di init.d direktori dari berjalan di runlevel tertentu, Anda mungkin berpikir dari mengeluarkan symlink yang sesuai di rc *. d direktori. Ini tidak bekerja, tetapi jika Anda membuat kesalahan dan merasa perlu untuk meletakkan link kembali di tempat, Anda mungkin mengalami masalah mengingat nama link. Oleh karena itu, sebaiknya Anda tidak menghapus link di rc *. d direktori, tetapi, menambahkan tanda garis bawah (_) untuk awal nama link seperti ini:
mv S99httpd _S99httpd
Pada waktu boot, rc mengabaikan _S99httpd karena tidak dimulai dengan S atau K. Selanjutnya, nama asli masih jelas, dan Anda memiliki akses cepat ke perintah jika Anda dalam keadaan darurat dan perlu untuk memulai dengan tangan.
Untuk menambahkan layanan, Anda harus membuat skrip yang lain seperti di direktori init.d dan kemudian membuat symlink yang benar rc *. d direktori. Cara termudah untuk menulis skrip untuk memeriksa skrip sudah di init.d, membuat salinan yang Anda memahami, dan mengubah copy.
Ketika menambahkan layanan, pastikan Anda memilih tempat yang sesuai dalam urutan boot untuk memulai layanan. Jika operator mulai terlalu cepat, mungkin tidak bekerja, karena suatu dependensi pada beberapa layanan lainnya. Untuk layanan non-esensial, kebanyakan sistem administrator lebih memilih di nomor 90, setelah sebagian besar layanan yang datang dengan sistem.
Distribusi Linux biasanya datang dengan perintah untuk mengaktifkan dan menonaktifkan layanan di rc *. d direktori. Misalnya, di Debian, perintah adalah update-rc.d, dan Red Hat Linux, adalah perintah chkconfig. Grafis antarmuka pengguna juga tersedia. Menggunakan program ini membantu menjaga startup direktori konsisten dan membantu dengan upgrade.
Petunjuk: Salah satu yang paling umum masalah instalasi Linux adalah sebuah sistem dikonfigurasi XFree86 server yang di film dan off, sehingga tidak bisa digunakan pada sistem konsol. Untuk menghentikan perilaku ini, boot ke modus single user dan merubah Anda runlevel runlevel atau layanan. Mencari sesuatu yang berisi xdm, gdm atau kdm di rc *. d direktori, atau / etc / inittab.
Pengendalian init
Kadang-kadang, Anda harus memberikan sedikit menendang init untuk kirim beralih ke runlevel, untuk kembali membaca file inittab, atau hanya untuk mematikan system. Karena init yang pertama adalah selalu proses pada sistem, dengan proses ID selalu 1.
Anda dapat mengendalikan init dengan telinit. Misalnya, jika Anda ingin beralih ke runlevel 3, gunakan perintah ini:
telinit 3
Ketika berpindah runlevel, init akan mencoba untuk membunuh diri setiap proses yang tidak di inittab file untuk runlevel baru. Oleh karena itu, Anda harus berhati-hati tentang mengganti runlevel.
Bila anda perlu menambahkan atau menghapus respawning pekerjaan lain atau membuat perubahan ke inittab file, Anda harus memberitahu init tentang perubahan dan menyebabkan ke-ulang membaca file. Beberapa orang menggunakan membunuh-1 untuk memacu kirim init untuk melakukannya. Metode tradisional ini bekerja pada kebanyakan versi Unix, selama Anda ketik dengan benar. Namun, Anda juga dapat menjalankan perintah ini telinit:
telinit G
Anda juga dapat menggunakan telinit s untuk beralih ke modus single-user.
Menutup bawah
init juga bagaimana sistem kontrol shuts bawah dan reboots. Cara yang tepat untuk mematikan mesin Linux adalah dengan menggunakan perintah shutdown.
Ada dua cara untuk menggunakan dasar shutdown. Jika Anda kemandekan sistem, maka shuts mesin bawah dan terus ke bawah. Untuk membuat mesin langsung terdiam, gunakan perintah ini:
shutdown-h sekarang
Pada kebanyakan mesin modern cukup dengan versi terbaru dari Linux, yang memberhentikan potongan daya ke mesin. Anda juga dapat reboot komputer. Untuk reboot, gunakan bukan-r-h.
Shutdown proses yang memakan waktu beberapa detik. Anda tidak perlu me-reset atau matikan mesin selama tahap ini.
Dalam contoh sebelumnya, sekarang adalah waktu untuk mematikan. Argumen ini adalah wajib, tetapi terdapat banyak cara yang ditetapkan. Jika Anda ingin mesin untuk turun besok lusa, adalah salah satu cara untuk menggunakan n, dimana n adalah jumlah menit shutdown harus menunggu sebelum melakukan tugasnya. Untuk pilihan lain, lihat di shutdown (8) halaman manual.
Untuk membuat sistem reboot dalam 10 menit, jalankan perintah ini:
shutdown-r 10
Pada Linux, shutdown akan memberitahu siapapun yang login pada mesin ini turun, tetapi ia sedikit kerja sebenarnya. Jika Anda menetapkan waktu selain sekarang, shutdown membuat sebuah file bernama / etc / Nologin. Bila file ini hadir, sistem login dengan melarang semua orang kecuali superuser.
Ketika sistem shutdown waktu akhirnya datang, shutdown memberitahukan init untuk berpindah ke runlevel 0 untuk memberhentikan dan runlevel 6 untuk reboot. Ketika memasuki init runlevel 0 atau 6, semua berikut berlangsung, yang Anda dapat memeriksa dengan melihat script di dalam rc0.d dan rc6.d:
1. membunuh setiap proses init yang dapat (karena akan ketika berpindah ke runlevel lain).
# Awal rc0.d/rc6.d menjalankan perintah, penguncian sistem file ke tempat lain dan membuat persiapan untuk shutdown.
# Berikutnya rc0.d/rc6.d perintah unmount semua filesystem selain root.
# Lebih lanjut rc0.d/rc6.d perintah kuda filesystem root read-only.
# Masih lebih rc0.d/rc6.d perintah buffered menulis semua data ke filesystem yang sinkron dengan program.
# Terakhir rc0.d/rc6.d kirim perintah kernel untuk reboot atau berhenti dengan reboot, terdiam, atau poweroff program.
The program tergagap-gagap reboot dan berkelakuan berbeda untuk setiap runlevel, berpotensi menimbulkan kebingungan. Secara default, program-program tersebut dengan panggilan shutdown-r-h atau pilihan, tetapi jika sistem sudah di perhentian atau reboot runlevel, program kirim kernel untuk mematikan dirinya sendiri di dekat telinga. Jika Anda benar-benar ingin mematikan mesin Anda di bawah terburu-buru (disregarding apapun dari kerusakan yang mungkin usai penutupan), gunakan opsi-f.
Karena ternyata, tidak terlalu besar untuk proses boot:
1. A bootloader menemukan kernel pada disk, load ke memori, dan itu dimulai.
2. Kernel initializes perangkat dan driver.
3. Kernel mount filesystem root.
4. Kernel dimulai sebuah program bernama init.
5. init menentukan sisa dari proses dalam gerakan.
6. Terakhir proses init yang dimulai sebagai bagian dari urutan boot yang memungkinkan anda untuk login
Mengidentifikasi setiap tahap proses boot yang tak ternilai dalam pemasangan masalah boot dan memahami sistem secara keseluruhan. Untuk mulai, nol pada bootloader, yang merupakan awal layar atau memberitahu Anda setelah mendapatkan komputer yang tidak daya-sendiri-tes, yang meminta untuk menjalankan sistem operasi. Setelah Anda membuat pilihan, bootloader yang menjalankan kernel Linux, gunakan kontrol dari sistem untuk kernel.
Ada diskusi rinci dari kernel di tempat lain dalam buku ini dari yang artikel ini adalah excerpted. Artikel ini meliputi kernel initialization panggung, stage ketika kernel cetak marah atau pesan tentang hardware yang tersedia di sistem. Kernel dimulai setelah init hanya menampilkan pesan karena kernel telah mount filesystem root:
VFS: Mount root (ext2 filesystem) readonly.
Tak lama kemudian Anda akan melihat pesan tentang init dimulai, diikuti oleh sistem startup layanan pesan, dan akhirnya Anda mendapatkan prompt login dari beberapa macam.
CATATAN Pada Red Hat Linux, init catatan sangat jelas, karena "menyambut baik" Anda untuk "Red Hat Linux." Semua pesan itu menunjukkan keberhasilan atau kegagalan dalam kurung di sebelah kanan layar.
Sebagian besar bab ini berurusan dengan init, karena itu adalah bagian dari urutan boot di mana Anda memiliki sebagian besar kontrol.
init
Tidak ada ketentuan khusus mengenai init. Ini merupakan program yang baru lainnya seperti pada sistem Linux, dan Anda akan menemukannya di / sbin bersama dengan sistem binari lainnya. Tujuan utama adalah init untuk memulai dan menghentikan program lain dalam urutan tertentu. Anda harus tahu ini adalah bagaimana urutan bekerja.
Ada beberapa variasi yang berbeda, namun sebagian besar distribusi Linux menggunakan Sistem V gaya dibahas di sini. Beberapa distro menggunakan versi yang lebih sederhana yang mirip dengan BSD init, tetapi Anda juga tidak mungkin untuk menghadapi ini.
Runlevel
Pada suatu waktu pada sistem Linux, suatu dasar yang mengatur proses sedang berjalan. Negara ini dari mesin disebut dengan runlevel, dan itu adalah denoted dengan angka dari 0 sampai dengan 6. Sistem yang menghabiskan sebagian besar waktu dalam satu runlevel. Namun, bila Anda mematikan mesin bawah, init beralih ke runlevel yang berbeda untuk menghentikan sistem layanan secara tertib mode dan kirim ke kernel untuk berhenti. Namun lain untuk runlevel adalah satu-mode pengguna, bicarakan nanti.
Cara termudah untuk mendapatkan menangani pada runlevel adalah untuk memeriksa init file konfigurasi / etc / inittab. Cari baris seperti berikut:
id: 5: initdefault:
Ini berarti bahwa baris runlevel default pada sistem 5. Semua baris dalam file inittab mengambil formulir ini, dengan empat kolom dipisahkan oleh titik terjadi dalam urutan sebagai berikut:
# Yang unik (string pendek, seperti id pada contoh sebelumnya)
# Runlevel yang berlaku nomor (s)
# Tindakan yang harus mengambil init (pada contoh sebelumnya, aksi ini adalah untuk menetapkan standar untuk runlevel 5)
# A untuk menjalankan perintah (opsional)
Tidak ada perintah untuk menjalankan dalam init contoh sebelumnya karena perintah tidak masuk akal dalam konteks pengaturan runlevel default. Melihat sedikit lebih lanjut di bawah inittab, sampai anda melihat baris seperti ini:
L5: 5: wait: / etc / rc.d / rc 5
Baris ini memicu sebagian besar sistem konfigurasi dan layanan melalui rc *. d init.d dan direktori. Anda dapat melihat bahwa init diatur untuk menjalankan perintah yang disebut / etc / rc.d / rc 5 ketika berada di runlevel 5. Menunggu tindakan yang memberitahukan kapan dan bagaimana init menjalankan perintah: menjalankan rc 5 sekali ketika memasuki runlevel 5, dan kemudian menunggu perintah ini selesai sebelum melakukan apa-apa lagi.
Ada beberapa tindakan yang berbeda di samping init dan menunggu, terutama yang berkaitan dengan manajemen daya, dan inittab (5) manual halaman memberitahu anda semua tentang mereka. Yang anda yang paling mungkin untuk menemukan dijelaskan dalam seksi berikut.
respawn
Respawn tindakan yang menyebabkan init untuk menjalankan perintah yang berikut, dan jika perintah selesai dijalankan, untuk menjalankannya lagi. Anda bisa melihat sesuatu yang mirip dengan baris ini di file inittab:
1:2345: respawn: / sbin / mingetty tty1
Getty program yang menyediakan layar login. Sebelumnya baris pertama adalah untuk konsol virtual (/ dev/tty1), yang anda lihat ketika anda menekan ALT-F1 atau PENGAWALAN-ALT-F1. Respawn tindakan yang membawa prompt login kembali setelah Anda keluar.
ctrlaltdel
Tindakan yang ctrlaltdel sistem kontrol apa yang tidak ketika Anda menekan PENGAWALAN-ALT-DELETE pada konsol virtual. Pada kebanyakan sistem, ini adalah semacam perintah reboot menggunakan perintah shutdown.
sysinit
Sysinit adalah tindakan yang sangat init hal pertama yang harus dijalankan ketika dijalankan, sebelum masuk setiap runlevel.
Bagaimana proses di runlevel mulai
Anda sekarang sudah siap untuk mulai mempelajari bagaimana sistem init layanan, hanya sebelum memungkinkan Anda log in Recall ini inittab baris dari sebelumnya:
L5: 5: wait: / etc / rc.d / rc 5
Baris kecil ini memicu banyak program lain. rc berdiri untuk menjalankan perintah, dan Anda akan mendengar orang merujuk kepada perintah sebagai script, program, atau layanan. Jadi, di mana ini adalah perintah, anyway?
Untuk runlevel 5, dalam contoh ini, perintah yang mungkin baik di / etc/rc.d/rc5.d atau / etc/rc5.d. Rc1.d menggunakan runlevel 1, 2 runlevel menggunakan rc2.d, dan sebagainya. Anda mungkin menemukan beberapa hal berikut di direktori rc5.d:
S10sysklogd S20ppp S99gpm
S12kerneld S25netstd_nfs S99httpd
S15netstd_init S30netstd_misc S99rmnologin
S18netbase S45pcmcia S99sshd
S20acct S89atd
S20logoutd S89cron
Rc 5 perintah mulai program ini di direktori runlevel dengan menjalankan perintah berikut:
S10sysklogd mulai
S12kerneld mulai
S15netstd_init mulai
S18netbase mulai
...
S99sshd mulai
Pemberitahuan awal argumen dalam setiap perintah. S yang di perintah nama berarti harus menjalankan perintah mulai di modus, dan nomor (00 sampai 99) dalam menentukan dimana urutan perintah rc dimulai.
Rc *. d perintah biasanya skrip shell yang menjalankan program di / sbin atau / usr / sbin. Biasanya, Anda dapat mengetahui apa yang salah satu perintah sebenarnya tidak melihat script dengan kurang pager atau program lain.
Anda dapat memulai salah satu layanan ini dengan tangan. Misalnya, jika Anda ingin memulai program httpd server web secara manual, S99httpd mulai berjalan. Demikian pula, jika Anda merasa perlu untuk membunuh salah satu layanan ketika komputer aktif, Anda dapat menjalankan perintah di rc *. d direktori dengan menghentikan argumen (S99httpd berhenti, misalnya).
Beberapa rc *. d direktori berisi perintah yang dimulai dengan K (untuk "membunuh," atau menghentikan modus). Dalam hal ini, rc menjalankan perintah dengan menghentikan argumen bukan awal. Anda yang paling mungkin untuk menghadapi K perintah dalam runlevel yang mematikan sistem bawah.
Menambah dan menghapus layanan
Jika Anda ingin menambahkan, menghapus, atau memodifikasi pelayanan di rc *. d direktori, Anda perlu melihat di dalam file. Sebuah daftar panjang yang menunjukkan struktur seperti ini:
lrwxrwxrwx. . . S10sysklogd -> .. / init.d / sysklogd
lrwxrwxrwx. . . S12kerneld -> .. / init.d / kerneld
lrwxrwxrwx. . . S15netstd_init -> .. / init.d / netstd_init
lrwxrwxrwx. . . S18netbase -> .. / init.d / netbase
...
Perintah di rc *. d direktori sebenarnya adalah symlink ke file dalam sebuah direktori init.d, biasanya di / etc atau / etc / rc.d. Linux distro berisi link tersebut agar mereka dapat menggunakan skrip startup yang sama untuk semua runlevel. Konvensi ini adalah dengan persyaratan yang tidak berarti, tetapi sering membuat organisasi sedikit lebih mudah.
Untuk mencegah salah satu perintah di init.d direktori dari berjalan di runlevel tertentu, Anda mungkin berpikir dari mengeluarkan symlink yang sesuai di rc *. d direktori. Ini tidak bekerja, tetapi jika Anda membuat kesalahan dan merasa perlu untuk meletakkan link kembali di tempat, Anda mungkin mengalami masalah mengingat nama link. Oleh karena itu, sebaiknya Anda tidak menghapus link di rc *. d direktori, tetapi, menambahkan tanda garis bawah (_) untuk awal nama link seperti ini:
mv S99httpd _S99httpd
Pada waktu boot, rc mengabaikan _S99httpd karena tidak dimulai dengan S atau K. Selanjutnya, nama asli masih jelas, dan Anda memiliki akses cepat ke perintah jika Anda dalam keadaan darurat dan perlu untuk memulai dengan tangan.
Untuk menambahkan layanan, Anda harus membuat skrip yang lain seperti di direktori init.d dan kemudian membuat symlink yang benar rc *. d direktori. Cara termudah untuk menulis skrip untuk memeriksa skrip sudah di init.d, membuat salinan yang Anda memahami, dan mengubah copy.
Ketika menambahkan layanan, pastikan Anda memilih tempat yang sesuai dalam urutan boot untuk memulai layanan. Jika operator mulai terlalu cepat, mungkin tidak bekerja, karena suatu dependensi pada beberapa layanan lainnya. Untuk layanan non-esensial, kebanyakan sistem administrator lebih memilih di nomor 90, setelah sebagian besar layanan yang datang dengan sistem.
Distribusi Linux biasanya datang dengan perintah untuk mengaktifkan dan menonaktifkan layanan di rc *. d direktori. Misalnya, di Debian, perintah adalah update-rc.d, dan Red Hat Linux, adalah perintah chkconfig. Grafis antarmuka pengguna juga tersedia. Menggunakan program ini membantu menjaga startup direktori konsisten dan membantu dengan upgrade.
Petunjuk: Salah satu yang paling umum masalah instalasi Linux adalah sebuah sistem dikonfigurasi XFree86 server yang di film dan off, sehingga tidak bisa digunakan pada sistem konsol. Untuk menghentikan perilaku ini, boot ke modus single user dan merubah Anda runlevel runlevel atau layanan. Mencari sesuatu yang berisi xdm, gdm atau kdm di rc *. d direktori, atau / etc / inittab.
Pengendalian init
Kadang-kadang, Anda harus memberikan sedikit menendang init untuk kirim beralih ke runlevel, untuk kembali membaca file inittab, atau hanya untuk mematikan system. Karena init yang pertama adalah selalu proses pada sistem, dengan proses ID selalu 1.
Anda dapat mengendalikan init dengan telinit. Misalnya, jika Anda ingin beralih ke runlevel 3, gunakan perintah ini:
telinit 3
Ketika berpindah runlevel, init akan mencoba untuk membunuh diri setiap proses yang tidak di inittab file untuk runlevel baru. Oleh karena itu, Anda harus berhati-hati tentang mengganti runlevel.
Bila anda perlu menambahkan atau menghapus respawning pekerjaan lain atau membuat perubahan ke inittab file, Anda harus memberitahu init tentang perubahan dan menyebabkan ke-ulang membaca file. Beberapa orang menggunakan membunuh-1 untuk memacu kirim init untuk melakukannya. Metode tradisional ini bekerja pada kebanyakan versi Unix, selama Anda ketik dengan benar. Namun, Anda juga dapat menjalankan perintah ini telinit:
telinit G
Anda juga dapat menggunakan telinit s untuk beralih ke modus single-user.
Menutup bawah
init juga bagaimana sistem kontrol shuts bawah dan reboots. Cara yang tepat untuk mematikan mesin Linux adalah dengan menggunakan perintah shutdown.
Ada dua cara untuk menggunakan dasar shutdown. Jika Anda kemandekan sistem, maka shuts mesin bawah dan terus ke bawah. Untuk membuat mesin langsung terdiam, gunakan perintah ini:
shutdown-h sekarang
Pada kebanyakan mesin modern cukup dengan versi terbaru dari Linux, yang memberhentikan potongan daya ke mesin. Anda juga dapat reboot komputer. Untuk reboot, gunakan bukan-r-h.
Shutdown proses yang memakan waktu beberapa detik. Anda tidak perlu me-reset atau matikan mesin selama tahap ini.
Dalam contoh sebelumnya, sekarang adalah waktu untuk mematikan. Argumen ini adalah wajib, tetapi terdapat banyak cara yang ditetapkan. Jika Anda ingin mesin untuk turun besok lusa, adalah salah satu cara untuk menggunakan n, dimana n adalah jumlah menit shutdown harus menunggu sebelum melakukan tugasnya. Untuk pilihan lain, lihat di shutdown (8) halaman manual.
Untuk membuat sistem reboot dalam 10 menit, jalankan perintah ini:
shutdown-r 10
Pada Linux, shutdown akan memberitahu siapapun yang login pada mesin ini turun, tetapi ia sedikit kerja sebenarnya. Jika Anda menetapkan waktu selain sekarang, shutdown membuat sebuah file bernama / etc / Nologin. Bila file ini hadir, sistem login dengan melarang semua orang kecuali superuser.
Ketika sistem shutdown waktu akhirnya datang, shutdown memberitahukan init untuk berpindah ke runlevel 0 untuk memberhentikan dan runlevel 6 untuk reboot. Ketika memasuki init runlevel 0 atau 6, semua berikut berlangsung, yang Anda dapat memeriksa dengan melihat script di dalam rc0.d dan rc6.d:
1. membunuh setiap proses init yang dapat (karena akan ketika berpindah ke runlevel lain).
# Awal rc0.d/rc6.d menjalankan perintah, penguncian sistem file ke tempat lain dan membuat persiapan untuk shutdown.
# Berikutnya rc0.d/rc6.d perintah unmount semua filesystem selain root.
# Lebih lanjut rc0.d/rc6.d perintah kuda filesystem root read-only.
# Masih lebih rc0.d/rc6.d perintah buffered menulis semua data ke filesystem yang sinkron dengan program.
# Terakhir rc0.d/rc6.d kirim perintah kernel untuk reboot atau berhenti dengan reboot, terdiam, atau poweroff program.
The program tergagap-gagap reboot dan berkelakuan berbeda untuk setiap runlevel, berpotensi menimbulkan kebingungan. Secara default, program-program tersebut dengan panggilan shutdown-r-h atau pilihan, tetapi jika sistem sudah di perhentian atau reboot runlevel, program kirim kernel untuk mematikan dirinya sendiri di dekat telinga. Jika Anda benar-benar ingin mematikan mesin Anda di bawah terburu-buru (disregarding apapun dari kerusakan yang mungkin usai penutupan), gunakan opsi-f.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment