I kernel-header
pacchetti di distribuzione contengono, come suggerisce il nome, solo file di intestazione del kernel (oltre all'impianto idraulico necessario) necessari per compilare software come i moduli del kernel.
Non dovresti aspettarti di trovare file binari in una directory sorgente del kernel , ad eccezione dell'output di compilazione. (Se configuri e costruisci un kernel da solo, la directory sorgente del kernel conterrà anche gli oggetti compilati, i moduli, il kernel stesso e alcuni altri bit e pezzi binari che lo fanno funzionare.) I
KConfig
file sono una descrizione delle opzioni di configurazione del kernel (e le relative dipendenze) disponibili per una determinata directory / modulo.
A parte questo, è tutto (principalmente) codice sorgente C, file header e Makefile
s. Ci sono alcuni script di supporto qua e là e anche la fonte dell'assembly.
I pacchetti di intestazioni (quello che hai installato) contengono solo la parte di intestazione di cui sopra (e non tutto ciò - solo le intestazioni "esportate") e alcune delle infrastrutture di compilazione. Quindi è previsto ciò che stai vedendo. I pacchetti di intestazioni non contengono codice sorgente C (ad eccezione di alcuni stub e codice infrastruttura build). Il punto centrale di avere questo tipo di pacchetto è risparmiare spazio (e larghezza di banda) - l'intero albero dei sorgenti del kernel Linux è piuttosto grande e completamente inutile se non si intende compilare il kernel da soli. I pacchetti di intestazione sono costruiti e spediti dalle distribuzioni per fornire le cose giuste necessarie per costruire i moduli, ma non di più. (Certamente non contengono il kernel compilato.)
Rispondere al tuo commento: i pacchetti di intestazione non si spostano da nessuna parte. Sono creati per versioni specifiche del kernel, impacchettati in una directory specifica e basta. È solo un insieme di file. (Si noti che i pacchetti di intestazione non hanno necessariamente la stessa versione dei pacchetti binari correnti del kernel stabile - i pacchetti di intestazione sono generici e possono rimanere indietro rispetto al kernel reale in esecuzione. Tuttavia, non dovrebbero provenire da un kernel versione più recente dell'attuale kernel installato (o di destinazione).)
I binari del kernel installati sono generalmente installati nella /boot
directory, insieme ai file binari del bootloader e ai file di configurazione. (Questo a volte è un filesystem indipendente, non montato per impostazione predefinita.) Il nome esatto dei file dipende dal kernel e dalla distribuzione. (Anche il bootloader.)
I moduli del kernel installati risiedono in sottodirectory di:
/lib/modules/`uname -r`/
Quindi, per esempio sul mio sistema, sono attualmente in
/lib/modules/3.1.4-gentoo/
Codice sorgente completo del kernel : su Ubuntu, se vuoi che le fonti complete del kernel costruiscano tu stesso un kernel, dovresti installarlo seguendo le istruzioni qui .
Puoi anche scaricare un tarball sorgente da kernel.org
e decomprimerlo da qualche parte ( non sovrascrivere i file installati su Ubuntu se usi questo tarball, mantieni separati i tuoi oggetti personali e quelli gestiti da RPM).
/usr/src/linux
è un posto tradizionale dove mettere i sorgenti del kernel, ma nulla ti impedisce di collocare fonti del kernel altrove. Questo percorso è spesso anche solo un collegamento simbolico a una directory. ad esempio, ho questo sul mio computer:
$ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec 7 17:03 /usr/src/linux -> linux-3.1.4-gentoo
Il link simbolico è lì per semplificare la creazione di applicazioni che dipendono dal sorgente del kernel. Colleghi quel percorso al tuo kernel in esecuzione (o destinazione) in modo da non dover specificare la versione esatta o le informazioni sul percorso quando compili un modulo fuori dall'albero. Aiuta almeno un sacco per le distribuzioni basate sulla fonte.