Kernel Açılış Süreci

Sistem Açılışı

Sistem Açılışı

Kernel Bootstrap Süreci

bootstrap

Kernel Derleme İşleminde Son Adımlar

Kernel Bootstrap Kodu

  • head.o:

Bu bölümde mimariye özgün obje kodları bulunur. Boot yükleyici uygulama tarafından çalıştırılmasına yöneliktir.

  • head-cpu.o:

İşlemciye özgü ilklendirme işlemlerine ait kodları barındırır.

  • decompress.o:

Sıkıştırılmış formda bulunan kernel'i açma işlemlerini gerçekleştirir.

  • lib1funcs.o:

ARM mimarisi için optimize edilmiş bölme işlemlerine dair kodları içerir. VFP NEON

head.o Tarafından Yapılan İşlemler

  • Mimari, işlemci ve makine/sistem tipinin belirlenmesi

  • Memory Management Unit konfigürasyonu ve virtual memory desteğinin etkinleştirilmesi

  • init/main.c içerisindeki start_kernel fonksiyounun çağrılması

start_kernel

  • setup_arch(&command_line) ile bootloader tarafından spesifik bir adrese konulmuş olan kernel boot parametrelerini işler

  • Mesajları olabildiğince erken gösterebilmek için console aygıtının ilklendirilmesi

  • security, buffers, high resolution timers gibi bir çok altsistemin ilklendirilmesi

  • Son olarak rest_init'in çağrılması

rest_init

init sürecinin her zaman PID değeri olarak 1 alması için erkenden bir thread oluşturuluyor ve idle_loop'a geri dönüyor:

kernel_init

kernel_init temel olarak iki çağrıda bulunur:

  • Bu aşamada temel kernel servisleri hazır olduğundan, device init işlemlerini başlatmak amacıyla do_basic_setup çağrılır

  • Sonrasında init_post çağrılır

init_post

  • Boot işleminin son adımlarını gerçekleştirmekten sorumludur.

  • Bir console açmayı dener (Initial Console)

  • Başarısız olduğu takdirde: Unable to open initial console uyarı mesajı görüntülenir.

  • Ardından init process'ini çalıştırmayı dener.

  • Başarılı olması halinde rest_init sürecinde oluşturulan kernel thread'ini bir userspace process'e dönüştürür.

init_post

Özet

  • Boot yükleyici uygulaması tarafından bootstrap kodu çalıştırılıyor

  • Bootstrap kodu işlemci ve kartı ilklendiriyor

  • Ardından Linux kernel'i RAM bellek üzerinde uncompress ediyor.

  • start_kernel fonksiyonu çalıştırılıyor

  • Boot yükleyici tarafından sağlanan command line bölümü kopyalanıyor

  • Sistem ve konsol ilklendirmeleri yapılıyor

  • Temel kernel servisleri ilklendiriliyor

  • İleride init process'ine dönüşecek kernel thread'i oluşturuluyor

  • Aygıtlar ilklendiriliyor ve init process'i userspace'ten çalıştırılıyor.

Last updated

Was this helpful?