GNU/Linux >> Linux Esercitazione >  >> Linux

Come può un kernel Linux essere così piccolo?

Sì. Se li rimuovi (compila/crea solo i moduli di cui hai bisogno), comprimi il kernel (ottimizza per le dimensioni)... otterrai un kernel così piccolo. Puoi crearne uno ancora più piccolo, per un sistema mirato. Come conosco il mio PC, conosco le mie cose. Quindi mi limiterò a compilare ciò di cui ho bisogno. Come i miei driver SATA, driver per USB, ecc. Nient'altro. Nessuna webcam, nessuna vecchia unità IDE, niente.

Inoltre:quelli più grandi che incontri sono l'INTERO kernel (che non è mai necessario usare). Anche quelli desktop contengono (la maggior parte delle volte, come moduli) MOLTE cose non necessarie. Ma i neofiti si aspettano che ogni tipo di hardware che collegano funzioni.

(Si noti che i moduli non verranno caricati fino a quando non saranno necessari. Ci sono 3 stati:
[ ] - Non verrà compilato, non farà parte del tuo kernel.
[M] - Verrà compilato come modulo.
(Puoi modificarlo o il tuo sistema lo caricherà automaticamente quando sarà necessario.
Dipende dal sistema, userland.)
[X] - Verrà compilato nel kernel E sarà presente - sempre.

Distro con kernel piccolo:

  • Tiny Core Linux, Micro Core Linux, Desktop GUI Linux da 12 MB, live, frugale, estendibile
  • Puppy Linux Community Home - Per iniziare

Le prime distribuzioni Linux come Tom's Root-Boot, MuLinux, Diet-router, (l'ormai defunto) LOAF e molte altre ora scomparse, si adattavano tutte a un sistema Linux funzionante su uno o due dischetti da 1,44 MB.

Il kernel di Linux è cresciuto ma è modulare:i moduli del kernel vengono caricati secondo necessità. Quindi è ancora possibile produrre una distribuzione Linux con un ingombro molto ridotto.

Vedere:Guida alla regolazione delle dimensioni del kernel - eLinux.org

Se leggi Linux_tiny.pdf vedrai questo

  • kernel 0.99pl15 storico:Slackware 1.1.2, 1994:301K
  • Fedora Core 2:1,2 milioni
  • SuSE 9.1:1,5 milioni
  • 2.6.5-tiny1 configurazione di prova:IDE, ext2, TCP, NIC:363K

La configurazione predefinita del kernel è configurata per supportare il maggior numero di hardware possibile. Un kernel non rimosso con configurazione predefinita ha prodotto una dimensione di 1897996 kB (incluso kernel + moduli). Eliminando molti driver e opzioni non necessari (perché avrei bisogno di un modulo HP se possiedo un notebook Clevo), il risultato è stato una dimensione di 892892 kB, ovvero una riduzione delle dimensioni del 53% rispetto al kernel di serie.

Quando installi i moduli del kernel, aggiungi INSTALL_MOD_STRIP=1 opzione. Questo eliminerà tutti i simboli di debug e ridurrà le dimensioni del 92% per me (da 892892 kB a 69356 kB). Nota che questo avrà effetto solo sui moduli da installare e non sul kernel (vmlinuz) stesso:

make INSTALL_MOD_STRIP=1 modules_install

Da Documentation/kbuild/kbuild.txt:

INSTALL_MOD_STRIP
--------------------------------------------------
INSTALL_MOD_STRIP, if defined, will cause modules to be
stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
the default option --strip-debug will be used.  Otherwise,
INSTALL_MOD_STRIP value will be used as the options to the strip command.

Linux
  1. Linux:come ricaricare correttamente un modulo del kernel?

  2. Come creare, compilare e caricare moduli del kernel caricabili LKM Linux

  3. Puoi eseguire Xcode in Linux?

  4. Come caricare i moduli del kernel Linux dal codice C?

  5. Come codificare un modulo del kernel Linux?

I moduli del kernel Linux di cui non possiamo fare a meno

Come caricare o scaricare un modulo del kernel Linux

Come caricare e scaricare i moduli del kernel in Linux

Come controllare la versione del kernel in Linux

Come costruire il kernel Linux da zero

Come posso verificare se KPTI è abilitato su Linux?