
Tag: Linux, Bash, Informatica, Sistemi Operativi.Visto 406 volte.
L'initrd fa si che un disco RAM sia caricato all'avvio immediatamente dopo l'esecuzuione del boot loader, prima viene montato initrd stesso come file system di root, successivamente, nella sequenza di boot verrà poi smontato.
Se vogliamo ottimizzare l'avvio possiamo togliere dal caricamento da parte del kernel moduli non necessari o che possono creare problemi, in questo esempio il modulo è semplicemete non necessario (modulo per i dischi scsi), poichè siamo nella fase precedente al lancio di udev inserire un modulo in blacklist non assolve allo scopo di non caricarlo.
Procedimento:
Scopriamo quale versione del kernel stiamo utilizzando:
Code:
2.6.18-128.2.1.el5
Copiamo dal file system di boot l'initrd corrispondente al kernel attuale, da modificare
Code:
Spostiamoci dove abbiamo copiato l'immagine e per convenienza rinominiamola aggiungendo l'estensione .gz
Code:
cd /tmp
mv initrd-2.6.18-128.2.1.el5.img initrd-2.6.18-128.2.1.el5.img.gz
Creiamo una directory dove andremo a lavorare
Code:
cd INITRD/
Espandiamo l'initrd con il seguente comando
Code:
Troviamo il modulo che vogliamo rimuovere, tipicamente in lib/
Code:
rm scsi_mod.ko
Ricompattiamo l'immagine così modificata e nominamola con un nome significativo in questo caso con l'aggiunta NO-SCSI
Code:
find ./ | cpio -H newc -o > ../initrd-NO-SCSI-2.6.18-128.2.1.el5.img
cd ..
gzip initrd-NO-SCSI-2.6.18-128.2.1.el5.img
Portiamo la nuova initrd nel filesystem di boot
Code:
Aggiungiamo una voce nel menù di grub per questa nuova immagine, è da notore che è del tutto simile ad una già esistente ad eccezione della riga intrd, che verrà modificato inserendo il nome della nostra intrd personalizzata
Code:
title CentOS (2.6.18-128.2.1.el5) - NO SCSI
root (hd0,0)
kernel /vmlinuz-2.6.18-128.2.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-NO-SCSI-2.6.18-128.2.1.el5.img.gz
Poichè alcuni moduli presenti nell'intrd se non caricati all'avvio dal kernel vengono successivamente caricati da udev, vanificando quindi la rimozione fatta, è sufficiente aggingere gli stessi nella blacklist
Controlliamo quali moduli scsi sono ora caricati con il comando:
Code:
Aggiungiamoli alla blacklist dei moduli
Code:
Aggiungiamo
blacklist scsi_mod
Per utilizzare la nuova initrd è necessario riavviare selezionando al boot la nuova voce dal menù di boot.
E' normale che compaiano degli errori per moduli non trovati, poichè con la procedura p recente abbiamo rimosso il modulo, ma abbiamo lasciato le richieste di caricamento : la macchina farà il boot comunque in modo regolare.
Tags
Apache Bash Elastix Firewall Firma digitale Geolocazione Grafica Informatica Internet Java Linux OpenMoko PHP Programmazione Python Reti Ricetta SEO Sicurezza Sistemi Operativi Varie Virtualizzazione VoIPLink ad altri blog:


