- Présentation
- Pré requis
- Utiliser une partition pour stocker les sources
- Vérification du statut de montage de la partition (lecture/écriture)
- Remonter la partition en écriture
- Créer un répertoire pour stocker les sources
- Pouvoir écrire dans le répertoire sources
- Récuperer l’archive des sources du noyau
- Extraire les sources du noyau
- Ajouter l’utilisateur knoppix au groupe src
- Refaire le lien /usr/src/linux
- Vérifier le lien /usr/src/linux devant pointer vers les sources
- Récupérer la configuration du noyau linux de Knoppix.
- Refaire le lien /usr/include/asm
- Refaire le lien build des modules
- Executer l’utilitaire de configuration du noyau
- Connaître les attributs du noyau
- Restaurer la configuration
- Refaire un paquet d’en-tête (headers)
- Récuperer les sources
- Sélectionner les sources à compiler
- Compiler le pilote et créer un paquet Debian
- Installer le paquet
- Installer les librairies glx
- Paramétrer le serveur d’affichage
- Relancer le serveur d’affichage
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
- Un système live-cd démarré
- Un espace disque libre de prés de 300Mb accessible en écriture
- Les sources du module à compiler
- Des fruits (c’est pour vous)
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
- Récupérer l’archive contenant les sources du noyau linux:
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
- Sauvegardez et quitter.
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-4pour 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
Page mise à jour le 07 juillet 2007 à 18h39.