Forums d'entraide informatique - Astuces - Conseils
Des experts à votre écoute pour tous vos dysfonctionnements
Vous n'êtes pas identifié.
Pages: 1
- Accueil forums
- » Documentations
- » Documentation : Débian 4.0 administration et configuration (6)
#1 26-09-2008 17:37:34
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Documentation : Débian 4.0 administration et configuration (6)
LE NOYAU LINUX ET DEBIAN
Avec une "bution aussi struc e et organisée que ian GNU/L , le
noyau occupe une place importa comme un simple paquet appli aussi simple que celle d'un paquet permettre une grande souplesse. En effet, celui-ci ne peut être co éré
ou serveur. Son installation doit être mais sa reconstruction doit également
Pour gérer et manipuler correctement les sources et les versions binaires des noyaux Linux, le projet Debian a donc développé des outils spécifiques comme make-kpkg. Mais avant d'entrer dans le détail de la recompilation du noyau «façon Debian», voyons déjà l'aspect le plus simple : l'installation et la mise à jour.
L'installation d'un noyau, ou plus exactement la mise à jour (puisque le système ne serait pas fonctionnel dans le cas contraire) se fait très simplement en utilisant apt-get. Mais encore faut-il choisir la bonne version pour votre machine. Le projet Debian met à disposition plusieurs variantes compilées et empaquetées du noyau Linux pour chaque version stable de ce dernier.
Ainsi, pour la version 2.6.18 on trouve pas moins de neuf paquets :
% apt-cache search --names-only "linux-image-2.6.18" linux-image-2.6.18-3-486
- Linux 2.6.18 image on x86
Linux-image-2.6.18-3-686
- Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4 linux-image-2.6.18-3-686-bigmem
- Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4 Linux-image-2.6.18-3-k7
- Linux 2.6.18 image on AMD K7 Linux-image-2.6.18-3-vserver-686
- Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4 Linux-image-2.6.18-3-vserver-k7
- Linux 2.6.18 image on AMD K7 linux-image-2.6.18-3-xen-686
- Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4 linux-image-2.6.18-3-xen-k7
- Linux 2.6.18 image on AMD K7 Linux-image-2.6.18-3-xen-vserver-686
- Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4
NOTE
Les paquets *smp* destinés aux architecture multiprocesseurs n'existent plus. Toutes les versions binaires du noyau supportent à présent le SMP (Symmetric MultiProcessing). Une différenciation était faite car le support SMP utilisé sur un système monoprocesseur dégradait les performances avec les précédentes versions du noyau, ce qui n'est plus le cas à présent.
Un paquet 1 i nux-image-2.6.X n'est pas un paquet comme les autres. Lors de son installation, il va générer un élément indispensable au fonctionnement et surtout au démarrage du système : l'image d'un disque mémoire d'initialisation ini tramfs.En effet, si vous jetez un oeil au contenu du fichier linux-image-2.6.18-3-k7_2.6.18-7 _i386.deb par exemple, vous constaterez que le fichier /boot/initrd.img-2.6.18- 3-k7 n'est pas inclus. C'est, en effet, lors de l'utilisation d'apt-get install que le fichier est créé :
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
mkinitramfs-kpkg est appelé pour créer le RAM Disk. Il ne s'agit en réalité que d'un «wrapper» pour mki ni tramfs.Ceci est très important car l'image i ni tramfs dépend fortement de votre configuration.Ainsi, si vous avez installé une solution de RAID logiciel, il est impératif que les scripts présents dans le RAM Disk configurent et activent le RAID avant le montage et le passage sur le système de fichier racine. Si vous changez votre configuration vers du RAID logiciel (par exemple comme détaillé dans l'article présent dans le GLMF HS I 8),vous devrez utiliser update-i ni tramfs afin de prendre le changement en compte pour le prochain démarrage et donc mettre à jour votre image i nitramfs.
Les différents paquets se distinguent par le choix de la plate-forme dans la configuration des sources du noyau avant compilation. Le choix est relativement simple si vous connaissez votre matériel (ce que j'espère pour vous). Les paquets *xen* et *vserver* sont des versions «patchées» spécialementconçues pourfonctionner dans un environnement de para-virtualisation de type Xen ou Linux-Vserver.
L'installation d'une nouvelle version du paquet noyau provoque également l'installation d'une nouvelle arborescence de modules noyaux dans /1 i b/modul es. Le nom du répertoire créé dépend de la version du noyau et de sa révision. Ceci est fixé lors de la compilation du noyau et de la construction du paquet (voir plus loin). Accessoirement, si les sources utilisées pour la
construction du noyau empaqueté sont installées, un lien symbolique sera ajouté entre /1 ib/rnodul es/2.6.*/source et /usr/ src/li nux - source -2.6 .*.Dans le cas contraire, apt- get ne manquera pas de signaler le problème (qui n'en est pas vraiment un)
Hmm. The package shipped with a symbolic link /lib/ modules/2.6.18-3-k7/source
However, 1 can net read the target: Aucun fichier ou répertoire de ce type
Therefore, 1 am deleting /lib/modules/2.6.18-3-k7/source
Ce message est parfaitement normal lorsque vous installez un noyau provenant d'une distribution Debian puisque vous ne disposez pas de l'emplacement de construction original bui 1d/bui 1 dd/li nux-2.6-2.6.18/debi an/bui 1d/bui 1 d- i 386-none-k7 dans le cas présent).
RECOMPILATION D'UN NOYAU DEBIAN
En principe, la recompilation d'un noyau n'est pas strictement nécessaire.Seuls certains cas particuliers d'optimisation ou d'activation de fonctionnalités justifient cela. Néanmoins, il est important pour un administrateur système de connaître le modus operandi façon Debian afin de respecter, le cas échéant, l'intégrité de la distribution. Trois paquets au minimum sont importants pour procéder
• les sources du noyau : 1 i nux-source-2.6.*
• le paquet kernel -package fournissant, entre autres, le
script de construction du paquet binaire ma ke- kpkg
• les fichiers d'en-têtes le la Li bncurses, 1i bncurses5-dev permettant la configuration du noyau via l'interface menuconf i g (Libncurses/Dialog). Notez que cela n'est pas strictement nécessaire puisque le noyau dispose également d'une interface de configuration en ligne de commande par question/réponse. Enfin, si vous souhaitez quelque chose de plus convivial à la sauce GTK+ (ma ke gconf g) ou Qt (make xconf g) il vous faudra installer d'autres paquets -dey.
Voyons tout d'abord la manière la plus classique de recompiler et reconstruire un paquet binaire pour le noyau. Notez qu'il est possible de procéder aux manipulations qui suivent en tant qu'utilisateur normal (via fakeroot) mais j'ai pris le parti d'aller au plus simple en prenant l'identité root. En effet, la logique veut qu'une telle manipulation est faite dans le but d'installer un nouveau composant essentiel au système et donc qu'elle relève de la responsabilité du super-utilisateur. Le seul intérêt d'utiliser fakeroot est de se prémunir contre d'éventuelles erreurs de manipulations
(pour les commandes sans fakeroot). Ce qui ne doit de toute façon pas arriver lorsque le super-utilisateur reconstruit un noyau.
Commencez donc par installer les trois paquets cités plus haut puis placez-vous dans le répertoire /usr/src où vous trouverez 1 i nux-source-2.6.18. tar bz2. Attention, il ne s'agit pas des sources d'origine (sources vanilla) du noyau Linux, contrairement à ce que le nom du fichier laisse entendre, mais une version spécifique à Debian et respectant normalement les DFSG (Debian Free Software Guidelines ou principes du Logiciel libre selon Debian).
Désarchivez ensuite les sources avec ta r xfj, vous obtiendrez une arborescence dans linux-source-2.6.18. Entrez dans ce répertoire.
Plusieurs arguments peuvent être utilisés pour personnaliser la version et la révision du noyau ainsi que celle du paquet à construire. Dans un premier temps, nous utiliserons les valeurs par défaut nous permettant d'obtenir une version locale non conflictuelle capable de cohabiter avec une version du noyau identique à celle construite.Vous remarquerez, par exemple, que les modules installés par un paquet officiel sont placés dans /1 i b/rnodul es/2.6.18- 3 -k7 qui correspond au paquet 1 i nux- image-2.6.18-3- k7. Le suffixe -3-k7 est ajouté par le responsable du paquet Debian précisément pour permettre aux utilisateurs de construire facilement leur noyau sans conflit.
Notre première manipulation sera absolument sans intérêt si ce n'est didactique. Nous allons construire un paquet en tous points identique à celui fourni par Debian.
Dans le répertoire des sources du noyau, copiez le fichier de configuration du noyau fourni par Debian de /boot/confi g-2.6.18-3 -k7 en . conf i g et lancez un make ol dconfi g pour vérification. Normalement rien ne vous sera demandé, oldconfi g étant normalement utilisé pour adapter une configuration d'une précédente version du noyau à une nouvelle en interrogeant l'utilisateur sur les fonctionnalités non configurées au besoin.
Ceci fait, il ne vous reste plus qu'à lancer le processus de construction avec
# make-kpkg --initrd kernel_image
Notez la présence de l'option - - i ni trd, indispensable pour générer toutes les actions nécessaires pour le RAM Disk d'initialisation lors de l'installation du paquet. Si, dans le cas présent, vous oubliez cette option, le système sera incapable de démarrer (le support IDE/SATA/SCSI est, par défaut, compilé sous forme de modules).Après un délai dépendant à la fois de votre ou vos processeurs et de la mémoire disponible, vous obtiendrez le fichier 1 i nux- image-2.6.18_2.6.18-10.00.Custom_1386.deb dans /usr/src.
LE NOYAU LINUX ET DEBIAN
SYSTEME
C'est, bien entendu, le paquet Debian correspondant à votre noyau fraîchement compilé que vous pourrez installer avec dpkg
A ce stade, vous disposez normalement de deux noyaux 2.6.18. Le premier installé depuis le dépôt Debian et compilé par le responsable officiel et le votre
% dpkg -1 "linux-image-2.6.18*"
ii linux-image-2.6.18 2.6.18-10.00.Custom
Linux kerne] binary image for version 2.6.18 ii linux-image-2.6.18-3-0 2.6.18-7
Linux 2.6.18 image on AMI K7
La version Debian de notre noyau est 2.6.18-10.00.Custom et celle officielle, 2.6.18. Le paquet Debian quant à lui possède respectivement les valeurs 2.6.18-7 et 2.6.18- 3- k7, valeur que l'on retrouve sur le système une fois ce noyau booté avec :
% uname -s -r Linux 2.6.18-3-k7
Nous allons maintenant construire un troisième noyau bien plus personnalisé. Première étape, dans le /usr/s rc/li nux- source-2.6.18, nettoyez les sources et les informations de make-kpkg avec make-kpkg cl ean.
utilisez comme argument .3.k7 vous allez créer un conflit avec le paquet noyau déjà installé puisqu'ils partageront tous deux le même répertoire de modules, le même nom pour l'image RAM Disk et le fichier du noyau dans /boot. Ce numéro de version ne doit contenir que des caractères alphanumériques minuscules et les caractères «-», «.» et «+».
Relancez donc la configuration du noyau et apportez vos modifications, comme par exemple, la désactivation des fonctionnalités qui ne vous servent pas (PCMCIA, ISDN, FireVVire, RAID, LVM, etc.). Enfin, relancez la construction avec
# make-kpkg clean && make-kpkg \ --append-to-version=-hs28-1-k7 \ --initrd --revision=1.0.1ef kernel_image
If NOTE
l'utilisation de make-kpkg cieux est indispensable après avoir utilisé make menuconfi g car cette dernière commande crée un fichier i ncl ude/1 i nux/versi on. h qui ne tient pas compte de votre --append-to-version. make-kpkg clean permet de nettoyer les sources, et donc le fichier version, h. ma ke- kpkg ne crée le fichier que s'il n'existe pas déjà, mais ne le mettra pas à jour s'il existe.
Après un délai normalement plus court puisque vous avez désactivé des fonctionnalités, vous obtiendrez le fichier linux-image-2.6.18-hs28-1-k7_1.0.1ef_i386.deb. Installez-le comme à l'habitude puis observez la sortie de la commande dpkg -1
Vous pouvez maintenant utiliser les deux options importantes de make-kpkg
- - revi si On est destinée au système de paquet. Par défaut, la révision utilisée est $ (versi on ) -10.00. Custom soit le numéro de version du noyau plus une chaîne de caractères. C'est la version Debian telle qu'affichée par dpkg -1 et qui vous permettra d'installer plusieurs noyaux concurrents sans conflit et sans que le système APT ne considère le nouveau paquet comme une mise à jour. Ce numéro de révision doit être composé uniquement de caractères alphanumériques et des caractères «+» et «.». De plus, il doit impérativement comporter un chiffre.Attention, lors de la première utilisation de cette option, sa valeur est enregistrée, au moins jusqu'à l'utilisation de ma ke- kpkg cl ean. Sa valeur est stockée dans conf . vars et elle ne sera révisée que si stamp-confi gure et stamp-debi an sont supprimés. Plus clairement, sans ma ke- kpkg cieux, vous ne pouvez pas utiliser cette option plusieurs fois de suite. En revanche,cela vous permettra de relancer une compilation partielle sur la même base de configuration Debian en omettant - -revi si on.
ii linux-image-2.6.18 2.6.18-10.00.Custom
Linux kernel binary image for version 2.6.18
ii linux-image-2.6.18-3-k7 2.6.18-7
Linux 2.6.18 image on AMI K7
ii linux-image-2.6.18-hs28- 1.0.1ef
Linux kernel binary image for version 2.6.18-hs28-1-k7
Et de trois ! Idem pour /li b/modul es
2.6.18/
2.6.18-3-k7/
2.6.18-hs28-1-k7/
Vous êtes maintenant en mesure de construire autant de paquets qu'il vous plaira jusqu'à obtenir une version qui vous convienne.Vous pouvez, par exemple, créer une version entièrement statique du noyau et donc vous abstenir d'utiliser - - i ni trd. Idéal pour un serveur.
- - append-to -versi on vous permet d'influer sur la vraie version du noyau et donc sur le nom du chemin de recherche des modules (variable EXTRAVERSION dans le Makefi 1 e du noyau). C'est la valeur qui apparaît avec uname - r. Il est important de prendre cela en compte car, si vous
COMPILATION DE MODULES
Entendez par «compilation de modules», la prise en charge de modules au format source qui ne sont pas intégrés dans la branche de développement officielle du
noyau linux. C'est le cas, par exemple, du support pour LIRC (récepteur infra-rouge), des Webcam spca5xx ou encore des modems USB ADSL Eagle. Les raisons de la non-inclusion dans les sources du noyau peuvent être diverses, code trop «sale» et problèmes de compatibilité avec Linus, problèmes liés aux licences ou encore utilisation d'objets binaires propriétaires (firmwares).
Quoi qu'il en soit, Debian fournit quelques-uns de ces modules en version source et parfois binaire. Dans le cas de la version binaire, il faudra s'assurer de la compatibilité avec votre version du noyau. Les paquets sont normalement judicieusement nommés, mais ce n'est pas toujours le cas. D'autre part, ces version binaires s'installeront dans le répertoire des modules propres à la version Debian du noyau. Si vous avez compilé votre propre version, votre noyau ne les prendra pas en compte.
Heureusement, pour régler le problème, nous disposons aussi des sources de ces modules en version empaquetée. C'est le cas, par exemple, du module pour LIRC,l i rc-modul es- source, que nous allons utiliser en guise d'exemple.
Nous venons de compiler notre noyau ou allons maintenant nous attaquer au module pour LIRC. Pour cela, il nous suffit tout d'abord d'installer les sources du modules avec apt-get i nstal 1 1 i rc-modul es- source, ce qui aura pour effet d'ajouter un fichier 1 i rc-modul es . tar. gz dans notre /usr/src. En désarchivant celui-ci, nous obtenons une arborescence /usr/src/modules/1 i rc contenant les sources adaptées par Debian.
Entrez alors dans /usr/src/linux- source-2.6.18 et utilisez :
# make-kpkg --append-to-version=-hs28-1-k7 \
modules_image
[...]
exec debian/rules DEBIANREVISION=1.0.1ef APPEND_TO_VERSION=-hs28-1-k7 modules_image
[...]
Module /usr/src/modules/lirc processed fine
Notez que nous devons réutiliser - - append- to- versi on. --revi si on pour sa part n'est pas nécessaire puisqu'il est enregistré dans les sources du noyau suite à la compilation précédente.Vous pouvez d'ailleurs le constater dans les premières lignes qui défilent à l'écran. La page de manuel de ma ke-kpkg est d'ailleurs très claire sur ce point : «Notez aussi qu'une fois que vous avez utilisé --append_to_version toto pour la configuration ou la construction du kernelimage, vous devez aussi utiliser la même option lors de lancements ultérieurs de make-kpkg (par exemple, pour construire des modules indépendants, ou autres). makekpkg ne se souvient pas de l'argument toto à chacun des lancements de la commande (ce comportement est différent de --revision, qui est lui persistant lors des différents lancements)». C'est le seul point délicat de l'opération.
Une fois la compilation terminée, vous trouverez un fichier 1 i rc-modul es-2.6.12-hs28-1- k7_0.8.0-9+1.0.1ef_i 386.deb dans /usr/src. Il s'installera comme précédemment avec dpkg.On retrouvera les modules compilés dans /li b/modul es/2.6.18- hs28-1- k7/mi sc. Enfin, avec dpkg -1 on retrouve bien notre nom de paquet li rc-modules-2.6,18-hs28-1-k7 et sa version 0.8.0-9-1.0.1ef avec notre argument pour l'option passée précédemment via - - revi si on.
Je sais que j'insiste sur ce point, mais il faut bien comprendre que c'est la source de nombreux problèmes pour les utilisateurs qui construisent leur noyau avec une distribution Debian et compatible. La seule maîtrise de ces gestions de versions suffit à éviter 95% des problèmes et donc des plaintes dans les groupes de discussion, les listes de diffusion et les forums.
Si vous voulez construire un paquet binaire pour le module de manière à ce qu'il s'ajoute aux modules installés par un paquet noyau Debian, vous devez utiliser - -appendto-versi onz suivi d'une partie de la valeur retournée par uname -r (-1- k7 par exemple). Ceci fonctionne, mais il est fortement conseillé de compiler son noyau personnel et ensuite ses paquets de modules pour s'assurer d'une certaine cohérence. Des problèmes liés au compilateur peuvent apparaître, mieux vaut une configuration homogène et qui ne laisse pas planer de doute sur la responsabilité d'un développeur Debian (via un rapport de bogue, par exemple).
(p PATCH DU NOYAU
Un certain nombre de fonctionnalités d'un noyau Linux, lorsqu'elles ne sont pas intégrées dans les sources officielles, ne peuvent pas prendre la forme de modules. Soit parce qu'il s'agit d'un choix du développeur, soit parce que c'est techniquement impossible.
La solution pour inclure les fonctionnalités proposées passe donc par la modification des sources du noyau avant compilation. Debian prend parfaitement en charge ce type de modification sous la forme de paquets contenant un patch. Il existe un certain nombre de ces paquets mais vous ne devez jamais considérer ceci comme un gage de sécurité de la part de Debian. Ceci concerne, par exemple, le paquet kernel -patch-2.6-rei ser4 qui précise dans son descriptif que, non seulement il ne s'applique qu'à des noyaux en version 2.6.8 et 2.6.8.1, mais qu'il n'est absolument pas recommandé d'en faire usage sur une machine de production.
Quoi s'il en soit, l'application du patch avant compilation est conditionnelle. Dans la configuration Debian du patch,
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
Pages: 1
- Accueil forums
- » Documentations
- » Documentation : Débian 4.0 administration et configuration (6)
2008 Parisdepannage |Plan du site|Forums |Blog|Lexique ![]()