Compilazione di un kernel vanilla su Ubuntu Dapper 6.06


Arriva il giorno che ogni pinguino ha voglia (anche senza la reale necessità) di compilare un kernel vanilla, cioè un kernel senza le patch applicate dalla distribuzione utilizzata🙂
Questa la macchina utilizzata per l’attività:

  • Acer Aspire 5634WLMi
  • Intel Core 2 Duo T5600
  • NVIDIA GeForce Go 7300
  • Intel Pro/Wireless 3945 802.11 Wireless
  • Audio Intel 82801G


Per prima cosa, ci servono alcuni pacchetti dai repository:
sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev ncurses-dev libncurses5 libncurses5-dev gawk linux-kernel-devel
quindi, usando
sudo -s -H
saremo root senza bisogno, per ogni comando di amministrazione, anteporre sudo.
Ora andiamo nella cartella /usr/src:
cd /usr/src
e da qui eseguiamo il download del tar.bz2 direttamente dal sito kernel.org:
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2
Oltre al kernel però, ci servono degli altri pacchetti “a contorno”:

  • Driver per la scheda grafica NVIDIA
  • Driver per la scheda Intel Pro/Wireless 3945 802.11 Wireless
  • Driver Alsa per la scheda audio 82801G

e questi li mettiamo in una cartella apposita:
mkdir EXTRA
cd EXTRA
wget -c http://download.nvidia.com/XFree86/Linux-x86/1.0-9629/NVIDIA-Linux-x86-1.0-9629-pkg1.run
scaricare i driver 802.11 e ipw3945 rispettivamente da qui e qui, oltre a questi ci servono anche altri files a support ed i driver Alsa:
wget -c http://bughost.org/ipw3945/ucode/ipw3945-ucode-1.13.tgz
wget -c http://bughost.org/ipw3945/daemon/ipw3945d-1.7.22.tgz
wget -c ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.13.tar.bz2
Ok, ora diamo inizio ai balli🙂
Andiamo nella cartella dei sorgenti
cd /usr/src
scompattiamo il files che abbiamo scaricato
tar jxvf linux-2.6.18.2.tar.bz2
se avevamo già un link alla cartella linux, lo rinominiamo con la versione del kernel attuale
mv linux linux.`uname -r`
creiamo il nostro link
ln -s linux-2.6.18.2 linux
cd linux

La configurazione del kernel non è certamente una cosa semplice e alla portata di tutti, quindi è sempre meglio partire dalla precedente configurazione e concentrarsi sulle nuove funzionalità implementate
cp /boot/config-`uname -r` .config
make oldconfig

Verranno poste una serie di domande, non sempre semplici da capire, specialmente ai meno esperti, ai quali suggerisco di farsi aiutare dalla scelta di default o eventualmente includere (dove possibile) la funzionalità come modulo

O per i più temerari partire direttamente con un
make xconfig
e selezionare tutte funzionalità che vogliamo siano presenti
Terminata la configurazione possiamo partire con la compilazione:
make-kpkg clean
make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Invece di -custom possiamo specificare l’estensione che preferiamo

Prima di installare il nuovo pacchetto che abbiamo creato, è meglio fare il backup delle configurazioni di GRUB:
cp /boot/grub/menu.lst /boot/grub/menu.lst_backup
ora che siamo più tranquilli possiamo installare i pacchetti creati:
dpkg -i ../kernel-image-2.6.18.2-custom_10.00.Custom_i386.deb
dpkg -i ../kernel-headers-2.6.18.2-custom_10.00.Custom_i386.deb

Il secondo pacchetto possiamo anche non installarlo😉

per sicurezza andiamo a controllare quali sono le differenze nel menu.lst prima e dopo l’installazione dei nostri pacchetti:
diff /boot/grub/menu.lst /boot/grub/menu.lst_backup
dato che dobbiamo installare anche i driver per la nostra scheda video, è preferibile eseguire un backup del file xorg.conf
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf_backup
impostare i driver vesa invece di nvidia o nv
Section "Device"
Identifier "NVIDIA Corporation NVIDIA Default Card"
Driver "vesa"
BusID "PCI:1:0:0"
EndSection
e rimuovere il vecchio pacchetto nvidia-glx se presente:
apt-get remove --purge nvidia-glx
e solo ora possiamo riavviare!
Una volta eseguito il boot, la scheda WiFi non è stata inizializzata, il sonoro non funziona e la risoluzione della nostra scheda video non è certo il massimo… mettiamoci all’opera per completare l’installazione!
Nuovamente entriamo come root:
sudo -s -H
e quindi fermiamo il server X
/etc/init.d/gdm stop
Andiamo nella cartella EXTRA che abbiamo precedentemente creato
cd /usr/src/EXTRA
scompattiamo i pacchetti per la scheda Wifi e installiamoli:
tar zxvf ieee80211-1.2.15.tgz
cd ieee80211-1.2.15
make
make install
cd ..
tar zxvf ipw3945-1.1.2.tgz
cd ipw3945-1.1.2
make

Quest’ultimo comando potrebbe dare errore, provare “make IEEE80211_IGNORE_DUPLICATE=y”

Andiamo avanti:
cd ..
tar zxvf ipw3945-ucode-1.13.tgz
cp ipw3945-ucode-1.13/ipw3945.ucode /lib/firmware/
tar zxvf ipw3945d-1.7.22.tgz
cp ipw3945d-1.7.22/x86/ipw3945d /sbin/ipw3945d
cd ipw3945-1.1.2
cp ipw3945.ko /lib/modules/2.6.18.2-custom/

Sistemiamo alcuni files necessari al caricamente del modulo ipw3945, ma facciamo come sempre un backup:
cd /etc/modprobe.d/
mv ipw3945 /etc/ipw3945.backup
cat > ipw3945
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet
remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945
!

Un ultimo aggiornamento ai moduli del kernel
depmod -a
e la scheda WiFi funzionerà alla perfezione🙂
Ora andiamo a sistemare la scheda video NVIDIA, installando i nuovi driver stable che ci consentono inoltre di poter installare AiGLX:
cd /usr/src/EXTRA
chmod +x NVIDIA-Linux-x86-1.0-9629-pkg1.run
sh ./NVIDIA-Linux-x86-1.0-9629-pkg1.run --extract-only
cd NVIDIA-Linux-x86-1.0-9629-pkg1
./nvidia-installer

E finalmente manca solo l’audio
cd /usr/src/EXTRA
tar jxvf alsa-driver-1.0.13.tar.bz2
cd alsa-driver-1.0.13
./configure --with-cards=hda-intel --with-sequencer=yes; make; make install

aggiungere in /etc/modprobe.d/alsa-base
# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-hda-intel
# module options should go here
# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
# card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

Finalmente, abbiamo finito!
Il kernel è installato con i driver necessari al suo funzionamento, un reboot e ci godiamo la nostra Ubuntu con kernel vanilla!

12 thoughts on “Compilazione di un kernel vanilla su Ubuntu Dapper 6.06

  1. Divilinux ha detto:

    nn va una mazza..:)
    dyve@a6j:~/driver/ipw3945-1.1.3$ sudo make
    /bin/sh: Syntax error: “(” unexpected
    /bin/sh: Syntax error: “(” unexpected
    -e
    ERROR: A compatible subsystem was not found in the following path[s]:

    /lib/modules/2.6.19.1-divi/include/ /lib/modules/2.6.19.1-divi/

    You need to install the ieee80211 subsystem from http://ieee80211.sf.net
    and point this build to the location where you installed those sources, eg.:

    % make IEEE80211_INC=/usr/src/ieee80211/

    or use the ‘make patch_kernel’ within the ieee80211 subsystem to patch your
    kernel sources.

    make: *** [check_inc] Error 1

    anche se metto il path nn va una mazza..

  2. Divilinux ha detto:

    si ma nn funziona..ora sto aprendo un topic
    cmq ti aggiorno..sono riuscito ad installare tutto ma pare che il demone ipw3945d abbia dei problemi
    difatti mentre tutti sono marcati col nome del kernel..in /sbin l’unico che nn va e’ guardacaso ipw3945d

  3. sima ha detto:

    ciao, è possibilie che “make-kpkg –initrd –append-to-version=-custom kernel_image” sia sbagliato? Da me non lo prende!
    Prima di “initrd” e di “append” non ci vogliono due trattini “–” anziché il trattino lungo? Così ho visto altrove.

  4. sima ha detto:

    Di nuovo io…
    ATTENZIONE! Ho visto che i due trattini che avevo scritto io li ha trasformati in trattino lungo!!! Qualcosa non va…

  5. E’ un problema di visualizzazione del post, a codice risultano essere 2 trattini, ma effettivamente si vede un trattino lungo… ora indago meglio…
    Grazie della segnalazione😉

  6. sima ha detto:

    ciao paper0k,

    quando dò il “./configure ecc. ecc.” per installare i driver della scheda audio, mi dà questo errrore:

    “checking for power management… yes
    checking for which soundcards to compile driver for… configure: error: Unknown soundcard snd-als4000
    make all-deps
    make[1]: Entering directory `/usr/src/EXTRA/alsa-driver-1.0.13′
    make[1]: Nothing to be done for `all-deps’.
    make[1]: Leaving directory `/usr/src/EXTRA/alsa-driver-1.0.13′

    Please, run the configure script as first…

    rm -f /snd*.*o /persist.o /isapnp.o
    make[1]: Entering directory `/usr/src/EXTRA/alsa-driver-1.0.13/acore’
    Makefile:6: /usr/src/EXTRA/alsa-driver-1.0.13/Makefile.conf: Nessun file o directory
    /usr/src/EXTRA/alsa-driver-1.0.13/Rules.make:75: /Rules.make1: Nessun file o directory
    make[1]: *** No rule to make target `/Rules.make1′. Stop.
    make[1]: Leaving directory `/usr/src/EXTRA/alsa-driver-1.0.13/acore’
    make: *** [install-modules] Error 1
    root@prova-desktop:/usr/src/EXTRA/alsa-driver-1.0.13#”

    Hai la soluzione?

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...