sperando di far cosa gradita senza annoiare alcuno, ecco un tutorial per cercare di comprendere insieme a voi qualcosa di piu' su initrd in slackware.
dopo aver letto e attinto dai piu' recenti tutorials per la compilazione del kernel (README.initrd, wikislack di loris su slacky.eu, alienbob etc etc), ho deciso di buttarmi e provare. a tanti non piace initrd, vabbe' pero' a volte serve
ovvio, ai piu' bravi non serve e non piace. il tutto e' rivolto a quelli (niubbi ^_^) come me sempre work-in-progress e appassionati della slack* in tutte le sue sfumature.
e ce ne sono, credetemi! per tutte le correzioni o consigli di chi vuole contribuire, son sempre ben accette, grazie a voi.
in questa guida son partito con i driver nouveau. ho messo i driver proprietari nvidia alla fine di tutto col kernel nuovo. pat consiglia per la loro stabilita' i 3.4.* e io preso il piu' recente da kernel.org.
vi posto un semplicissimo /etc/fstab
Codice: Seleziona tutto
/dev/sda1 swap swap defaults 0 0
/dev/sda2 / ext4 defaults,noatime 1 1
#/dev/cdrom /mnt/cdrom auto noauto,owner,ro,comment=x-gvfs-show 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults,noatime,size=4G 0 0
tmpfs /home/utente/.cache/ tmpfs defaults,noatime,size=4G 0 0Codice: Seleziona tutto
image = /boot/vmlinuz-generic-smp-3.2.29-smp # per il generic-smp ci vuole d'obbligo initrd, ho sostituito vmlinuz e rilanciato lo script mkinitrd
initrd = /boot/initrd.gz
root = /dev/sda2
label = 3.2.29-smp
read-only
# Linux bootable partition config ends
image = /boot/vmlinuz-generic-smp-3.4.42-smp
initrd = /boot/initrd-3.4.42-smp.gz
label = 3.4.42-smp
read-onlyCodice: Seleziona tutto
$ su -Codice: Seleziona tutto
# cd /home/utente # entrate nella vostra home personale che di sicuro dovreste aver creato gia'Codice: Seleziona tutto
# mkdir -p packaging-x86 # creo gia' una directory per lo slackbuild per pacchettizzare dopo i kernel-modules. lo trovate per esempio in http://slackware.org.uk/slackware/slackware-current/source/k/packaging-x86/kernel-modules-smp/Codice: Seleziona tutto
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.42.bz2 # scarico il kernelCodice: Seleziona tutto
# cd packaging-x86Codice: Seleziona tutto
# wget ftp://ftp.slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-modules-smp/kernel-modules-smp.SlackBuild # scarico lo slackbuild kernel-modules-smpCodice: Seleziona tutto
# wget ftp://ftp.slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-modules-smp/rc.modules.newCodice: Seleziona tutto
# wget ftp://ftp.slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-modules-smp/slack-descCodice: Seleziona tutto
# cd /home/utenteCodice: Seleziona tutto
# tar -C /usr/src/ -jxf linux-3.4.42 # scompatto il kernel in /usr/srcCodice: Seleziona tutto
# cd /usr/srcCodice: Seleziona tutto
# rm linuxCodice: Seleziona tutto
# ln -s linux-3.4.42/ linux # si ricrea il link al kernel nuovo dopo aver eliminato il precedenteCodice: Seleziona tutto
# cd linuxCodice: Seleziona tutto
# make mrproper # spazziamo via la precedente configurazioneCodice: Seleziona tutto
# wget http://slackware.mirrors.tds.net/pub/slackware/slackware-14.0/testing/source/config-testing-3.4.11/config-generic-smp-3.4.11-smp # questa e' una configurazione proposta dallo stesso pat che io utilizzero'Codice: Seleziona tutto
# cp config-generic-smp-3.4.11-smp /usr/src/linux/.config # copio la configurazione del kernel generic-smpCodice: Seleziona tutto
# make menuconfig # io uso sempre menuconfig, se vi garba tutto (io non ho toccato niente) quando avete finito si va a selezionare save an alternate .config, date enter ed exitCodice: Seleziona tutto
# make -j* # se avete un processore dualcore mettete -j3, per un quadcore -j5, -j2 per un singolo core # compiliamo il kernel nuovoCodice: Seleziona tutto
# cp arch/x86/boot/bzImage /boot/vmlinuz-generic-smp-3.4.42-smp # si copia l'immagine del kernel in /bootCodice: Seleziona tutto
# cp System.map /boot/System.map-generic-smp-3.4.42-smpCodice: Seleziona tutto
# cp .config /boot/config-generic-smp-3.4.42-smpCodice: Seleziona tutto
# mkdir -p /home/utente/kernel-generic-smpCodice: Seleziona tutto
# cd /home/utente/kernel-generic-smpCodice: Seleziona tutto
# wget http://slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-generic-smp/kernel-generic-smp.SlackBuildCodice: Seleziona tutto
# wget http://slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-generic-smp/slack-descCodice: Seleziona tutto
# chmod +x kernel-generic-smp.SlackBuildCodice: Seleziona tutto
# ./kernel-generic-smp.SlackBuildCodice: Seleziona tutto
# cd /tmpCodice: Seleziona tutto
# installpkg kernel-generic-smp-3.4.42-smp.txzCodice: Seleziona tutto
# make modules_install # installiamo i moduli del kernel nuovo ma non compariranno in /etc/rc.d/ (alienbob dice di ricopiare quelli vecchi, io ho voluto pacchettizzare i nuovi. non sapevo che esisteva uno slackbuild per questo)Codice: Seleziona tutto
# chmod +x /home/utente/packaging-x86/kernel-modules-smp.SlackBuild # rendete eseguibile lo slackbuildCodice: Seleziona tutto
# nano /home/utente/packaging-x86/kernel-modules-smp.SlackBuild # n.b. dovete cambiare la versione del kernel nello slackbuild perche' io preso quello della 14; va bene anche quello -current quindi il kernel che trovate sara' il 3.2.29 o il 3.8.8)Codice: Seleziona tutto
# cd /home/utente/packaging-x86 && ls # spostiamoci nella directory dello slackbuildCodice: Seleziona tutto
# ./kernel-modules-smp.SlackBuild # e si crea il pacchetto dei kernel-modules necessari per initrdCodice: Seleziona tutto
# cd /tmp && installpkg kernel-modules-smp*.t?z # installiamo i moduli -non usare mai upgradepkg- che compariranno finalmente in /etc/rc.d come rc.modules-3.4.42-smpCodice: Seleziona tutto
# cp /usr/share/mkinitrd/mkinitrd_command_generator.sh /boot # io son solito ricopiare lo script mkinitrd nella directory /bootCodice: Seleziona tutto
# cd /usr/src/linux && make install # non dimentichiamoci di installare il kernel (utilissima la guida del nostro loris su http://www.slacky.eu/wikislack/index.php?title=Compilazione_e_ricompilazione_Kernel_su_Slackware#Compilazione_Kernel_Serie_3.x.x)Codice: Seleziona tutto
# cd /boot # andiamo nella directory /bootCodice: Seleziona tutto
# chmod +x mkinitrd_command_generator.sh # se non lo avete gia' fatto, rendete eseguibile lo script mkinitrd. e' eseguibile quando cambia in verde la colorazione e si aggiunge *, per chi non lo sa ;) Codice: Seleziona tutto
# ./mkinitrd_command_generator.sh # di sicuro riconoscerete nella restituzione del comando il kernel vecchio 3.2.29-smp quindiCodice: Seleziona tutto
# nano /etc/lilo.conf # modifichiamo liloCodice: Seleziona tutto
# lilo -c -vCodice: Seleziona tutto
# rebootCodice: Seleziona tutto
default = 3.4.42-smpho installato poi da slackbuilds.org i driver nvidia con le varie dipendenze e funzia tutto. gia' che ci siamo, spendiamoci due paroline a riguardo:
prima di tutto mettete i nouveau in blacklist installando il seguente pacchetto xf86-video-nouveau-blacklist-noarch-1.txz (lo trovate nel dvd di installazione nella directory /extra oppure lo prendete con slackpkg install.
installate sbopkg. con esso e' piu' facile dopo il reboot installare il kernel nvidia e il suo driver piu' le sue dipendenze. le dipendenze sono elencate in slackbuilds.org. quindi dopo il reboot, vi loggate come root in init 3
Codice: Seleziona tutto
# su -Codice: Seleziona tutto
# sbopkgCodice: Seleziona tutto
# sbopkg -i nvidia-kernelCodice: Seleziona tutto
# sbopkg -i nvidia-driverper ritornare ai nouveau date
Codice: Seleziona tutto
# removepkg xf86-video-nouveau-blacklist-noarch-1.txzCodice: Seleziona tutto
# nvidia-switch --removedato che ho installato oggi un kernel piu' aggiornato per prova, sempre dopo aver messo in blacklist i nouveau e poi reboot, con sbopkg ho reinstallato nvidia-kernel indicando come opzione KERNEL=3.4.43-smp e poi nvidia-driver.
aggiungo ancora che se riscontrate questo errore al boot:
Codice: Seleziona tutto
/usr/sbin/alsactl: set_control:1328:failed to obtain info for control#12 Codice: Seleziona tutto
# alsactl -f /var/lib/alsa/asound.state store

