Linux-Mandrake: |
Guide de l'utilisateur |
et Manuel de référence |
MandrakeSoft
Janvier 2000 http://www.linux-mandrake.com
Avec la notion de montage de systèmes de fichiers et la compilation des sources, c'est sans doute le sujet qui fâche le plus les débutants. La compilation d'un nouveau noyau n'est en général pas nécessaire, puisque les noyaux installés par Linux-Mandrake contiennent le support pour un nombre conséquent de périphériques, mais...
Il peut arriver, pourquoi pas, que vous ayez envie de le faire, rien que pour voir « ce que ça fait ». À part faire travailler votre PC et votre cafetière un peu plus que d'habitude, pas grand-chose. Toutefois, l'objectif de ce chapitre est de faire en sorte que votre cafetière reste utilisable après la compilation.
Il existe aussi des raisons valables. Par exemple, vous avez lu que le noyau que vous utilisez a un bogue au niveau de la sécurité, bogue qui est corrigé dans une version plus récente; ou encore, un nouveau noyau intègre le support pour un périphérique dont vous avez bien besoin. Vous avez le choix d'attendre des mises à jour ou bien de compiler un nouveau noyau vous-même, et optez pour la deuxième solution.
Dans tous les cas, achetez du café.
Le site primaire d'hébergement des sources du noyau est le site FTP
ftp.kernel.org
, mais il possède un nombre important de miroirs, et
tous ont pour nom ftp.xx.kernel.org
, où xx
représent le code
ISO du pays. Pour la France, ce code est fr
, et par conséquent
le miroir préférentiel sera la machine ftp.fr.kernel.org.
À partir de l'annonce officielle de la sortie du noyau, vous pouvez
compter deux bonnes heures avant que tous les miroirs soient alimentés.
Sur tous ces serveurs FTP, les sources sont dans le répertoire
/pub/linux/kernel
. Ensuite, allez dans le répertoire dont la
série vous intéresse: ce sera certainement v2.2
. Rien ne vous
empêche d'essayer des noyaux 2.3, mais gardez à l'esprit que ce sont des
noyaux expérimentaux. Le fichier contenant les sources du noyau est
linux-<version.du.noyau>.tar.gz
, par exemple
linux-2.2.11.tar.gz
.
Il existe également des patches (corrections) à appliquer aux
sources du noyau pour le mettre à jour de façon incrémentale: ainsi, si
vous avez déjà les sources du noyau 2.2.11 et voulez mettre à jour vers
le noyau 2.2.13, vous pouvez vous dispenser de télécharger les sources
en entier, et télécharger simplement les patches
patch-2.2.12.gz
et patch-2.2.13.gz
. C'est en règle
générale une bonne idée, les sources occupant aujourd'hui plus de 12
Mo.
Les sources du noyau sont à placer dans /usr/src
. Il vous faut
donc vous placer dans ce répertoire puis y décompresser les sources:
$ cd /usr/src
$ mv linux linux.old
$ tar xzf /path/to/linux-2.2.11.tar.gz
La commande mv linux linux.old
est nécessaire: en effet, vous
disposez peut-être déjà des sources d'une autre version du noyau. Cette
commande fera en sorte que vous ne les écrasiez pas. Dès l'archive
décompressée, vous disposez d'un répertoire linux
avec les
sources du nouveau noyau.
Maintenant, les patches. Nous allons supposer que vous voulez
effectivement « patcher » (« corriger ») du
2.2.11 vers le 2.2.13 et avez téléchargé les patches
nécessaires pour ce faire: rendez-vous donc dans le répertoire
linux
nouvellement créé, puis appliquez les patches:
$ cd linux
$ gzip -dc /path/to/patch-2.2.12.gz | patch -p1 #
$ gzip -dc /path/to/patch-2.2.13.gz | patch -p1
$ cd ..
De façon générale passer d'une version 2.2.x à une version 2.2.y
requiert que vous appliquiez tous les patches 2.2.x+1,
2.2.x+2, ..., 2.2.y dans l'ordre. Pour « redescendre » d'une
version 2.2.y vers une version 2.2.x, répétez exactement la même
procédure mais en appliquant les patches dans l'ordre inverse
et avec l'option -R
de patch
(Reverse,
« inverse »). Ainsi, pour repasser du noyau 2.2.13 au
noyau 2.2.11, vous feriez:
$ gzip -dc /path/to/patch-2.2.13.gz | patch -p1 -R
$ gzip -dc /path/to/patch-2.2.12.gz | patch -p1 -R
Ensuite, pour faire propre (et aussi pour s'y retrouver), on peut
renommer linux
pour refléter la version du noyau et créer un lien
symbolique:
$ mv linux linux-2.2.11
$ ln -s linux-2.2.11 linux
Il est maintenant temps de passer à la configuration. Pour cela il vous faut être dans le répertoire des sources:
$ cd linux
Pour configurer le noyau vous avez le choix entre:
make xconfig
pour une interface graphique,
make menuconfig
pour une interface basée sur
ncurses
, ou
make config
pour l'interface la plus rudimentaire,
ligne par ligne, section par section.Malheureusement la configuration du noyau n'est pas encore
internationalisée, tout est en anglais. Nous allons parcourir la
configuration section par section, mais vous pouvez sauter des sections
pour passer à celle qui vous intéresse si vous utilisez
menuconfig
ou xconfig
. Le choix pour les options
est 'y'
pour Yes (fonctionnalité compilée en dur dans
le noyau), 'm'
pour Module (fonctionnalité compilée
en module), ou 'n'
pour No (ne pas inclure dans le
noyau).
Pour xconfig
, vous aurez deviné à quoi servent les boutons
Main Menu, Next et
Prev. Pour menuconfig
,
servez-vous de la touche Entrée
pour sélectionner une section, et
changez les options avec 'y'
, 'm'
ou 'n'
pour en changer
l'état ou bien pressez la touche Entrée
et faites votre choix pour
les options à choix multiples. Exit sortira d'une section
et sortira de la configuration si vous êtes dans le menu principal. Et
évidemment, il y a Help.
Voici donc une liste relativement brutale des options et des choix recommandés pour ces options, émaillée d'explications quand cela est nécessaire. Les options qui ne sont pas abordées ici sont laissées à votre discrétion. Les laisser « telles que vous les avez trouvées » est en général une bonne chose.
'y'
PPro/6x86MX
si vous avez un processeur Intel
Pentium Pro, Pentium II, Celeron ou supérieur,
ou un
Cyrix 6x86
ou Cyrix MII.
'n'
.
'y'
. Même si votre processeur ne les supporte pas, ce n'est pas
grave.
'y'
que si votre machine est multi-processeurs!
'y'
'n'
'y'
'y'
--- même
si vous n'êtes pas en réseau! Vous en avez au moins besoin pour
l'interface loopback.
'y'
--- sauf si vous
n'avez pas de bus PCI sur votre machine.
'y'
'y'
'n'
--- à moins que
vous ayez un tel bus (les machines IBM PS/2 par
exemple).
'n'
--- ou alors c'est que vous êtes très fortuné!
'y'
'y'
'y'
'm'
'y'
'm'
'n'
'y'
ou 'm'
, au
choix.
'y'
uniquement si vous avez répondu 'y'
à l'option
Parallel port support. Sinon, il vous faut répondre
'm'
et rajouter la ligne alias parport_lowlevel parport_pc
dans le fichier /etc/conf.modules
.
'n'
'y'
, si votre carte mère le supporte.
'n'
'n'
'n'
'y'
'y'
'y'
'y'
'n'
si votre
PC est à l'heure locale, 'y'
s'il est à l'heure GMT.
'n'
(mais lisez l'aide!)
'y'
---
mais il faut savoir que tout ce que fait cette option est d'interroger
le BIOS PNP sur la configuration des cartes PNP s'il y en
a (rappelez-vous que le PNP n'a aucun sens pour les périphériques
PCI).
'm'
si
vous disposez de périphériques par port parallèle, 'n'
sinon.
'm'
'y'
'n'
'y'
. Si vous disposez de
disques IDE mais démarrez sur un disque SCSI, vous pouvez répondre
'm'
.
'm'
si
vous disposez d'un lecteur CD-ROM IDE.
'y'
ou 'm'
.
'y'
ou 'm'
si vous disposez, par exemple, d'un lecteur ZIP
IDE.
'm'
si vous
disposez d'un graveur IDE, 'n'
sinon.
'y'
'y'
'n'
'y'
'm'
'n'
'n'
--- à moins que vous ne vouliez expérimenter le RAID. À ce
moment-là, voyez le RAID-HOWTO
.
'n'
'n'
---
quoi, vous avez encore de tels disques? :)
'm'
si
vous disposez de tels périphériques, 'n'
sinon. Si vous répondez
'm'
, il vous faudra ensuite sélectionner quels types de
périphériques vous voulez reconnaître et quels protocoles. Reportez-vous
à l'aide du noyau pour en savoir plus, il n'y a pas de solutions
génériques à ce niveau, si ce n'est de tout compiler en module :)
'm'
'y'
'n'
'm'
'n'
, sauf si vous
voulez faire du masquage IP (plusieurs machines derrière une
connexion Internet) ou bien tout simplement un
firewall, auquel cas il vous faut répondre 'y'
.
'y'
---
autrement X ne fonctionnera pas.
'y'
'n'
'y'
ici c'est que vous savez de quoi il retourne --- sinon, répondez
'n'
.
'y'
,
sinon 'n'
. Pour le masquage, il vous faudra aussi répondre 'y'
à
IP: always defragment (required for masquerading),
IP: masquerading et IP: ICMP
masquerading
'n'
,
sauf si la machine est effectivement un routeur dédié.
'y'
si vous
êtes en réseau --- voyez également l'aide à ce sujet.
'y'
'n'
, à moins que vous ne soyez connecté par une interface à très
haut débit (gigabit Ethernet, FDDI, etc.)
'y'
si vous avez un (ou
plusieurs) adaptateur(s) et périphérique(s) SCSI , un lecteur ZIP
par port parallèle ou un graveur IDE, 'n'
sinon. Choisissez
'y'
à « SCSI disk support » si vous
bootez sur un disque SCSI, et pas 'm'
!
Choisissez également 'm'
à SCSI generic support
si vous disposez d'un graveur (SCSI ou IDE), et répondez de façon
appropriée pour les autres types de périphériques. Quand vient le
moment de déterminer quel est (sont) votre (vos) adaptateur(s) SCSI,
reportez-vous au fichier intitulé /etc/conf.modules
:
l'installation de la distribution Linux-Mandrake aura déterminé quels
pilotes utiliser.
'n'
'n'
'n'
'm'
si vous disposez d'un ZIP ancienne génération uniquement!
'm'
.
'y'
si vous
disposez d'un périphérique réseau, ou si vous voulez vous connecter à
Internet par modem, 'n'
sinon.
'm'
'y'
si vous
avez une ou plusieurs cartes Ethernet. Sélectionnez ensuite
le(s) pilote(s) approprié(s) pour votre (vos) carte(s) Ethernet.
'y'
ou
'm'
si vous souhaitez vous connecter à l'Internet via un
modem.
'n'
'y'
ou 'm'
si
vous disposez de périphériques infrarouges sur votre PC. Si c'est le
cas, répondez ensuite 'y'
ou 'm'
aux différentes options
proposées: IrLAN protocol si vous disposez d'un
émetteur/récepteur infrarouge pour communiquer avec d'autres PC
disposant d'une interface similaire (émulation Ethernet),
IrCOMM protocol si vous disposez d'un périphérique
infrarouge émulant un port série, IrLPT protocol
pour les périphériques infrafouges émulant un port parallèle. Dites
'y'
à IrDA protocol options, 'y'
à
Cache last LSAP, 'n'
à Fast
RRs (mais voyez l'aide à ce sujet), 'n'
à Debug
information, 'n'
à IrLAP compression à moins
que vous vouliez l'essayer (voyez l'aide), 'y'
ou 'm'
à
IrTTY (uses Linux serial driver) et
IrPORT (IrDA serial driver); puis vient le support
pour les différentes puces infrarouges, choisissez ceux ou celles dont
vous disposez (reportez-vous à la documentation sur votre matériel).
'y'
si vous
disposez d'un adaptateur ISDN interne. Si vous vous
connectez à l'Internet en utilisant une telle connexion (RNIS
ou Numéris en France), répondez également 'y'
à
Support synchronous PPP. Il va vous falloir
demander à votre fournisseur d'accès s'il reconnaît la compression
Van Jacobson pour répondre de façon appropriée à l'option
Use VJ-compression with synchronous PPP. Répondez
'n'
à Support generic MP (RFC 1717) (mais voyez
l'aide), 'n'
à Support audio via ISDN (mais
voyez l'aide) et à Support isdn diversion services.
Puis vient le choix du pilote de votre carte ISDN: reportez-vous à la
documentation de votre matériel.
'n'
, à moins que vous disposiez d'un lecteur CD-ROM ayant une
interface propriétaire. Très rare de nos jours.
'y'
'y'
'y'
'n'
'n'
'n'
'y'
---
laissez l'option Maximum number of Unix98 PTYs in
use (0-2048) à sa valeur par défaut, 256.
'm'
si vous
disposez d'une imprimante sur port parallèle. Dans ce cas, dites
également 'y'
à Support IEEE1284 status
readback.
'y'
ici, puis 'y'
ou 'm'
au type de souris
approprié. Reportez-vous à l'aide pour chacune de ces options. Comme
indiqué dans l'aide, pour tout type de souris étrange qui n'est ni
série, ni PS/2, reportez-vous au Busmouse-HOWTO
. En
particulier, faites attention avec les ordinateurs portables.
'y'
si vous avez un
tel lecteur de bandes non SCSI.
'n'
'n'
'y'
'y'
.
Répondez ensuite 'y'
ou 'm'
, au choix, aux options désignant
votre périphérique. La documentation sur votre matériel vous sera là
encore utile.
'y'
ou 'm'
si vous
avez un joystick (« manette de jeux ») et voulez
l'utiliser. Il vous faut ensuite choisir le pilote correspondant à votre
joystick. Reportez-vous à l'aide et à la documentation sur
votre matériel.
'y'
si
vous disposez d'un lecteur de bandes connecté au contrôleur de
disquette. Reportez-vous ensuite à l'aide pour les différentes options.
'n'
--- si vous
répondez 'y'
ici, c'est que vous connaissez votre domaine :)
'n'
'y'
ou 'm'
, sauf
si vous ne souhaitez pas du tout accéder à des disquettes ou partitions
DOS/Windows depuis Linux.
'm'
'n'
'm'
--- inclut le support pour la FAT32.
'm'
'y'
'y'
'y'
'y'
'y'
si votre
machine est un client NFS. Autrement, 'n'
.
'y'
si votre machine
doit agir en tant que serveur NFS.
'y'
si vous voulez monter des partitions depuis un serveur
de fichiers sous Windows (9x ou NT), 'n'
sinon. Cette option n'est pas nécessaire si vous faites un
serveur SMB.
'm'
'm'
'm'
'm'
'y'
'y'
. Le
framebuffer permet d'avoir des consoles virtuelles bien plus
agréables à l'oeil ainsi qu'un joli logo au démarrage :)
Il
n'empêche cependant pas l'utilisation d'un serveur X. Dites
'y'
également à Support for frame buffer devices
(EXPERIMENTAL), 'y'
à VESA VGA graphics
console.
'm'
ici si vous
avez une carte son, et reportez-vous à votre /etc/conf.modules
pour savoir quel pilote utiliser. Cela présuppose que vous ayez déjà
configuré votre carte son, avec sndconfig
.
'n'
Et voilà! La configuration est enfin terminée. Quittez en sauvegardant votre configuration.
Le fichier de configuration a le nom /usr/src/linux/.config
.
C'est en général une très bonne idée d'en faire une copie de sauvegarde!
De préférence, mettez cette copie dans le répertoire personnel de
root
. La configuration changeant très peu entre les révisions
du noyau (c'est-à-dire entre deux noyaux 2.2.x ou 2.3.x ou...), vous
pourrez vous en resservir pour configurer vos futurs noyaux.
Maintenant, place à la compilation.
Tout d'abord une petite chose: si vous compilez un noyau de version
identique à une version déjà présente sur votre système, les modules de
ce dernier doivent être effacés avant. Par exemple, si vous recompilez
un noyau 2.2.10, il vous faudra effacer le répertoire
/lib/modules/2.2.10
.
La compilation du noyau et des modules, ainsi que l'installation des modules se font en une seule ligne:
$ make dep && make bzImage && make modules &&
make modules_install
Si vous vous demandez à quoi sert ce fameux &&
, voici
l'explication: a && b
exécute d'abord a
, et
exécute b
si et seulement si a
s'est
terminé avec succès. Par extension vous imaginez donc ce que fait la
ligne de commande ci-dessus: si l'une des commandes échoue, celles qui
suivent ne seront pas exécutées. Une autre conséquence en cas d'échec
est qu'il y a un bogue dans le noyau! Si c'est le cas, signalez-le
nous...
Autre chose encore: non, compiler un nouveau noyau n'invalidera pas
l'ancien! Si la compilation échoue ici, cela ne veut pas dire que votre
système ne pourra plus démarrer. Pour empêcher votre système de
démarrer, il faut vraiment que vous fassiez une grosse bêtise ---
ce qui, autant vous rassurer, ne vous arrivera pas si vous respectez
scrupuleusement les consignes de ce chapitre :)
Votre noyau étant maintenant compilé avec succès, il reste à l'installer. Toujours pour rester « propre » et identifier vos noyaux de façon non ambiguë, il est préférable de respecter une certaine discipline de nommage. On va supposer que vous installez un noyau 2.2.13. À ce moment-là, tapez les commandes suivantes:
$ cp arch/i386/boot/bzImage /boot/vmlinuz-2.2.13
$ cp System.map /boot/System.map-2.2.13
Après cela, il vous reste à mettre à jour /etc/lilo.conf
.
Évidemment, gardez la possibilité de démarrer votre noyau actuel! Voici
à quoi ressemble un lilo.conf
typique, après installation de
votre distribution Linux-Mandrake et avant modification:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.9-19mdk
label=linux
root=/dev/hda1
read-only
other=/dev/hda2
label=dos
table=/dev/hda
Attention: Cet exemple suppose que vous utilisez LILO en tant que chargeur principal! Si vous utilisez System Commander, la directiveboot=
sera différente, et vous n'aurez probablement pas de sectionother
.
Un fichier lilo.conf
est composé d'une section principale, suivie
d'une section pour le lancement de chaque système d'exploitation. Dans
l'exemple du fichier ci-dessus la section principale est composée des
directives suivantes:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
La directive boot=
dit à LILO où il doit installer son
secteur de boot; en l'occurrence, il s'agit du MBR
(Master Boot Record, « enregistrement
principal de démarrage ») du premier disque dur IDE. Si vous voulez
faire une disquette LILO il vous suffira de remplacer
/dev/hda
par /dev/fd0 :)
La directive
prompt
demande à LILO de présenter l'invite au
démarrage et d'entamer la procédure après 5 secondes
(timeout=50
). Si vous retirez la directive
timeout=
, LILO attendra jusqu'à ce que vous ayez tapé
quelque chose.
Puis vient une section linux
:
image=/boot/vmlinuz-2.2.9-19mdk
label=linux
root=/dev/hda1
read-only
Une section linux
commence par la directive image=
,
suivie par le chemin complet vers un noyau Linux valide. À
l'instar de toute section, elle contient une directive label=
pour l'identifier de façon unique. La directive root=
dit à
LILO quelle est la partition hébergeant le système de fichiers
racine pour ce système Linux, elle pourra être différente chez
vous. La directive read-only
commande à LILO de
monter ce système de fichiers racine en lecture seule au démarrage: s'il
n'y a pas cette directive, vous aurez un message d'avertissement.
Puis vient la section Windows:
image=/boot/vmlinuz-2.2.9-19mdk
label=linux
root=/dev/hda1
read-only
En fait, une section débutant par other=
sert à LILO
pour démarrer tout système d'exploitation autre que Linux:
l'argument de cette directive est l'emplacement du secteur de
boot de ce système, et en l'occurrence il s'agit d'un système
Windows. Pour trouver le secteur de boot, situé au
début de la partition hébergeant cet autre système, Linux a
également besoin de savoir où se trouve la table des partitions qui lui
permettra de localiser la partition en question, ce que fait la
directive table=
. La directive label=
, comme pour
une section linux
, sert à identifier le système.
Avant de rajouter notre section linux
, nous allons faire d'une
pierre deux coups :)
Composons un message qui s'affichera au
démarrage avant l'apparition du prompt LILO, et qui
explique comment utiliser celui-ci:
$ cat >/boot/message <<EOF
> Bienvenue, ici LILO (LInux LOader).
> Tapez sur la touche TAB pour avoir une liste des images de boot .
> Vous disposez de:
> * exp : démarrage de Linux-Mandrake avec votre nouveau noyau
> * linux : noyau d'origine de Linux-Mandrake
> * dos : Windows
> Appuyer sur ENTREE sans entrer le nom d'une image démarrera
> la première image sur la liste, à savoir exp .
> EOF
$
Et voilà! Pour que ce message s'affiche au boot, il suffit de rajouter la directive:
message=/boot/message
dans la section principale de lilo.conf
. Maintenant, il faut
rajouter la section Linux pour pouvoir démarrer sur le nouveau
noyau. Dans cet exemple, elle sera mise en tête, mais rien ne vous
empêche de la mettre à un autre endroit:
image=/boot/vmlinuz-2.2.13
label=exp
root=/dev/hda1
read-only
Si vous avez compilé votre noyau avec le framebuffer, vous
voudrez sans doute l'exploiter: dans ce cas, il faut rajouter une
directive à la section qui lui indique en quelle résolution vous voulez
démarrer. La liste des modes est disponible dans le fichier
/usr/src/linux/Documentation/fb/vesafb.txt
(pour le
framebuffer VESA! Sinon, reportez-vous au fichier
correspondant). Pour du 800x600 en 32 bits[26], le numéro du mode est 0x315
, il
faut donc rajouter la directive:
vga=0x315
à notre nouvelle section LILO. Voici donc à quoi ressemble notre
lilo.conf
après modification, agrémenté de quelques commentaires
en plus (toutes les lignes commençant par #
), qui seront
ignorés par LILO:
#
# Section principale
#
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
# Notre message d'invite
message=/boot/message
# Présenter le prompt...
prompt
# ... attendre 5 secondes
timeout=50
#
# Notre nouveau noyau: image par défaut
#
image=/boot/vmlinuz-2.2.13
label=exp
root=/dev/hda1
read-only
# Si on utilise le framebuffer VESA:
vga=0x315
#
# Le noyau d'origine
#
image=/boot/vmlinuz-2.2.9-19mdk
label=linux
root=/dev/hda1
read-only
#
# Section Windows
#
other=/dev/hda2
label=dos
table=/dev/hda
N'oubliez pas d'adapter le fichier à votre configuration! Le système de
fichiers racine de Linux est ici /dev/hda1
mais il peut
très bien être ailleurs chez vous, et la même chose est valable pour
Windows. Maintenant que le fichier est modifié de façon
appropriée, il faut dire à LILO de changer le secteur de
boot:
$ lilo
Added exp *
Added linux
Added dos
$
Vous pouvez ainsi compiler autant de noyaux que vous le souhaitez, en rajoutant autant de sections Linux que nécessaire. Il ne vous reste plus qu'à redémarrer pour tester votre nouveau noyau.