Apa yang terjadi setelah memuat citra kernel linux ke dalam RAM


9

Saya hanya ingin tahu alur kegiatan yang terjadi setelah memuat citra kernel linux ke dalam RAM setelah proses boot.


2
Anda seharusnya tidak ingin tahu itu. Yang Anda inginkan adalah mempelajarinya .
alex

Jawaban:


15

Pada Linux 2.6:

Inti

Setelah dimuat ke dalam RAM, kernel menjalankan fungsi-fungsi berikut.

setup():

  1. Buat tabel di RAM yang menjelaskan tata letak memori fisik.
  2. Atur penundaan dan tingkat pengulangan keyboard.
  3. Inisialisasi kartu adapter video.
  4. Inisialisasi pengontrol disk dengan parameter hard disk.
  5. Periksa bus IBM Micro Channel.
  6. Periksa perangkat pengarah PS / 2 (mouse bus).
  7. Periksa dukungan Advanced Power Management (APM).
  8. Jika didukung, buat tabel di RAM yang menjelaskan hard disk yang tersedia.
  9. Jika gambar kernel dimuat rendah dalam RAM, pindahkan ke atas.
  10. Atur pin A20 (peretasan kompatibilitas untuk mikroprosesor 8088 kuno).
  11. Menyiapkan Table Descriptor Interrupt sementara (IDT) dan Table Descriptor Global sementara (GDT).
  12. Setel ulang unit titik-mengambang (FPU).
  13. Memprogram Ulang Programmable Interrupt Controllers (PIC).
  14. Beralih dari Mode Nyata ke Mode Terlindungi.

startup_32():

  1. Inisialisasi register segmentasi dan tumpukan sementara.
  2. Bersihkan semua bit dalam eflagsregister.
  3. Isi bidang data yang tidak diinisialisasi dengan nol.
  4. Diminta decompress_kernel()untuk mendekompres image kernel.

startup_32() (nama yang sama, fungsi lainnya):

  1. Inisialisasi register segmentasi akhir.
  2. Isi bsssegmen dengan nol.
  3. Menginisialisasi Tabel Tabel kernel sementara.
  4. Aktifkan paging.
  5. Setup Kernel Mode stack untuk proses 0.
  6. Sekali lagi, bersihkan semua bit dalam eflagsregister.
  7. Isi IDT dengan penangan interupsi nol.
  8. Inisialisasi bingkai halaman pertama dengan parameter sistem.
  9. Identifikasi model prosesor.
  10. 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 runlevelkonsol, 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.


LXR adalah antarmuka yang bagus untuk membaca sumber kernel Linux. Daftar yang bagus, namun berhati-hatilah karena banyak yang bergantung pada arsitektur (ini adalah versi PC).
Gilles 'SO- stop being evil'

1
  • Kernel mengambil kendali sistem H / W segera setelah Anda melihat "Uncompressing Linux ..".
  • Kernel memeriksa dan mengatur register BIOS dari kartu grafis dan format output layar.
  • Kernel kemudian membaca pengaturan BIOS, dan menginisialisasi antarmuka perangkat keras dasar.
  • Selanjutnya driver di kernel menginisialisasi perangkat keras.
  • Kemudian Kernel memeriksa partitons
  • Kemudian me-mount sistem file root
  • Kemudian kernel memulai init, yang mem-boot sistem utama dengan semua program dan konfigurasinya.

0

Boot loader melompat ke titik entri gambar melalui baris perintah kernel (jika ada), dan kernel menangani sisanya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.