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 0
Codice: 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-only
Codice: 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 kernel
Codice: Seleziona tutto
# cd packaging-x86
Codice: 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-smp
Codice: Seleziona tutto
# wget ftp://ftp.slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-modules-smp/rc.modules.new
Codice: Seleziona tutto
# wget ftp://ftp.slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-modules-smp/slack-desc
Codice: Seleziona tutto
# cd /home/utente
Codice: Seleziona tutto
# tar -C /usr/src/ -jxf linux-3.4.42 # scompatto il kernel in /usr/src
Codice: Seleziona tutto
# cd /usr/src
Codice: Seleziona tutto
# rm linux
Codice: Seleziona tutto
# ln -s linux-3.4.42/ linux # si ricrea il link al kernel nuovo dopo aver eliminato il precedente
Codice: Seleziona tutto
# cd linux
Codice: Seleziona tutto
# make mrproper # spazziamo via la precedente configurazione
Codice: 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-smp
Codice: 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 exit
Codice: Seleziona tutto
# make -j* # se avete un processore dualcore mettete -j3, per un quadcore -j5, -j2 per un singolo core # compiliamo il kernel nuovo
Codice: Seleziona tutto
# cp arch/x86/boot/bzImage /boot/vmlinuz-generic-smp-3.4.42-smp # si copia l'immagine del kernel in /boot
Codice: Seleziona tutto
# cp System.map /boot/System.map-generic-smp-3.4.42-smp
Codice: Seleziona tutto
# cp .config /boot/config-generic-smp-3.4.42-smp
Codice: Seleziona tutto
# mkdir -p /home/utente/kernel-generic-smp
Codice: Seleziona tutto
# cd /home/utente/kernel-generic-smp
Codice: Seleziona tutto
# wget http://slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-generic-smp/kernel-generic-smp.SlackBuild
Codice: Seleziona tutto
# wget http://slackware.org.uk/slackware/slackware-14.0/source/k/packaging-x86/kernel-generic-smp/slack-desc
Codice: Seleziona tutto
# chmod +x kernel-generic-smp.SlackBuild
Codice: Seleziona tutto
# ./kernel-generic-smp.SlackBuild
Codice: Seleziona tutto
# cd /tmp
Codice: Seleziona tutto
# installpkg kernel-generic-smp-3.4.42-smp.txz
Codice: 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 slackbuild
Codice: 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 slackbuild
Codice: Seleziona tutto
# ./kernel-modules-smp.SlackBuild # e si crea il pacchetto dei kernel-modules necessari per initrd
Codice: 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-smp
Codice: Seleziona tutto
# cp /usr/share/mkinitrd/mkinitrd_command_generator.sh /boot # io son solito ricopiare lo script mkinitrd nella directory /boot
Codice: 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 /boot
Codice: 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 quindi
Codice: Seleziona tutto
# nano /etc/lilo.conf # modifichiamo lilo
Codice: Seleziona tutto
# lilo -c -v
Codice: Seleziona tutto
# reboot
Codice: Seleziona tutto
default = 3.4.42-smp
ho 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
# sbopkg
Codice: Seleziona tutto
# sbopkg -i nvidia-kernel
Codice: Seleziona tutto
# sbopkg -i nvidia-driver
per ritornare ai nouveau date
Codice: Seleziona tutto
# removepkg xf86-video-nouveau-blacklist-noarch-1.txz
Codice: Seleziona tutto
# nvidia-switch --remove
dato 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