Compiler un module en live-cd

Présentation

Nous allons nous attacher à restaurer les en-têtes du noyau et les liens nécessaires afin de pouvoir compiler un nouveau module (pilote), ceci en live-cd grâce aux outils debian et l’éclairage d’Ebdomino (merci poulet :p )

cf: http://forums.knoppix-fr.org/viewtopic.php?pid=56031#p56031

Nb: Vous pouvez compiler directement en live-cd à partir de Knoppix 4.0.2 (Kaella 2.1) sans avoir à procéder à l’ensemble de cette documentation.

Pour pouvoir compiler sur KNOPPIX 5.0.1 ou Kaella 3.0b1: http://kaella.linux-azur.org/wiki/wakka.php?wiki=Compilation

Pré requis

Utiliser une partition pour stocker les sources

Nous pouvons monter simplement une partition en spécifiant son point de montage, l’initialisation de Knoppix aura paramétré le fichier /etc/fstab. Nous illustrerons l’exemple en faisant référence à la partition /dev/hda2 accessible en /mnt/hda2

Monter une partition

mount /mnt/hda2

Vérifier l’espace disponible

df -h

Vérification du statut de montage de la partition (lecture/écriture)

mount vous permet de vérifier que votre partition est accessible en écriture. Pour l’exemple la partition hda2 (de type linux ext2 pas vfat hein ;) ) sera utilisée pour y stocker les sources

mount devrait afficher quelque chose de similaire à:

/dev/hda2 on /mnt/hda2 type ext2 (ro,nosuid,nodev)

Remonter la partition en écriture

sudo mount -o remount,rw /mnt/hda2

Créer un répertoire pour stocker les sources

Nous nous placons dans le répertoire /mnt/hda2 où les données de notre partition sont accessibles:

cd /mnt/hda2

Créons le répertoire sources, déstiné à recueillir les sources du noyau:

sudo mkdir sources

Nb: vous ne pouvez écrire en tant qu’utilisateur knoppix dans ce répertoire, vous l’avez créé avec sudo càd root, ce répertoire appartient donc à ce dernier, ce qui explique pourquoi vous ne pouvez y écrire.

Pouvoir écrire dans le répertoire sources

Il suffit de rendre knoppix propriétaire (owner) de ce répertoire:

cd /mnt/hda2
sudo chown knoppix:knoppix sources

Récuperer les sources du noyau

Récuperer l’archive des sources du noyau

Notre exemple se basant sur une Knoppix 3.8.1 nous récupérerons les sources du noyau linux 2.6.11

knoppix@2[hda2]$ wget -P sources ftp://ftp.fr.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.tar.bz2

Ce qui doit vous donner:

knoppix@2[hda2]$ wget -P sources ftp://ftp.fr.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.tar.bz2
--18:02:50--  ftp://ftp.fr.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.tar.bz2
=> `sources/linux-2.6.11.tar.bz2'
Résolution de ftp.fr.kernel.org... 81.220.255.20, 138.231.136.10, 157.159.40.65, ...
Connexion vers ftp.fr.kernel.org[81.220.255.20]:21...connecté.
Ouverture de session en anonymous...Session établie!
==> SYST ... complété.    ==> PWD ... complété.
==> TYPE I ... complété.  ==> CWD /pub/linux/kernel/v2.6 ... complété.
==> PASV ... complété.    ==> RETR linux-2.6.11.tar.bz2 ... complété.
Taille: 37,075,679 (non certifiée)

100%[===================================================================================>] 37,075,679   547.33K/s    ETA 00:00

18:04:05 (562.33 KB/s) - « sources/linux-2.6.11.tar.bz2 » sauvegardé [37075679]

Extraire les sources du noyau

Nous devons nous placer dans le répertoire contenant l’archive linux-2.6.11.tar.bz2 prédement récupérée:

knoppix@2[hda2]$ cd sources/

Nb: nous étions déja dans /mnt/hda2 cf: [hda2] sinon il nous aurait fallut indiquer un chemin absolu (par rapport à la racine de l’arborescence / ):

knoppix@2[hda2]$ cd /mnt/hda2/sources/

Décompressons l’archive: tar xvjf linux-2.6.11.tar.bz2

Ca devrait travailler un petit bout de temps ;)

Vous devriez obtenir un répertoire linux-2.6.11 contennt les sources du noyau linux.

Ajouter l’utilisateur knoppix au groupe src

adduser knoppix src

Refaire le lien /usr/src/linux

sudo ln -sfn /mnt/hda2/sources/linux-2.6.11 /usr/src/linux

Vérifier le lien /usr/src/linux devant pointer vers les sources

la /usr/src/

knoppix@2[sources]$ la /usr/src/
total 10
drwxrwsr-x   5 knoppix knoppix   60 2005-05-23 18:39 .
drwxr-xr-x  16 root    root      60 2005-05-23 18:39 ..
-rw-r--r--   1 knoppix knoppix 2122 2004-02-27 04:38 knoppix-kernel.patch
-rw-r--r--   1 knoppix knoppix  849 2003-12-11 00:09 knoppix-kernel.README
lrwxrwxrwx   1 root    knoppix   30 2005-05-23 18:39 linux -> /mnt/hda2/sources/linux-2.6.11
drwxr-sr-x   4 knoppix knoppix 2048 2005-05-09 05:46 linux-2.6.11

Récupérer la configuration du noyau linux de Knoppix.

cp /boot/config-2.6.11 /usr/src/linux/.config

Refaire le lien /usr/include/asm

sudo ln -sfn /usr/src/linux/include/asm-i386 /usr/include/asm

Nb: utile si vous avez une erreur de ce type lors de la configuration du noyau (cf: ci-aprés):

knoppix@2[linux]$ make xconfig
HOSTCC  scripts/basic/fixdep
Dans le fichier inclus à partir de /usr/include/sys/socket.h:35,
à partir de /usr/include/netinet/in.h:24,
à partir de /usr/include/arpa/inet.h:23,
à partir de scripts/basic/fixdep.c:115:
/usr/include/bits/socket.h:305:24: asm/socket.h : Aucun fichier ou répertoire de ce type
make[1]: *** [scripts/basic/fixdep] Erreur 1
make: *** [scripts_basic] Erreur 2

Refaire le lien build des modules

Vous risquez d’en avoir besoin si vous souhaitez compiler un module.

sudo ln -sfn /usr/src/linux /lib/modules/2.6.11/build

Executer l’utilitaire de configuration du noyau

Se placer dans le répertoire contenant les sources:

cd /usr/src/linux

La configuration peu s’effectuer dans le terminal:

make menuconfig

ou en mode graphique:

make xconfig

Connaître les attributs du noyau

dpkg -l kernel-image*

Pour les versions plus récents:

dpkg -l linux-image*

La ligne débutant par ii concerne le noyau utilisée actuellement:

ii  kernel-image-2.6.11       10.00.Custom              Linux kernel binary image for version 2.6.11.

Restaurer la configuration

Nous reprenons le nom de la version: 10.00.Custom

fakeroot make-kpkg --revision 10.00.Custom --config old configure

Cela devrait se terminer par:

make[1]: Entering directory `/mnt/hda2/sources/linux-2.6.11'
SPLIT   include/linux/autoconf.h -> include/config/*
CC      scripts/mod/empty.o
HOSTCC  scripts/mod/mk_elfconfig
MKELF   scripts/mod/elfconfig.h
HOSTCC  scripts/mod/file2alias.o
HOSTCC  scripts/mod/modpost.o
HOSTCC  scripts/mod/sumversion.o
HOSTLD  scripts/mod/modpost
HOSTCC  scripts/kallsyms
HOSTCC  scripts/pnmtologo
HOSTCC  scripts/conmakehash
SYMLINK include/asm -> include/asm-i386
CHK     include/linux/version.h
UPD     include/linux/version.h
CC      arch/i386/kernel/asm-offsets.s
CHK     include/asm-i386/asm_offsets.h
UPD     include/asm-i386/asm_offsets.h
make[1]: Leaving directory `/mnt/hda2/sources/linux-2.6.11'
echo done >  stamp-kernel-configure
echo done >  stamp-configure

Refaire un paquet d’en-tête (headers)

fakeroot make-kpkg --revision 10.00.Custom kernel-headers

Celui-ci se trouve mintenant dans /usr/src sous le nom: kernel-headers-2.6.11_10.00.Custom_i386.deb

Compiler pilote Nvidia

Récuperer les sources

sudo apt-get install nvidia-kernel-common nvidia-kernel-source

Sélectionner les sources à compiler

sudo module-assistant -k /usr/src/linux get nvidia

Compiler le pilote et créer un paquet Debian

sudo module-assistant --k /usr/src/linux build nvidia

Installer le paquet

Se placer dans le réperoire contenant le paquet (ici /usr/src )

cd /usr/src

sudo dpkg -i nvidia-kernel-*.deb

Installer les librairies glx

sudo apt-get install nvidia-glx

Paramétrer le serveur d’affichage

Le fichier en question est

/etc/X11/XF86Config-4
pour Knoppix.

Pour le changer en un clin d’oeil (remplacer nv par nvidia):

Avec Xorg

sudo sed -i -e "s/nv/nvidia/g" /etc/X11/xorg.conf

Si vous avez XFree86

sudo sed -i -e "s/nv/nvidia/g" /etc/X11/XF86Config-4

Relancer le serveur d’affichage

Nous éteignons la lumière ;) :

init 3

pour la rallumer:

init 5

^ Haut de Page ^

RSS ~ Copyright 2004-2008 © Linucie - Asso. Loi 1901 - CNIL : 1045544 - Notre hébergeur : APINC.org
Publication sous Licence GNU/FDL propulsée par PmWiki - XHTML 1.0, CSS 2.1, WAI.