trucchi-comtutti i trucchi che nessuno sà |
AREA PERSONALE
TAG
MENU
CONTATTA L'AUTORE
Nickname: romoletto640
|
|
|
![]() ![]() ![]() ![]() Età: 59 Prov: EE |
« cos'è linux? | grub » |
compilare il kernelOvviamente il problema era chiaro, come spiegato nelle varie guide, se si vuole compilare ed installare un kernel senza usare l’immagine initrd (preferibile) è necessario compilare staticamente nel kernel i moduli relativi al filesystem in uso nella partizione di root / e al controller dei dischi del proprio PC. Il problema è che, come nel più classico dei casi, ero convinto di averli messi!! :) Così ho deciso di adottare un’altra strada, forse semplice e banale, ma che mi è sembrato utile riportare qui per altre persone che possono incappare nel medesimo problema. Ho preso il file di configurazione (/boot/config*) standard del kernel precompilato che è possibile scaricare tramite apt-get e l’ho usato per avviare la configurazione del kernel con le opzioni standard con cui ero sicuro funzionasse. Ho quindi tolto solo le cose di cui ero sicuro non aver bisogno ed ho avviato la compilazione con il supporto per l’immagine initrd (make-kpkg –append-to-version=XXXX -revision=XX –initrd kernel_image). La parte essenziale qui è la creazione dell’immagine di initrd: esistono diversi sistemi per la generazione della stessa, update-initramfs (fornito dal pacchetto initramfs-tools - standard) e il recente mkinitrd.yaird (fornito dal pacchetto yaird). Mkinitrd.yaird è il tool che useremo in quanto, al contrario del metodo standard, per la creazione dell’immagine di initrd, esegue una scansione del sistema e carica solo i moduli necessari. Quindi, dopo aver installato yaird con apt-get, synaptic o aptitude, è necessario dire al sistema di usare quel tool per la generazione dell’immagine di initrd, altrimenti di default verrà utilizzato il tool di sistema mkinitramfs. Per fare ciò è necessario modificare il file /etc/kernel-img.conf e aggiungere la seguente riga:
Ora è quindi possibile lanciare la compilazione del kernel. A questo punto, dopo aver riavviato il sistema col nuovo kernel, sarà sufficente scompattare l’immagine di initrd in una cartella temporanea ed esaminare il suo contenuto per vedere quali sono i moduli necessari da compilare staticamente nel kernel per non avere più kernel panic al boot del nostro kernel compilato senza initrd! :)
Per fare ciò è sufficente creare una cartella dove scompattare l’immagine (ad esempio initrd in /tmp) e digitare:
ovviamente potete sostituire initrd.img-* col nome completo del file creato nel vostro sistema (attenzione che il comando scompatta l’initrd dove vi trovate, quindi posizionatevi nella cartella che avete creato precedentemente prima di eseguirlo). Ora sarà sufficiente esplorare il contenuto di /lib/modules/2.6.*/kernel/ e nelle sottocartelle drivers/ e fs/ troverete i moduli caricati dal sistema al boot, quindi necessari per il funzionamento dello stesso. Cercateli durante la compilazione del vostro nuovo kernel e compilateli staticamente all’interno dello stesso, al prossimo riavvio col vostro nuovo kernel non avrete più a che fare con un kernel panic! ;) |