GNU/Linux >> Belajar Linux >  >> Linux

Apakah seluruh kernel dimuat ke dalam memori saat boot?

Seluruh kernel dimuat ke dalam memori saat boot, biasanya bersama dengan initramfs dewasa ini. (Masih memungkinkan untuk menyiapkan sistem untuk boot tanpa initramfs tapi itu tidak biasa di desktop dan server.)

initramfs Perannya adalah menyediakan fungsionalitas yang diperlukan untuk me-mount sistem file "nyata" dan melanjutkan booting sistem. Itu melibatkan modul kernel, dan juga berbagai binari:Anda memerlukan setidaknya udev , mungkin beberapa jaringan, dan kmod yang memuat modul.

Modul dapat dimuat ke dalam kernel setelah boot, jadi tidak ada persiapan khusus dari kernel dengan initramfs . Mereka dapat disimpan di mana saja:initramfs , /lib/modules pada sistem file sebenarnya, di pohon pengembangan jika Anda sedang mengembangkan modul... initramfs hanya perlu memuat modul yang diperlukan untuk me-mount sistem file root (yang berisi sisanya).


Seluruh kernel (tetapi bukan modulnya) akan dimuat ke dalam memori. Jika ada modul yang diperlukan kernel sebelum sistem file apa pun tersedia (ini biasanya berarti driver untuk sistem file dan perangkatnya), maka modul tersebut akan berada di initramfs (di memori), dan kernel akan memuatnya dari sana. Modul lain dapat dimuat nanti dari sistem file.


Kernel dalam pengaturan Linux modern sangat berbasis modul, yaitu, kernel yang tepat (dimuat saat boot ke RAM) hanya menyertakan fungsionalitas minimal, sisanya dikompilasi sebagai modul (dapat dimuat saat runtime). Untuk membuat ini berfungsi bahkan ketika mis. perangkat atau sistem file yang diperlukan untuk boot adalah modul, sebuah initramfs dimuat dengan kernel (seperti namanya, ini adalah area RAM dengan sistem file sederhana, dipasang saat boot). Sistem file sementara ini dipasang pada / , dan berisi program startup dan modul yang diperlukan. Setelah startup di initramfs selesai, Linux mengeksekusi pivot_root(8) , memasang / asli dan melempar initramfs konten.

Inti dari kerumitan ini adalah mis. distribusi dapat mengkompilasi satu kernel (kernel minimal dan kumpulan modul lengkap), dan pada instalasi kernel buatlah initramfs disesuaikan dengan perangkat keras dan pengaturan mesin target. Semua ini diperlukan karena banyaknya variasi perangkat dan konfigurasi "Komputer Pribadi".


Linux
  1. Linux – Bagaimana Cara Mem-boot Puppy Linux Slacko Ke Baris Perintah?

  2. Apakah mungkin mem-boot kernel Linux tanpa membuat gambar initrd?

  3. mmap:apakah file yang dipetakan akan segera dimuat ke memori?

  1. Bagaimana cara menonaktifkan kernel yang masuk ke jurnal systemd?

  2. Bagaimana cara memantau penggunaan memori yang didedikasikan untuk kernel?

  3. Apa perbedaan antara driver kernel dan modul kernel?

  1. Linux – Apa yang Disiratkan oleh Tata Letak Memori Kernel Virtual Di Dmesg?

  2. Berapa banyak RAM yang digunakan kernel?

  3. Kemana perginya sisa memori vm.overcommit_ratio?