Compilando il kernel di Linux stiamo costruendo un sistema operativo totalmente autonomo che non dipende da nessuna destabilizzazione di Linux?
No. Linux da solo non è un sistema operativo. È solo un kernel. UN userland , che comprende una raccolta di librerie di sistema e software di base, è necessario per facilitare l'interazione con il computer. In ciò che comunemente intendiamo quando ci riferiamo a "Linux", questo è fornito da un progetto separato chiamato Progetto GNU. Tecnicamente, dovremmo (e alcuni lo fanno) chiamarlo "GNU / Linux".
Bene, quando voglio creare il file initrd usando il comando initramfs perché aggiunge alcune informazioni sulla mia distribuzione Linux in esecuzione (sto usando Ubuntu 10.4)?
Poiché il tuo initrd contiene la raccolta di programmi che inizialmente impostano il tuo sistema all'avvio, carica i driver e i demoni necessari, trova e monta le partizioni richieste sul tuo disco rigido, ecc. In realtà è personalizzato non solo per il tuo distribuzione, ma alla tua particolare installazione, configurazione e computer. Non è generalmente intercambiabile con l'initrd di qualcun altro. Ecco perché deve essere generato dal tuo sistema.
Come dovrei compilare e aggiungere moduli al mio Linux compilato e dove dovrei metterli?
Se stai compilando il tuo kernel, presumibilmente lo stai facendo make menuconfig
nella directory sorgente del kernel prima della compilazione, che consente di selezionare quali funzionalità saranno compilate e se saranno integrate nel binario del kernel o rese disponibili come moduli.
Questo è un riassunto di ciò che ho fatto:
Ci sono una serie di motivi per cui questo non funzionerà nel modo desiderato.
ottenere il sorgente del kernel (3.4.1) e compilarlo usando il comando "make all" (uso il mio attuale .config di linux)
Se stai usando Ubuntu 10.04, che precede di molto il ramo 3.x del kernel Linux, per non parlare di 3.4. Molto probabilmente non funzionerà correttamente, almeno non senza un'enorme quantità di lavoro extra. Anche i file di configurazione sono cambiati parecchio, e sono francamente sorpreso che non stiano commettendo errori di sinistra e di destra su cose nel file di configurazione (presumibilmente per Linux 2.6) che non corrispondono a come sono fatte le cose in 3.4. Inoltre, probabilmente vorrai scaricare il pacchetto sorgente del kernel di Ubuntu e non il semplice sorgente del kernel di vanilla da kernel.org, dato che Ubuntu aggiusta il kernel per includere le funzionalità necessarie e renderlo piacevole con tutto il resto del sistema. Infine, ti manca un certo numero di passaggi, che entrerò in seguito.
Mettendo il bzImage compilato nella directory / boot della mia memory stick
Non sono sicuro di quale sia la tua intenzione con questo, ma se vuoi avere un'installazione completa Linux avviabile sulla tua memory stick, c'è un po 'più di quello - non hai alcuna roba per gli utenti su quella memoria bastone, per esempio. Ciò che effettivamente farà, se impostato correttamente, è (provare a) eseguire l'installazione di Ubuntu sul disco rigido con il kernel sulla memory stick. Credo che questo dovrebbe funzionare, ma perché farlo invece di installare il kernel sul tuo disco fisso? È possibile installarlo parallelamente a quello esistente in modo da poter passare liberamente da uno all'altro.
Entrare in un terminale (initramfs) dopo un errore che afferma che non è stato possibile trovare il file "/lib/modules/3.4.1/modules.dep" !!!
Questo risale ai passaggi mancati che ho menzionato prima. Devi make modules_install
il tuo nuovo kernel in cui inserire i suoi moduli /lib/modules
.
PERÒ...
Niente di tutto questo è davvero importante, perché idealmente non dovresti compilare un kernel in modo "tradizionale", a meno che tu non abbia un bisogno molto specifico di farlo. In questi giorni, se dovessi effettivamente aver bisogno di compilare il tuo kernel, la maggior parte delle distribuzioni ha un modo per farlo che usa la versione del kernel personalizzata (se applicabile), automatizza il processo di compilazione, installa il kernel come pacchetto in modo da poter installare e rimuovere in modo pulito se necessario, e configura il tuo bootloader per darti una scelta dei nuovi o dei vecchi kernel. In Ubuntu dovresti seguire queste istruzioni: Kernel / Compile - Ubuntu Wiki
Il che non vuol dire che non si possa compilare un kernel alla "vecchia maniera" solo per i kick / per scopi didattici - Ho compilato il mio primo kernel in questo modo, ma questo era prima che ci fossero modi migliori per farlo. Se il tuo sistema non è rotto, è importante per te, usa il metodo consigliato per la tua distribuzione, usa la loro fonte e usa la loro gestione dei pacchetti.