GNU/Linux >> Linux Esercitazione >  >> Linux

L'intero kernel è caricato in memoria all'avvio?

L'intero kernel viene caricato in memoria all'avvio, tipicamente insieme a un initramfs al giorno d'oggi. (È ancora possibile configurare un sistema per l'avvio senza initramfs ma è insolito su desktop e server.)

Il initramfs Il ruolo di è fornire le funzionalità necessarie per montare i filesystem "reali" e continuare ad avviare il sistema. Ciò coinvolge i moduli del kernel e anche vari binari:è necessario almeno udev , forse un po' di networking, e kmod che carica i moduli.

I moduli possono essere caricati nel kernel dopo il semplice avvio, quindi non c'è una preparazione speciale del kernel da parte del initramfs . Possono essere memorizzati ovunque:il initramfs , /lib/modules sul vero filesystem, in un albero di sviluppo se stai sviluppando un modulo... Il initramfs deve contenere solo i moduli necessari per montare il filesystem root (che contiene il resto).


L'intero kernel (ma non i suoi moduli) verrà caricato in memoria. Se ci sono moduli di cui il kernel avrà bisogno prima che qualsiasi filesystem sia disponibile (questo di solito significa i driver per i filesystem e i loro dispositivi), allora quei moduli saranno nell'initramfs (in memoria) e il kernel li caricherà da lì. Altri moduli possono essere caricati successivamente dal file system.


Il kernel nelle moderne configurazioni di Linux è fortemente basato su moduli, ovvero il kernel vero e proprio (caricato all'avvio nella RAM) include solo le funzionalità minime, tutto il resto è compilato come moduli (caricabili in fase di esecuzione). Per farlo funzionare anche quando ad es. i dispositivi o filesystem richiesti per l'avvio sono moduli, un initramfs viene caricato con il kernel (come suggerisce il nome, si tratta di un'area RAM con un semplice filesystem, montato all'avvio). Questo filesystem temporaneo è montato su / e contiene i programmi di avvio ei moduli richiesti. Una volta eseguito l'avvio su initramfs è fatto, Linux esegue un pivot_root(8) , montando il vero / e lanciando il initramfs contenuto.

Il punto di questa complessità è che ad es. una distribuzione può compilarne uno kernel (kernel minimo e set completo di moduli) e all'installazione del kernel crea un initramfs su misura per l'hardware e la configurazione della macchina di destinazione. Tutto ciò è necessario a causa della grande varietà di dispositivi e configurazioni di "Personal Computer".


Linux
  1. Il kernel Linux:le 5 migliori innovazioni

  2. Driver del dispositivo del kernel Linux a DMA da un dispositivo nella memoria dello spazio utente

  3. Come pulire la directory /boot su LINUX Mint?

  4. Come disabilitare l'accesso del kernel al journal di systemd?

  5. Come monitorare l'utilizzo della memoria dedicata al kernel?

Elenca le informazioni sul modulo del kernel caricato utilizzando il comando Lsmod

Linux:come avviare Puppy Linux Slacko nella riga di comando?

Linux:cosa implica il layout della memoria del kernel virtuale in Dmesg?

CentOS / RHEL 6:come avviare in modalità utente singolo

Come posso riservare un blocco di memoria dal kernel Linux?

Dove va la memoria rimanente di vm.overcommit_ratio?