A partire da Linux 2.6:
nocciolo
Dopo essere stato caricato nella RAM, il kernel esegue le seguenti funzioni.
setup():
- Costruisci una tabella nella RAM che descriva il layout della memoria fisica.
- Imposta il ritardo e la frequenza di ripetizione della tastiera.
- Inizializza la scheda adattatore video.
- Inizializza il controller del disco con i parametri del disco rigido.
- Verificare il bus IBM Micro Channel.
- Verificare la presenza di dispositivi di puntamento PS / 2 (mouse del bus).
- Verificare il supporto per Advanced Power Management (APM).
- Se supportato, crea una tabella nella RAM che descriva i dischi rigidi disponibili.
- Se l'immagine del kernel è stata caricata in modo insufficiente nella RAM, spostarla in alto.
- Imposta il pin A20 (un hack di compatibilità per gli antichi microprocessori 8088).
- Configurare una tabella descrittiva di interrupt provvisoria (IDT) e una tabella descrittiva globale provvisoria (GDT).
- Ripristinare l'unità a virgola mobile (FPU).
- Riprogrammare i Programmable Interrupt Controller (PIC).
- Passa dalla modalità reale alla modalità protetta.
startup_32():
- Inizializza i registri di segmentazione e uno stack provvisorio.
- Cancella tutti i bit nel
eflagsregistro.
- Riempi l'area di dati non inizializzati con zeri.
- Invoca
decompress_kernel()per decomprimere l'immagine del kernel.
startup_32() (stesso nome, altra funzione):
- Inizializza i registri di segmentazione finali.
- Riempi il
bsssegmento con zeri.
- Inizializza le tabelle delle pagine del kernel provvisorio.
- Abilita paging.
- Impostazione dello stack in modalità kernel per il processo 0.
- Ancora una volta, cancella tutti i bit nel
eflagsregistro.
- Riempi l'IDT con gestori di interrupt nulli.
- Inizializza il primo frame della pagina con i parametri di sistema.
- Identificare il modello del processore.
- Inizializza i registri con gli indirizzi di GDT e IDT.
start_kernel(): Quasi tutti i componenti del kernel vengono inizializzati da questa funzione, questi sono solo alcuni.
- Scheduler
- Zone di memoria
- Allocatore di sistema Buddy
- IDT
- SoftIRQs
- Data e ora
- Allocatore di lastre
- Crea processo 1 (
/sbin/init)
La "lista" completa è disponibile nei sorgenti su linux / init / main.c
Dentro
Init avvia tutto il processo utente necessario per portare il sistema nello stato desiderato, questa routine dipende fortemente dalla distribuzione e dal runlevel invocato.
Digita runlevelnella console, questo ti dà il runlevel corrente del tuo sistema.
Dai un'occhiata a /etc/rcX.d/(o /etc/rc.d/rcX.d/), sostituendo la X con il tuo runlevel.
Questi sono collegamenti simbolici ordinati per priorità di esecuzione. S01....significa che questo script viene avviato molto presto, mentre S99....viene eseguito alla fine del processo di avvio. I KXX....collegamenti simbolici fanno lo stesso, ma per la sequenza di spegnimento.
In genere, questi script gestiscono dischi, reti, registrazione, controllo dei dispositivi, driver speciali, ambiente e molte altre sequenze richieste.