Pada Linux 2.6:
Inti
Setelah dimuat ke dalam RAM, kernel menjalankan fungsi-fungsi berikut.
setup()
:
- Buat tabel di RAM yang menjelaskan tata letak memori fisik.
- Atur penundaan dan tingkat pengulangan keyboard.
- Inisialisasi kartu adapter video.
- Inisialisasi pengontrol disk dengan parameter hard disk.
- Periksa bus IBM Micro Channel.
- Periksa perangkat pengarah PS / 2 (mouse bus).
- Periksa dukungan Advanced Power Management (APM).
- Jika didukung, buat tabel di RAM yang menjelaskan hard disk yang tersedia.
- Jika gambar kernel dimuat rendah dalam RAM, pindahkan ke atas.
- Atur pin A20 (peretasan kompatibilitas untuk mikroprosesor 8088 kuno).
- Menyiapkan Table Descriptor Interrupt sementara (IDT) dan Table Descriptor Global sementara (GDT).
- Setel ulang unit titik-mengambang (FPU).
- Memprogram Ulang Programmable Interrupt Controllers (PIC).
- Beralih dari Mode Nyata ke Mode Terlindungi.
startup_32()
:
- Inisialisasi register segmentasi dan tumpukan sementara.
- Bersihkan semua bit dalam
eflags
register.
- Isi bidang data yang tidak diinisialisasi dengan nol.
- Diminta
decompress_kernel()
untuk mendekompres image kernel.
startup_32()
(nama yang sama, fungsi lainnya):
- Inisialisasi register segmentasi akhir.
- Isi
bss
segmen dengan nol.
- Menginisialisasi Tabel Tabel kernel sementara.
- Aktifkan paging.
- Setup Kernel Mode stack untuk proses 0.
- Sekali lagi, bersihkan semua bit dalam
eflags
register.
- Isi IDT dengan penangan interupsi nol.
- Inisialisasi bingkai halaman pertama dengan parameter sistem.
- Identifikasi model prosesor.
- Inisialisasi register dengan alamat GDT dan IDT.
start_kernel()
: Hampir setiap komponen kernel diinisialisasi oleh fungsi ini, ini hanya beberapa.
- Penjadwal
- Zona memori
- Pengalokasi sistem teman
- IDT
- SoftIRQs
- Tanggal dan waktu
- Pengalokasi slab
- Buat proses 1 (
/sbin/init
)
"Daftar" lengkap tersedia di sumber di linux / init / main.c
Init
Init memulai semua proses pengguna yang diperlukan untuk membawa sistem ke kondisi yang diinginkan, rutin ini sangat tergantung pada distribusi dan runlevel yang dipanggil.
Ketik runlevel
konsol, ini memberi Anda runlevel saat ini dari sistem Anda.
Lihatlah /etc/rcX.d/
(atau /etc/rc.d/rcX.d/
), ganti X dengan runlevel Anda.
Ini adalah symlink yang dipesan oleh prioritas eksekusi. S01....
berarti, skrip ini dimulai sangat awal, sementara S99....
berjalan di akhir proses boot. ItuKXX....
symlink melakukan tapi sama untuk urutan shutdown.
Secara umum, skrip ini menangani disk, jaringan, logging, kontrol perangkat, driver khusus, lingkungan, dan banyak urutan lainnya yang diperlukan.