Le Manuel Gentoo Linux/PPC
Table des matières :
-
Installer Gentoo
Cette partie explique comment installer Gentoo sur votre machine.
-
À propos de l'installation de Gentoo
Ce chapitre décrit les différentes façons d'installer Gentoo qui sont
documentées dans ce manuel.
-
Choisir le bon support d'installation
Vous pouvez installer Gentoo de plusieurs façons. Ce chapitre décrit
l'installation à partir d'un LiveCD Minimal. Le LiveCD Universal peut également
être utilisé.
-
Configurer votre connexion réseau
Pour pouvoir télécharger les sources, vous avez besoin d'une connexion
Internet ; vous devez la configurer.
-
Préparer les disques
Pour installer Gentoo, vous devez créer les partitions requises. Ce chapitre
décrit comment préparer vos disques durs.
-
Installer les fichiers d'installation de Gentoo
L'installation de Gentoo se base sur une archive nommée « stage3 ».
Ce chapitre décrit comment extraire cette archive et comment configurer
Portage.
-
Installer le système de base de Gentoo
Maintenant que le fichier stage3 est extrait nous allons entrer dans le nouveau
système et le configurer.
-
Configurer le noyau
Le noyau Linux est au cœur de toutes les distributions. Ce chapitre explique
comment le configurer.
-
Configurer le système
Vous devrez modifier certains fichiers de configuration. Ce chapitre vous donne
un aperçu de ces fichiers et décrit comment procéder.
-
Installer les outils système
Ce chapitre vous aide à choisir et à installer quelques outils importants.
-
Configurer le chargeur de démarrage
Installez et configurez le chargeur de démarrage PALO.
-
Finaliser votre installation
Vous avez presque fini. Il ne vous reste plus qu'à définir un ou plusieurs
utilisateurs pour votre système.
-
Et que faire ensuite ?
Votre système Gentoo est maintenant installé. Que faire ensuite ?
-
Utiliser Gentoo
Apprenez maintenant à utiliser Gentoo : comment installer un logiciel,
modifier des variables, changer le comportement de Portage, etc.
-
Introduction à Portage
Ce chapitre explique les bases qu'un utilisateur a besoin de connaitre pour
gérer les logiciels de son système.
-
La variable USE
Les options USE sont une part très importante de Gentoo. Dans ce chapitre, vous
apprendrez à utiliser ces options et à comprendre comment ces options
interagissent avec votre système.
-
Portage et ses fonctionnalités
Découvrez les fonctions de Portage telles que le support pour la compilation
distribuée, ccache et bien d'autres encore.
-
Les scripts d'initialisation
Gentoo fait appel à un format particulier de scripts de démarrage qui, entre
autres, permet la gestion des dépendances et le support des services virtuels.
Ce chapitre explique ces aspects et comment utiliser de tels scripts.
-
Variables d'environnement
Avec Gentoo, vous pouvez facilement gérer les variables d'environnement de
votre système. Ce chapitre explique comment faire cela et décrit également
les variables les plus courantes.
-
Utiliser Portage
Cette partie décrit en profondeur Portage, l'outil de gestion des paquets
logiciels de Gentoo.
-
Fichiers et répertoires
Maintenant que vous voulez en savoir plus sur Portage, il vous faut connaitre
où il stocke à la fois ses fichiers et ses données.
-
Les variables de configuration
L'outil Portage est entièrement configurable via diverses variables que vous
pouvez déclarer soit dans les fichiers de configuration, soit comme des
variables d'environnement.
-
Faire cohabiter des branches différentes
Gentoo répartit les logiciels et leur versions dans un système de branches
qui est fonction de la stabilité et de l'architecture de votre système.
Ce chapitre explique comment ces branches peuvent être configurées et comment
vous pouvez les modifier individuellement pour utiliser des branches
alternatives pour certains logiciels.
-
Outils supplémentaires
Portage est accompagné de quelques outils complémentaires qui peuvent
rendre la vie sous Gentoo meilleure encore. Lisez ce guide pour découvrir
l'utilisation de dispatch-conf et des autres outils.
-
Diverger de l'arbre officiel
Dans « Utiliser un sous-ensemble de l'arbre Portage », vous trouverez
quelques trucs et astuces pour gérer votre propre arbre Portage, ne
synchroniser que les catégories de votre choix, insérer des paquets et un peu
plus encore.
-
Configuration du réseau sous Gentoo
Cette partie explique en détail comment configurer vos interfaces réseaux sous
Gentoo.
-
Préparation
Un guide qui vous permettra d'avoir rapidement un réseau fonctionnel, pour les
environnements les plus communs.
-
Configuration avancée
Nous apprendrons ici comment fonctionne la configuration du réseau. Vous devrez
comprendre cette partie avant que nous attaquions les modules réseaux.
-
Les modules réseaux
Gentoo fournit une configuration réseau très flexible. Vous apprendrez ici
comment choisir votre client DHCP, mettre en place l'aggrégation de liens, les
ponts réseaux, les VLAN et autres.
-
Les réseaux sans fil
La mise en place du réseau sans fil n'est pas évidente, suivez le guide.
-
Ajout de fonctionnalités
Si vous vous sentez l'âme aventureuse, ajoutez vos propres fonctions de gestion
du réseau.
-
Gestion du réseau
Pour les utilisateurs de portables ou ceux qui connectent leur ordinateurs à
plusieurs réseaux.
A. Installer Gentoo
1. À propos de l'installation de Gentoo
1.a. Introduction
Bienvenue !
Tout d'abord, bienvenue chez Gentoo. Vous êtes sur le point de découvrir
un monde riche de flexibilité et de performances. Cela sera mis en évidence à
plusieurs reprises tout au long de l'installation de Gentoo. Vous pourrez
choisir la proportion du système de base que vous voulez compiler vous-même,
comment installer Gentoo, quel système de journalisation des évènements
(syslog) vous désirez, etc.
Gentoo est une métadistribution moderne, rapide et conçue de façon propre et
flexible autour de logiciels libres. Rien n'est caché. Portage, le système de
gestion de paquets utilisé par Gentoo, a été écrit en Python, ce qui signifie
que vous pouvez facilement consulter et modifier son code source. Portage
utilise le code source des paquets qu'il installe, bien qu'un support pour des
paquets précompilés soit également présent. De plus, Gentoo se configure avec
de simples fichiers texte. Autrement dit, l'ouverture règne.
Il est primordial que vous compreniez que Gentoo est avant tout une question de
flexibilité. Nous ne vous imposerons jamais un choix que vous ne
voudriez pas faire. Si vous considérez qu'un changement s'impose, faites-le
nous savoir via un rapport de bogue.
Comment l'installation est-elle structurée ?
L'installation de Gentoo se déroule en dix étapes couvertes par les chapitre 2
à 11. Après chaque étape, votre système sera dans un état bien défini :
-
Après l'étape 1, votre environnement est prêt pour installer Gentoo.
-
Après l'étape 2, votre connexion Internet est opérationnelle.
-
Après l'étape 3, vos disques durs sont initialisés avant d'accueillir Gentoo.
-
Après l'étape 4, votre environnement est prêt pour l'installation et vous
êtes prêt à vous placer à la racine de ce qui sera votre nouveau système (le
« chroot », pour les spécialistes).
-
Après l'étape 5, les paquets de base identiques sur toutes les installations
de Gentoo sont installés.
-
Après l'étape 6, votre noyau Linux est compilé.
-
Après l'étape 7, la plupart de vos fichiers de configuration système sont
créés.
-
Après l'étape 8, les outils système indispensables (à choisir parmi ceux
proposés dans une belle liste) sont installés.
-
Après l'étape 9, le chargeur de démarrage (le « bootloader ») est
installé et configuré et vous êtes connecté sur votre nouveau système Gentoo.
-
Après l'étape 10, votre environnement Gentoo Linux est prêt à être utilisé.
Lorsque vous devrez choisir parmi plusieurs possibilités, comme ce sera souvent
le cas, nous nous efforcerons de vous expliquer les avantages et les
inconvénients de chaque option et nous continuerons ensuite avec celle par
défaut. Les choix par défaut sont identifiés par le texte
« Défaut : ». Les autres possibilités sont identifiées par le
texte « Alternative : ». Ne croyez pas que les choix par défaut
représentent des recommandations ; ils indiquent simplement les choix que,
selon nous, la plupart des utilisateurs feront.
Parfois, vous aurez la possibilité de réaliser des actions facultatives. De
telles étapes sont identifiées par le texte « Facultatif » et ne sont
pas essentielles pour installer Gentoo. Cependant, certaines options dépendent
de choix que vous aurez faits plus tôt. Dans ce cas, nous vous en informerons
au moment de faire votre choix et au début de la description de l'étape.
Quelles sont les possibilités ?
Vous pouvez installer Gentoo de différentes façons. Vous pouvez télécharger un
de nos CD d'installation, vous pouvez partir d'une autre distribution
précédemment installée ou d'une distribution sur un CD amorçable comme Knoppix.
Vous pouvez aussi démarrer via une autre machine de votre réseau ou à partir
d'une disquette de démarrage.
Ce manuel décrit l'installation à partir d'un LiveCD Gentoo ou, dans certains
cas, à partir d'une autre machine de votre réseau. Ce guide décrit
l'installation de la version actuelle de Gentoo et des paquets. Si vous voulez
installer Gentoo sans connexion réseau, veuillez consulter les manuels de la version 2008.0.
Notez que si vous voulez faire une installation « GRP » (Gentoo
Reference Platform, un ensemble de paquets binaires prêts à être installés dès
la fin de l'installation de Gentoo), vous devez suivre les manuels 2008.0.
D'autres méthodes d'installation sont abordées dans notre guide des méthodes d'installation
alternatives. Vous pourriez aussi trouver notre guide des trucs et astuces pour
x86 utile. Si vous trouvez que notre manuel d'installation est trop
complexe, peut-être devriez-vous essayer un de nos guides d'installation
rapide, si un tel quide existe pour votre architecture. Veuillez consulter la
liste des documents.
Vous avez aussi le choix entre plusieurs points de départs :vous pouvez
compiler 100% de votre nouveau système ou installer des logiciels précompilés
pour accélérer la procédure d'installation. Évidemment, il existe d'autres
possibilités entre ces deux extrêmes : vous pouvez, par exemple, partir
d'un système partiellement compilé.
Des problèmes ?
Si vous rencontrez un problème lors de l'installation ou dans la documentation,
veuillez consulter notre système de gestion
des bogues. Si le problème n'est pas déjà connu, veuillez créer un
rapport de bogue. Ne craignez pas les développeurs auxquels vos bogues seront
attribués, ils n'ont encore mangé personne.
Veuillez noter que ce document contient des références à d'autres architectures
bien que ce manuel soit destiné à celle sur laquelle vous allez installer
Gentoo. Cela est dû au fait que les différents manuels ont de nombreuses
sections communes à toutes les architectures pour éviter le gaspillage de
ressources. Nous essayons de limiter ces références à d'autres architectures
pour éviter toute confusion.
Si vous avez un doute quant à l'origine d'un problème qui est soit une erreur
que vous avez commise bien que vous ayez soigneusement lu la documentation,
soit une erreur dans Gentoo malgré toute l'attention portée aux tests et à la
documentation, vous êtes le bienvenu sur le canal #gentoo ou #gentoofr sur
irc.freenode.net pour en discuter. Évidemment, vous y êtes de toute façon
toujours le bienvenu :)
Si vous avez une question relative à Gentoo, vous devriez consulter notre foire aux questions et notre centre de documentation. Vous pouvez aussi consulter la
FAQ en anglais
dans les forums. Si vous ne trouvez toujours pas de réponse, rejoignez-nous sur
le canal #gentoo sur irc.freenode.net, vous serez surpris de voir le nombre de
Gentooistes qui y sont actifs :-)
2. Choisir le bon support d'installation
2.a. Matériel requis
Introduction
Avant de débuter, nous allons présenter le matériel requis pour installer
Gentoo avec succès sur votre système.
Matériel requis
| Machines Apple NewWorld |
Basées sur Power/PowerPC (G3, G4, G5) comme les iMac, eMac, iBook PowerBook,
Xserver, PowerMac
|
| Machines Apple OldWorld |
Machines Apple avec une version d'Open Firmware antérieure à 3 telles que les
G3 beiges, les PCI PowerMacs et PCI PowerBooks. Les clones d'Apple basés
sur le bus PCI devraient aussi être supportés.
|
| Pegasos de Genesi |
Pegasos I/II, Open Desktop Workstation
|
| IBM |
RS/6000, iSeries, pSeries
|
| Mémoire |
Au moins 64 Mo |
| Espace dique |
1.5 Go (mémoire virtuelle non comprise) |
| Mémoire virtuelle |
Au moins 256 Mo |
Vous devriez consulter la Foire Aux
Questions PPC pour toute question sur l'installation ou si vous vous
demandez ce qu'il y a exactement dans la machine PowerPC qui repose sur votre
bureau.
2.b. Le CD d'installation Gentoo Universal
Introduction
Gentoo Linux s'installe en utilisant une archive tar stage3. Ce type
d'archive contient un système minimal de base à partir duquel vous pourrez
continuer l'installation de Gentoo Linux sur votre machine.
Les installations à partir d'archives stage1 ou stage2 ne sont pas documentées
dans le Manuel Gentoo. Veuillez consulter la FAQ Gentoo si ce sujet vous intéresse.
Le CD d'installation Gentoo Universal
Les CD d'installation Gentoo sont des CD-ROM amorçables qui contiennent
un environnement Gentoo autonome. Cela vous permet de démarrer Linux à partir
du CD-ROM. Pendant le chargement, votre matériel est détecté et les pilotes
appropriés sont chargés. Ces CD sont maintenus par les développeurs Gentoo.
-
Le CD d'installation Universal contient tout ce dont vous aurez besoin pour
installer Gentoo. Il contient des archives stage3 pour les architectures
courantes, du code source pour compiler des applications que vous voudrez
peut-être et, bien sûr, les instructions d'installation concernant votre
architecture.
-
Le CD d'installation Minimal ne contient qu'un environnement réduit qui
vous permet de démarrer et de configurer le réseau afin de pouvoir vous
connecter à Internet. Il ne contient aucun fichier supplémentaire et ne
peut pas être utilisé sans réseau pour installer un système.
Gentoo fournit également un CD de paquets, Package, connu aussi sous le nom
GRP. Ce n'est pas un CD d'installation mais plutôt une ressource supplémentaire
que vous pouvez utiliser lors de l'installation de votre système. Il contient
de nombreux paquets déjà construits qui vous permettront d'installer des
applications facilement et rapidement (telles qu'OpenOffice.org, KDE,
GNOME...), ceci dès la fin de l'installation de Gentoo et juste avant de mettre
à jour l'arbre de Portage.
L'utilisation du CD Package sera décrite plus tard dans ce document.
2.c. Télécharger, graver et amorcer un CD Gentoo Universal
Télécharger et graver les CD d'installation
Vous avez choisi d'utiliser un CD d'installation Gentoo. Nous débuterons par le
téléchargement puis la gravure du CD d'installation que vous avez choisi. Nous avons déjà
détaillé les différents CD disponibles, mais où pouvez-vous les trouver ?
Vous pouvez télécharger le CD Universal (ainsi que le CD Package si vous le
désirez) depuis l'un de nos serveurs miroirs. Les CD d'installation se trouvent
dans releases/ppc/2006.1/ppc32/installcd/, le CD Package se trouve
dans releases/ppc/2006.1/ppc32/packagecd.
Vous y trouverez plusieurs fichiers ISO. Ce sont des images de CD que vous
pouvez utiliser pour graver un CD-R.
Pour vérifier que le fichier téléchargé n'a pas été corrompu pendant le
transfert, vous devriez vérifier son intégrité en calculant sa somme de
vérification MD5 et en comparant le résultat avec la somme que nous publions
sur notre site, par exemple dans le fichier
install-ppc-minimal-2006.1.iso.DIGESTS. Vous pouvez utiliser
l'outil md5sum sous Linux ou md5sum for Windows.
La vérification de la somme MD5 avec Mac OS X est décrite dans notre FAQ pour PPC.
Un autre moyen de vérifier la validité du fichier téléchargé est d'utiliser
GnuPG pour tester la signature électronique que nous fournissons (le fichier
qui se termine en .asc). Téléchargez le fichier avec la signature
et procurez-vous la clé publique :
Exemple de code 3.1 : Obtenir la clé publique |
$ gpg --keyserver subkeys.pgp.net --recv-keys 17072058
|
Ensuite, vérifiez la signature :
Exemple de code 3.2 : Vérifier la signature |
$ gpg --verify <fichier_signature> <fichier_iso_téléchargé>
|
Plus d'information est disponible dans notre FAQ pour PPC.
Afin de graver le(s) ISO, vous devez utiliser la gravure brute (raw-burning).
La manière de procéder dépend de votre programme. Nous décrivons comment faire
avec cdrecord et k3b ci-dessous. Vous trouverez d'autres méthodes
dans notre FAQ.
-
Avec cdrecord, tapez simplement cdrecord dev=/dev/hdc <fichier
.iso> (remplacez /dev/hdc par le fichier de
périphérique matériel de votre graveur).
-
Avec K3B, sélectionnez Tools > CD > Burn Image.
Dans la zone « Image to Burn », sélectionnez le fichier ISO et
cliquez sur Start.
Par défaut : démarrer le CD d'installation avec Yaboot
Sur les machines NewWorld, mettez le CD d'installation dans le lecteur CD-ROM
et redémarrez le système. Lorsque le bip système retentit, enfoncez simplement
la touche « C » jusqu'à ce que le CD se charge.
Une fois que le CD d'installation s'est chargé, un chaleureux message de
bienvenue vous accueillera et une invite de commande boot: apparaitra au
bas de l'écran.
Nous fournissons un noyau générique, apple. Ce noyau supporte les
systèmes multiprocesseurs, mais il fonctionne également très bien avec un seul
processeur.
Vous pouvez aussi passer certains paramètres au noyau. Les options disponibles
sont dans la liste ci-dessous :
| Option de démarrage |
Description |
| video |
Ajoutez-y une des valeurs suivantes : nvidiafb, radeonfb,
rivafb, atyfb, aty128 ou ofonly. Vous pouvez
encore y ajouter la résolution, le taux de rafraichissement et la profondeur
de couleur que vous voulez avoir. Par exemple, utilisez
video=radeonfb:1280x1024@75-32 pour avoir le framebuffer ATI Radeon
en 1280*1024, avec un rafraichissement de 75 Hz et une profondeur de
couleur de 32 bits. Si vous ne savez pas quoi utiliser et que le défaut
ne marche pas, ofonly devrait fonctionner.
|
| nol3 |
Désactive le cache de niveau 3 sur certains PowerBook (requis au moins pour
la version 17").
|
| dofirewire |
Active le support IEEE1394 (Firewire) utilisé par exemple pour des disques
externes.
|
| dopcmcia |
Active le support des cartes PCMCIA, par exemple pour une carte réseau que
vous voulez utiliser pendant l'installation.
|
Pour utiliser les options ci-dessus, à l'invite boot:, tapez
apple suivi des options désirées. Dans l'exemple suivant, nous forçons
le noyau à utiliser le framebuffer Open Firmware au lieu du pilote spécifique à
votre matériel.
Exemple de code 3.3 : Forcer l'utilisation du framebuffer Open Firmware |
boot: apple video=ofonly
|
Vous n'êtes pas obligé d'ajouter des options, tapez simplement Entrée et un
environnement Gentoo Linux complet sera chargé à partir du CD. Poursuivez avec
Après avoir démarré.
Alternative : Pegasos
Sur une machine Pegasos, insérez le CD et tapez boot cd /boot/menu à
l'invite du SmartFirmware. Cela ouvrira un menu avec des configurations video
prédéfinies. Si vous avez besoin d'une option de démarrage spéciale, vous
pouvez l'ajouter à la fin de la ligne comme avec Yaboot ci-dessus. Par exemple,
boot cd /boot/pegasos video=radeonfb:1280x1024@75 mem=256M. Pour votre
information, les options préconfigurées dans le noyau sont
console=ttyS0,115200 console=tty0 init=/linuxrc looptype=squashfs
loop=/image.squashfs udev nodevfs cdroot root=/dev/ram0.
Alternative : Démarrer le CD d'installation avec BootX
Si vous disposez d'un Mac OldWorld, alors la partie amorçable du CD ne pourra
pas être utilisée. La solution la plus simple est d'utiliser MacOS pour
démarrer sur un environnement Linux à l'aide d'un outil nommé BootX.
Tout d'abord, téléchargez BootX et décompressez
l'archive. Copiez le BootX Extension depuis les fichiers décompressés
dans le répertoire d'extensions et le panneau de contrôle de
l'application BootX dans Panneau de Contrôle. Les deux sont situés dans
le répertoire Système de MacOS. Ensuite, créez un répertoire nommé « Linux
Kernels » dans votre répertoire système et copiez le noyau apple
depuis le CD-ROM vers votre répertoire. Enfin, copiez le fichier
apple.igz issu du CD d'installation dans le répertoire boot du
répertoire Système de MacOS.
Pour préparer BootX vous devez lancer l'application de panneau de configuration
BootX. Tout d'abord allez dans la boite de dialogue des options et validez
Use Specified RAM Disk, puis sélectionnez apple.igz dans votre
répertoire système. Retournez à l'écran de départ et assurez-vous que la taille
du « ramdisk » est d'au moins 32000. Enfin, indiquez les
arguments passés au noyau comme suit :
Exemple de code 3.4 : Arguments du noyau de BootX |
cdroot root=/dev/ram0 init=linuxrc loop=image.squashfs looptype=squashfs console=tty0
|
Note :
Les paramètres de noyau dans le chapitre sur yaboot sont également applicables
ici. Vous pouvez ajouter n'importe laquelle de ces options aux arguments du
noyau ci-dessus.
|
Vérifiez de nouveau que la configuration est correcte et sauvegardez la
configuration. Cette sauvegarde est pour le cas où la machine ne démarre pas ou
que quelque chose manque. Cliquez sur le bouton Linux en haut de la fenêtre. Si
tout se passe bien, cela devrait démarrer sur le CD d'installation. Continuez
avec le chapitre Après avoir démarré.
Après avoir démarré
Vous recevrez une invite de commande root (« # ») sur la console
active. Vous pouvez aussi passer aux autres consoles en tapant Alt-F2, Alt-F3
et Alt-F4. Retournez à la première console en tapant Alt-F1. À cause de la
disposition du clavier sur les machines Apple, vous devrez sans doute utiliser
des combinaisons Alt-fn-Fx.
Si vous utilisez un clavier différent du clavier qwerty américain, utilisez la
commande loadkeys pour définir la disposition des touches à utiliser.
Une liste des claviers supportés se trouve dans le répertoire
/usr/share/keymaps/i386. N'utilisez pas les dispositions de
touches des répertoires ppc ou mac avec des machines
NewWorld ou Pegasos, car elles sont spécifiques aux machines OldWorld basées
sur ADB.
Exemple de code 3.5 : Afficher la liste des claviers disponibles |
# ls /usr/share/keymaps/i386
|
Pour définir le type de clavier que vous utilisez, faites :
Exemple de code 3.6 : Définir le type de clavier |
# loadkeys fr-latin9
|
Poursuivez votre lecture avec la section
Configuration du matériel supplémentaire.
Configuration du matériel supplémentaire
Lorsque le CD d'installation démarre, il tente de détecter votre matériel et
charge les modules du noyau appropriés pour supporter ce matériel. Dans la
plupart des cas cette autodétection donne d'excellents résultats. Toutefois,
il se peut que les modules du noyau dont vous avez besoin ne soient pas tous
chargés. Si l'autodétection PCI a ignoré une partie de votre matériel, vous
devrez charger les modules appropriés manuellement.
Dans l'exemple suivant, nous tentons de charger le module airport. Ce
module est utilisé avec des interfaces réseau Airport de l'ancienne génération
(802.11b). Les cartes AirportExtreme (802.11g) ne sont pas supportées par le CD
d'installation à cause de restrictions sur la distribution du firmware.
Exemple de code 3.7 : Charger le module airport |
# modprobe airport
|
Sur les anciens iMac, il arrive que la carte réseau ne soit pas détectée
correctement. Il faut alors utiliser le pilote BMAC :
Exemple de code 3.8 : Charger le module bmac |
# modprobe bmac
|
Facultatif : régler les performances des disques durs
Si vous êtes un utilisateur expérimenté, vous souhaitez peut-être régler les
performances des disques durs IDE en utilisant hdparm. Avec les
arguments -tT, vous pouvez tester les performances de vos disques
(exécutez ce test plusieurs fois pour juger plus précisément des résultats).
Exemple de code 3.9 : Tester les performances des disques |
# hdparm -tT /dev/hda
|
Pour régler les performances, vous pouvez copier les exemples suivants (ou
expérimenter) qui utilisent /dev/hda comme disque dur
(substituez par le chemin d'accès à votre disque) :
Exemple de code 3.10 : Régler les performances du disque dur |
# hdparm -d 1 /dev/hda
# hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda
|
Facultatif : comptes utilisateurs
Si vous souhaitez permettre à d'autres personnes d'accéder à votre
environnement d'installation ou si vous voulez dialoguer en ligne avec
irssi sans être root pour des raisons de sécurité, vous devez créer les
comptes utilisateurs nécessaires et changer le mot de passe de root.
Pour changer le mot de passe de root, utilisez l'utilitaire passwd :
Exemple de code 3.11 : Changer le mot de passe de root |
# passwd
New password:
Re-enter password:
|
Pour créer un compte utilisateur, on saisit d'abord son nom, puis son mot de
passe. Les programmes useradd et passwd sont utilisés pour ces
tâches. Dans l'exemple suivant, nous créons un utilisateur nommé
« john ».
Exemple de code 3.12 : Création d'un compte utilisateur |
# useradd -m -G users john
# passwd john
New password:
Re-enter password:
|
Vous pouvez passer de l'utilisateur root à l'utilisateur que vous venez de
créer avec la commande su :
Exemple de code 3.13 : Devenir john |
# su - john
|
Facultatif : consulter la documentation pendant l'installation
Si vous désirez consulter le Manuel Gentoo, sur le CD ou en ligne, vous devez
avoir configuré un compte utilisateur. Ensuite,
tapez Alt+F2 pour basculer sur un autre terminal et connectez-vous avec
le compte utilisateur que vous avez créé.
Pour lire la documentation qui accompagne le CD, il vous suffit de lancer
links :
Exemple de code 3.14 : Consulter la documentation sur le CD |
# links /mnt/cdrom/docs/handbook/html/index.html
|
Cependant, quand cela est possible, il est préférable de lire le Manuel Gentoo
en ligne, car il est plus à jour. Vous pouvez également utiliser links,
mais uniquement si vous avez configuré votre accès au réseau.
Exemple de code 3.15 : Consulter la documentation en ligne |
# links http://www.gentoo.org/doc/fr/handbook/handbook-ppc.xml
|
Vous pouvez revenir à votre terminal initial en tapant Alt+F1.
Facultatif : démarrage du démon SSH
Si vous voulez permettre à d'autres utilisateurs d'accéder à votre ordinateur
pendant le processus d'installation (peut-être que ces utilisateurs vous
aideront à installer Gentoo ou même le feront pour vous), vous devez leur
fournir un compte utilisateur ou le mot de passe de root. (Cette dernière option
n'est envisageable que si vous faites entièrement confiance à cet
utilisateur.)
Pour démarrer le démon SSH, exécutez la commande suivante :
Exemple de code 3.16 : Démarrer le démon SSH |
# /etc/init.d/sshd start
|
Avant de pouvoir utiliser sshd, vous devez Configurer votre connexion réseau.
3. Configurer votre connexion réseau
3.a. Connexion au réseau automatique
Peut-être fonctionne-t-elle déjà ?
Si votre système est connecté à un serveur DHCP, il est probable que votre
connexion ait déjà été configurée automatiquement. Si tel est le cas, les
commandes habituelles telles que ssh, scp, ping,
irssi, wget, links qui sont sur le CD d'installation
fonctionnent.
Pour vérifier que votre connexion fonctionne, utilisez la commande
/sbin/ifconfig. Elle devrait afficher la liste des interfaces réseau
opérationnelles (en plus de lo).
Exemple de code 1.1 : Affichage de /sbin/ifconfig quand une connexion existe |
# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
collisions:1984 txqueuelen:100
RX bytes:485691215 (463.1 Mb) TX bytes:123951388 (118.2 Mb)
Interrupt:11 Base address:0xe800
|
Facultatif : configurer un mandataire
Si vous passez par un serveur mandataire (« proxy ») pour atteindre
Internet, vous devrez spécifier les coordonnées de ce mandataire pendant
l'installation. C'est très facile à faire : vous devez juste définir une
variable d'environnement qui contiendra ces coordonnées.
Dans la plupart des cas, vous pouvez juste définir cette variable avec le nom du
serveur. Pour illustrer, disons que le mandataire s'appelle
proxy.gentoo.org et que le port soit 8080 :
Exemple de code 1.2 : Définition d'un serveur mandataire |
# export http_proxy="http://proxy.gentoo.org:8080"
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
# export RSYNC_PROXY="rsync://proxy.gentoo.org:8080"
|
Si le mandataire a besoin d'un nom d'utilisateur et d'un mot de passe, utilisez
la syntaxe suivante pour définir la variable :
Exemple de code 1.3 : Ajout d'un nom d'utilisateur et d'un mot de passe au mandataire |
http://utilisateur:passe@serveur:port
|
Par exemple, pour faire du HTTP avec notre serveur mandataire, le nom
d'utilisateur « nico » et le mot de passe « f00b_r », vous
ferez :
Exemple de code 1.4 : Utilisation d'un mandataire avec authentification |
# export http_proxy="http://nico:f00b_r@proxy.gentoo.org:8080"
|
Test du réseau
Vous pouvez essayer une connexion vers le serveur DNS de votre fournisseur
d'accès (son adresse figure dans /etc/resolv.conf) et un site web
de votre choix, pour vérifier que vos paquets atteignent bien Internet et que la
résolution de noms se fait bien.
Exemple de code 1.5 : Le test ultime |
# ping -c 3 www.gentoo.org
|
Si le réseau fonctionne, vous pouvez alors sauter le reste de cette section et
continuer avec le chapitre Préparer les
disques. Sinon, poursuivez la lecture.
3.b. Configuration automatique du réseau
Si le réseau n'a pas marché tout de suite, certains supports d'installation
vous permettent d'utiliser net-setup (pour les réseaux classiques ou
sans fil), pppoe-setup (pour les utilisateurs de l'ADSL) ou pptp
(pour les utilisateurs de PPTP, disponible sur les architectures x86, amd64,
alpha, ppc et ppc64).
Si votre support d'installation ne contient pas ces outils ou si votre réseau
ne fonctionne pas, veuillez continuer avec la Configuration manuelle du réseau.
Par défaut : utilisation de net-setup
Le plus simple pour activer une interface réseau, si cela n'a pas été fait
automatiquement, est de lancer le script net-setup :
Exemple de code 2.1 : Lancement du script net-setup |
# net-setup eth0
|
net-setup vous demandera des renseignements à propos de votre
environnement réseau. Une fois terminé, vous devriez avoir une connexion réseau
fonctionnelle. Testez votre connexion comme indiqué précédemment. Si le test est
positif, alors bravo. Vous êtes maintenant fin prêt pour l'installation de
Gentoo. Passez le reste de cette section et continuez avec la section
Préparer les disques.
Si votre réseau ne marche toujours pas, continuez avec la section Configuration manuelle du réseau.
Alternative : utilisation PPP
Si vous avez besoin de PPPoE pour vous connecter à Internet, le CD
d'installation (n'importe quelle version) contient de quoi vous faciliter la
tâche grâce à ppp. Utilisez le script pppoe-setup fourni pour
configurer votre connexion. Il vous demandera le nom du périphérique Ethernet
connecté à votre modem ADSL, votre nom d'utilisateur et votre mot de passe, les
adresses IP de vos serveurs DNS et si vous voulez activer un pare-feu de base
ou non.
Exemple de code 2.2 : Utilisation de pppo |
# pppoe-setup
# pppoe-start
|
Si cela ne marche pas, vérifiez scrupuleusement que les noms d'utilisateur et
mots de passe fournis ont été correctement tapés en regardant dans le fichier
/etc/ppp/pap-secrets ou /etc/ppp/chap-secrets et
assurez-vous d'utiliser le bon périphérique réseau. Si votre périphérique réseau
n'existe pas, vous devez charger les modules réseau appropriés. Dans ce cas,
continuez avec la Configuration manuelle du
réseau puisque nous y expliquons comment charger les modules réseau
nécessaires.
Si tout marche, continuez avec la section
Préparer les disques.
Alternative : utilisation de PPTP
Si vous avez besoin du support PPTP, vous pouvez utiliser pptpclient
fourni sur le CD d'installation. Mais avant, vous devez vous assurer que votre
configuration est correcte. Éditez /etc/ppp/pap-secrets ou
/etc/ppp/chap-secrets afin qu'ils contiennent la bonne combinaison
nom d'utilisateur/mot de passe :
Exemple de code 2.3 : Édition de /etc/ppp/chap-secrets |
# nano -w /etc/ppp/chap-secrets
|
Ensuite, modifiez /etc/ppp/options.pptp si nécessaire :
Exemple de code 2.4 : Édition de /etc/ppp/options.pptp |
# nano -w /etc/ppp/options.pptp
|
Une fois cela fait, lancez simplement pptp (avec les options que vous ne
pouvez mettre dans options.pptp) pour vous connecter au
serveur :
Exemple de code 2.5 : Connexion à un serveur PPTP |
# pptp <ip du serveur>
|
Maintenant, continuez avec la section Préparer les
disques.
3.c. Configuration manuelle du réseau
Chargement des modules réseau nécessaires
Quand le CD d'installation démarre, il essaie de détecter tous vos
périphériques et de charger les modules du noyau (les pilotes) appropriés pour
faire marcher votre matériel. Dans la plupart des cas, cela marche très bien.
Pourtant, dans certains cas, il peut ne pas charger certains modules dont vous
avez besoin.
Si net-setup ou pppoe-setup n'ont pas marché, alors vous pouvez
commencer à vous dire que votre carte réseau n'a pas été détectée et que vous
devrez charger les modules requis vous-même.
Pour savoir quels modules du noyau nous fournissons pour le réseau, utilisez
simplement ls :
Exemple de code 3.1 : À la recherche des modules fournis |
# ls /lib/modules/`uname -r`/kernel/drivers/net
|
Si vous trouvez un pilote pour votre carte réseau, utilisez modprobe pour
le charger dans le noyau :
Exemple de code 3.2 : Utilisation de modprobe pour charger un module dans le noyau |
# modprobe pcnet32
|
Pour vérifier si votre carte réseau est maintenant détectée, utilisez
ifconfig. Une carte réseau détectée devrait provoquer ce genre
d'affichage :
Exemple de code 3.3 : Test positif de la présence d'une carte réseau |
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr FE:FD:00:00:00:00
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
|
Par contre, si vous obtenez l'erreur suivante, alors la carte réseau n'a pas été
détectée :
Exemple de code 3.4 : Test négatif de la présence d'une carte réseau |
# ifconfig eth0
eth0: error fetching interface information: Device not found
|
Si votre machine dispose de plusieurs cartes réseau, elles sont nommées
eth0, eth1, etc. Utilisez le nom qui correspond à la carte qui
est connectée. Dans le reste de ce document, nous utiliserons eth0.
Si votre carte réseau est maintenant détectée, vous pouvez ré-essayer
net-setup ou pppoe-setup (ce qui devrait marcher). Pour
les curieux, nous allons quand même expliquer comment configurer manuellement
votre réseau.
Choisissez parmi les possibilités suivantes :
Utilisation de DHCP
DHCP (Dynamic Host Configuration Protocol, Protocole Dynamique de Configuration
d'un Hôte) sert à automatiser la récupération des informations réseau (adresse
IP, masque de réseau, adresse de diffusion, passerelle, serveurs de noms, etc.)
Cela ne marche que si vous disposez d'un serveur DHCP déjà configuré et actif
dans votre réseau (ce peut être votre serveur ou celui de votre fournisseur
d'accès). Pour qu'une interface réseau reçoive automatiquement ces
informations, utilisez dhcpcd :
Exemple de code 3.5 : Utilisation de dhcpcd |
# dhcpcd eth0
# dhcpcd -HD eth0
|
Si cela marche (essayez d'envoyer un ping vers un serveur sur Internet, par
exemple Google), alors vous êtes prêt
à continuer. Sautez le reste de cette section et continuez avec la section
Préparer les disques.
Configurer l'accès à un réseau sans fil
Note :
Seuls les CD d'installation pour x86, amd64 et ppc ont la commande
iwconfig. Avec d'autres machines, vous pouvez vous débrouiller en
suivant les instructions relatives au projet linux-wlan-ng
(en anglais).
|
Si vous utilisez un réseau sans fil (aussi nommé WiFi ou 802.11), vous devrez
sans doute configurer votre carte réseau avant de poursuivre. Pour afficher la
configuration de votre carte, utilisez la commande iwconfig. Elle
affichera un texte semblable à ceci :
Exemple de code 3.6 : Afficher la configuration en cours |
# iwconfig eth0
eth0 IEEE 802.11-DS ESSID:"GentooNode"
Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2
Bit Rate:11Mb/s Tx-Power=20 dBm Sensitivity=0/65535
Retry limit:16 RTS thr:off Fragment thr:off
Power Management:off
Link Quality:25/10 Signal level:-51 dBm Noise level:-102 dBm
Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx
excessive retries:237 Invalid misc:350282 Missed beacon:84
|
Note :
Remarquez que certaines cartes ont wlan0 ou ra0 comme nom de
périphérique au lieu de eth0. Lancez iwconfig sans paramètre pour
connaitre le nom exact du périphérique.
|
Dans la plupart des cas, seuls deux paramètres doivent être définis : le
code ESSID (aussi nommé « wireless network name » ou nom du réseau)
et la clef WEP (cryptage). Si le code ESSID et l'adresse de votre point d'accès
(« Access Point » ci-dessus) correspondent déjà à la configuration de
votre réseau sans fil et que vous n'utilisez pas de clef WEP, alors votre
connexion sans fil fonctionne déjà. Si vous devez modifier le code ESSID ou
définir une clef WEP, utilisez les commandes suivantes :
Note :
Si votre réseau sans fil est configuré avec du WPA ou du WPA2, vous devrez
utiliser wpa_supplicant. Pour plus d'informations sur la configuration
des réseaux sans fil sous Gentoo Linux, référez-vous au chapitre sur les réseaux sans fil du Manuel.
|
Exemple de code 3.7 : Modifier le code ESSID et/ou définir une clef WEP |
# iwconfig eth0 essid GentooNode
# iwconfig eth0 key 1234123412341234abcd
# iwconfig eth0 key s:le-mot-de-passe
|
Vous pouvez vérifier vos paramètres en lançant la commande iwconfig. Une
fois que votre connexion sans fil est opérationnelle, vous pouvez poursuivre
avec la section suivante (Comprendre la terminologie
réseau) ou utiliser l'outil net-setup décrit précédemment.
Comprendre la terminologie réseau
Note :
Si vous connaissez votre adresse IP, votre adresse de diffusion (broadcast),
votre masque réseau et vos serveurs de noms, vous pouvez sauter cette
sous-section et continuer avec l'Utilisation de
ifconfig et route.
|
Si tout a échoué jusqu'à présent, vous allez devoir configurer votre réseau à la
main. Ce n'est pas difficle du tout. Vous devez cependant être familier avec la
terminologie réseau afin que vous puissiez configurer votre carte proprement.
Quand vous aurez fini cette partie, vous saurez ce qu'est une passerelle,
à quoi sert un masque réseau, comment est construite l'adresse de
diffusion et pourquoi vous avez besoin de serveurs de noms.
Dans un réseau, les machines sont identifiées par leur adresse IP
(« Internet Protocol »). Ces adresses sont une suite de quatre
nombres compris entre 0 et 255. Du moins, c'est comme cela qu'on le voit. En
réalité, une adresse IP est une suite de 32 bits (des uns ou zéros).
Voyons un exemple :
Exemple de code 3.8 : Exemple d'adresse IP |
Adresse IP (nombres): 192.168.0.2
Adresse IP (bits): 11000000 10101000 00000000 00000010
-------- -------- -------- --------
192 168 0 2
|
Une adresse IP est unique dans un réseau donné, c'est-à-dire qu'il n'existe
qu'une seule machine avec une certaine IP dans l'ensemble des réseaux connectés
et accessibles. Pour faire la distinction entre les machines qui sont dans un
réseau particulier et celles qui n'y sont pas, l'adresse IP est divisée en deux
parties : la partie réseau et la partie hôte.
La séparation est faite grâce au masque réseau, une suite de 1 suivie
d'une suite de 0. La partie de l'adresse IP qui correspond aux 1 est la partie
réseau, l'autre est la partie hôte. Le masque réseau est souvent écrit sous la
forme d'une adresse IP.
Exemple de code 3.9 : Exemple de séparation réseau/hôte |
Adresse IP: 192 168 0 2
11000000 10101000 00000000 00000010
Masque réseau 11111111 11111111 11111111 00000000
255 255 255 0
+--------------------------+--------+
Partie Réseau Hôte
|
Dans cet exemple, 192.168.0.14 fait toujours partie de notre réseau, mais pas
192.168.1.2.
L'adresse de diffusion (« broadcast ») d'une machine est une
adresse IP spéciale qui a la même partie réseau que son adresse IP, avec que
des 1 dans la partie hôte. Toutes les machines de votre réseau reçoivent les
paquets émis à cette adresse ; elle est utilisée pour diffuser des paquets
à tout le réseau.
Exemple de code 3.10 : Adresse de diffusion |
Adresse IP: 192 168 0 2
11000000 10101000 00000000 00000010
Adresse de diffusion: 11000000 10101000 00000000 11111111
192 168 0 255
+--------------------------+--------+
Réseau Hôte
|
Pour pouvoir surfer sur Internet, vous devez savoir quelle machine partage sa
connexion Internet. Cette machine est appelée la passerelle. Comme c'est
une machine comme une autre, elle a une adresse IP (par exemple 192.168.0.1).
Nous avons dit précédemment que chaque machine avait sa propre adresse IP. Pour
pouvoir accéder à une machine grâce à un nom (au lieu d'une adresse IP, plus dure
à retenir), vous avez besoin d'un service qui traduit un nom (comme
dev.gentoo.org) en une adresse IP (comme 64.5.62.82). Ce service
s'appelle service de noms (N.D.T. : ou DNS, pour Service de Noms de Domaine). Pour
utiliser ce service, vous avez besoin de définir un ou plusieurs serveurs de
noms dans le fichier /etc/resolv.conf.
Dans certains cas, votre passerelle sert aussi de serveur de noms. Sinon, entrez
les serveurs de noms de votre fournisseur d'accès.
Pour résumer, vous avez besoin des informations suivantes pour continuer :
| Objet |
Exemple |
| Votre adresse IP |
192.168.0.2 |
| Masque réseau |
255.255.255.0 |
| Adresse de diffusion |
192.168.0.255 |
| Passerelle |
192.168.0.1 |
| Serveur(s) de noms |
195.130.130.5, 195.130.130.133 |
Utilisation de ifconfig et route
La mise en place de votre réseau consiste en trois étapes. D'abord, nous nous
assignons une adresse IP avec ifconfig. Ensuite, nous configurons le
routage vers la passerelle avec route. Enfin, nous plaçons les adresses
des serveurs de noms dans le fichier /etc/resolv.conf.
Pour assigner une adresse IP, vous avez besoin de votre adresse IP, de l'adresse
de diffusion et du masque réseau. Ensuite, exécutez la commande suivante, en
remplaçant ${IP_ADDR} par votre adresse IP, ${BROADCAST} par
votre adresse de diffusion et ${NETMASK} par votre masque réseau :
Exemple de code 3.11 : Utilisation de ifconfig |
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
|
Maintenant, nous mettons en place le routage avec route. Remplacez
${GATEWAY} par l'adresse de votre passerelle :
Exemple de code 3.12 : Utilisation de route |
# route add default gw ${GATEWAY}
|
Ouvrez maintenant le fichier /etc/resolv.conf avec votre éditeur de
texte favori (dans notre exemple, nous utilisons nano) :
Exemple de code 3.13 : Création du /etc/resolv.conf |
# nano -w /etc/resolv.conf
|
Entrez maintenant vos serveurs de noms de la façon suivante. Remplacez bien les
variables ${NAMESERVER1} et ${NAMESERVER2} avec les adresses
appropriées :
Exemple de code 3.14 : /etc/resolv.conf |
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}
|
Et voilà. Maintenant, testez votre réseau en envoyant un ping vers un serveur
Internet (Google par exemple). Si cela
marche, toutes nos félicitations ! Vous êtes enfin prêt à installer Gentoo.
Poursuivez avec le chapitre Préparer les
disques.
4. Préparer les disques
4.a. Introduction aux périphériques de bloc
Les périphériques de bloc
Nous allons regarder de manière approfondie la question des disques sous Gentoo
Linux et sous Linux en général, y compris les systèmes de fichiers de Linux,
les partitions et les périphériques de bloc. Ensuite, une fois que vous serez
familiarisé avec les entrées et sorties des disques et des systèmes de
fichiers, vous serez guidé pour réaliser la mise en place des partitions et des
systèmes de fichiers pour votre installation de Gentoo Linux.
Pour commencer, nous allons présenter les périphériques de bloc. Le
plus courant étant celui qui représente le premier disque IDE dans
un système Linux, /dev/hda. Si votre système utilise des disques
SCSI, Firewire, USB ou SATA, alors votre premier disque dur devrait être
/dev/sda.
Les périphériques de bloc cités ci-dessus représentent une interface abstraite
vers les disques. Les programmes utilisateur peuvent les utiliser pour
interagir avec votre disque sans devoir se tracasser si vos périphériques sont
IDE, SCSI ou autres. Le programme peut simplement utiliser l'espace sur le
disque comme un groupe de blocs continus de 512 octets accessibles
aléatoirement.
Partitions
Bien qu'il soit théoriquement possible d'utiliser un disque complet pour
héberger votre système Linux, ceci n'est pratiquement jamais fait. À la place,
les périphériques de bloc sont divisés pour être plus petits et plus facilement
gérables. Sur la plupart des systèmes, ils sont appelés partitions.
4.b. Concevoir un plan de partitionnement
Plan de partitionnement par défaut
Si vous n'êtes pas intéressé par l'établissement d'un plan de partitionnement
pour votre système, vous pouvez utiliser le plan de partitionnement que
nous utilisons dans ce manuel.
Note :
Si vous utilisez une machine OldWorld, vous aurez besoin de garder MacOS. Le
partitionnement présenté ici suppose que MacOS est installé sur un autre
disque.
|
| Partition NewWorld |
Partition OldWorld |
Partition Pegasos |
Partition RS/6000 |
Système de fichiers |
Taille |
Description |
| /dev/hda1 |
/dev/hda1 |
(Pas utilisable) |
(Pas utilisable) |
(Table des partitions) |
32k |
Apple_partition_map |
| /dev/hda2 |
(Pas besoin) |
(Pas utilisable) |
(Pas utilisable) |
(bootstrap) |
800k |
Apple_Bootstrap |
| (Pas utilisable) |
(Pas utilisable) |
(Pas utilisable) |
/dev/sda1 |
(PReP Boot) |
800k |
Type 0x41 |
| (Pas utilisable) |
/dev/hda2 (Si vous utilisez quik) |
/dev/hda1 |
(Pas utilisable) |
ext2 |
32MB |
Partition de démarrage |
| /dev/hda3 |
/dev/hda2(/dev/hda3 si vous utilisez quik) |
/dev/hda1 |
/dev/sda2 |
(swap) |
512M |
Partition de mémoire virtuelle, type 0x82 |
| /dev/hda4 |
/dev/hda3(/dev/hda4 si vous utilisez quik) |
/dev/hda2 |
/dev/sda3 |
ext3, xfs |
Reste du disque |
Partition principale, type 0x83 |
Note :
Vous pourriez voir des partitions telles que Apple_Driver63,
Apple_Driver_ATA, Apple_FWDriver, Apple_Driver_IOKit, Apple_Patches. Si
vous n'avez pas l'intention d'utiliser MacOS 9, vous pouvez les supprimer, car
ni MacOS X ni Linux ne les utilisent. Pour les supprimer, utilisez Parted ou
effacez tout le disque en réinitialisant la table des partitions.
|
Attention :
parted est capable de redimensionner des partitions, y compris les
partitions HFS+. Malheureusement, il n'est pas possible de redimensionner les
partitions HFS+ journalisées ; il faut donc désactiver la journalisation
dans MacOS X, avant de redimensionner. N'oubliez pas que redimensionner une
partition présente toujours un risque. Vous devriez toujours avoir une copie de
sauvegarde quelque part.
|
Si vous êtes intéressé de savoir la taille qu'une partition doit avoir, ou même
de combien de partitions vous avez besoin, poursuivez la lecture de ce
chapitre. Sinon, poursuivez avec le chapitre Défaut : partitionner votre disque avec mac-fdisk
(Apple/IBM) ou Alternative : partitionner votre
disque avec Parted (IBM/Pegasos).
Combien et de quelle taille ?
Le nombre de partitions dépend beaucoup de votre environnement. Par exemple,
si vous avez beaucoup d'utilisateurs, vous désirerez certainement avoir votre
/home séparé afin d'améliorer la sécurité et de simplifier les
sauvegardes. Si vous installez Gentoo comme serveur de courrier, votre
/var devrait être séparé étant donné que tous les courriels sont
stockés dans /var. Un bon choix de système de fichiers va vous
permettre d'améliorer les performances. Les serveurs de jeu auront un
/opt séparé étant donné que la plupart des serveurs de jeux sont
installés à cet endroit. La raison est la même que pour
/home : sécurité et sauvegarde. Vous devriez consacrer
suffisamment de place au répertoire /usr, car il contient non
seulement vos applications, mais aussi l'arbre Portage qui prend 500 Mo à
lui seul et les sources des programmes que vous allez installer.
Comme vous pouvez le voir, cela dépend beaucoup de ce que vous souhaitez faire.
Séparer les partitions ou volumes procure les avantages suivants :
-
Vous pouvez choisir le système de fichiers le plus performant pour chaque
partition ou volume.
-
Votre système entier ne risque pas d'arriver à court d'espace disque libre si
un outil défectueux sature l'espace disque d'une partition ou d'un volume.
-
Si nécessaire, les vérifications des systèmes de fichiers durent moins
longtemps, vu que de multiples vérifications peuvent être faites en parallèle
(quoique cet avantage est plus important avec plusieurs disques qu'avec
plusieurs
partitions).
-
La sécurité peut être améliorée en montant certaines partitions ou volumes
en lecture seulement, en utilisant nosuid (les bits suid sont ignorés) et
noexec (les bits exécutables sont ignorés), etc.
Cependant, de multiples partitions ont un gros désavantage : si elles ne
sont pas configurées correctement, vous risquez d'obtenir un système avec
beaucoup d'espace libre sur une partition et plus du tout sur une autre. Notez
également qu'il y a une limite de 15 partitions par disque SCSI ou SATA.
4.c. Partitionner votre disque avec mac-fdisk (Apple)
Créez maintenant vos partitions avec mac-fdisk :
Exemple de code 3.1 : Lancement de mac-fdisk |
# mac-fdisk /dev/hda
|
D'abord, supprimez les partitions que vous aviez créées précédemment pour faire
de la place pour vos partitions Linux. Utilisez d dans mac-fdisk
pour supprimer cette (ces) partition(s). Le numéro de partition à supprimer
vous sera demandé. En général, la première partition sur des machines NewWorld
(Apple_partition_map) ne peut pas être supprimée.
Ensuite, créez une partition Apple_Bootstrap en utilisant b. Il
vous sera demandé à partir de quel bloc vous souhaitez commencer. Entrez le
numéro de votre première partition libre suivi de p, par exemple,
2p.
Note :
Cette partition n'est pas une partition de démarrage. Elle n'est
absolument pas utilisée par Linux. N'y placez aucun système de fichiers et ne
la montez jamais. Une machine PPC n'a pas besoin de partition séparée pour
/boot.
|
À présent, créez une partition de mémoire virtuelle en appuyant sur c.
mac-fdisk va encore vous demander à partir de quel bloc vous souhaitez
commencer cette partition. Comme nous avons utilisé 2 auparavant pour
créer la partition Apple_Bootstrap, vous devez à présent entrer 3p.
Quand on vous demande la taille, tapez 512M (ou n'importe quelle taille
que vous souhaitez, mais 512 Mo est recommandé). Quand on vous demande un
nom, entrez swap (obligatoire).
Pour créer la partition principale, tapez c, suivi de 4p pour
sélectionner à partir de quel bloc la partition doit commencer. Quand on vous
demande la taille, tapez 4p à nouveau. mac-fdisk va interpréter
ceci comme « utiliser tout l'espace disponible ». Quand on vous
demande le nom, tapez root (obligatoire).
Pour finir, écrivez les partitions sur le disque en utilisant w et
q pour quitter mac-fdisk.
Note :
Pour vérifier que tout a bien été enregistré, vous devriez relancer mac-fdisk
et vérifier que toutes vos partitions apparaissent. Si ce n'est pas le cas,
veuillez réinitialiser vos partitions en tapant i dans mac-fdisk. Notez
que cela supprimera toutes les partitions.
|
Maintenant que vos partitions sont créées, vous pouvez continuer avec
Création des systèmes de fichiers.
4.d. Alternative : partitionner votre disque avec Parted (surtout pour
Pegasos)
parted, pour « Partition Editor », peut à présent manipuler
les partitions HFS+ utilisées par Mac OS et Mac OS X. Avec cet outil, vous
pouvez redimensionner vos partitions Mac et créer de l'espace pour vos
partitions Linux. Néanmoins, l'exemple ci-dessous décrit le partitionnement
pour les machines Pegasos seulement.
Commençons par démarrer parted :
Exemple de code 4.1 : Exécuter Parted |
# parted /dev/hda
|
Si le disque n'est pas encore partitionné, lancez mklabel amiga pour
créer un nouveau « disklabel ».
Vous pouvez utiliser print à tout moment pour afficher la table des
partitions qui est en mémoire. Vos modifications ne sont enregistrées que quand
vous quitterez l'application. Pour ne rien modifier sur votre disque, faites
Ctrl-c pour quitter sans sauver.
Si avez l'intention d'installer aussi MorphOS sur votre Pegasos, créez un
système de fichiers affs1 nommé « BI0 » (BI zéro) au début du disque.
32 Mo devraient suffire pour votre noyau MorphOS. Sur une machine Pegasos
I ou si vous voulez utiliser reiserfs, xfs ou jsf, vous devrez aussi installer
votre noyau Linux sur cette partition. Les machines Pegasos II savent démarrer
depuis des partitions ext2/ext3 et affs1. Pour créer une partition, faites
mkpart primary affs1 START END et remplacez START et END
par un intervalle en méga-octets. Par exemple, 0 32 crée une partition
de 32 Mo qui commence au début du disque.
Pour Linux, vous devez créer deux partitions, une pour le système de fichiers
et une pour la mémoire virtuelle. Avant de créer le système de fichiers, vous
devez décider quel système utiliser. Les possibilités sont ext2, ext3,
reiserfs et xfs. Si vous ne savez pas lequel choisir, optez pour ext3.
Lancez mkpart primary ext3 START END pour créer une partition ext3 en
remplaçant START et END par un intervalle en méga-octets.
Il est généralement recommandé de créer une partition de mémoire virtuelle de
la même taille que la mémoire physique multipliée par deux. Une taille
inférieure ne devrait pas vous poser de problèmes sauf si vous essayez de
lancer de nombreuses applications en même temps. Un minimum de 512 Mo est
souvent conseillé. Pour créer la partition de mémoire virtuelle, faites
mkpart primary linux-swap START END.
Notez les numéros mineurs des partitions, car vous en aurez besoin pendant
l'installation. Pour les afficher, faites print. Vos disques seront
reconnus comme /dev/hdaX où X est le numéro mineur de la
partition.
Quand vous avez terminé, faites quit pour enregistrer vos paramètres.
4.e. Création des systèmes de fichiers
Introduction
Maintenant que vos partitions sont créées, il est temps d'y installer un
système de fichiers. Si vous ne vous souciez pas de quel système de fichiers
choisir et êtes satisfait de ceux que nous utilisons par défaut dans ce manuel,
continuez avec Application d'un système de
fichiers à une partition. Sinon, continuez à lire pour en apprendre plus
sur les systèmes de fichiers disponibles.
Systèmes de fichiers ?
De nombreux systèmes de fichiers sont disponibles : ext2, ext3, ReiserFS
et XFS sont considérés stables sur les machines PPC.
ext2 est le système de fichiers original de Linux mais n'a pas de
métadonnées journalisées, ce qui signifie que la routine de vérification du
système de fichiers ext2 au démarrage peut prendre beaucoup de temps. À
présent, vous avez le choix entre plusieurs systèmes de fichiers journalisés
qui peuvent être vérifiés très rapidement et sont généralement préférés à leurs
homologues non journalisés. Les systèmes de fichiers journalisés évitent de
devoir attendre longtemps quand vous démarrez votre système et que vos systèmes
de fichiers sont dans un état instable.
ext3 est la version journalisée du système de fichiers ext2, qui fournit
des métadonnées journalisées pour une récupération rapide en plus d'autres
modes journalisés comme la journalisation de données complètes et ordonnées.
Il utilise un index à base de B*-tree qui permet d'obtenir d'excellentes
performances dans pratiquement toutes les situations. En résumé, ext3 est un
très bon système de fichiers fiable.
ReiserFS est un système de fichiers basé sur les B*-tree qui a de très
bonnes performances et qui surpasse ext2 et ext3 dans le cas de l'utilisation
de petits fichiers (fichiers de moins de 4 ko), souvent avec un facteur allant
de 10 à 15. ReiserFS résiste aussi très bien à la montée en charge et a des
métadonnées journalisées. ReiserFS est stable et peut être utilisé aussi bien
dans un système de fichiers destiné à une utilisation générale et pour des cas
extrêmes comme la création de grands systèmes de fichiers et l'utilisation de
grands fichiers et répertoires qui contiennent des dizaines de milliers de
fichiers.
XFS est un système de fichiers avec des métadonnées journalisées qui
possède un ensemble de fonctionnalités robustes et qui est optimisé pour la
mise à l'échelle. Nous ne recommandons ce système de fichiers que pour des
systèmes équipés d'unités de stockage SCSI haut de gamme ou connectés à des
serveurs de stockage « Fibre Channel », et munis d'un onduleur.
Puisque XFS utilise énormément le cache pour des données transitoires en
mémoire vive, les programmes mal conçus (ceux qui ne prennent pas les
précautions suffisantes quand ils écrivent les fichiers sur disque, et il y en
a quelques uns) peuvent perdre beaucoup de données si le système s'interrompt
de manière inattendue.
Application d'un système de fichiers à une partition
Pour créer un système de fichiers sur une partition ou un volume, chaque
système de fichiers fournit ses propres outils :
| Système de fichiers |
Commande de création |
| ext2 |
mkfs.ext2 |
| ext3 |
mkfs.ext3 |
| reiserfs |
mkfs.reiserfs |
| xfs |
mkfs.xfs |
Par exemple, pour formater la partition principale (/dev/hda4
dans notre exemple) en ext3, nous utiliserons :
Exemple de code 5.1 : Application d'un système de fichiers sur une partition |
# mkfs.ext3 /dev/hda4
|
À présent, créons les systèmes de fichiers sur nos partitions fraichement
créées.
Note :
Les machines PegasosII ne peuvent charger des noyaux que sur des partitions
ext2/ext3 ou affs1. Les machines NewWorld savent lire des noyaux sur des
partitions ext2, ext3, XFS, ReiserFS et même HFS/HFS+. Sur les machines
OldWorld qui démarrent avec BootX, le noyau doit être placé sur une partition
HFS, mais cela sera fait lorsque nous configurerons le chargeur de démarrage.
|
Activation de la partition de mémoire virtuelle
mkswap est la commande utilisée pour initialiser la partition de mémoire
virtuelle :
Exemple de code 5.2 : Création d'une signature de mémoire virtuelle |
# mkswap /dev/hda3
|
Pour activer la partition de mémoire virtuelle, utilisez swapon :
Exemple de code 5.3 : Activation de la partition de mémoire virtuelle |
# swapon /dev/hda3
|
Créez et activez la partition de mémoire virtuelle maintenant.
4.f. Monter les partitions
Maintenant que nos partitions sont initialisées et contiennent un système de
fichiers, il est temps de les monter avec la commande mount. Par
exemple, pour monter la partition racine :
Exemple de code 6.1 : Monter la future partition racine |
# mount /dev/hda4 /mnt/gentoo
|
Note :
Si vous installez /tmp sur une partition séparée, n'oubliez pas de
définir les permissions nécessaires après avoir monté la partition. Utilisez la
commande chmod 1777 /mnt/gentoo/tmp. La même remarque s'applique à
/var/tmp.
|
Nous devrons monter le système de fichiers proc (une interface virtuelle avec
le noyau) sur /proc, mais nous devons d'abord placer nos fichiers
sur les partitions.
Continuez avec Installer les fichiers
d'installation de Gentoo.
5. Installer les fichiers d'installation de Gentoo
5.a. Installer une archive « stage »
Régler la date et l'heure
Avant de poursuivre, vous devez régler l'heure et la date de votre système. Si
l'horloge de votre machine n'est pas à l'heure et surtout à la bonne date, des
effets indésirables se produiront.
Pour afficher la date et l'heure, tapez date :
Exemple de code 1.1 : Afficher la date et l'heure |
# date
Fri Mar 29 16:21:18 UTC 2005
|
Pour changer la date et l'heure de votre système, utilisez date
MMJJhhmmAAAA (Mois, Jour, heure, minute,
Année). À cette étape de l'installation, vous devriez utiliser l'heure
GMT (UTC). Vous pourrez définir votre fuseau horaire plus tard. Par exemple,
pour le 29 mars 2005 à 16:21, utilisez :
Exemple de code 1.2 : Régler la date et l'heure GMT |
# date 032916212005
|
Faites votre choix
Vous devez maintenant installer Gentoo à partir d'un stage3. Vous pouvez
soit télécharger l'archive du stage3, soit la copier depuis le CD Gentoo
Universal ou le LiveDVD. Si vous avez le CD Gentoo Universal ou le LiveDVD,
télécharger le stage3 par Internet est une pure perte de bande passante
car les fichiers stage3 sont les mêmes. La commande uname -m
affiche l'architecture utilisée par votre machine et peut vous aider à définir
le nom du fichier stage3 à télécharger.
Les Minimal CD et les LiveCD ne contiennent pas d'archive stage3.
5.b. Méthode habituelle : télécharger une archive
Télécharger l'archive étape
Allez au point de montage Gentoo sur lequel vous avez monté vos systèmes de
fichiers (probablement /mnt/gentoo) :
Exemple de code 2.1 : Aller au point de montage Gentoo |
# cd /mnt/gentoo
|
En fonction de votre méthode d'installation, vous pouvez utiliser plusieurs
outils pour télécharger une archive étape. Si links est disponible,
vous pouvez immédiatement naviguer jusqu'à la
liste des miroirs Gentoo et choisir un miroir proche de chez vous.
Si links n'est pas disponible, lynx devrait l'être. Si vous devez
passer par un serveur mandataire avec lynx, vous devez exporter les
variables d'environnement http_proxy et ftp_proxy :
Exemple de code 2.2 : Définir le serveur mandataire pour lynx |
# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"
|
Nous utiliserons links dans la suite de ce document.
Choisissez ensuite le répertoire releases/ppc/2007.0/ppc32/. Vous
devriez y voir tous les fichiers d'étape disponibles pour votre architecture
(ils peuvent se trouver dans des sous-répertoires dont les noms correspondent
aux différentes sous-architectures). Sélectionnez-en un et appuyez sur D
pour télécharger. Une fois terminé, appuyez sur Q pour quitter le
navigateur.
Exemple de code 2.3 : Consulter la liste des miroirs avec links |
# links http://www.gentoo.org/main/en/mirrors.xml
# links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml
|
Veuillez utiliser une archive stage3, car les installations à partir des
stage1 et stage2 ne sont plus supportées.
Vous pouvez utiliser la commande md5sum pour vérifier l'intégrité de
l'archive que vous venez de télécharger. Pour cela, comparez le résultat
affiché par md5sum avec la somme de contrôle disponible sur le miroir.
Exemple de code 2.4 : Calcul de somme de contrôle d'une archive stage3 |
# md5sum -c stage3-ppc-2007.0.tar.bz2.DIGESTS
stage3-ppc-2007.0.tar.bz2: OK
|
Décompresser l'archive étape
Maintenant, décompressez l'étape que vous venez de télécharger sur votre
système. Nous utilisons tar, car c'est la méthode la plus simple :
Exemple de code 2.5 : Décompresser l'étape |
# tar xvjpf stage3-*.tar.bz2
|
Faites bien attention d'utiliser les mêmes options (xvjpf). Le x
signifie extraire, le v verbeux (facultatif, affiche les
noms fichiers pendant l'extraction), le j décompresser avec
bzip2, le p préserver les permissions et le f veut
dire que nous désarchivons un fichier d'archive, pas l'entrée standard.
Maintenant que l'archive est installée, poursuivez avec Installer Portage.
5.c. Alternative : utiliser une archive du CD Universal
Décompresser l'archive étape
Les archives étape incluses sur le CD se trouvent dans le répertoire
/mnt/cdrom/stages. Pour afficher la liste des étapes disponibles,
utilisez ls :
Exemple de code 3.1 : Lister les étapes disponibles |
# ls /mnt/cdrom/stages
|
Si le système répond par une erreur, vous avez peut-être besoin de monter
le CD-ROM.
Exemple de code 3.2 : Monter le CD-ROM |
# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages
|
Rendez-vous maintenant au point de montage Gentoo (habituellement
/mnt/gentoo) :
Exemple de code 3.3 : Changer de répertoire vers /mnt/gentoo |
# cd /mnt/gentoo
|
Nous allons maintenant extraire l'archive étape de votre choix. Nous le ferons
avec l'outil tar. Faites bien attention à utiliser les mêmes options
(xjvpf) ! L'option v est facultative et n'est pas disponible
sur certaines architectures. Dans l'exemple suivant, nous décompressons
l'archive étape
stage3-<sous-architecture>-<version>.tar.bz2. N'oubliez
pas de substituer le nom de l'étape par celle que vous aurez choisie.
Exemple de code 3.4 : Décompresser le système de base |
# tar xvjpf /mnt/cdrom/stages/stage3-<sous-architecture>-<version>.tar.bz2
|
Maintenant que l'archive est installée, poursuivez avec Installer Portage.
5.d. Installer Portage
Copier un instantané de l'arbre Portage
Vous devez maintenant installer un instantané de l'arbre Portage. Celui-ci
contient l'ensemble des fichiers qui permettent à Gentoo d'installer des
paquets, les différents profils, etc.
Télécharger et installer un instantané
Allez vers le point de montage où vous avez monté votre système de fichiers
(normalement /mnt/gentoo) :
Exemple de code 4.1 : Aller au point de montage |
# cd /mnt/gentoo
|
Lancez links (ou lynx) et choisissez un miroir. Ensuite, ouvez le répertoire
snapshots/ et téléchargez l'instantané le plus récent
(portage-latest.tar.bz2) en le sélectionnant et en tapant
D.
Exemple de code 4.2 : Consulter la liste des miroirs Gentoo |
# links http://www.gentoo.org/main/en/mirrors.xml
|
Ensuite, quittez le navigateur en tapant Q. Un instantané de l'arbre
Portage se trouve dans le répertoire /mnt/gentoo.
Si vous voulez vérifier l'intégrité de l'instantané que vous avez téléchargé,
utilisez md5sum et comparez le résultat avec la somme de contrôle MD5
disponible sur le miroir.
Exemple de code 4.3 : Vérification de l'intégrité d'un instantané Portage |
# md5sum -c portage-latest.tar.bz2.md5sum
portage-latest.tar.bz2: OK
|
Il faut maintenant le décompresser. Assurez-vous d'utiliser la bonne
commande ; la dernière option est un C majuscule, pas c.
Exemple de code 4.4 : Décompresser un instantané de Portage |
# tar -xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
|
5.e. Configurer les options de compilation
Introduction
Pour optimiser Gentoo, vous pouvez définir quelques variables qui influencent
le comportement de Portage. Toutes ces variables peuvent être définies comme
des variables d'environnement (en utilisant export), mais elles ne sont
dans ce cas pas permanentes. Pour conserver votre configuration, vous pouvez
utiliser /etc/make.conf, un fichier de configuration de Portage.
C'est ce fichier que nous allons éditer maintenant.
Note :
Une liste commentée de toutes les variables de Portage se trouve dans le
fichier /mnt/gentoo/usr/share/portage/config/make.conf. Pour
installer Gentoo avec succès, seules celles mentionnées ci-dessous sont
indispensables.
|
Lancez votre éditeur préféré (dans ce guide, nous utiliserons nano)
pour modifier les variables d'optimisation décrites ci-dessous.
Exemple de code 5.1 : Ouvrir /etc/make.conf |
# nano -w /mnt/gentoo/etc/make.conf
|
Comme vous l'avez sans doute remarqué, le fichier
make.conf.example est structuré de manière générique : les
lignes de commentaires commencent par un "#", les autres définissent des
variables en utilisant la syntaxe VARIABLE="contenu". Le fichier
make.conf utilise la même syntaxe. Certaines variables sont
décrites ci-dessous.
CFLAGS et CXXFLAGS
Les variables CFLAGS et CXXFLAGS définissent les options
d'optimisation pour le compilateur gcc, respectivement en C et C++.
Bien que nous les définissions de manière générale ici, vous n'obtiendrez
des performances maximales qu'en fixant les optimisations individuellement
pour chaque programme. La raison en est que chaque programme est différent.
Dans make.conf, vous devriez fixer les options d'optimisation
qui, selon vous, donneront plus de rapidité à votre système de
manière générale. Ne mettez pas d'options expérimentales dans cette
variable : trop d'optimisations peut engendrer des comportements anormaux
dans certains programmes (plantage ou, pire, fonctionnement défectueux).
Nous n'allons pas expliquer toutes les options d'optimisations possibles. Pour
les connaitre toutes, consultez les
manuels en ligne GNU ou la page d'info de gcc (info gcc
— ne marche que sur un système Linux fonctionnel). Le fichier
make.conf lui-même contient de nombreux exemples et
renseignements ; n'oubliez pas non plus de le lire.
Une première optimisation est l'utilisation des paramètres -march= ou
-mcpu=, qui précisent le nom de l'architecture cible. Les valeurs
possibles sont énumérées dans le fichier make.conf.example (en
commentaire).
Un deuxième paramètre est l'option -O (la lettre O majuscule) qui
spécifie la classe d'optimisation de gcc. Les classes possibles sont
s (pour optimiser en taille), 0 (zéro, pour ne pas optimiser),
1, 2 et même 3 pour plus d'optimisation de la vitesse
d'exécution (chacune de ces classes a les mêmes options que celle qui la précède
plus quelques autres). -O2 est la valeur recommandé par défaut.
-O3 présente des problèmes lorsqu'il est utilisé sur des gros systèmes,
nous vous recommandons donc de rester à -O2.
Une autre option d'optimisation populaire est -pipe (utilise des tubes
plutôt que des fichiers temporaires pour la communication entre les différentes
étapes de la compilation). Celle-ci n'a aucun impact sur le code produit.
Veuillez remarquer que l'option -fomit-frame-pointer (qui permet de ne
pas garder le pointeur de cadre dans un registre pour les fonctions qui n'en
ont pas besoin) peut rendre le dépistage d'erreurs très difficile.
Lorsque vous définissez les variables CFLAGS et CXXFLAGS, vous
pouvez combiner plusieurs options d'optimisation. Les valeurs par défaut
contenues dans le stage3 que vous venez d'extraire devraient convenir. Voici un
autre exemple :
Exemple de code 5.2 : Définir les variables CFLAGS et CXXFLAGS |
CFLAGS="-O2 -mcpu=powerpc -mtune=powerpc -fno-strict-aliasing -pipe"
CXXFLAGS="${CFLAGS}"
|
Note :
Vous pouvez consulter le guide
d'optimisation de la compilation pour obtenir plus d'informations
sur l'impact de diverses variables de compilation sur votre système.
|
MAKEOPTS
Avec MAKEOPTS, vous pouvez définir le nombre de compilations à lancer en
parallèle. Une valeur souvent utilisée est le nombre de processeurs dans votre
système plus un, mais une autre valeur peut parfois mieux fonctionner.
Exemple de code 5.3 : MAKEOPTS pour un système classique à 1 processeur |
MAKEOPTS="-j2"
|
À vos marques, prêts, partez !
Mettez à jour votre /mnt/gentoo/etc/make.conf comme vous le
souhaitez, et sauvez (Ctrl-X avec nano). Vous êtes maintenant prêt à
continuer avec Installer le système de base
Gentoo.
6. Installer le système de base de Gentoo
6.a. Entrer dans le nouvel environnement (chroot)
Facultatif : sélection des miroirs
Il est recommandé de choisir un miroir rapide pour télécharger les sources.
Portage utilise la variable GENTOO_MIRRORS définie dans make.conf
pour connaitre les différents serveurs à contacter. Vous pouvez consulter la
liste de nos miroirs et en choisir
quelques-uns proches de chez vous, car ils sont en général les plus rapides pour
vous. Cependant, l'outil mirrorselect vous présente la même liste et vous
permet de choisir plus facilement.
Exemple de code 1.1 : Choisir des miroirs avec mirrorselect |
# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
|
Attention :
Ne sélectionnez pas de miroir IPv6, car les « stages » utilisés pour
l'installation ne supportent pas IPv6.
|
Une autre variable importante de make.conf est SYNC qui indique à
Portage le serveur à utiliser pour synchroniser votre arbre Portage (l'ensemble
des ebuilds, des scripts et autres fichiers dont Portage a besoin pour installer
des paquets). Au lieu de définir SYNC manuellement, vous pouvez aussi utiliser
mirrorselect.
Exemple de code 1.2 : Choisir un miroir pour RSYNC |
# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf
|
Après avoir utilisé mirrorselect, il est conseillé de vérifier le contenu
de /mnt/gentoo/etc/make.conf.
Copier l'information DNS
Il reste une dernière chose à faire avant d'entrer dans le nouvel environnement.
Il s'agit de copier l'information DNS de /etc/resolv.conf. Vous
devez le faire afin d'assurer le bon fonctionnement du réseau dans le nouvel
environnement. /etc/resolv.conf contient les serveurs de noms pour
votre réseau.
Exemple de code 1.3 : Copier l'information DNS |
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
|
Monter /proc et /dev
Montez le système de fichiers /proc dans
/mnt/gentoo/proc permet à l'installation d'utiliser les
informations fournies par le noyau, même lorsqu'on se trouve dans
l'environnement chroot ainsi que /dev.
Exemple de code 1.4 : Monter /proc et /dev |
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
|
Entrer dans le nouvel environnement
Maintenant que toutes les partitions sont initialisées et que l'environnement
de base est installé, il est temps d'entrer dans notre nouvel environnement
d'installation. Cela signifie que l'on passe de l'environnement d'installation
actuel (CD d'installation ou autre environnement d'installation) à
l'environnement de votre système (soit les partitions initialisées).
L'entrée se fait en trois étapes. D'abord, on change la racine de /
(sur l'environnement d'installation) en /mnt/gentoo (sur vos
partitions) en utilisant chroot. Ensuite, on crée un nouvel environnement
en utilisant env-update dont l'effet est essentiellement de créer les
variables d'environnement. Finalement, ces variables sont chargées en mémoire en
utilisant source.
Exemple de code 1.5 : Entrer dans le nouvel environnement |
# chroot /mnt/gentoo /bin/bash
# env-update
>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"
|
Félicitations ! Vous êtes maintenant dans votre propre environnement Gentoo
Linux. Bien sûr, ce dernier est loin d'être complet. C'est pourquoi il reste
encore quelques sections à ce guide d'installation :-)
6.b. Configurer Portage
Mettre l'arbre de Portage à jour
Vous devriez mettre votre arbre Portage à jour avec la commande emerge
--sync.
Exemple de code 2.1 : Mise à jour de l'arbre de Portage |
# emerge --sync
# emerge --sync --quiet
|
Si vous vous trouvez derrière un pare-feu qui bloque le trafic rsync, vous
pouvez utiliser emerge-webrsync qui télécharge un instantané de l'arbre
Portage depuis un miroir et l'utilise pour mettre votre arbre à jour.
Si vous recevez un avertissement vous suggérant de mettre Portage à jour parce
qu'une nouvelle version est disponible, il est recommandé de le faire. Utilisez
la commande emerge --oneshot portage.
Choisir le bon profil
Qu'est-ce qu'un profil ?
Un profil est un composant important d'une installation de Gentoo. Il spécifie
non seulement les valeurs par défaut des options de compilation (les variables
CFLAGS et CXXFLAGS) et d'autres paramètres importants (comme la variable USE),
mais aussi quels paquets sont disponibles ou pas. Les profils sont mis à jour
par les développeurs Gentoo.
Les utilisateurs n'avaient pas à se préoccuper des profils jusqu'à présent.
Cependant, il existe des situations dans lesquelles vous pourriez estimer qu'un
changement de profil est nécessaire.
Pour connaitre le profil que vous utilisez, lancez la commande suivante :
Exemple de code 2.2 : Connaitre le profil utilisé |
# eselect profile list
Available profile symlink targets:
Available profile symlink targets:
[1] default-linux/ppc/ppc32/2007.0 *
[2] default-linux/ppc/ppc32/2007.0/desktop
[3] default-linux/ppc/ppc32/2007.0/server
|
Le profil par défaut utilise un noyau 2.6. Ce profil est recommandé, mais vous
pouvez choisir un autre profil si vous le désirez.
Les sous-profils desktop et server sont également disponibles
pour d'autres architectures. La commande eselect profile list vous
listera les profils disponibles.
Après avoir examiné les différents profils possibles pour votre architecture,
vous pouvez en changer si vous le désirez :
Exemple de code 2.3 : Changer de profil |
# eselect profile set 2
|
Note :
Le sous-profil developer est réservé aux tâches de développement pour
Gentoo Linux. Il n'est pas destiné à créer un environnement global de
développement.
|
Configurer la variable USE
USE est une des plus puissantes variables mises à la disposition des
utilisateurs de Gentoo. Plusieurs programmes peuvent être compilés avec ou sans
le support optionnel disponible pour certaines fonctionnalités. Par exemple,
certains programmes peuvent être compilés avec un support pour GTK ou pour Qt.
D'autres peuvent être compilés avec ou sans support pour SSL. Certains
programmes peuvent même être compilés avec un support pour le
« framebuffer » (svgalib) plutôt que pour X11 (serveur X).
La plupart des distributions compilent leurs paquets avec un support aussi
complet que possible, augmentant ainsi la taille des programmes et le temps de
chargement, sans mentionner le nombre énorme de dépendances qui en résulte.
Avec Gentoo, vous pouvez définir les options à utiliser lors de la compilation
d'un paquet. C'est ici que la variable USE entre en jeu.
La variable USE contient des mots-clés que vous choisissez et qui
correspondent à des options de compilation. Par exemple, ssl compilera
le support ssl dans les programmes qui le supportent. -X retirera le
support pour le serveur X (remarquez le signe moins devant le mot-clé).
gnome gtk -kde -qt3 -qt4 compilera vos programmes avec le support pour
GNOME (et GTK), mais sans le support pour KDE (ni Qt). Le résultat sera un
système complètement réglé pour GNOME.
Les options par défaut pour USE se trouvent dans les fichiers
make.defaults de votre profil. Vous trouverez ces fichiers
make.defaults dans le répertoire sur lequel le lien
/etc/make.profile pointe, ainsi que dans tous ses répertoires
parents. Les options par défaut de USE sont donc la somme de toutes les
options USE de ces fichiers. Vos modifications à
/etc/make.conf sont jugées en fonction de ces options par
défaut. Si vous ajoutez quelque chose aux options USE, c'est ajouté
à la liste par défaut. Si vous retirez quelque chose des options USE
(en le précédant du signe moins), c'est retiré de la liste par défaut (en
supposant que cela s'y trouvait). Ne modifiez jamais quoi que ce soit
dans le répertoire /etc/make.profile car ces fichiers sont écrasés
lors des mises à jour de Portage !
Une description complète de USE peut être consultée dans la seconde
partie du Manuel Gentoo, La variable USE.
Une description complète des options disponibles se trouve dans le fichier
/usr/portage/profiles/use.desc qui devrait déjà être sur votre
système.
Exemple de code 2.4 : Afficher les options de la variable USE disponibles |
# less /usr/portage/profiles/use.desc
|
L'exemple suivant montre les options de USE pour un
système basé sur KDE avec support pour ALSA, pour les DVD et pour la
gravure de CD :
Exemple de code 2.5 : Ouverture de /etc/make.conf |
# nano -w /etc/make.conf
|
Exemple de code 2.6 : Options de USE |
USE="-gtk -gnome qt3 qt4 kde dvd alsa cdr"
|
Facultatif: les « locales » de glibc
Vous n'utiliserez probablement qu'une ou deux « locales » sur votre
système. Vous pouvez définir les zones qui vous intéressent dans le fichier
/etc/locale.gen.
Exemple de code 2.7 : Ouvrir le fichier /etc/locale.gen |
# nano -w /etc/locale.gen
|
L'exemple ci-dessous sélectionne l'anglais américain et le français en France
dans les encodages ISO et UTF-8.
Exemple de code 2.8 : Exemple de /etc/locale.gen |
en_US ISO-8859-1
en_US.UTF-8 UTF-8
fr_FR ISO-8859-1
fr_FR@euro ISO-8859-15
fr_FR.UTF-8 UTF-8
|
Ensuite, exécutez la commande locale-gen pour créer les locales que vous
venez de définir.
Ensuite, passez à la Configuration du
noyau.
7. Configurer le noyau
7.a. Fuseau horaire
Vous devez maintenant choisir votre fuseau horaire afin que votre système sache
où il se trouve. Cherchez votre fuseau horaire dans
/usr/share/zoneinfo, puis copiez-le dans
/etc/localtime. Évitez les zones
/usr/share/zoneinfo/Etc/GMT*, car leur nom prête à confusion. En
effet, GMT-8 signifie en fait GMT+8.
Exemple de code 1.1 : Définir l'information relative au fuseau horaire |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/GMT /etc/localtime
|
7.b. Installer les sources du noyau
Choisir un noyau
Le cœur autour duquel sont bâties toutes les distributions est le noyau (en
anglais « kernel ») Linux. Ce noyau est l'interface entre les
programmes utilisateur et le matériel. Gentoo offre un choix de plusieurs
noyaux à ses utilisateurs. Une liste complète, accompagnée de descriptions,
est disponible dans le Guide du noyau
Gentoo Linux.
Nous vous recommandons d'utiliser gentoo-sources sur PPC, c'est un noyau
2.6 récent.
Exemple de code 2.1 : Installer les sources du noyau |
# emerge gentoo-sources
|
Si vous examinez le contenu de /usr/src, vous remarquerez la
présence d'un lien symbolique nommé linux qui pointe vers les
sources de votre noyau actuel. Dans notre cas, la redirection pointe vers
gentoo-sources-2.6.19-r5. Gardez bien à l'esprit que
votre version du noyau peut être différente.
Exemple de code 2.2 : Examiner le lien symbolique vers le noyau |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 Mar 18 16:23 /usr/src/linux -> linux-2.6.19-gentoo-r5
|
Il est maintenant temps de configurer et de compiler votre noyau. La commande
genkernel est disponible sur tous les systèmes. Cette commande
construira un noyau générique tel que celui utilisé par le LiveCD. Toutefois,
nous expliquerons d'abord la configuration « manuelle », car sa
configuration est plus efficace.
Pour compiler votre noyau manuellement, poursuivez votre lecture avec la Par défaut : Configuration manuelle. Si vous
souhaitez utiliser genkernel, vous devriez plutôt lire Alternative : utiliser genkernel.
7.c. Par défaut : configuration manuelle
Introduction
Configurer un noyau est parfois considéré comme la tâche la plus ardue que les
utilisateurs de Linux doivent accomplir. Rien n'est moins vrai... Après avoir
configuré quelques noyaux, vous ne vous rappellerez même plus d'avoir trouvé
cela difficile.
Toutefois, une chose est vraie : vous devez connaitre votre système pour
configurer manuellement un noyau. La majeure partie de cette information peut
être obtenue en utilisant la commande lspci qui est dans le paquet
pciutils (emerge pciutils). Vous pourrez désormais utiliser
lspci depuis votre environnement en chroot. Vous pouvez ignorer les
avertissements pcilib (comme par exemple : pcilib: cannot open
/sys/bus/pci/devices) que vous obtiendrez avec lspci. Vous pouvez
également exécuter lspci depuis un environnement non chrooté. Le
résultat est le même. Vous pouvez également exécuter lsmod pour voir les
modules du noyau utilisés par le CD-ROM d'installation (ce qui peut vous donner
des indices sur les fonctionnalités nécessaires). Vous pouvez aussi chercher
des indices des composants à activer dans les logs issus d'une séquence de
démarrage qui a fonctionnée. Tapez dmesg pour voir les messages du noyau.
Maintenant, allez dans le répertoire des sources du noyau, il est temps de
configurer votre noyau. Commencez par le préconfigurer afin qu'il puisse
démarrer sur la plupart des machines PowerPC 32 bits en exécutant la
commande make pmac32_defconfig. Ensuite, vous pourrez faire un make
menuconfig qui va lancer le menu de configuration basé sur ncurses.
Exemple de code 3.1 : Lancer menuconfig |
# cd /usr/src/linux
# make pmac32_defconfig
# make menuconfig
|
Plusieurs sections d'options de configuration s'afficheront. Nous allons
d'abord dresser la liste de certaines options que vous devez activer (sinon,
Gentoo ne fonctionnera pas ou, du moins, pas sans quelques réglages
additionnels).
Activer les options requises
Avant toute chose, activez l'utilisation du code et des pilotes en
développement ou expérimentaux. C'est absolument nécessaire ; si vous ne
le faites pas, des options très importantes ne seront pas affichées.
Exemple de code 3.2 : Sélectionner le code et les pilotes expérimentaux |
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
|
Allez à la section File Systems et activez le support nécessaire pour
les systèmes de fichiers que vous utilisez. Ne les compilez pas sous
forme de modules, sinon votre système Gentoo ne pourra pas monter vos
partitions. Activez aussi /proc file system et Virtual memory. Le
support des partitions Amiga sera utile si vous utilisez un Pegasos ou les
partitions Macintosh si vous utilisez un Apple.
Exemple de code 3.3 : Activer le support pour les systèmes de fichiers |
File systems --->
Pseudo Filesystems --->
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
Partition Types --->
[*] Advanced partition support
[*] Amiga partition table support
[*] Macintosh partition map support
<*> Reiserfs support
<*> Ext3 journalling file system support
<*> Second extended fs support
<*> XFS filesystem support
|
Les utilisateurs de machines NewWorld ou OldWorld auront également besoin du
support HFS. Les utilisateurs d'OldWorld en auront besoin pour copier le noyau
compilé sur la partition MacOS. Les utilisateurs NewWorld en auront besoin pour
configurer la partition spéciale Apple_Bootstrap :
Exemple de code 3.4 : Activer le support HFS |
File Systems --->
Miscellaneous filesystems --->
<M> Apple Macintosh file system support
<M> Apple Extended HFS file system support
|
Si vous utilisez PPPoE ou un modem classique pour vous connecter à Internet,
vous aurez besoin des options du noyau suivantes :
Exemple de code 3.5 : Sélection des pilotes PPPoE |
Device Drivers --->
Network device support --->
<*> PPP (point-to-point protocol) support
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
|
Les deux options de compression ne vous feront pas de mal, mais ne sont pas
toujours nécessaires. L'option PPP over Ethernet n'est pas obligatoire
non plus, considérant qu'elle pourrait n'être utilisée que par ppp
lorsque ce dernier est configuré pour utiliser PPPoE en mode noyau.
N'oubliez pas d'ajouter le support pour votre carte Ethernet. La plupart des
ordinateurs Apple récents utilisent le pilote Ethernet SunGEM. Les iMacs plus
vieux utilisent généralement le pilote BMAC.
Exemple de code 3.6 : Activer le support HFS |
Device Drivers --->
Network device support --->
Ethernet (10 or 100Mbit) --->
[*] Ethernet (10 or 100Mbit)
<*> Generic Media Independent Interface device support
<*> MACE (Power Mac ethernet) support
<*> BMAC (G3 ethernet) support
<*> Sun GEM support
|
Le noyau ne gère pas encore la préemption complète correctement sur des
machines PPC. L'activer peut entrainer des erreurs de compilation et des
« segfaults ». Il est très recommandé de ne pas sélectionner
cette option. Voluntary Preemption ou No Forced Preemption
devrait être suffisamment sûr.
Exemple de code 3.7 : Vérifier que la préemption n'est pas activée |
Kernel options --->
Preemption Model
(X) No Forced Preemption (Server)
(X) Voluntary Kernel Preemption (Desktop)
|
Si vous démarrez à partir d'un périphérique Firewire, vous aurez besoin
d'activer les options suivantes. Si vous ne voulez pas compiler le support en
dur dans le noyau, vous aurez besoin d'inclure ces modules et leurs dépendances
dans un initrd.
Exemple de code 3.8 : Activer le suppot Firewire au démarrage |
Device Drivers --->
IEEE 1394 (FireWire) support --->
<*> IEEE 1394 (FireWire) support
<*> OHCI-1394 support
<*> SBP-2 support (Harddisks etc.)
|
Si vous démarrez depuis un périphérique USB, vous devrez activer les options
suivantes. Si vous ne voulez pas compiler le support en dur dans le noyau, vous
aurez besoin d'inclure ces modules et leurs dépendances dans un initrd.
Exemple de code 3.9 : Activer le suppot USB au démarrage |
Device Drivers --->
USB support --->
<*> Support for Host-side USB
<*> OHCI HCD support
<*> USB Mass Storage support
|
Ne désactiver pas le support du framebuffer du noyau, car celui-ci est est
nécessaire pour démarrer la machine. Si vous utilisez une carte graphique
nVidia, vous devrez utiliser le framebuffer Open Firmware. Si vous utilisez une
carte graphique ATI, vous voudrez certainement activer le pilote du framebuffer
supporté par votre puce (Mach64, Rage128 ou Radeon).
Exemple de code 3.10 : Sélectionner un pilote framebuffer |
Device Drivers --->
Graphics support --->
<*> Support for frame buffer devices
[*] Open Firmware frame buffer device support
<*> ATI Radeon display support
<*> ATI Rage128 display support
<*> ATI Mach64 display support
Console display driver support --->
<*> Framebuffer Console support
|
Note :
Si vous selectionnez plus d'un framebuffer, il se peut que le système choisisse
par défaut un pilote qui ne sera pas le meilleur. N'utilisez qu'un seul
framebuffer, sinon précisez celui qui est à utiliser en entrant l'option
adéquate au noyau au moment du démarrage. Par exemple :
video=radeonfb.
|
Lorsque vous aurez terminé la configuration de votre noyau, poursuivez avec
la section Compiler et installer.
Compiler et installer
Maintenant que votre noyau est configuré, il est temps de le compiler et de
l'installer. Quittez le menu de configuration et exécutez les commandes
suivantes :
Exemple de code 3.11 : Compiler le noyau |
# make && make modules_install
|
Lorsque la compilation est terminée, copiez l'image du noyau dans
/boot. Sur un Pegasos, la partition qui héberge /boot
doit avoir été montée. Si vous utiliser BootX pour démarrer, nous ferons la
copie du noyau plus tard.
Yaboot et BootX utilisent un noyau non-compressé contrairement à beaucoup de
chargeurs de démarrage. Le noyau décompressé est appelé vmlinux. Une fois que
le noyau a fini de compiler, il est placé dans /usr/src/linux. Sur
un Pegasos, le Pegasos firmware nécessite un noyau compressé appelé
zImage qui se trouve dans /usr/src/linux/arch/powerpc/boot/images.
Exemple de code 3.12 : Installer le noyau |
# cd /usr/src/linux
# cp vmlinux /boot/kernel-2.6.19-gentoo-r5
# cp arch/powerpc/boot/images/zImage /boot/kernel-2.6.19-gentoo-r5
|
Maintenant, poursuivez votre lecture avec Installer
des modules du noyau individuels.
7.d. Installer des modules du noyau individuels
Configurer les modules
Vous devriez indiquer la liste des modules que vous souhaitez charger
automatiquement dans /etc/modules.autoload.d/kernel-2.6. Vous
pouvez également ajouter des options aux modules si vous voulez.
Pour dresser la liste des modules disponibles, exécutez la commande find
telle qu'indiquée ci-dessous. N'oubliez pas de substituer « <kernel
version> » par la version du noyau que vous venez juste de
compiler :
Exemple de code 4.1 : Consulter la liste des modules disponibles |
# find /lib/modules/<version du noyau>/ -type f -iname '*.o' -or -iname '*.ko'
|
Par exemple, pour charger automatiquement le module 3c59x.ko,
spécifiez-le dans le fichier kernel-2.6.
Exemple de code 4.2 : Modifier le fichier /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
|
Exemple de code 4.3 : Exemple de fichier /etc/modules.autoload.d/kernel-2.6 |
3c59x
|
Poursuivez l'installation avec Configurer
votre système.
7.e. Alternative : utiliser genkernel
Maintenant que l'arbre des sources de votre noyau est installé, il est temps de
compiler ce noyau à l'aide du script genkernel qui construira
automatiquement un noyau dont la configuration sera presque identique à celle
du noyau du CD d'installation. Cela signifie que si vous utilisez
genkernel pour construire votre noyau, votre système détectera
généralement tout votre matériel au moment de l'amorçage, à la manière du CD
d'installation. Puisque genkernel ne requiert aucune configuration manuelle,
il s'agit d'une solution idéale pour l'utilisateur rebuté par l'idée de
compiler son propre noyau.
Maintenant, voyons comment utiliser genkernel. D'abord, installez genkernel
comme suit :
Exemple de code 5.1 : Installer genkernel |
# emerge genkernel
|
Puis, copiez les fichiers de configuration utilisés par le CD d'installation
vers le répertoire qui sera utilisé par genkernel.
Exemple de code 5.2 : Copier la configuration du noyau du CD |
# zcat /proc/config.gz > /usr/share/genkernel/ppc/kernel-config-2.6
|
Si vous utiliser un périphérique firewire ou USB pour démarrer, vous aurez
besoin d'ajouter les modules au initrd. Pour le support firewire, ajoutez
MODULES_FIREWIRE="ieee1394 ohci1394 sbp2" dans
/usr/share/genkernel/ppc/modules_load. Pour le support USB
ajoutez MODULES_USB="usbcore ohci-hcd ehci-hcd usb-storage" dans
/usr/share/genkernel/ppc/modules_load.
Avant de compiler vos sources, le fstab a besoin d'un léger ajustement. Le
reste du fstab sera terminé plus tard dans le guide, ne vous inquiétez pas des
détails pour le moment. Si vous n'avez pas créé de partition de démarrage (il
s'agit de la partition /boot et NON PAS de la partition de
bootstrap), retirez la ligne qui référence /boot du fichier
/etc/fstab. À faire sur la plupart des ordinateurs Apple.
Exemple de code 5.3 : Retirer /boot du /etc/fstab sur les machines sans partition /boot |
# nano -w /etc/fstab
/dev/BOOT /boot ext2 noauto,noatime 1 2
|
Ensuite, compilez les sources du noyau en exécutant genkernel --genzimage
all. Pour Pegasos, vous devrez utiliser une configuration différente et
créer un zImage à la place du noyau vmlinux utilisé sur les machines Apple.
Pensez bien que genkernel compile un noyau qui supporte presque tous les
matériels existant. Par conséquent, la compilation prend beaucoup de temps.
Notez que si votre partition de démarrage utilise un autre système de fichiers
qu'ext2 ou ext3, vous serez peut-être obligé de configurer manuellement votre
noyau en utilisant genkernel --menuconfig all. Il faudra ajouter le
support relatif aux systèmes de fichiers que vous utilisez dans le noyau
(c-à-d. pas en module). Les utilisateurs de EVMS2 ou LVM2 devront
probablement ajouter les arguments --evms2 ou --lvm2.
Exemple de code 5.4 : Exécuter genkernel |
# genkernel all
|
Exemple de code 5.5 : Exécuter genkernel sur Pegasos |
# genkernel --genzimage --kernel-config=/usr/share/genkernel/ppc/Pegasos all
|
Lorsque genkernel aura fini son travail, un noyau, un ensemble complet
de modules et un « initial root disk » (initrd) auront été créés. Le
noyau et l'initrd seront utilisés plus tard lors de la configuration du
chargeur de démarrage. Notez bien les noms du noyau et du initrd puisque vous
devrez les spécifier lors de l'écriture du fichier de configuration du chargeur
de démarrage. L'initrd sera démarré immédiatement après l'amorçage afin de
réaliser l'autodétection du matériel (tout comme pour le CD d'installation)
avant que votre « véritable » système ne démarre. N'oubliez pas
d'indiquer les paramètres de démarrage requis sans quoi votre système ne
démarrera probablement pas.
Exemple de code 5.6 : Vérifier les noms de l'image du noyau et du fichier initrd |
# ls /boot/kernel-genkernel-ppc-2.6.19-gentoo-r5 /boot/initramfs-genkernel-ppc-2.6.19-gentoo-r5
|
Poursuivez l'installation avec Configurer
votre système.
8. Configurer le système
8.a. Information sur le système de fichiers
Qu'est-ce que fstab ?
Sous Linux, toutes les partitions utilisées par le système doivent être listées
dans /etc/fstab. Ce fichier contient l'information relative aux
points de montage de ces partitions (où elles se situent dans le système de
fichiers de Linux), la façon dont elles sont montées (décrite par des options
spéciales) et les circonstances de leur montage (qui peut être automatique ou
non, sous le contrôle des utilisateurs ou non, etc.). (N.D.T. : Bien que
l'on emploie fréquemment l'expression « monter une partition », il
serait plus exact de dire que l'on monte le système de fichiers présent sur la
partition et non pas la partition elle-même).
Créer /etc/fstab
/etc/fstab emploie une syntaxe particulière. Chaque ligne contient
six champs séparés par des blancs (une ou plusieurs espaces ou tabulations ou
encore un mélange d'espaces et de tabulations). Chaque champ a une signification
particulière :
-
Le premier champ indique la partition (il s'agit du chemin d'accès vers
le fichier matériel).
-
Le second champ indique le point de montage où la partition sera
montée.
-
Le troisième champ indique le type de système de fichiers présent sur
la partition.
-
Le quatrième champ indique les options de montage utilisées par
mount lorsque cette commande tente de monter la partition. Puisque
chaque type de système de fichiers a ses propres options de montage, vous êtes
encouragé à lire la page man de la commande mount (man mount) pour
obtenir une liste complète de ces options. Des options de montage multiples
doivent être séparées par des virgules.
-
Le cinquième champ est utilisé par dump pour déterminer si la partition
doit être « dumpée » ou non. Vous pouvez généralement laisser
cette valeur à 0 (zéro).
-
Le sixième champ est utilisé par fsck afin de déterminer l'ordre dans
lequel les systèmes de fichiers doivent être vérifiés si le système n'a pas
été mis hors tension de façon appropriée. Pour le système de fichiers racine,
la valeur devrait être 1. Pour les autres systèmes de fichiers, la
valeur devrait être 2 (ou 0 s'il n'est pas nécessaire de
vérifier le système de fichiers).
Important :
Vous devez modifier le fichier /etc/fstab qui a été installé par
Gentoo, car celui-ci n'est qu'un exemple et votre système ne démarrera pas si
vous le laissez tel quel. Ouvrez nano (ou votre éditeur favori) pour
créer votre /etc/fstab :
|
Exemple de code 1.1 : Ouvrir /etc/fstab |
# nano -w /etc/fstab
|
Jetons un coup d'œil à la façon d'écrire l'entrée correspondant à la partition
/boot. Il ne s'agit que d'un exemple, aussi ne le copiez pas si
votre n'avez pas ou ne pouvez pas créer de partition /boot.
Dans notre exemple de stratégie de partitionnement par défaut pour les systèmes
PPC, /boot est sur la partition /dev/hda1, dans un système de fichiers ext2. Il doit être
vérifié au démarrage. Nous écrivons donc :
Exemple de code 1.2 : Exemple d'une ligne pour /boot dans /etc/fstab |
/dev/hda1 /boot ext2 defaults 1 2
|
Certains utilisateurs ne désirent pas que leur partition /boot soit
montée automatiquement au démarrage pour des raisons de sécurité. Dans ce cas,
il convient de remplacer defaults par noauto. Ceci signifie que la
partition /boot devra être montée manuellement avant chaque usage,
par exemple pour installer un nouveau noyau et configurer grub.
Ajoutez les règles qui correspondent à votre schéma de partitions ainsi que pour
vos lecteurs de CD-ROM, et, si vous en avez, pour vos disques et partitions
supplémentaires.
Maintenant, servez-vous de l'exemple ci-dessous pour créer votre
/etc/fstab :
Exemple de code 1.3 : Un exemple complet de fichier /etc/fstab |
/dev/sda4 / ext3 noatime 0 1
/dev/sda3 none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,user 0 0
|
L'option auto indique à mount de tenter de deviner le type du
système de fichiers (ce qui est recommandé pour les périphériques amovibles
puisqu'ils peuvent contenir différents types de systèmes de fichiers). L'option
user permet aux utilisateurs (autres que root) de monter le système de
fichiers (en l'occurence celui présent sur le CD-ROM).
Afin d'améliorer les performances, la plupart des utilisateurs devraient ajouter
l'option noatime au champ options de montage, ce qui donnera un système
plus rapide puisque les temps d'accès ne seront pas consignés. De toute façon,
vous n'en avez généralement pas besoin.
Relisez votre /etc/fstab, sauvegardez, puis quittez l'éditeur.
8.b. Information réseau
Nom d'hôte, nom de domaine, etc.
Une des choses que chaque utilisateur doit faire est nommer son PC. Cela peut
sembler aisé, mais de nombreux utilisateurs ont bien du mal à trouver un
nom approprié pour leur PC Linux. Afin d'accélérer les choses, dites-vous que le
nom que vous choisissez maintenant pourra être changé plus tard. Si vous êtes
embêté, nommez temporairement votre système tux et choisissez
homenetwork comme nom de domaine.
Exemple de code 2.1 : Définir le nom d'hôte |
# nano -w /etc/conf.d/hostname
HOSTNAME="tux"
|
Ensuite, si vous avez besoin d'un nom de domaine, définissez-le
dans /etc/conf.d/net. Vous avez besoin d'un nom de domaine
uniquement si votre fournisseur d'accès ou si votre administrateur vous
l'indiquent ou si vous utilisez un serveur DNS sans utiliser de serveur DHCP.
Vous n'avez pas à vous occuper du DNS ou du nom de domaine si votre réseau est
configuré via DHCP.
Exemple de code 2.2 : Définir le nom de domaine |
# nano -w /etc/conf.d/net
dns_domain_lo="mondomaine"
|
Note :
Si vous choisissez de ne pas spécifier de nom de domaine, vous devriez éditer le
fichier /etc/issue en y supprimant la chaine .\O afin de ne
pas avoir ce genre de message de bienvenue au login : « This is
hostname.(none) ».
|
Si vous avez un domaine NIS, vous devez également le définir : (Si vous
ne savez pas ce qu'est un domaine NIS, vous n'en avez certainement pas.)
Exemple de code 2.3 : Définir le domaine NIS |
# nano -w /etc/conf.d/net
nis_domain_lo="mondomaineNIS"
|
Note :
Pour plus d'information sur la configuration du DNS et du NIS, lisez l'exemple
fourni dans le fichier /etc/conf.d/net.example. En plus, vous
pourriez être intéressé par l'installation du paquet openresolv pour
vous aider à gérer votre configuration DNS/NIS.
|
Configurer le réseau
Si vous éprouvez une sensation de déjà-vu, souvenez-vous que les paramètres
réseau que vous avez définis au début de l'installation ne concernaient que
l'installation elle-même. Vous devez maintenant vous attarder à la configuration
permanente du réseau pour votre système Gentoo.
Note :
Ce manuel détaille la configuration réseau, y compris
les ponts, le couplage d'interface, les réseaux 802.1Q et sans fil, plus loin.
|
Toute l'information réseau est rassemblée dans /etc/conf.d/net. Ce
fichier utilise une syntaxe simple mais pas nécessairement intuitive si vous ne
savez pas comment paramétrer manuellement un réseau. Pas d'inquiétude, tout vous
sera expliqué. Un exemple commenté complet se trouve dans le fichier
/etc/conf.d/net.example.
DHCP est utilisé par défaut. Pour que le DHCP fonctionne, vous devez installer
un client DHCP. La procédure à suivre est décrite dans installation des outils
systèmes. N'oubliez pas d'installer un client DHCP.
Si vous devez configurer votre réseau soit pour spécifier des options
particulières pour DHCP, soit parce que vous n'utilisez pas DHCP, ouvrez le
fichier /etc/conf.d/net avec votre éditeur favori :
Exemple de code 2.4 : Ouvrir /etc/conf.d/net |
# nano -w /etc/conf.d/net
|
Vous devriez voir le fichier suivant :
Exemple de code 2.5 : Fichier /etc/conf.d/net par défaut |
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d. To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).
|
Pour entrer une adresse fixe, un masque de réseau et une adresse de passerelle,
vous devez définir config_eth0 et routes_eth0 :
Exemple de code 2.6 : Définir une adresse statique pour eth0 |
config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default via 192.168.0.1" )
|
Pour utiliser DHCP, définissez la variable config_eth0 :
Exemple de code 2.7 : Obtenir une adresse IP automatiquement avec DHCP |
config_eth0=( "dhcp" )
|
Le fichier /etc/conf.d/net.example contient une série d'exemples
commentés pour vous aider à configurer votre réseau. Veuillez également lire la
page de manuel de votre client DHCP si vous souhaitez activer des options DHCP
supplémentaires.
Si vous avez plusieurs interfaces réseau, répétez ces étapes avec
config_eth1, config_eth2, etc.
Sauvegardez votre configuration, puis quittez l'éditeur afin de poursuivre.
Activer les connexions réseau automatiquement au démarrage
Pour que vos interfaces réseau soient activées automatiquement lors du
démarrage, vous devez les ajouter au niveau d'exécution « default ».
Exemple de code 2.8 : Ajouter net.eth0 au niveau d'exécution « default » |
# rc-update add net.eth0 default
|
Si vous avez plusieurs interfaces réseau, vous devez créer les scripts
appropriés (net.eth1, net.eth2 etc.). Pour ce faire,
utilisez ln :
Exemple de code 2.9 : Créer des scripts d'initialisation supplémentaires |
# cd /etc/init.d
# ln -s net.lo net.eth1
# rc-update add net.eth1 default
|
Noter l'information relative au réseau
Vous devez maintenant fournir à Linux l'information relative à votre réseau.
Cela est défini dans /etc/hosts et permet de faire le lien entre
les noms d'hôtes et les adresses IP pour les hôtes qui ne sont pas gérés par le
serveur de noms. Vous devez y faire figurer votre propre machine. Vous pouvez
également y mettre d'autres machines de votre réseau si vous ne voulez pas
configurer un serveur DNS interne.
Exemple de code 2.10 : Ouvrir /etc/hosts |
# nano -w /etc/hosts
|
Exemple de code 2.11 : Inscrire les informations réseau |
127.0.0.1 tux.homenetwork tux localhost
192.168.0.5 jenny.homenetwork jenny
192.168.0.6 benny.homenetwork benny
|
Sauvegardez et quittez l'éditeur afin de poursuivre.
Si vous n'avez pas de PCMCIA, vous pouvez maintenant poursuivre avec Information système. Les utilisateurs de PCMCIA devraient
lire ce qui suit :
Facultatif : Activer PCMCIA
Les utilisateurs de PCMCIA devraient d'abord installer le paquet
pcmciautils.
Exemple de code 2.12 : Installer pcmciautils |
# emerge pcmciautils
|
8.c. Information système
Mot de passe root
Pour commencer, définissons le mot de passe root en tapant :
Exemple de code 3.1 : Définition du mot de passe root |
# passwd
|
Informations sur le système
Gentoo utilise /etc/rc.conf pour la configuration générale qui
s'applique à l'ensemble du système. Ouvrez /etc/rc.conf et
appréciez les commentaires qui s'y trouvent :)
Exemple de code 3.2 : Ouvrir /etc/rc.conf |
# nano -w /etc/rc.conf
|
Ensuite, sauvez votre fichier et quittez votre éditeur.
Comme vous pouvez le voir, ce fichier est généreusement commenté afin de vous
aider à paramétrer les différentes variables relatives à la configuration. Vous
pouvez configurer votre système pour qu'il utilise Unicode. Vous pouvez aussi
définir votre éditeur par défaut et votre gestionnaire d'affichage préféré (gdm
ou kdm).
Le fichier /etc/conf.d/keymaps permet de spécifier le type de
clavier que vous utilisez.
Exemple de code 3.3 : Ouvrir /etc/conf.d/keymaps |
# nano -w /etc/conf.d/keymaps
|
La valeur que vous attribuez à la variable KEYMAP détermine la
disposition des touches de votre clavier. Si vous choisissez une valeur
incorrecte, vous serez surpris quand vous taperez sur votre clavier.
Note :
La plupart des systèmes PPC utilisent des définitions de clavier x86. Si
vous voulez utiliser une disposition ADB, vous devez l'activer quand vous
compilez votre noyau et ensuite définir une disposition mac/ppc dans
/etc/conf.d/keymaps.
|
Quand vous en avez terminé avec le fichier /etc/conf.d/keymaps,
sauvez et quittez.
Ensuite, éditez le fichier /etc/conf.d/clock pour configurer les
options relatives à l'horloge :
Exemple de code 3.4 : Ouvrir /etc/conf.d/clock |
# nano -w /etc/conf.d/clock
|
Si l'horloge de votre PC n'utilise pas l'heure UTC, vous devez ajouter
CLOCK="local" à ce fichier sans quoi votre horloge fera des « saut
d'heures ».
Vous devez déclarer le fuseau horaire que vous avez copié précédemment vers
/etc/localtime afin que les prochaines mises à jour du paquet
sys-libs/timezone-data puissent mettre à jour le fichier
/etc/localtime automatiquement. Par exemple, si vous vous trouvez
sur le fuseau de Paris, ajoutez la variable TIMEZONE="Europe/Paris".
Lorsque vous aurez fini de configurer /etc/conf.d/clock,
sauvegardez puis quittez l'éditeur.
Poursuivez votre lecture avec l'installation des
outils systèmes.
9. Installer les outils système
9.a. Système de journalisation des évènements
Certains outils ne sont pas inclus dans l'archive stage3 parce que plusieurs
paquets fournissent la même fonctionnalité. À vous de choisir ceux que vous
voulez installer.
Le premier outil que vous devez choisir devra enregistrer les étapes du
démarrage du système. Unix et Linux ont une histoire riche en systèmes de
journalisation. Si vous le voulez, vous pouvez enregistrer tous ce
qui se passe sur votre système dans des fichiers de journalisation. Cela se
passe via le système de journalisation.
Gentoo offre le choix entre différents systèmes de journalisation. Il y a
sysklogd qui est l'ensemble d'utilitaires traditionnel,
syslog-ng, un système de journalisation avancé et metalog, qui
est un système de journalisation hautement configurable. D'autres sont
peut-être disponibles, car le nombre de paquets dans Portage ne cesse de
croitre.
Si vous avez l'intention d'utiliser sysklogd ou syslog-ng, vous
devriez aussi installer logrotate qui permet de recycler les vieux
fichiers de journalisation.
Pour installer le système de journalisation de votre choix, utilisez
emerge puis ajoutez-le au niveau d'exécution « default » avec
la commande rc-update. L'exemple suivant installe syslog-ng. Bien
sûr, n'oubliez pas d'y substituer le nom de votre système de journalisation.
Exemple de code 1.1 : Installer un système de journalisation |
# emerge syslog-ng
# rc-update add syslog-ng default
|
9.b. Facultatif : le démon Cron
Bien qu'il ne soit pas nécessaire pour votre système, il est judicieux
d'installer un démon « cron ». Mais qu'est-ce qu'un tel démon ? Un démon « cron »
exécute des commandes planifiées. Il est très utile si vous avez besoin de
lancer des commandes régulièrement (par exemple quotidiennement,
hebdomadairement, mensuellement).
La Gentoo offre trois possibilités de démon cron : dcron, fcron
et vixie-cron. En installer un est similaire à installer un système de
journalisation. Cependant, dcron et fcron requièrent une commande de
configuration supplémentaire, crontab /etc/crontab. Si vous ne savez pas
lequel choisir, prenez vixie-cron.
Seul le paquet vixie-cron est disponible lors d'une installation sans
réseau. Si vous préférez en installer un autre, vous pouvez attendre et
l'installer quand vous le pourrez.
Exemple de code 2.1 : Installer un démon cron |
# emerge vixie-cron
# rc-update add vixie-cron default
# crontab /etc/crontab
|
9.c. Facultatif : indexation des fichiers
Si vous voulez indexer vos fichiers pour pouvoir les retrouver rapidement grâce
à l'outil locate, vous devez installer le paquet
sys-apps/slocate.
Exemple de code 3.1 : Installer slocate |
# emerge slocate
|
9.d. Outils du système de fichiers
En fonction du système de fichiers que vous utilisez, vous devez installer ses
utilitaires (pour vérifier l'intégrité du système de fichiers, pour ajouter des
systèmes de fichiers, etc.). Notez cependant que les outils qui gèrent les
systèmes de fichiers ext2 et ext3 (e2fsprogs) sont déjà installés dans
le système de base.
La table suivante liste les outils à installer en fonction du système de
fichiers.
| Système de fichiers |
Outil |
Commande d'installation |
| XFS |
xfsprogs |
emerge xfsprogs |
| ReiserFS |
reiserfsprogs |
emerge reiserfsprogs |
| JFS |
jfsutils |
emerge jfsutils |
Si vous utilisez EVMS, vous devez installer le paquet evms :
Exemple de code 4.1 : Installer les outils EVMS |
# USE="-gtk" emerge evms
|
On utilise USE="-gtk" pour éviter d'installer les outils graphiques
d'EVMS et leurs dépendances. Si vous voulez utiliser ces outils graphiques,
vous pourrez recompiler evms plus tard.
Si vous n'avez pas besoin d'outils supplémentaires relatifs au réseau tels que
ppp ou un client DHCP, continuez avec la Configuration du chargeur de démarrage.
9.e. Outils réseau
Facultatif : installer un client DHCP
Si vous voulez que votre système acquière une adresse IP automatiquement, vous
devez installer dhcpcd (ou tout autre client DHCP — consultez Les modules réseaux pour la liste des clients
DHCP disponibles). Si vous ne le faites pas, vous risquez de ne pas pouvoir
vous connecter à Internet après avoir fini l'installation.
Exemple de code 5.1 : Installer dhcpcd |
# emerge dhcpcd
|
Facultatif : installer un client PPPoE
Si vous avez besoin de ppp pour vous connecter à Internet, installez-le
maintenant.
Exemple de code 5.2 : Installer ppp |
# emerge ppp
|
Poursuivez avec la configuration du chargeur de
démarrage.
10. Configurer le chargeur de démarrage
10.a. Choisir un chargeur de démarrage
Introduction
Maintenant que votre noyau a été configuré et compilé, vous avez besoin d'un
chargeur de démarrage pour amorcer votre système Linux. Le chargeur que vous
utiliserez dépend du type de machine PPC dont vous disposez.
Si vous avez une machine NewWorld Apple ou IBM, vous devez utiliser Yaboot. Les machines de type OldWorld Apple ont deux
possibilités, BootX (recommandé) ou Quik. Les machines Pegasos n'ont pas besoin de chargeur de
démarrage, mais vous pouvez utiliser BootCreator
pour créer un menu de démarrage « SmartFirmware ».
10.b. Par défaut : Yaboot
Introduction
Important :
Yaboot n'est disponible que sur les systèmes NewWorld Apple ou IBM.
|
Afin de trouver les périphériques démarrables, Yaboot doit pouvoir accéder aux
fichiers de périphériques créés par udev et au système de fichiers sysfs. Ces
deux arborescences se trouvent respectivement dans /dev and
/sys. Le plus simple est de monter ces systèmes de fichiers depuis
le CD d'installation quelque part dans le chroot :
Exemple de code 2.1 : Monter et lier /dev et /sys |
# exit
# mount -o bind /dev /mnt/gentoo/dev
# mount -o bind /sys /mnt/gentoo/sys
# chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile
|
Vous pouvez utiliser le yabootconfig inclus pour configurer yaboot
automatiquement. Si vous installez Gentoo sur une machine G5 (où
yabootconfig ne fonctionne pas toujours) ou si vous comptez démarrer sur
USB ou Firewire, vous devrez configurer Yaboot manuellement.
Note :
Vous devrez éditer le fichier yaboot.conf si vous utilisez genkernel, même si
vous utilisez yabootconfig. La partie noyau du fichier yaboot.conf devrait être
modifiée de cette façon (en utilisant respectivement vmlinux et initrd pour le
nom du noyau et l'image initrd) :
|
Exemple de code 2.2 : Ajouter les arguments de démarrage à yaboot.conf |
image=/boot/kernel-genkernel-ppc-2.6.19-gentoo-r5
label=Linux
root=/dev/ram0
partition=3
initrd=/boot/initramfs-genkernel-ppc-2.6.19-gentoo-r5
append="real_root=/dev/hda3 init=/linuxrc"
read-only
|
Par défaut : utiliser yabootconfig
yabootconfig détectera automatiquement vos partitions et créera une
configuration pour des machines à deux ou trois systèmes d'exploitation Linux,
Mac OS ou Max OS X.
Pour utiliser yabootconfig, votre disque doit avoir une partition de type
Apple_Bootstrap et le fichier /etc/fstab doit être configuré
correctement par rapport à vos partitions (notez que la partition de Bootstrap
ne doit pas être dans votre fstab). Cela devrait déjà avoir été fait plus
tôt, mais vérifiez /etc/fstab avant de continuer. Maintenant,
installez yaboot.
Exemple de code 2.3 : Installer yaboot |
# emerge yaboot
|
Maintenant, quittez l'environnement chroot et lancez la commande yabootconfig
--chroot /mnt/gentoo. Lors de son exécution, ce programme confirmera
l'endroit où se trouve la partition de démarrage. Si vous utilisez le
partitionnement de ce guide, cela devrait être /dev/hda2. Tapez Y pour
valider ; si vous n'êtes pas d'accord, vérifiez le fichier
/etc/fstab. Ensuite, yabootconfig utilisera vos fichiers de
configuration pour créer sa propre configuration dans le fichier
/etc/yaboot.conf et exécutera mkofboot pour vous. Ce dernier
est utilisé pour formater la partition de type Apple_Bootstrap et y installer
les fichiers de configuration de yaboot. Ensuite, revenez dans l'environnement
chroot.
Exemple de code 2.4 : Retourner dans l'environnement chrooté |
# chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile
|
Vous devriez vérifier le contenu du fichier /etc/yaboot.conf. Si
vous le modifiez, par exemple pour changer le système d'exploitation par défaut,
vous devez relancer la commande ybin -v pour enregistrer vos
modifications dans la partition de type Apple_Bootstrap. Chaque fois que vous
modifiez le fichier yaboot.conf, par exemple pour tester un nouveau noyau,
rappelez vous toujours de relancer la commande ybin -v afin de mettre à
jour la partition d'amorçage.
Vous pouvez maintenant poursuivre avec le redémarrage du
système.
Alternative : Configuration manuelle de Yaboot
Installez d'abord yaboot sur votre système :
Exemple de code 2.5 : Installer Yaboot |
# emerge yaboot
|
Vous trouverez un exemple complet du fichier de configuration
yaboot.conf ci-dessous. Adaptez-le à vos besoins. Si vous utilisez
une machine G5 ou si vous démarrez sur USB/Firewire, sachez que vos disques
durs sont vus comme des disques SCSI par Linux. Remplacez donc
/dev/hda par /dev/sda.
Exemple de code 2.6 : Fichier /etc/yaboot.conf |
boot=/dev/hda2
device=hd:
delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
image=/boot/kernel-2.6.19-gentoo-r5
label=Linux
root=/dev/hda3
partition=3
read-only
macos=/dev/hda13
macosx=/dev/hda12
enablecdboot
enableofboot
|
Après avoir modifé le fichier yaboot.conf, vous devez lancer la
commande mkofboot -v pour formater la partition Apple_bootstrap et
installer la configuration. Si vous modifiez la configuration après avoir créé
la partition Apple_bootstrap, vous pouvez la mettre à jour avec ybin -v.
Exemple de code 2.7 : Créer la partition de démarrage |
# mkofboot -v
|
Pour plus d'informations sur yaboot, veuillez consulter la page du projet yaboot.
Vous pouvez maintenant poursuivre avec le redémarrage du
système.
10.c. Alternative : BootX
Important :
BootX n'est disponible que pour les systèmes OldWorld Apple à partir de Mac OS
9.
|
Puisque BootX démarre Linux depuis MacOS, le noyau devra être copié
depuis une partition Linux sur la partition MacOS. Montez tout d'abord la
partition MacOS depuis l'extérieur du chroot. Utilisez mac-fdisk -l pour
trouver le numéro de la partition de MacOS, sda6 dans l'exemple. Une fois que
la partition est montée, nous allons copier le noyau sur le répertoire système
afin que BootX puisse le trouver.
Exemple de code 3.1 : Copier le noyau sur la partition MacOS |
# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/usr/src/linux/vmlinux "/mnt/mac/System Folder/Linux Kernels/kernel-2.6.19-gentoo-r5"
|
Si vous avez utilisé genkernel, le noyau et l'initrd seront placés dans la
partition MacOS.
Exemple de code 3.2 : Copier le noyau et l'initrd de genkernel sur la partition MacOS |
# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/boot/kernel-genkernel-ppc-2.6.19-gentoo-r5 "/mnt/mac/System Folder/Linux Kernels"
cdimage ~# cp /mnt/gentoo/boot/initramfs-genkernel-ppc-2.6.19-gentoo-r5 "/mnt/mac/System Folder"
|
Maintenant que le noyau est copié, vous devez redémarrer pour configurer BootX.
Exemple de code 3.3 : Démonter les partitions et redémarrer la machine |
cdimage ~# cd /
cdimage ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo /mnt/mac
cdimage ~# reboot
|
Bien sûr n'oubliez pas d'enlever le CD d'installation du lecteur, pour ne pas
démarrer dessus à nouveau.
Maintenant que la machine a démarré MacOS, ouvrez le panneau de contrôle de
BootX. Si vous n'utilisez pas genkernel, sélectionnez Options puis
désactivez Used specified RAM disk. Sinon, vérifiez que l'initrd de
genkernel est sélectionné à la place de celui du CD d'installation. Si vous
n'utilisez pas genkernel vous devez maintenant spécifier dans une option le
disque et la partition racine de Linux. Remplissez les champs voulus par la
valeur appropriée. Selon la configuration du noyau vous devrez probablement
appliquer quelques arguments de démarrage au noyau.
BootX peut être configuré pour démarrer Linux au démarrage. Si vous choisissez
cette option la machine démarrera sur MacOS et lors du démarrage, elle chargera
BootX qui à son tour démarrera Linux. Lisez la page Internet de BootX pour plus
d'informations.
Important :
Vérifiez bien que le support pour les systèmes de fichiers HFS et HFS+ soit
activé dans le noyau, sinon vous ne pourrez pas mettre à jour ou modifier votre
noyau sur la partition MacOS.
|
Une fois le système Gentoo démarré, concluez avec la Finaliser votre installation.
10.d. Alternative : Quik
Quik permet aux Mac OldWorld de démarrer sans MacOS. Pourtant, il n'est pas bien
supporté et contient un certain nombre de problèmes. Si vous avez le choix, nous
vous recommandons d'utiliser BootX car il est beaucoup plus stable et facile à
installer que Quik.
D'abord, installer Quik :
Exemple de code 4.1 : Installer Quik |
# emerge quik
|
Ensuite, le configurer. Éditez /etc/quik.conf et définissez
l'image du noyau que vous avez copié précédemment.
Exemple de code 4.2 : Configurer quik.conf |
# Exemple
init-message = "Gentoo 2007.0\n"
partition = 2
root = /dev/hda4
timeout = 30
default = gentoo
image = /kernel-2.6.19-gentoo-r5
label = gentoo
|
Votre quik.conf doit être sur le même disque que l'image de démarrage de
Quik, éventuellement sur une partition différente. Nous vous recommandons de le
mettre dans votre partition /boot.
Pour que Quik soit lancé au démarrage, ajustez correctement les variables grâce
à nvsetenv. Les variables à modifier varient de machine en machine,
vérifiez dès maintenant quelles peuvent être les problèmes
concernant la vôtre avant de commencer.
Exemple de code 4.3 : Définir les variables de démarrage |
# nvsetenv auto-boot true
# nvsetenv output-device video
# nvsetenv input-device kbd
# nvsetenv boot-device scsi/sd@1:0
# nvsetenv boot-device ata/ata-disk@0:0
# nvsetenv boot-file /boot/kernel-2.6.19-gentoo-r5 root=/dev/hda4
# nvsetenv boot-command boot
|
Note :
Il est aussi possible de changer les variables depuis MacOS. Selon le modèle,
vous pouvez utiliser soit bootvars,
soit Apple
System Disk. Lisez la page référençant les problèmes citée précédemment
pour plus d'informations.
|
Tout est maintenant configuré, nous allons vérifier que les images soient
installées correctement. Lancez la commande quik -v -C /boot/quik.conf,
qui devrait vous annoncer que le code de démarrage de Quik a bien été installé
dans le bloc de démarrage.
Note :
Si quelque chose s'est mal passé, vous pouvez toujours remettre à zéro la PROM
en pressant les touches Command + Option + p + r avant d'allumer la
machine. Cela effacera les valeurs qui ont été définies avec nvsetenv et
devrait vous permettre d'utiliser une disquette de démarrage MacOS ou Linux.
|
Vous pouvez continuer avec le redémarrage du système.
10.e. Alternative : BootCreator
Important :
BootCreator vous installe un joli menu SmartFirmware écrit en Forth pour le
Pegasos.
|
Avant tout, installez bootcreator :
Exemple de code 5.1 : Installer bootcreator |
# emerge bootcreator
|
Ensuite, copiez le fichier /etc/bootmenu.example dans
/etc/bootmenu et modifiez-le en fonction de vos besoins :
Exemple de code 5.2 : Modifier la configuration de bootcreator |
# cp /etc/bootmenu.example /etc/bootmenu
# nano -w /etc/bootmenu
|
Un exemple complet de fichier de configuration /etc/bootmenu
ressemble à ce qui suit. Veillez à remplacer vmlinuz et initrd par vos noms des
images de vos noyau et initrd.
Exemple de code 5.3 : Fichier de configuration de bootcreator |
[VERSION]
1
[TITLE]
Boot Menu
[SETTINGS]
AbortOnKey = false
Timeout = 9
Default = 1
[SECTION]
Local HD -> Morphos (Normal)
ide:0 boot2.img ramdebug edebugflags="logkprintf"
[SECTION]
Local HD -> Linux (Normal)
ide:0 kernel-2.6.19-gentoo-r5 video=radeonfb:1024x768@70 root=/dev/hda3
[SECTION]
Local HD -> Genkernel (Normal)
ide:0 kernel-genkernel-ppc-2.6.19-gentoo-r5 root=/dev/ram0 real_root=/dev/hda3 init=/linuxrc initrd=initramfs-genkernel-ppc2.6.19-gentoo-r5
|
Ensuite, le fichier bootmenu doit être copié dans votre partition
de démarrage pour que SmartFirmware puisse le lire. On utilise l'outil
bootcreator :
Exemple de code 5.4 : Installer le menu de démarrage |
# bootcreator /etc/bootmenu /boot/menu
|
Note :
Veuillez vérifier dans la configuration de SmartFirmware dès le redémarrage
suivant que le fichier menu est bien celui qui est utilisé par
défaut.
|
Veuillez poursuivre avec le redémarrage du système.
10.f. Redémarrage du système
Sortez de l'environnement chroot et démontez toutes les partitions montées.
Ensuite, tapez la commande magique tant attendue : reboot.
Exemple de code 6.1 : Sortie du chroot, démontage des partitions et redémarrage |
# exit
livecd ~# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo
livecd ~# reboot
|
Une fois le système Gentoo démarré, concluez avec la Finaliser votre installation.
11. Finaliser votre installation
11.a. Administration des utilisateurs
Ajouter un utilisateur pour une utilisation quotidienne
Travailler en temps que root sur un système Unix/Linux est dangereux et
devrait être évité aussi souvent que possible. Par conséquent, il est
vivement recommandé d'ajouter un utilisateur pour une utilisation
quotidienne.
Les actions qu'un utilisateur a le droit de faire sont définies par les groupes
dont l'utilisateur est membre. Le tableau ci-dessous liste quelques groupes
importants :
| Groupe |
Description |
| audio |
accès autorisé aux périphériques audio |
| cdrom |
accès direct autorisé aux lecteurs optiques |
| floppy |
accès direct autorisé au lecteur de disquettes |
| games |
accès aux jeux |
| portage |
permet d'utiliser emerge --pretend
|
| usb |
accès autorisé aux périphériques USB |
| plugdev |
permet de monter de périphériques à chaud et de les utiliser, par exemple
des appareils photos numériques ou des clés USB
|
| video |
accès autorisé au matériel de capture vidéo et à l'accélération matérielle
|
| wheel |
commande su utilisable |
Par exemple, pour créer un utilisateur nommé john qui est membre des
groupes wheel , users et audio, identifiez-vous en tant
qu'utilisateur root (seul root peut créer des comptes) et faites :
Exemple de code 1.1 : Ajouter un compte pour une utilisation de tous les jours |
Login: root
Password:
# useradd -m -G users,wheel,audio -s /bin/bash john
# passwd john
Password:
Re-enter password:
|
Si cet utilisateur à besoin d'utiliser le compte root, il peut utiliser su
- pour obtenir les privilèges root. Un autre moyen est d'utiliser le paquet
sudo qui est, s'il est configuré correctement, très sécurisé.
11.b. Nettoyage du disque
Supprimer les archives
Maintenant que l'installation de Gentoo est terminée et que vous avez
redémarré, si tout s'est bien passé, vous pouvez supprimer l'archive stage3 et
l'instantané de Portage que vous avez téléchargés et sauvés sur votre disque
dur. Normalement vous les aviez placés dans /.
Exemple de code 2.1 : Supprimer l'archive stage3 |
# rm /stage3-*.tar.bz2*
|
Exemple de code 2.2 : Supprimer l'instantané de Portage |
# rm /portage-latest.tar.bz2*
|
12. Et que faire ensuite ?
12.a. Documentation
Félicitations ! Vous avez maintenant un système Gentoo utilisable. Mais que
pouvez-vous en faire ? Quelle sont les options ? Que pouvez-vous
explorer maintenant ? Gentoo donne beaucoup de possibilités à ses
utilisateurs, et donc beaucoup de fonctionnalités documentées (et d'autres qui
le sont moins).
Vous devriez vraiment regarder la partie suivante du Manuel Gentoo : Utiliser Gentoo qui explique comment garder
votre système à jour, installer des logiciels supplémentaires, quelles sont les
options de USE, comment le système d'initialisation de Gentoo fonctionne, etc.
Si vous êtes intéressé par l'optimisation de votre système pour une utilisation
graphique ou que vous voulez apprendre comment configurer votre système pour
qu'il soit entièrement fonctionnel en mode graphique, consultez la Documentation Gentoo relative au
bureau. Le Guide de
localisation vous sera particulièrement utile si vous préférez utiliser
un système francisé.
De plus, notre Manuel de sécurité Gentoo
Linux pourra sans doute vous être utile.
Pour une liste complète de la documentation disponible, regardez notre
Centre de documentation Gentoo.
12.b. Gentoo en Ligne
Vous êtes bien sûr invité sur les Forums
Gentoo (en anglais) et sur le Forum Gentoo
francophone, ou sur un de nos nombreux canaux
IRC Gentoo en anglais, en français, et bien d'autres langues.
Nous avons aussi quelques listes de
diffusion (N.D.T. : surtout en anglais, mais il y a aussi des listes
francophones) ouvertes à tous les utilisateurs. Cette page vous explique
comment y participer.
C'est fini, vous pouvez maintenant éteindre votre ordinateur et reprendre une
activité normale. ;-)
B. Utiliser Gentoo
1. Introduction à Portage
1.a. Bienvenue dans le monde de Portage
Portage est probablement l'innovation de Gentoo la plus remarquable en ce qui
concerne la gestion des logiciels. Sa grande flexibilité et ses nombreuses
fonctionnalités font parfois dire de Portage qu'il est le meilleur outil de
gestion des logiciels pour Linux.
Portage a été écrit en Python et en Bash qui sont tous les deux des
langages scriptés, c'est-à-dire que 100 % du code source est installé et
consultable sur tous les systèmes Gentoo.
La plupart des utilisateurs interagiront avec Portage via la commande
emerge. Ce chapitre n'a pas pour vocation de dupliquer toute
l'information disponible dans la page man de emerge. Pour consulter la
page man, faites :
Exemple de code 1.1 : Consulter la page man de emerge |
$ man emerge
|
1.b. L'arbre Portage
Les ebuilds
Quand nous parlons de paquets, nous parlons des logiciels qui sont disponibles
dans Gentoo grâce à l'arbre de Portage. Celui-ci est un ensemble
d'ebuilds qui sont en fait des fichiers qui donnent toutes les
informations nécessaires à Portage pour installer un logiciel. Par défaut, ces
ebuilds se trouvent dans /usr/portage.
Dès que vous employez Portage pour une action relative aux paquets, il utilisera
les ebuilds de votre système. Il est donc important de maintenir les ebuilds de
votre système à jour pour que Portage puisse installer des nouvelles versions
des logiciels que vous utilisez ou des correctifs de failles de sécurité.
Mise à jour de l'arbre Portage
L'arbre Portage est généralement mis à jour avec rsync qui est un outil de transfert de
fichiers incrémental. La mise à jour se fait simplement avec la commande
emerge. L'utilisation de rsync est tout à fait transparente :
Exemple de code 2.1 : Mettre l'arbre Portage à jour |
# emerge --sync
|
Si vous ne pouvez pas utiliser rsync à cause, par exemple, d'un pare-feu, vous
pouvez quand même mettre votre arbre Portage à jour avec la commande
emerge-webrsync. Celle-ci télécharge le dernier instantané de l'arbre
Portage et l'installe sur votre système. Un instantané est généré
automatiquement chaque jour sur les miroirs de Gentoo.
Exemple de code 2.2 : Utiliser emerge-webrsync |
# emerge-webrsync
|
1.c. Gérer vos logiciels
Rechercher un paquet
Pour rechercher un logiciel dans l'arbre Portage, vous pouvez utiliser
emerge. En effet, la commande emerge --search affiche la liste des
paquets dont le titre correspond plus ou moins au terme recherché.
Par exemple, pour trouver tous les paquets dont le nom contient
« pdf », vous utiliseriez :
Exemple de code 3.1 : Trouver les paquets dont le nom contient « pdf » |
$ emerge --search pdf
|
Si vous voulez aussi chercher dans les descriptions, utilisez l'option
--searchdesc (ou -S) :
Exemple de code 3.2 : Trouver les paquets relatifs à « pdf » |
$ emerge --searchdesc pdf
|
La liste des paquets affichés contient quelques informations utiles pour chaque
paquet. Les libellés sont explicites et nous n'en dirons pas plus ici.
Exemple de code 3.3 : Exemple de résultat d'une recherche avec « emerge --search » |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Installer des logiciels
Une fois que vous avez identifié un paquet que vous voulez installer, il vous
suffit d'utiliser la commande emerge suivie du nom du paquet pour
l'installer. Par exemple, pour installer gnumeric :
Exemple de code 3.4 : Installer gnumeric |
# emerge gnumeric
|
De nombreuses applications dépendent d'autres paquets. Par conséquent, quand
vous installez un logiciel, il se peut que Portage en installe d'autres qui sont
nécessaires au bon fonctionnement du paquet que vous installez. Si vous voulez
connaitre la liste des paquets que Portage installerait si vous installiez un
paquet donné, vous pouvez utiliser l'option --pretend. Un exemple :
Exemple de code 3.5 : Lister les paquets à installer pour gnumeric |
# emerge --pretend gnumeric
|
Quand vous installez un paquet avec Portage, il télécharge les sources
nécessaires et les sauve dans le répertoire /usr/portage/distfiles.
Ensuite, Portage décompresse l'archive, compile son contenu et installe le
logiciel. Si vous voulez télécharger les sources sans installer le paquet,
utilisez l'option --fetchonly. Par exemple, pour télécharger les sources
de gnumeric :
Exemple de code 3.6 : Télécharger les sources de gnumeric |
# emerge --fetchonly gnumeric
|
Trouver la documentation d'un paquet installé
De nombreux paquets installent leur propre documentation. Parfois l'option USE
doc indique si la documentation d'un paquet doit être installée ou non.
Vous pouvez vérifier l'existence de l'option USE doc avec la commande
emerge -vp <nom du paquet>.
Exemple de code 3.7 : Vérifier l'existence de l'option USE doc |
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB
|
La meilleure façon d'activer l'option USE doc est de le faire paquet par
paquet via /etc/portage/package.use, afin que vous n'ayez la
documentation que pour les paquets qui vous intéressent. L'activation de manière
globale de cette option est connue pour causer des problèmes de dépendances
circulaires. Pour plus d'informations, veuillez lire le chapitre La variable USE.
Une fois le paquet installé, la documentation se trouve généralement dans un
sous-répertoire au nom du paquet dans le répertoire /usr/share/doc.
Vous pouvez également lister tous les fichiers installés avec l'outil
equery qui fait partie du paquet
app-portage/gentoolkit .
Exemple de code 3.8 : Trouver la documentation d'un paquet |
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
|
Supprimer un paquet
Pour désinstaller un paquet de votre système, utilisez emerge --unmerge.
Cette commande supprime les fichiers qui avaient été installés par Portage, mais
ne supprime pas les fichiers de configuration si vous les avez modifiés après
l'installation. Cela vous permet de réutiliser vos fichiers de configuration si
vous réinstallez le paquet plus tard.
Cependant, un avertissement est de mise :Portage ne
vérifie pas que le paquet que vous supprimez est nécessaire au bon
fonctionnement d'un autre paquet. Toutefois, un message s'affichera si vous
essayez de supprimer un paquet important dont la disparition causerait de graves
problèmes.
Exemple de code 3.9 : Supprimer gnumeric de votre système |
# emerge --unmerge gnumeric
|
Quand vous supprimez un paquet, les paquets dont il dépend qui avaient été
installés initialement ne seront pas désinstallés automatiquement. Pour que
Portage recherche les dépendances qui peuvent être supprimées, utilisez l'option
depclean. Nous en reparlerons plus loin.
Mettre votre système à jour
Pour maintenir votre système en bon état et disposer des correctifs de failles
de sécurité, vous devriez le mettre à jour régulièrement. Puisque Portage ne se
base que sur les ebuilds de votre machine, vous devez vous assurez que votre
arbre Portage est à jour. Une fois votre arbre Portage à jour, vous pouvez
mettre votre système à jour avec la commande emerge --update world. Dans
l'exemple ci-dessous, on utilise aussi l'option --ask pour que Portage
affiche la liste des paquets qu'il va mettre à jour et pour qu'il demande une
confirmation.
Exemple de code 3.10 : Mettre votre système à jour |
# emerge --update --ask world
|
Portage recherche alors des versions plus récentes des logiciels que vous avez
installés explicitement et uniquement ceux-là. Portage ignorera les paquets qui
ont été installés automatiquement pour qu'un paquet que vous avez demandé puisse
être installé. Si vous voulez que Portage prenne ces paquets en considération,
utilisez l'option --deep :
Exemple de code 3.11 : Mettre tout votre système à jour |
# emerge --update --deep world
|
Étant donné que des mises à jour qui corrigent des failles de sécurité sont
apportées à des paquets que vous n'avez pas explicitement installés, mais qui
ont été installés parce que d'autres paquets en dépendent, il est recommandé
d'exécuter la commande ci-dessus de temps en temps.
Si vous avez modifié les options de la variable
USE, vous devriez également ajouter l'option --newuse pour que
Portage vérifie si certains paquets ne doivent pas être recompilés. Par
exemple :
Exemple de code 3.12 : Une mise à jour complète |
# emerge --update --deep --newuse world
|
Les méta-paquets
Certains paquets ne contiennent aucun logiciel, mais servent à installer un
ensemble de paquets. Par exemple, le paquet kde sert à installer un
environnement KDE complet et provoque l'installation d'un grand nombre de
paquets relatifs à KDE.
Supprimer un tel paquet avec la commande emerge --unmerge n'aurait aucune
influence sur votre système puisque tous les paquets dépendants resteraient
installés.
Portage permet de supprimer les dépendances orphelines, mais, pour cela, vous
devez d'abord mettre votre système complètement à jour en tenant compte
d'éventuelles modifications apportées à votre variable USE. Vous pouvez ensuite
utiliser emerge --depclean pour supprimer les dépendances orphelines.
Par après, vous devriez recompiler les applications qui étaient liées
dynamiquement avec les paquets que vous venez de supprimer. Les paquets
désinstallés ne sont plus nécessaires à la bonne marche de ces applications.
Tout cela peut être résumé en trois commandes :
Exemple de code 3.13 : Supprimer les dépendances orphelines |
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
|
La commande revdep-rebuild fait partie du paquet
gentoolkit ; n'oubliez pas de l'installer :
Exemple de code 3.14 : Installer gentoolkit |
# emerge gentoolkit
|
1.d. Quand Portage se plaint...
À propos des « SLOTs », paquets virtuels, branches,
architectures et profils
Comme nous l'avons déjà dit, Portage est très puissant et offre de nombreuses
fonctionnalités que d'autres gestionnaires de logiciels n'ont pas. Survolons les
différents aspects de Portage.
Portage permet à plusieurs versions d'un même paquet de cohabiter sur le même
système. D'autres distributions ont tendance à renommer les paquets en fonction
de la version (par exemple freetype et freetype2) alors que
Portage utilise des « SLOTs ». Un ebuild peut placer chaque version du
logiciel dans un slot et des versions qui sont dans des slots différents peuvent
être installées en même temps. Par exemple, le paquet freetype a des
versions avec SLOT="1" et SLOT="2".
Dans certains cas, différents paquets installent la même fonctionnalité. Par
exemple, metalogd, sysklogd et syslog-ng gèrent tous le
jounal du système, mais un logiciel qui dépendrait du journal système ne peut
pas dépendre directement de metalogd ou d'un autre. Le système doit aussi
fonctionner si l'utilisateur a choisi un autre gestionnaire de journal. Portage
permet de définir des paquets virtuels. Les trois paquets cités ci-dessus
fournissent la fonctionnalité virtual/syslog et les paquets qui ont
besoin d'un journal système dépendent de celle-ci.
Portage classe les paquets dans plusieurs branches. Par défaut, votre système
n'accepte que les paquets que Gentoo considère stables. Bien souvent, quand une
nouvelle version d'un logiciel sort, elle est d'abord ajoutée à la branche dite
« instable », ce qui signifie que plus de tests sont nécessaires avant
de considérer le logiciel comme stable. Vous verrez les paquets dits instables
dans votre arbre, mais Portage ne les installera pas automatiquement avant
qu'ils ne soient stabilisés.
Certains logiciels ne sont disponibles que pour certaines architectures ou ne
fonctionnent pas du tout sur d'autres. Parfois, un logiciel a besoin de plus de
tests sur une architecture donnée ou les développeurs responsables d'un paquet
n'ont pas la possibilité de le valider pour d'autres processeurs.
Chaque installation de Gentoo appartient à un profil qui contient la
liste des paquets qui forment un système minimal.
Paquets bloqués
Exemple de code 4.1 : Avertissement à propos d'un paquet bloquant (avec --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
|
Exemple de code 4.2 : Avertissement à propos d'un paquet bloquant (sans --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
|
Les ebuilds contiennent des informations relatives aux dépendances des logiciels
entre eux. Il y a deux sortes de dépendances : les dépendances à
l'installation définies par DEPEND et les dépendances à l'utilisation
définies dans RDEPEND. Un blocage peut se produire quand un paquet est
considéré incompatible avec une dépendance.
Pour résoudre un tel blocage, vous pouvez soit ne pas installer le logiciel en
question, soit désinstaller le paquet qui bloque. Dans l'exemple ci-dessus, vous
auriez le choix entre ne pas installer postfix ou d'abord désinstaller
ssmtp.
Un blocage peut être provoqué par une version spécifique d'un logiciel, par
exemple : <media-video/mplayer-bin-1.0_rc1-r2. Dans ce cas, il
suffit de mettre à jour le logiciel en question vers une version plus récente
pour supprimer le blocage.
Il se peut que deux paquets qui ne sont pas encore installés se bloquent entre
eux. Dans ce rare cas, vous devez trouver pourquoi les deux paquets veulent
s'installer car normalement un seul suffit. Si le problème persiste, veuillez
remplir un rapport de bogue sur notre système de gestion de bogues.
Les paquets masqués
Exemple de code 4.3 : Avertissement à propos de paquets masqués |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Exemple de code 4.4 : Avertissement à propos de paquets masqués avec la raison |
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
|
Quand vous essayez d'installer un paquet qui n'est pas disponible pour votre
système, vous recevez ce type d'erreur. Vous devriez essayer d'installer une
autre application qui est disponible pour votre environnement ou attendre que le
paquet devienne disponible. Un paquet est toujours masqué pour une bonne
raison :
-
~arch keyword indique que le paquet n'a pas été suffisamment testé et
n'est pas encore dans la branche stable. Vous devriez essayer à nouveau
quelques jours ou quelques semaines plus tard.
-
-arch keyword ou -* keyword indique que l'application ne
fonctionne pas sur votre architecture. Si vous pensez le contraire, veuillez
le signaler via bugzilla.
-
missing keyword indique que l'application n'a pas été testée sur
votre architecture. Vous pouvez demander à l'équipe en charge de celle-ci de
tester l'application qui vous intéresse ou la tester vous-même et soumettre
vos résultats sur bugzilla.
-
package.mask indique que le paquet est cassé, instable, voire pire et
qu'il a été masqué pour que vous ne l'utilisiez pas.
-
profile indique que le paquet n'est pas compatible avec votre profil.
L'application pourrait abimer votre système.
Dépendances manquantes
Exemple de code 4.5 : Avertissement à propos de dépendances manquantes |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
|
L'application que vous essayez d'installer dépend d'autres paquets qui ne sont
pas disponibles pour votre système. Veuillez vérifier sur bugzilla si le problème est déjà connu et
veuillez le signaler dans le cas contraire. À moins que vous ne mélangiez les
branches stables et instables, cela de doit pas arriver et peut être considéré
comme un bogue.
Noms d'ebuilds ambigus
Exemple de code 4.6 : Avertissement à propos de noms d'ebuilds ambigus |
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
|
Le paquet que vous essayez d'installer a un nom qui désigne plusieurs paquets
dans des catégories différentes. Vous devez mentionner la catégorie du paquet
que vous voulez installer. Portage affiche les différentes possibilités.
Dépendances circulaires
Exemple de code 4.7 : Avertissement à propos de dépendances circulaires |
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
|
Deux (ou plus) paquets dépendent l'un de l'autre et ne peuvent pas être
installés. Il est très probable que cela soit un bogue. Veuillez synchroniser
votre arbre Portage. Si le problème persiste, veuillez vérifier si le problème
est connu dans bugzilla et le signaler
dans le cas contraire.
Problèmes lors du téléchargement
Exemple de code 4.8 : Avertissement à propos d'un problème au téléchargement |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
!!! Some fetch errors were encountered. Please see above for details.
|
Portage n'a pas pu télécharger les sources de l'application et essaie
éventuellement d'installer les autres paquets que vous auriez spécifiés avec la
commande emerge. Ce problème peut être dû à un miroir qui n'est pas encore
synchronisé ou à un ebuild qui référence un serveur de sources incorrect. Il se
peut aussi que le serveur soit momentanément indisponible.
Veuillez réessayer après quelques heures.
Protection des paquets du profil système
Exemple de code 4.9 : Avertissement à propos du profil système |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
|
Vous avez demandé à Portage de supprimer un paquet qui fait partie du profil
système. Le supprimer pourrait rendre votre système inutilisable.
Échecs à la vérification des sommes de contrôle (Digest)
Parfois, quand vous essayez d'installer un paquet, cela échoue avec le
message :
Exemple de code 4.10 : Digest verification failure |
>>> checking ebuild checksums
!!! Digest verification failed:
|
Ceci est le signe d'une erreur dans l'arbre de Portage et souvent il se peut
qu'un développeur ait fait une erreur lors de l'envoi d'une mise à jour d'un
paquet dans l'arbre.
Quand la vérification de la somme de contrôle échoue, n'essayez pas de
régénérer le fichier Digest vous-même. Exécuter ebuild toto manifest ne
réglera pas le problème, au contraire !
Attendez plutôt une heure ou deux que l'arbre soit corrigé. Il est probable que
l'erreur ait été déjà signalée, mais cela peut prendre un petit moment pour la
correction et la propagation dans l'arbre de Portage. Vous pouvez, pendant ce
temps, vérifier dans Bugzilla si
quelqu'un a déjà signalé le problème. Si ça n'est pas le cas, envoyez un rapport
de bogue pour un paquet cassé.
Dès que vous voyez que le bogue est corrigé, vous pouvez mettre à jour votre
arbre de Portage pour récupérer le fichier Digest corrigé.
Important :
Cela ne signifie pas que vous pouvez multiplier les mises à jour de votre
arbre de Portage ! Comme expliqué dans les règles d'usage de rsync (quand
vous exécutez emerge --sync), les utilisateurs qui synchronisent trop
souvent seront bannis ! Le plus sage est d'attendre votre prochaine mise à
jour d'arbre de Portage comme vous l'aviez prévu, de cette manière vous ne
surchargerez pas les serveurs rsync.
|
2. La variable USE
2.a. Que sont les paramètres USE ?
Les notions sous-jacentes aux paramètres USE
Losque vous installez Gentoo (ou n'importe quelle autre distribution, voire
système d'exploitation), vous faites des choix qui dépendent de l'environnement
dans lequel vous travaillez. La configuration d'un serveur est différente de
celle d'une station de travail. Une machine destinée aux jeux diffère d'une
station de travail pour du rendu 3D.
Cela s'applique non seulement au choix des paquets que vous comptez installer,
mais aussi aux fonctionnalités que chaque paquet devrait supporter. Si vous
n'avez pas besoin d'OpenGL, pourquoi prendre la peine d'installer OpenGL et de
construire la plupart de vos paquets avec support pour OpenGL ? Si vous ne
souhaitez pas utiliser KDE, pourquoi compiler des paquets avec le support KDE
alors qu'ils fonctionneraient parfaitement sans ce support ?
Pour aider les utilisateurs à déterminer ce qu'ils veulent installer ou
activer, nous souhaitions que l'utilisateur spécifie son environnement de
manière simple. Il est ainsi obligé de décider ce qu'il veut vraiment, et cela
facilite la tâche de Portage, notre gestionnaire de paquets, pour prendre les
décisions utiles.
Définition des paramètres USE
C'est ici qu'interviennent les paramètres USE. Un tel paramètre est un mot-clé
qui définit le support et les dépendances pour un concept donné. Si vous
définissez un paramètre USE donné, Portage saura que vous voulez avoir le
support correspondant au mot-clé choisi. Bien entendu, cela affecte aussi les
dépendances des paquets.
Considérons un exemple spécifique : le mot-clé kde. Si vous n'avez
pas ce mot-clé dans votre variable USE, tous les paquets qui offrent un
support optionnel pour KDE seront compilés sans ce support. Tous
les paquets qui possèdent des dépendances KDE optionnelles seront
installés sans installer les bibliothèques KDE (en tant que
dépendances). Si vous avez le mot-clé kde, alors ces paquets seront
compilés avec le support KDE et les bibliothèques KDE seront installées
en tant que dépendances.
Définir correctement ces mots-clés vous donnera finalement un système adapté
spécifiquement à vos besoins.
Quels sont les paramètres USE disponibles ?
On distingue deux types de paramètres USE : les paramètres globaux
et les paramètres locaux.
-
Un paramètre USE global est utilisé par plusieurs paquets dans
l'ensemble du système. C'est ce que la plupart des gens considèrent comme
les paramètres USE.
-
Un paramètre USE local n'est utilisé que par un seul paquet et n'est
utilisé que pour des décisions spécifiques à ce paquet.
Une liste des paramètres USE peut être trouvée en ligne ou localement dans
/usr/portage/profiles/use.desc.
La liste des paramètres USE locaux se trouve dans le fichier
/usr/portage/profiles/use.local.desc.
2.b. Utiliser les paramètres USE
Déclarer des paramètres USE permanents
Nous allons maintenant vous expliquer comment déclarer des paramètres USE, en
espérant que vous soyez convaincu de leur importance.
Comme mentionné plus haut, tous les paramètres USE sont déclarés dans la
variable USE. Pour permettre aux utilisateurs de trouver et choisir
facilement les paramètres USE, nous fournissons une configuration par
défaut de USE. Cette configuration est un ensemble de paramètres USE dont
nous pensons qu'ils sont communément employés par les utilisateurs de Gentoo.
Cette configuration par défaut est déclarée dans les fichiers
make.defaults de votre profil.
Le profil de votre système est défini par le fichier vers lequel pointe le lien
symbolique /etc/make.profile. Différents profils s'empilent les
uns sur les autres. Le profil le plus haut est base
(/usr/portage/profiles/base).
Voyons les valeurs par défaut d'un profil 2004.3 :
Exemple de code 2.1 : Variable USE après cumul d'un profil 2004.3 |
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"
|
Comme vous pouvez le voir, cette variable contient déjà un bon nombre de
mots-clés. Ne modifiez en aucun cas les fichiers
make.defaults pour adapter la variable USE à vos
besoins : les changements effectués dans ce fichier seront effacés lorsque
vous mettrez Portage à jour !
Pour modifier cette configuration par défaut, vous devrez ajouter ou enlever
des mots-clés dans la variable USE. Cela est fait de manière globale en
définissant la variable USE dans /etc/make.conf. Dans cette
variable, vous ajouterez les paramètres USE que vous désirez et enlèverez ceux
que vous ne voulez pas. Cette dernière action est réalisée en préfixant le
mot-clé d'un signe moins ("-").
Par exemple, pour enlever le support pour KDE et QT, et ajouter le support pour
ldap, vous pourriez définir USE comme suit dans
/etc/make.conf :
Exemple de code 2.2 : Exemple de configuration USE dans /etc/make.conf |
USE="-kde -qt3 -qt4 ldap"
|
Déclarer des paramètres USE spécifiques à des paquets
Parfois, vous voudrez déclarer certains paramètres USE pour une ou plusieurs
applications particulières mais pas pour l'ensemble du système. Pour cela, vous
devez créer le répertoire /etc/portage (s'il n'existe pas déjà) et
éditer /etc/portage/package.use. C'est souvent qu'un simple fichier,
mais il peut aussi être un répertoire ; lisez man portage pour plus
d'informations. Les exemples suivants supposent que package.use est
un simple fichier.
Par exemple, si vous ne voulez pas du support global berkdb mais si vous
le voulez tout de même pour mysql, vous devrez y ajouter la ligne
suivante :
Exemple de code 2.3 : Exemple de /etc/portage/package.use |
dev-db/mysql berkdb
|
Vous pouvez également désactiver explicitement un paramètre USE pour une
application particulière. Par exemple, si vous ne voulez pas du support
java dans PHP :
Exemple de code 2.4 : Second exemple de /etc/portage/package.use |
dev-php/php -java
|
Déclarer des paramètres USE temporaires
Il peut arriver que vous ne souhaitiez définir un paramètre USE donné qu'en une
seule occasion. Plutôt qu'éditer /etc/make.conf deux fois (pour
faire puis défaire les changements), vous pouvez simplement déclarer USE comme
une variable d'environnement. Gardez toutefois à l'esprit que cette
modification de l'environnement sera probablement perdue lorsque vous
réinstallerez ou mettrez à jour cette application (soit explicitement, soit
lors d'une mise à jour du système).
Par exemple, nous allons retirer temporairement le support java de notre
configuration USE pendant l'installation de seamonkey.
Exemple de code 2.5 : Utilisation de USE comme une variable d'environnement |
# USE="-java" emerge seamonkey
|
Ordre de priorité
Les différentes configurations de USE se conforment évidemment à un certain
ordre de priorité. Vous ne souhaitez sans doute pas déclarer USE="-java"
pour vous rendre compte après coup que java est déclaré malgré tout à
cause d'une valeur par défaut qui a priorité sur votre définition. Les
priorités dans les déclarations USE sont ordonnées comme suit (la première
déclaration a la plus faible priorité) :
-
Déclaration par défaut dans les fichiers make.defaults de
votre profil ;
-
Déclaration par l'utilisateur dans /etc/make.conf ;
-
Déclaration par l'utilisateur dans
/etc/portage/package.use ;
-
Déclaration par l'utilisateur comme une variable d'environnement ;
Pour voir la configuration finale de USE telle qu'elle est vue par
Portage, exécutez emerge --info. Cela listera toutes les variables
significatives (dont la variable USE) avec leur contenu tel qu'il est vu
par Portage.
Exemple de code 2.6 : Exécuter emerge --info |
# emerge --info
|
Reconfigurer votre système pour tenir compte des options USE
Si vous avez modifié vos options de la variable USE et que vous voulez
reconfigurer votre système pour tenir compte de ces nouvelles options, utilisez
l'option --newuse :
Exemple de code 2.7 : Recompiler tout le système |
# emerge --update --deep --newuse world
|
Ensuite, utilisez l'option depclean pour supprimer les dépendances
conditionnelles qui ne seraient plus utilisées.
Attention :
Exécuter emerge --depclean est une opération risquée qui ne devrait pas
être lancée à la légère. Vérifiez bien que la liste des paquets qui vont être
supprimés ne contient pas de paquet dont vous avez encore besoin. Dans
l'exemple ci-dessous, nous utilisons l'option -p pour afficher la liste
sans rien supprimer.
|
Exemple de code 2.8 : Supprimer les paquets inutiles |
# emerge -p --depclean
|
Quand cette opération est terminée, lancez revdep-rebuild pour
recompiler les applications qui avaient été liées dynamiquement avec les
paquets que vous venez de supprimer. La commande revdep-rebuild fait
partie du paquet gentoolkit ; n'oubliez pas de l'installer.
2.c. Paramètres USE spécifiques à un paquet
Savoir quels paramètres USE influencent un paquet
Prenons l'exemple de seamonkey : à quels paramètres USE est-il
sensible ? Pour le savoir, nous utilisons emerge avec les options
--pretend et --verbose :
Exemple de code 3.1 : Afficher les paramètres USE qui influencent un paquet |
# emerge --pretend --verbose seamonkey
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB
|
emerge n'est pas le seul outil utilisable à cette fin. En effet, nous
disposons d'un outil dédié pour obtenir des informations sur les paquets. Il
s'appelle equery et appartient au paquet gentoolkit. Commencez
par installer gentoolkit :
Exemple de code 3.2 : Installer gentoolkit |
# emerge gentoolkit
|
Exécutez maintenant equery avec l'argument uses pour afficher les
paramètres USE d'un paquet donné. Par exemple, pour le paquet
gnumeric :
Exemple de code 3.3 : Utiliser equery pour afficher les paramètres USE |
# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
U I
- - debug : Enable extra debug codepaths, like asserts and extra output.
If you want to get meaningful backtraces see
http://www.gentoo.org/proj/en/qa/backtraces.xml .
+ + gnome : Adds GNOME support
+ + python : Adds support/bindings for the Python language
- - static : !!do not set this during bootstrap!! Causes binaries to be
statically linked instead of dynamically
|
3. Portage et ses fonctionnalités
3.a. Les caractéristiques de Portage
Portage offre un ensemble de fonctionnalités qui vous aident à mieux utiliser
Gentoo. Certaines fonctionnalités sont basées sur des outils tiers qui
permettent d'améliorer les performances, la fiabilité, la sécurité, etc.
Pour activer ou désactiver certaines fonctionnalités, vous devez modifier la
variable FEATURES dans le fichier /etc/make.conf. Séparez
les mots-clefs par des espaces. Souvent, vous devrez aussi installer l'outil
requis pour utiliser la fonctionnalité souhaitée.
Toutes les fonctionnalités disponibles ne sont pas reprises ici. Veuillez lire
la page man de make.conf pour en savoir plus.
Exemple de code 1.1 : Lire la page man de make.conf |
$ man make.conf
|
Pour connaitre les fonctionnalités qui sont actives sur votre système, utilisez
la commande emerge --info et regardez le contenu de la variable
« FEATURES ».
Exemple de code 1.2 : Afficher les fonctionnalités actives |
$ emerge --info | grep FEATURES
|
3.b. Compilation distribuée
Utiliser distcc
distcc est un programme qui permet de distribuer des compilations sur
plusieurs machines, pas nécessairement identiques, d'un réseau. Le client
distcc envoie toutes les données nécessaires aux serveurs distcc (qui
exécutent distccd) disponibles afin qu'ils puissent compiler des parties
du code source au profit du client. Le résultat est une compilation plus
rapide.
Vous trouverez une description plus élaborée de distcc (et des
informations sur la manière de le faire fonctionner avec Gentoo) dans notre
Documentation Gentoo pour distcc.
Installation de distcc
Distcc est fourni avec une interface graphique qui permet de suivre les tâches
de compilation que votre ordinateur envoie. Si vous utilisez Gnome, ajoutez
« gnome » à votre variable USE. Mais si vous n'utilisez pas
Gnome et souhaitez tout de même avoir une interface graphique, vous pouvez
ajouter « gtk » à votre variable USE.
Exemple de code 2.1 : Installer distcc |
# emerge distcc
|
Activer le support distcc pour Portage
Ajoutez le mot-clé distcc à la variable FEATURES du fichier
/etc/make.conf. Ensuite, modifiez la variable MAKEOPTS
pour y ajouter -jX où X est le nombre de processeurs qui
exécutent distccd (l'hôte actuel inclus) plus un. Cette valeur
donne en général les meilleurs résultats, mais vous pouvez en essayer d'autres.
Ensuite, exécutez distcc-config et entrez la liste des serveurs distcc
disponibles. Pour donner un exemple simple, nous supposerons que les serveurs
distcc disponibles sont 192.168.1.102 (l'hôte actuel),
192.168.1.103 et 192.168.1.104 (deux hôtes
« distants ») :
Exemple de code 2.2 : Configurer distcc pour qu'il utilise trois serveurs distcc |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
Bien entendu, n'oubliez pas de lancer le démon distccd :
Exemple de code 2.3 : Lancer le démon distccd |
# rc-update add distccd default
# /etc/init.d/distccd start
|
3.c. Utiliser un cache pour la compilation
À propos de ccache
ccache est un cache rapide pour compilateur. Lorsque vous compilez un
programme, il mettra les résultats intermédiaires en cache afin que,
s'il vous arrive de recompiler le même programme, le temps de compilation soit
largement réduit. Avec des applications communes, cela peut entrainer des
compilations 5 à 10 fois plus rapides.
Si vous êtes intéressé par le fonctionnement interne de ccache, veuillez
visiter le site de ccache.
Installation de ccache
Utilisez la commande emerge ccache pour installer ccache :
Exemple de code 3.1 : Installer ccache |
# emerge ccache
|
Activer le support ccache pour Portage
Ajoutez le mot-clé ccache à la variable FEATURES du fichier
/etc/make.conf. Ensuite, ajoutez la variable CCACHE_SIZE
qui définit la taille par défaut du cache utilisé par ccache. Une valeur de
2 Go est recommandée.
Exemple de code 3.2 : Editer CCACHE_SIZE dans /etc/make.conf |
CCACHE_SIZE="2G"
|
Pour vérifier que ccache fonctionne, vous pouvez exécuter ccache
-s pour afficher les statistiques de ccache. Puisque Portage utilise
un répertoire différent du répertoire par défaut, vous devez définir la
variable CCACHE_DIR :
Exemple de code 3.3 : Afficher les statistiques de ccache |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
Le répertoire /var/tmp/ccache est utilisé par Portage par défaut.
Vous pouvez spécifier le répertoire de votre choix en définissant la variable
CCACHE_DIR dans le fichier /etc/make.conf.
Cependant, quand vous exécutez ccache, pour voir les statistiques par
exemple, le répertoire par défaut est ${HOME}/.ccache, ce qui
explique pourquoi vous devez définir la variable CCACHE_DIR pour voir
les statistiques ccache de Portage.
Utilisation de ccache en dehors de Portage
Si vous souhaitez utiliser ccache pour les compilations en dehors de celles de
Portage, vous pouvez ajouter /usr/lib/ccache/bin au début de votre
variable PATH (ou tout au moins avant /usr/bin). Pour cela,
éditez le fichier .bash_profile qui se trouve à la racine de
votre compte utilisateur. Utiliser .bash_profile est une des
manières de définir la variable PATH :
Exemple de code 3.4 : Modifier le fichier .bash_profile |
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
|
3.d. Paquets binaires
Créer des paquets binaires
Nous avons déjà parlé de l'utilisation de paquets précompilés, mais comment
crée-t-on son propre paquet précompilé ?
Si le paquet est déjà installé, vous pouvez utiliser la commande
quickpkg. Si ce n'est pas le cas, utilisez les options
--buildpkg ou --buildpkgonly avec la commande emerge. La
deuxième option prépare un paquet binaire sans l'installer sur votre machine.
Si vous souhaitez que Portage construise par défaut des paquets binaires pour
tous les paquets que vous installez sur votre système, vous pouvez mettre le
mot-clé builpkg dans la variable FEATURES dans le fichier
/etc/make.conf.
Vous trouverez plus de détails à propos de la création de paquets binaires dans
la documentation de catalyst (en anglais) : Catalyst FAQ.
Installer des paquets précompilés
Bien que Gentoo ne fournisse pas de système centralisé de distribution de
paquets binaires, rien ne vous empêche d'en créer un. Vous pourriez très bien
stocker tous vos paquets binaires sur un serveur et utiliser celui-ci pour
mettre plusieurs machines à jour. Pour utiliser un tel serveur, vous devez le
définir dans la variable PORTAGE_BINHOST. Si vous avez stocké vos
paquets sur un serveur ftp ftp://buildhost/gentoo, utilisez :
Exemple de code 4.1 : Définir PORTAGE_BINHOST dans /etc/make.conf |
PORTAGE_BINHOST="ftp://buildhost/gentoo"
|
Quand vous voulez utliser un paquet binaire pour installer une application,
spécifiez l'option --getbinpkg en plus de --usepkg avec la
commande emerge. La première option indique à Portage de télécharger
le paquet binaire depuis le serveur que vous avez défini plus tôt et la
seconde indique d'utiliser le même paquet binaire plutôt que de compiler
l'application.
Par exemple, pour installer gnumeric à partir de paquets binaires
précompilés :
Exemple de code 4.2 : Installer gnumeric en utilisant un paquet précompilé |
# emerge --usepkg --getbinpkg gnumeric
|
La page man de emerge décrit l'utilisation des paquets précompilés plus
en détail.
Exemple de code 4.3 : Lire la page man de emerge |
$ man emerge
|
3.e. Récupération des fichiers
Récupération en parallèle
Quand vous installez une série de paquets, Portage peut commencer la
récupération des sources du paquet suivant dans la liste pendant qu'il en
compile un autre, réduisant ainsi la durée de l'installation.
Pour activer cette option, ajoutez « parallel-fetch » à la variable
FEATURES.
Userfetch : récupération en tant qu'utilisateur normal
Quand Portage est lancé par le super-utilisateur, l'option
FEATURES="userfetch" autorise Portage à rendre les privilèges du
super-utilisateur pendant qu'il récupère les sources du paquet. Ceci est une
légère amélioration en termes de sécurité.
4. Les scripts d'initialisation
4.a. Les niveaux d'exécution
Démarrer votre système
Quand vous démarrez votre système, vous voyez beaucoup de texte défiler à
l'écran. Vous remarquerez sans doute que ce texte est le même à chaque
démarrage. La séquence d'actions qui se déroule devant vos yeux s'appelle la
séquence de démarrage et elle est définie de façon plus ou moins
statique.
D'abord, votre chargeur de démarrage charge l'image du noyau que vous avez
définie dans son fichier de configuration et ensuite, il exécute ce noyau. Ce
dernier s'initialise, démarre les tâches spécifiques au noyau et lance le
processus init.
Ce processus monte les systèmes de fichiers définis dans
/etc/fstab et exécute quelques scripts placés dans le répertoire
/etc/init.d qui, à leur tour, démarrent les services nécessaires
au bon fonctionnement du système.
Finalement, quand tous les scripts ont été exécutés, init active les
terminaux (en général, les consoles virtuelles que vous obtenez avec les
touches Alt-F1, Alt-F2, etc.) et attache un processus appelé
agetty à chacun. Ce processus vous permet de vous identifier sur ces
terminaux avec login.
Les scripts d'initialisation
En fait, init n'exécute pas les scripts du répertoire
/etc/init.d n'importe comment. De plus, il n'exécute pas non plus
tous les scripts, mais seulement ceux qui doivent l'être. Les scripts à
exécuter sont définis dans /etc/runlevels.
Le processus init exécute d'abord les scripts de
/etc/init.d vers lesquels un lien symbolique existe dans
/etc/runlevels/boot. Les scripts sont généralement exécutés par
ordre alphabétique, mais certains contiennent des dépendances qui indiquent
quels scripts doivent être exécutés en premier.
Quand tous les scripts liés dans /etc/runlevels/boot ont été
exécutés, init poursuit avec ceux liés dans
/etc/runlevels/default. Ici aussi, les scripts sont généralement
exécutés par ordre alphabétique, sauf quand ils contiennent des informations
sur des dépendances qui spécifient une séquence d'exécution particulière.
Comment init fonctionne-t-il ?
Évidemment, init ne décide pas tout seul de ce qu'il doit faire. Il a
besoin d'un fichier de configuration qui lui indique quelles actions il doit
effectuer. Ce fichier est /etc/inittab.
Dans la séquence de démarrage que nous venons d'expliquer, nous avons dit que
la première action de init était de monter les systèmes de fichiers. La
ligne du fichier /etc/inittab qui provoque cela est la
suivante :
Exemple de code 1.1 : La ligne d'initialisation du système dans /etc/inittab |
si::sysinit:/sbin/rc sysinit
|
En fait, cette ligne indique à init qu'il doit exécuter /sbin/rc
sysinit pour initialiser le système. C'est le script /sbin/rc
qui fait vraiment le travail d'initialisation et pas init qui ne fait
que déléguer les tâches.
Ensuite, init exécute tous les scripts vers lesquels un lien symbolique
est défini dans /etc/runlevels/boot. La ligne suivante provoque
cela :
Exemple de code 1.2 : L'initialisation du système, suite |
rc::bootwait:/sbin/rc boot
|
Encore une fois, le script rc fait le travail. Remarquez que l'option
boot passée au script rc correspond au nom du sous-répertoire qui
se trouve dans /etc/runlevels.
Ensuite, init lit son fichier de configuration pour savoir quel
runlevel il doit exécuter (N.D.T. : un « runlevel », ou
niveau d'exécution, correspond à l'état dans lequel il faut amener la machine).
La ligne suivante définit le niveau d'exécution :
Exemple de code 1.3 : La ligne initdefault |
id:3:initdefault:
|
Dans ce cas (la majorité des utilisateurs de Gentoo sont dans ce cas), le
niveau d'exécution est le numéro 3. Avec ce numéro, init trouve ce qu'il
doit exécuter pour lancer le niveau d'exécution 3 :
Exemple de code 1.4 : Les définitions des niveaux d'exécution |
l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
|
La ligne qui définit le niveau 3 utilise à nouveau le script rc pour
démarrer les services, cette fois avec le paramètre default. Remarquez
que, encore une fois, le paramètre correspond au nom du sous-répertoire dans
/etc/runlevels.
Quand le script rc a terminé, init trouve la liste des consoles
virtuelles à activer et quelles commandes il doit utiliser dans son fichier de
configuration :
Exemple de code 1.5 : La définition des consoles virtuelles |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
|
Qu'est-ce qu'un niveau d'exécution ?
Vous avez constaté que init numérote les niveaux d'exécution qu'il doit
activer. Un niveau d'exécution définit un état dans lequel votre système se
trouve et contient les scripts nécessaires pour entrer dans ou quitter cet
état.
Dans Gentoo, sept niveaux d'exécution sont définis :trois internes et
quatre définis par l'utilisateur. Les niveaux d'exécution internes sont
sysinit, shutdown et reboot et sont utilisés
respectivement pour initialiser, éteindre et redémarrer le système.
Les niveaux d'exécution définis par l'utilisateur sont ceux qui correspondent à
un sous-répertoire dans /etc/runlevels : boot,
default, nonetwork et single. Le niveau
d'exécution boot est utilisé pour démarrer tous les services
système utilisés par les autres niveaux d'exécution. Les autres niveaux
d'exécution se différencient par les services qu'ils activent :
default est utilisé en temps normal, nonetwork est
utilisé quand aucune connexion réseau n'est souhaitée et single
est utilisé pour résoudre d'éventuels problèmes du système.
Utiliser les scripts d'initialisation
Les scripts que rc exécute sont appelés des scripts
d'initialisation. Chaque script peut être exécuté avec les options
start, stop, restart, pause, zap,
status, ineed, iuse, needsme, usesme ou
broken.
Pour démarrer, arrêter ou relancer un service (et les autres services
nécessaires éventuels), utilisez start, stop et restart.
Exemple de code 1.6 : Démarrer postfix |
# /etc/init.d/postfix start
|
Note :
Seuls les services qui ont besoin du service spécifié sont arrêtés ou
redémarrés. Les services qui l'utilisent ne sont pas affectés.
|
Pour stopper un service sans toucher aux services qui l'utilisent, utilisez
l'option pause :
Exemple de code 1.7 : Stopper postfix sans toucher aux services qui l'utilisent |
# /etc/init.d/postfix pause
|
Pour afficher le statut d'un service (démarré, arrêté, en pause), utilisez
l'option status :
Exemple de code 1.8 : Afficher le statut du service postfix |
# /etc/init.d/postfix status
|
Si le système affirme qu'un service est actif, mais que vous savez qu'il
ne l'est pas, utilisez l'option zap pour réinitialiser son statut à
« arrêté ».
Exemple de code 1.9 : Réinitialiser le statut de postfix |
# /etc/init.d/postfix zap
|
Vous pouvez aussi afficher les services dont un service a besoin avec les
options iuse ou ineed. Avec l'option ineed, les services
réellement nécessaires sont affichés. Avec iuse, ce sont les services
qui peuvent être utilisés sans être indispensables qui sont affichés.
Exemple de code 1.10 : Afficher la liste des services dont Postfix a besoin |
# /etc/init.d/postfix ineed
|
De la même façon, vous pouvez afficher la liste des services qui ont besoin
(needsme) ou qui utilisent (usesme) un service particulier :
Exemple de code 1.11 : Afficher la liste des services qui ont besoin de Postfix |
# /etc/init.d/postfix needsme
|
Enfin, vous pouvez aussi demander la liste des services requis qui
manquent :
Exemple de code 1.12 : Afficher la liste des services manquants dont Postfix a besoin |
# /etc/init.d/postfix broken
|
4.b. Utiliser rc-update
Qu'est-ce que rc-update ?
Gentoo construit un arbre de dépendances pour déterminer l'ordre d'exécution
des services. Cela est loin d'être trivial et nous avons donc créé des outils
qui facilitent l'administration des niveaux d'exécution et des scripts
d'initialisation.
La commande rc-update permet d'ajouter ou d'enlever un script d'un
niveau d'exécution. Cette commande utilise automatiquement le script
depscan.sh qui reconstruit l'arbre des dépendances.
Ajouter et enlever des services
Vous avez déjà ajouté des scripts d'initialisation au niveau d'exécution
« default » pendant l'installation de Gentoo. Vous ignoriez alors la
signification de « default », mais maintenant, vous la connaissez. Le
script rc-update a besoin d'un second argument qui spécifie l'action à
effectuer : add, del ou show pour respectivement
ajouter, supprimer ou afficher.
Pour ajouter ou supprimer un service, ajoutez simplement add ou
del à la commande rc-update et spécifiez ensuite le nom du script
d'initialisation et le niveau d'exécution. Par exemple :
Exemple de code 2.1 : Supprimer Postfix du niveau d'exécution « default » |
# rc-update del postfix default
|
La commande rc-update -v show affiche la liste des scripts
d'initialisation disponibles et les niveaux d'exécution dans lesquels ils ont
été ajoutés :
Exemple de code 2.2 : Afficher la liste des scripts d'initialisation |
# rc-update -v show
|
Vous pouvez aussi lancer rc-update show (sans l'option -v) pour
simplement voir les scripts d'initialisation activés et leurs niveaux
d'exécution.
4.c. Configurer les services
Pourquoi encore configurer ?
Les scripts d'initialisation peuvent être complexes. Il vaut donc mieux éviter
que les utilisateurs ne doivent les modifier. Cela évite bien des problèmes.
Cependant, les services ont parfois besoin d'être configurés ou de recevoir
certaines options.
Une autre raison pour séparer les scripts de leur configuration est que cela
vous permet de mettre à jour les scripts sans que leur configuration ne soit
perdue.
Le répertoire /etc/conf.d
Gentoo offre un système facile pour configurer les services. Chaque script
d'initialisation qui peut être configuré a un fichier de configuration dans le
répertoire /etc/conf.d. Par exemple, le script d'initialisation
d'apache2 (/etc/init.d/apache2) a un fichier de configuration
/etc/conf.d/apache2 qui contient les options à passer au serveur
Apache 2 quand ce dernier est lancé.
Exemple de code 3.1 : Variables définies dans /etc/conf.d/apache2 |
APACHE2_OPTS="-D PHP5"
|
Un tel fichier de configuration ne contient que des définitions de
variables (tout comme /etc/make.conf), ce qui permet de configurer
facilement un service. Cela permet aussi de fournir des explications sur ces
options sous forme de commentaires.
4.d. Écrire un script d'initialisation
Dois-je faire cela ?
Non. Rédiger un script d'initialisation n'est généralement pas nécessaire
puisque Gentoo fournit des scripts complets pour tous les services supportés.
Cependant, si vous avez installé un service sans l'aide de Portage, vous devrez
sans doute écrire un tel script.
N'utilisez pas le script fourni avec le logiciel à moins qu'il ne soit écrit
spécifiquement pour Gentoo, car les scripts d'initialisation de Gentoo ne sont
pas compatibles avec ceux des autres distributions.
Structure
La structure de base d'un script d'initialisation est décrite ci-dessous.
Exemple de code 4.1 : Structure de base d'un script d'initialisation |
#!/sbin/runscript
depend() {
}
start() {
}
stop() {
}
restart() {
}
|
La partie start() est indispensable, les autres sont
facultatives.
Dépendances
Il existe deux types de dépendances : use et need. Comme
mentionné précédemment, la dépendance need est plus stricte que
use. Vous devez faire suivre le type de dépendance par le nom du service
dont votre service dépend, ou par une dépendance virtuelle.
Une dépendance virtuelle est une dépendance qui peut être satisfaite par
plusieurs services différents. Par exemple, votre service pourrait dépendre du
système de journalisation qui peut être fourni par plusieurs services
différents (metalogd, syslog-ng, sysklogd...) Étant donné que votre service ne
peut pas dépendre de tous ces services (on ne peut installer qu'un seul système
de journalisation), nous avons défini une seule dépendance virtuelle que chacun
de ces services satisfait.
Jetons un œil aux dépendances du service postfix.
Exemple de code 4.2 : Dépendances de Postfix |
depend() {
need net
use logger dns
provide mta
}
|
Comme vous pouvez le voir, postfix :
-
a besoin du service virtuel net qui est fourni par
/etc/init.d/net.eth0, par exemple ;
-
utilise un système de journalisation (service virtuel logger) qui est
fourni par /etc/init.d/syslog-ng, par exemple ;
-
utilise le service (virtuel) dns qui est fourni par
/etc/init.d/named, par exemple ;
-
fournit le service virtuel mta qui indique qu'un serveur de courrier
est disponible.
Ordonner la séquence d'exécution
Dans certains cas, vous voudrez peut-être démarrer un service avant ou après un
autre, pour autant que cet autre service soit disponible. Notez qu'il ne s'agit
plus d'une dépendance, mais simplement d'une demande de lancement de services
dans un ordre défini au sein d'un même niveau d'exécution. Pour définir une
séquence d'exécution, utilisez les mots-clefs before ou after.
Voyez, par exemple, le service portmap :
Exemple de code 4.3 : La fonction depend() du service Portmap |
depend() {
need net
before inetd
before xinetd
}
|
Vous pouvez aussi remplacer le nom de service par une étoile ("*") pour
spécifier tous les services d'un niveau d'exécution, mais cela n'est pas
recommandé.
Exemple de code 4.4 : Lancer un script avant tous les autres dans un niveau d'exécution |
depend() {
before *
}
|
Si votre service doit écrire sur des disques locaux, il aura besoin du
localmount. S'il place quelque chose dans /var/run, tel
un fichier .pid, alors il devra démarrer après bootmisc :
Exemple de code 4.5 : Exemple de fonction depend() |
depend() {
need localmount
after bootmisc
}
|
Fonctions standard
En plus de la fonction depend(), vous devez définir la fonction
start() qui doit contenir les commandes nécessaires pour activer le
service. Il est conseillé d'utiliser les fonctions ebegin et eend
pour afficher des messages à l'écran et ainsi informer l'utilisateur que le
service démarre.
Exemple de code 4.6 : Exemple de fonction start() |
start() {
ebegin "Starting my_service"
start-stop-daemon --start --exec /chemin/vers/mon_service \
--pidfile /chemin/vers//mon_fichier_pid
eend $?
}
|
Les options --exec et --pidfile devraient être utilisées
dans les fonctions start et stop. Si le service ne crée pas de fichier .pid,
alors utilisez --make-pidfile, si possible, bien que vous devriez
le tester pour en être sûr. Dans le cas contraire, n'utilisez pas de fichier
.pid. Vous pouvez aussi ajouter --quiet aux options
start-stop-daemon, bien que cela soit déconseillé à moins que le
service soit extrêmement verbeux. En effet, utiliser --quiet peut
cacher des informations de débogage utiles si le démarrage du service
échoue.
Note :
Assurez-vous que --exec appelle effectivement un service et pas
simplement un script shell qui lance des services (c'est ce que le script
init est censé faire).
|
Vous trouverez plus d'exemples de fonctions start() dans les sources des
scripts d'initialisation, localisés dans le répertoire
/etc/init.d.
Vous pouvez aussi définir les fonctions facultatives stop() et
restart() pour respectivement arrêter et relancer un service, mais
Gentoo est capable de s'en passer si vous avez utilisé la commande
start-stop-daemon.
Bien que vous ne devriez pas créer de fonction stop(), en
voici quand même un exemple :
Exemple de code 4.7 : Exemple de fonction stop() |
stop() {
ebegin "Arrêt de mon_service"
start-stop-daemon --stop --exec /chemin/vers/mon_service \
--pidfile /chemin/vers/mon_fichier_pid
eend $?
}
|
Si votre service exécute un script (Bash, Python ou Perl par exemple) dont le
nom change par la suite (par exemple, toto.py devient toto), il
faut alors ajouter l'option --name à la commande
start-stop-daemon. Vous devez y spécifier le nom du script après
changement. Dans cet exemple, un service démarre toto.py dont le nom
devient toto :
Exemple de code 4.8 : Un service qui lance le script toto |
start() {
ebegin "Démarrage de mon_script"
start-stop-daemon --start --exec /chemin/vers/mon_script \
--pidfile /chemin/vers/mon_fichier_pid --name toto
eend $?
}
|
Pour de plus amples informations, un excellent manuel est disponible pour la
commande start-stop-daemon :
Exemple de code 4.9 : Consulter le manuel de start-stop-daemon |
$ man start-stop-daemon
|
Les scripts d'initialisation utilisent bash. Vous pouvez utiliser toutes
les fonctionnalités de bash dans vos scripts.
Ajouter une option non prévue
Si vous voulez utiliser une option non prévue par nos scripts, vous devez
l'ajouter à la variable opts et créer une fonction qui a le même nom. Par
exemple, pour ajouter une option restartdelay :
Exemple de code 4.10 : Ajouter une option restartdelay |
opts="${opts} restartdelay"
restartdelay() {
stop
sleep 3
start
}
|
Variables de configuration d'un service
Vous ne devez rien faire de particulier pour utiliser un fichier de
configuration dans /etc/conf.d : avant que votre script
d'initalisation ne soit exécuté, les variables des fichiers suivants sont
initialisées dans cet ordre :
- /etc/conf.d/<votre_script>
- /etc/conf.d/basic
- /etc/rc.conf
De plus, si votre script fournit un service virtuel (comme net),
le fichier de configuration correspondant (comme /etc/conf.d/net)
sera également lu.
4.e. Modifier le comportement des niveaux d'exécution
Quel intérêt et pour qui ?
Les utilisateurs d'ordinateurs portables connaissent bien le problème :
vous devez démarrer net.eth0 à la maison, mais pas lorsque vous êtes en
vadrouille puis que vous n'êtes alors plus connecté à votre réseau. Vous pouvez
adapter le comportement de Gentoo.
Par exemple, vous pouvez créer un second niveau d'exécution similaire au niveau
« default », mais sans les options réseau. Vous pourrez ensuite
sélectionner le niveau d'exécution au démarrage de votre machine.
Utiliser « softlevel »
Créez votre second niveau d'exécution similaire à « default ». Dans
notre exemple, nous créons un niveau « offline ».
Exemple de code 5.1 : Créer le répertoire du nouveau niveau d'exécution |
# mkdir /etc/runlevels/offline
|
Ajoutez les scripts d'initialisation à votre nouveau niveau d'exécution. Par
exemple, pour copier le niveau « default » sauf le script
net.eth0 :
Exemple de code 5.2 : Recopier les scripts d'initialisation |
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
# rc-update del net.eth0 offline
# rc-update show offline
acpid | offline
domainname | offline
local | offline
net.eth0 |
|
Même si net.eth0 a été retiré du niveau d'exécution offline,
udev va quand même essayer de démarrer les interfaces qu'il détecte
et lancer les services associés. C'est pourquoi vous devez ajouter les
services réseaux que vous ne souhaitez pas voir démarrés au fichier
/etc/conf.d/rc (cela est vrai pour tout autre service pouvant
être lancé par udev) :
Exemple de code 5.3 : Désactiver un service démarré par une interface dans /etc/conf.d/rc |
RC_COLDPLUG="yes"
RC_PLUG_SERVICES="!net.eth0"
|
Note :
Vous trouverez plus d'informations sur les services démarrés par les
interfaces en consultant les commentaires du fichier
/etc/conf.d/rc.
|
Ensuite, modifiez la configuration de votre chargeur de démarrage pour y
ajouter une nouvelle option pour le niveau offline. Par exemple, pour
grub, modifiez /boot/grub/grub.conf :
Exemple de code 5.4 : Ajouter une entrée dans le menu de démarrage |
title Gentoo Linux Offline
root (hd0,0)
kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline
|
Voilà, c'est terminé. Si vous redémarrez votre machine et que vous choisissez
la nouvelle entrée, le niveau d'exécution offline sera utilisé au lieu
du niveau default.
Utiliser « bootlevel »
Vous pouvez aussi remplacer le niveau d'exécution « boot » avec
l'option bootlevel exactement de la même façon qu'avec softlevel.
5. Variables d'environnement
5.a. Variables d'environnement ?
Que sont-elles ?
Une variable d'environnement est un objet nommé qui contient des informations
utilisées par une ou plusieurs applications. Beaucoup d'utilisateurs
(particulièrement les nouveaux Linuxiens) trouvent que c'est un peu trop
compliqué et ingérable. C'est bien sûr faux : en utilisant des variables
d'environnement, on peut changer facilement la valeur d'une configuration pour
une ou plusieurs applications.
Exemples importants
Le tableau suivant liste un certain nombre de variables utilisées par le système
Linux et décrit leur utilisation. Des exemples de valeurs seront présentés après
le tableau.
| Variable |
Description |
| PATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels le système cherche des fichiers exécutables. Si vous entrez le
nom d'un exécutable (tel que ls, rc-update ou emerge),
mais que cet exécutable n'est pas situé dans un des répertoires listés,
votre système ne l'exécutera pas (tant que vous n'aurez pas spécifié le
chemin complet avec ligne de commande, tel que /bin/ls).
|
| ROOTPATH |
Cette variable a la même fonction que PATH, mais celle-ci liste les
répertoires qui doivent être parcourus lorsque l'utilisateur root entre une
commande.
|
| LDPATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels l'éditeur de liens dynamique cherche les bibliothèques.
|
| MANPATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels la commande man cherche les pages man.
|
| INFODIR |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels la commande info cherche les pages info.
|
| PAGER |
Cette variable contient le chemin vers le programme utilisé pour lister le
contenu des fichiers (tel que less ou more).
|
| EDITOR |
Cette variable contient le chemin vers le programme utilisé pour éditer le
contenu des fichiers (tel que nano ou vi).
|
| KDEDIRS |
Cette variable contient une liste de répertoires séparés par des deux-points
qui contiennent les éléments spécifiques à KDE.
|
| CONFIG_PROTECT |
Cette variable contient une liste de répertoires séparés par des
espaces qui doivent être préservés par Portage pendant les mises à
jour.
|
| CONFIG_PROTECT_MASK |
Cette variable contient une liste de répertoires séparés par des
espaces qui ne doivent pas être préservés par Portage pendant les
mises à jour.
|
Voici un exemple de définition de toutes ces variables :
Exemple de code 1.1 : Exemple de définitions |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
|
5.b. Définir des variables globalement
Le répertoire /etc/env.d
Pour centraliser les définitons de ces variables, la distribution Gentoo utilise le
répertoire /etc/env.d. Dans ce répertoire, vous trouverez un certain
nombre de fichiers tels que 00basic, 05gcc, etc. qui
contiennent les variables requises par les applications mentionnées dans leurs
noms.
Par exemple, quand vous installez gcc, un fichier nommé
05gcc est créé par l'ebuild et contient les définitions des
variables suivantes :
Exemple de code 2.1 : /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
Les autres distributions vous disent de changer ou d'ajouter ces variables
d'environnement dans /etc/profile ou ailleurs. Par contre, Gentoo
vous facilite la maintenance et l'administration de ces
variables d'environnement, ce qui vous évite de vous soucier des nombreux
fichiers qui peuvent contenir ces variables d'environnement. (Cela profite
également au système Portage.)
Par exemple, lorsque gcc est mis à jour, le fichier
/etc/env.d/05gcc est aussi mis à jour sans que l'utilisateur ne
fasse quoi que se soit.
Cela n'est pas uniquement profitable à Portage, mais aussi à vous, en tant
qu'utilisateur. Occasionnellement, vous serez amené à définir des variables
d'environnement pour tout le système. Par exemple, avec la variable
http_proxy. Au lieu de vous embêter avec /etc/profile,
vous devez juste créer un fichier (/etc/env.d/99local)
et y entrer vos définitions :
Exemple de code 2.2 : /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
En utilisant le même fichier pour toutes vos variables, vous avez une vue
d'ensemble aisée de toutes les variables que vous avez définies.
Le script env-update
Plusieurs fichiers dans /etc/env.d définissent la variable
PATH. Ce n'est pas une erreur : quand vous lancez
env-update, celui-ci concatènera les définitions avant de mettre à jour
les variables d'environnement. Ainsi, il aide les paquets (et les utilisateurs)
à ajouter leurs propres variables d'environnement sans interférer avec les
valeurs déjà définies.
Le script env-update liste les valeurs des fichiers de
/etc/env.d par ordre alphabétique. Les noms des fichiers dans
/etc/env.d doivent commencer par deux chiffres décimaux.
Exemple de code 2.3 : Ordre de mise à jour par env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
Cette concaténation de définitions pour la même variable n'est réalisée que
pour KDEDIRS, PATH, LDPATH, MANPATH,
INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT,
CONFIG_PROTECT_MASK, PRELINK_PATH et PRELINK_PATH_MASK.
Les autres variables reçoivent uniquement la dernière valeur définie.
Quand vous lancez env-update, le script crée toutes les variables
d'environnement et les place dans /etc/profile.env (qui est utilisé
par /etc/profile). Il extrait aussi les informations de la variable
LDPATH et les utilise pour créer /etc/ld.so.conf. Après
cela, il lance ldconfig pour créer le fichier
/etc/ld.so.cache utilisé par l'éditeur de liens dynamique.
Si vous voulez connaitre le résultat de env-update immédiatement après
son exécution, lancez la commande suivante pour mettre votre système à jour.
Les utilisateurs qui ont installé Gentoo eux-même se souviendront surement
que cela se trouvait dans les instructions d'installation :
Exemple de code 2.4 : Mettre l'environnement à jour |
# env-update && source /etc/profile
|
Note :
La commande ci-dessus ne met à jour que les variables de votre terminal courant,
des nouvelles consoles et leurs enfants. Donc, si vous êtes sous X11,
vous devrez soit taper source /etc/profile dans chaque nouveau terminal
ouvert, soit relancer X afin que la source des nouveaux terminaux possède les
bonnes variables. Si vous utiliser un gestionnaire de session (xdm, kdm,
gdm...), passez root et tapez /etc/init.d/xdm restart. Sinon, vous devrez
vous déloguer et revenir dans X pour avoir les nouvelles variables.
|
Important :
Vous ne pouvez pas utiliser de variables d'environnement lors d'une définition
de variable. C'est-à-dire que, par exemple, FOO="$BAR" (où $BAR
est une autre variable) est interdit.
|
5.c. Définir des variables localement
Spécifiques à un utilisateur
Vous n'avez pas toujours besoin de définir des variables d'environnement
globalement. Par exemple, vous pourriez avoir besoin d'ajouter
/home/my_user/bin et le répertoire courant (celui dans lequel l'utilisateur se trouve quand il lance une commande) à la variable PATH, mais vous ne voulez
pas que les autres utilisateurs de votre système l'aient aussi dans PATH.
Si vous voulez définir une variable d'environnement localement, vous devriez
utiliser ~/.bashrc ou ~/.bash_profile :
Exemple de code 3.1 : Étendre PATH pour un usage local avec ~/.bashrc |
PATH="${PATH}:/home/my_user/bin:"
|
Quand vous vous réidentifierez, votre variable PATH sera mise à jour.
Spécifiques à une session
Quelquefois, une définition plus spécifique est requise. Vous voudriez être
capable d'utiliser des binaires d'un répertoire temporaire que vous avez créé
sans utiliser le chemin complet ou éditer ~/.bashrc qui vous
prendrait trop de temps.
Dans ce cas-ci, vous pouvez juste définir la variable PATH dans votre
session courante en utilisant la commande export. Tant que vous ne vous
serez pas déconnecté, la variable PATH utilisera la valeur temporaire.
Exemple de code 3.2 : Définir une variable d'environnement spécifique à une session |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
C. Utiliser Portage
1. Fichiers et répertoires
1.a. Les fichiers utilisés par Portage
Configurer Portage
La configuration par défaut de Portage se trouve dans le fichier
/etc/make.globals. Vous remarquerez que toute la configuration de
Portage se fait grâce à des variables. Les variables et leur utilisation sont
décrites ci-dessous.
Puisque certaines directives de configuration diffèrent d'une architecture à
l'autre, Portage utilise aussi plusieurs fichiers de configuration qui font
partie de votre profil. Le profil sélectionné est celui vers qui le lien
/etc/make.profile/make.defaults pointe. La configuration de
Portage réside dans les différents fichiers make.defaults situés
dans l'arborescence qui mène au répertoire de votre profil. Nous aborderons les
profils et le répertoire /etc/make.profile plus loin dans ce
document.
Pour modifier une variable de configuration, ne modifiez ni le fichier
/etc/make.globals, ni les fichiers
make.defaults. Modifiez plutôt /etc/make.conf qui a
priorité sur les autres fichiers. Vous trouverez aussi un fichier
/usr/share/portage/config/make.conf.example, un fichier d'exemple
que vous pouvez utiliser pour configurer votre propre
/etc/make.conf.
Vous pouvez aussi définir ces variables dans votre environnement, mais nous ne
recommandons pas cette pratique.
Informations spécifiques au profil
Nous avons déjà mentionné le répertoire /etc/make.profile. Ce
n'est pas vraiment un répertoire, mais un lien symbolique vers un profil qui se
trouve, par défaut, dans /usr/portage/profiles ; vous pouvez
créer des profils ailleurs. Ce lien symbolique définit le profil utilisé par
votre système.
Un profil contient des informations spécifiques pour chaque architecture telles
que la liste des paquets qui forment un système de base, une liste de paquets
qui ne fonctionnent pas ou qui sont masqués pour ce profil, etc.
Configuration par l'utilisateur
Pour influencer le comportement de Portage, vous devrez modifier des fichiers
dans le répertoire /etc/portage. Il est vivement recommandé
d'utiliser ces fichiers et de ne pas utiliser de variables
d'environnement.
Vous pouvez créer les fichiers suivants dans le répertoire
/etc/portage :
-
package.mask contient la liste des paquets que vous voulez ne
jamais installer.
-
package.unmask contient la liste des paquets que vous voulez
installer bien qu'ils aient été masqués par les développeurs Gentoo.
-
package.keywords contient la liste des paquets que vous voulez
installer même s'ils ne sont pas (encore) considérés stables pour votre
architecture ou votre système.
-
package.use contient la liste des options de la variable USE
que vous voulez appliquer à certains paquets, mais que vous ne voulez pas
utiliser pour tout votre système.
Ce ne sont pas forcément des fichiers. Vous pouvez choisir de créer des
répertoires qui contiendraient un fichier par paquet. La page man contient plus
d'information à propos de ce que l'on peut faire avec le répertoire
/etc/portage et une liste exhaustive des fichiers qui influencent
le comportement de Portage.
Exemple de code 1.1 : Lire la page man de Portage |
$ man portage
|
Déplacer les fichiers et les répertoires de Portage
Les fichiers de configuration mentionnés ci-dessus ne peuvent pas se trouver
ailleurs. Portage les recherche toujours au même endroit. Cependant, Portage
peut être configuré pour utiliser d'autres répertoires pour certains
fichiers : le répertoire temporaire d'installation, les sources, l'arbre
Portage, etc.
Par défaut, tous ces fichiers sont stockés dans des répertoires bien connus,
mais ils peuvent être stockés ailleurs en fonction de variables définies dans
le fichier /etc/make.conf. Ce qui suit est consacré aux différents
répertoires utilisés par Portage et à la methode à utiliser pour les déplacer.
Ce document n'est pas une liste exhaustive de tous les répertoires disponibles.
Cette liste est disponible dans les pages man de Portage et de
make.conf :
Exemple de code 1.2 : Lire les pages man de Portage et de make.conf |
$ man portage
$ man make.conf
|
1.b. Emplacemements des fichiers
L'arbre Portage
Le répertoire par défaut pour l'arbre Portage est /usr/portage. La
variable PORTDIR peut être utilisée pour définir un autre emplacement.
N'oubliez pas de rediriger le lien symbolique /etc/make.profile
vers le répertoire ad hoc.
Si vous redéfinissez la variable PORTDIR, vous devriez sans doute redéfinir les
variables PKGDIR, DISTDIR et RPMDIR, car elles ne prendront pas la valeur de
PORTDIR en compte.
Binaires précompilés
Portage peut également utiliser des paquets précompilés lors des installations,
bien que cette fonctionnalité soit désactivée par défaut. Les paquets
précompilés sont placés dans le répertoire défini par la variable PKGDIR, qui
vaut /usr/portage/packages par défaut.
Code source
Le code source des applications est conservé dans
/usr/portage/distfiles. Cet emplacement est défini par la variable
DISTDIR.
Le cache de Portage
Le cache de Portage (contient les dates de modification, les paquets virtuels,
les informations de dépendance...) est stocké dans /var/cache/edb.
Ce n'est vraiment qu'un cache : vous pouvez l'effacer à un moment donné si
vous n'utilisez pas Portage à ce moment-là.
La base de données de Portage
Portage stocke l'état de votre système (quels paquets sont installés, quels
fichiers appartiennent à quel paquet...) dans /var/db/pkg. Ne
modifiez pas ces fichiers à la main ! Cela pourrait complètement
déboussoler Portage vis-à-vis de votre système.
1.c. Compiler les paquets
Fichiers temporaires
Portage sauve ses fichiers temporaires dans /var/tmp par défaut.
La variable PORTAGE_TMPDIR définit cet emplacement.
Si vous redéfinissez la variable PORTAGE_TMPDIR, vous devriez aussi redéfinir
BUILD_PREFIX, car elle ne tient pas compte du changement automatiquement.
Répertoire de compilation
Portage crée un répertoire de compilation pour chaque paquet dans le répertoire
/var/tmp/portage. Cet emplacement est défini par la variable
BUILD_PREFIX.
Localisation du système de fichiers principal
Par défaut, Portage installe tous les fichiers sur le système de fichiers
courant (/), mais il peut copier les fichiers ailleurs si vous
redéfinissez la variable ROOT. Cela peut être utile si vous voulez construire
des nouvelles images d'installation pour d'autres systèmes.
1.d. Fonctions de journalisation des événements
Les messages des ebuilds
Portage peut journaliser les messages des événements relatifs aux ebuilds en
utilisant un fichier pour chaque ebuild, mais uniquement si la variable
PORT_LOGDIR correspond à un répertoire dans lequel Portage peut écrire
(l'utilisateur portage doit disposer des permissions nécessaires).
Par défaut, cette variable n'est pas définie.
Si PORT_LOGDIR n'est pas définie, vous ne recevrez pas les messages des
événements relatifs à la construction des paquets avec le système de journal
actuel, mais vous devriez en recevoir quelques-uns avec le nouveau système
appelé elog. Si PORT_LOGDIR est définie et que vous utilisez elog,
vous recevrez à la fois les messages de construction et tous ceux qui sont
sauvegardés par elog, comme expliqué plus loin.
Portage propose un contrôle fin de la tenue du journal des événements
via elog :
-
PORTAGE_ELOG_CLASSES : Utilisez cette variable pour définir le type de
message à enregistrer. Vous pouvez utiliser n'importe quelle combinaison à
base d'info, warn, error, log et qa,
séparés par des espaces.
-
info : Enregistre les messages « einfo » produits
par un ebuild,
-
warn : Enregistre les messages « ewarn » produits
par un ebuild,
-
error : Enregistre les messages « eerror »
produits par un ebuild,
-
log : Enregistre les messages « elog » que l'on
trouve dans certains ebuilds,
-
qa : Enregistre les messages « QA Notice »
produits par un ebuild.
-
PORTAGE_ELOG_SYSTEM : Cette variable sert à choisir le ou les modules
qui vont traiter les messages. L'enregistrement est désactivé si cette
variable reste nulle. Vous pouvez utiliser n'importe quelle combinaison des
modules save, custom, syslog, mail,
save_summary, et mail_summary, séparés par un espace. Vous
devez sélectionner au moins un module pour utiliser elog.
-
save : Ce module active la sauvegarde d'un enregistrement
par paquet dans $PORT_LOGDIR/elog, ou
/var/log/portage/elog si $PORT_LOGDIR n'est pas définie,
-
custom : Transmet tous les messages à une commande définie
par l'utilisateur dans $PORTAGE_ELOG_COMMAND (détaillée plus bas),
-
syslog : Envoie tous les messages à l'outil de
journalisation des événements du système (syslog-ng par exemple),
-
mail : Envoie tous les messages à un serveur de mail défini
dans $PORTAGE_ELOG_MAILURI, détaillée plus loin dans ce document. Cette
fonction nécessite une version de Portage supérieure ou égale à 2.1.1,
-
save_summary : Similaire à save, mais rassemble tous
les messages dans $PORT_LOGDIR/elog/summary.log, ou
/var/log/portage/elog/summary.log si $PORT_LOGDIR n'est pas
définie,
-
mail_summary: Similaire à mail, mais envoie tous les
messages dans un seul mail quand emerge se termine.
-
PORTAGE_ELOG_COMMAND : Cette option n'est utile qu'avec le module
custom activé. C'est ici que vous spécifiez la commande qui va
traiter les événements. Vous pouvez utiliser deux variables pour
personnaliser votre commande : ${PACKAGE}, qui est le nom et la version
du paquet, et ${LOGFILE}, qui est le chemin absolu du fichier
d'enregistrement. Voici un exemple d'utilisation :
-
PORTAGE_ELOG_COMMAND="/chemin/vers/mon/enregistreur -p '\${PACKAGE}'
-f '\${LOGFILE}'"
-
PORTAGE_ELOG_MAILURI : Cette option sert à définir les paramètres du
module mail tels que l'adresse, le nom d'utilisateur, le mot de
passe, le serveur de mail et le numéro de port. Les paramètres par défaut
sont "root@localhost localhost".
-
Prenons l'exemple d'un serveur SMTP avec authentification basée sur le nom
et le mot de passe et qui écoute sur un port particulier (par défaut, un
serveur SMTP est configuré sur le port 25) :
-
PORTAGE_ELOG_MAILURI="utilisateur@mon.domaine
nom_utilisateur:mot_de_passe@smtp.mon.domaine:995"
-
PORTAGE_ELOG_MAILFROM : Vous permet de modifier le champ
« From » (expéditeur) des mails envoyés par elog. Par défaut, ces
mails ont pour expéditeur « portage ».
-
PORTAGE_ELOG_MAILSUBJECT : Avec cette variable, vous changez le sujet
des mails envoyés par elog. Notez que vous pouvez utiliser les variables
${PACKAGE} et ${HOST} pour afficher respectivement le couple nom/version du
paquet et le nom de domaine de la machine hôte sur laquelle tourne Portage.
-
Voici un exemple d'utilisation :
-
PORTAGE_ELOG_MAILSUBJECT="le paquet \${PACKAGE} a été construit sur
\${HOST} accompagné de messages."
Important :
Si vous utilisiez enotice avec Portage-2.0.*, vous devez le désinstaller
complétement car enotice est incompatible avec elog.
|
2. Les variables de configuration
2.a. Configuration de Portage
Portage peut être configuré grâce à de nombreuses variables que vous définissez
dans le fichier /etc/make.conf. Vous trouverez une description
complète de ces variables dans la page man de make.conf.
Pour la consulter, faites :
Exemple de code 1.1 : Lire la page man de make.conf |
$ man make.conf
|
2.b. Options relatives à la compilation
Les options de configuration et de compilation
Quand Portage compile une application, il passe les variables suivantes au
script de configuration et au compilateur :
-
CFLAGS et CXXFLAGS définissent les options des compilateurs C et C++.
-
CHOST définit le type d'hôte pour le script de configuration.
-
MAKEOPTS est passé au programme make et sert à définir le nombre de
tâches de compilation maximum à lancer en parallèle. Vous trouverez plus
d'information sur le programme make dans sa page man.
La variable USE est aussi utilisée par les processus de configuration et de
compilation et a déjà été documentée dans des chapitres précédents.
Options d'intégration
Quand Portage a fini d'intégrer une nouvelle version d'un paquet au système, il
supprime les fichiers des versions précédentes. Portage attend cinq secondes
avant de supprimer ces fichiers. Ce délai est paramétrable grâce à la variable
CLEAN_DELAY.
Vous pouvez aussi configurer emerge pour qu'il se lance
systématiquement accompagné de certaines options en configurant la variable
EMERGE_DEFAULT_OPTS. Cela peut-être utile pour des options comme --ask,
--verbose et --tree par exemple.
2.c. Protection des fichiers de configuration
Répertoires protégés
Portage remplace les fichiers des anciennes versions des logiciels par ceux des
nouvelles versions qu'il installe sauf si ceux-ci se trouvent dans un
répertoire protégé. La liste de ces répertoires est définie par la
variable CONFIG_PROTECT. Les répertoires sont séparés par des espaces. Ceux-ci
sont généralement des répertoires qui accueillent des fichiers de
configuration.
Un fichier qui devrait être installé dans un répertoire protégé est renommé et
l'utilisateur est averti de la présence d'un nouveau fichier de configuration.
Vous pouvez afficher la liste des répertoires protégés avec la commande
emerge --info :
Exemple de code 3.1 : Afficher la variable CONFIG_PROTECT |
$ emerge --info | grep 'CONFIG_PROTECT='
|
La section CONFIGURATION FILES de la page man d'emerge contient plus
d'informations à propos de la proctection des fichiers de configuration par
Portage :
Exemple de code 3.2 : Afficher l'aide de Portage sur la protection des fichiers |
$ man emerge
|
Exclure des répertoires
Vous pouvez exclure certains répertoires de cette protection en les définissant
dans la variable CONFIG_PROTECT_MASK.
2.d. Options de téléchargement
Les serveurs
Quand Portage a besoin de fichiers qui ne sont pas sur votre machine, il essaie
de les télécharger. Les serveurs qu'il contacte sont définis dans les variables
suivantes :
-
GENTOO_MIRRORS définit la liste des serveurs qui contiennent les sources
des paquets (les « distfiles »).
-
PORTAGE_BINHOST définit les serveurs qui offrent des paquets binaires
précompilés.
Une troisième variable contient le nom du serveur que Portage contacte quand il
doit synchroniser son arbre :
-
SYNC définit le serveur utilisé pour synchroniser l'arbre Portage.
Les variables GENTOO_MIRRORS et SYNC peuvent être définies automatiquement par
le programme mirrorselect. Vous devez l'installer avec la commande
emerge mirrorselect si vous comptez l'utiliser. Vous pouvez consulter
l'aide de mirrorselect avec la commande suivante :
Exemple de code 4.1 : Plus d'information sur mirrorselect |
# mirrorselect --help
|
Si vous devez utiliser un serveur mandataire (« proxy server »), vous
devez définir son nom dans les variables http_proxy, ftp_proxy et RSYNC_PROXY.
Outils de téléchargement
Quand Portage doit télécharger les sources d'un paquet, il utilise wget
par défaut. Vous pouvez lui faire utiliser une autre commande grâce à la
variable FETCHCOMMAND.
Portage est capable de reprendre un téléchargement interrompu. Il utilise aussi
la commande wget par défaut, mais vous pouvez changer cela grâce à la
variable RESUMECOMMAND.
Veuillez vérifier que les commandes que vous définissez dans les variables
FETCHCOMMAND et RESUMECOMMAND sauvent les fichiers téléchargés à la bonne
place. Utilisez les valeurs \${URI} et \${DISTDIR} pour indiquer respectivement
l'origine des sources et le répertoire dans lequel les enregistrer.
Vous pouvez même définir des commandes spécifiques par protocole grâce aux
variables FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP,
RESUMECOMMAND_FTP.
Options de rsync
Vous ne pouvez pas utiliser une autre commande que rsync pour mettre l'arbre
Portage à jour, mais vous pouvez configurer cette commande avec les variables
suivantes :
-
PORTAGE_RSYNC_OPTS définit un ensemble d'options, séparées par une
espace, qui seront utilisées par défaut. Cette variable ne devrait pas
être modifiée, sauf si vous savez exactement ce que vous faites.
Notez que certaines options sont indispensables et seront toujours
utilisées, même si elles ne sont plus dans PORTAGE_RSYNC_OPTS.
-
PORTAGE_RSYNC_EXTRA_OPTS est utilisée pour définir des options
supplémentaires à passer à rsync. On sépare ces options avec une
espace.
-
--timeout=<number> : définit le délai maximum (en secondes)
pour établir la connexion avec le serveur rsync. La valeur par défaut est
de 180 mais les utilisateurs de modem RTC ou ceux qui possèdent une
machine lente peuvent monter cette valeur à 300 et plus.
-
--exclude-from=/etc/portage/rsync_excludes est un fichier qui contient
la liste des paquets et/ou des catégories de paquets que rsync ignorera
pendant la mise à jour. Dans cet exemple, le ficher en question est
/etc/portage/rsync_excludes. La syntaxe à utiliser est
détaillée dans le document Diverger de
l'arbre officiel.
- --quiet : réduit les sorties à l'écran.
- --verbose : Imprime la liste complète des fichiers.
-
--progress : affiche une barre de progression pour chaque fichier.
-
PORTAGE_RSYNC_RETRIES est le nombre d'essais maximum pour tenter d'établir
une connexion avec le miroir (dont l'adresse est définie par la variable
SYNC). Par défaut, cette variable est égale à 3.
Pour plus d'informations sur toutes les options disponibles, référez-vous à
la page du manuel rsync.
2.e. Configuration de Gentoo
Choix de la branche
Vous pouvez définir la branche à utiliser avec la variable ACCEPT_KEYWORDS. La
valeur par défaut est la branche stable pour votre architecture. Vous trouverez
plus de détails à ce sujet dans le chapitre suivant.
Fonctionnalités de Portage
Vous pouvez activer certaines fonctionnalités de Portage grâce à la variable
FEATURES. Celles-ci ont déjà été abordées dans des chapitres précédents tels
que Portage et ses fonctionnalités.
2.f. Comportement de Portage
Gestion des ressources
La variable PORTAGE_NICENESS permet de réduire ou d'augmenter la valeur
« nice » avec laquelle Portage s'exécute. La valeur de
PORTAGE_NICENESS est ajoutée à la valeur « nice » en cours.
Cette valeur permet de rendre le processus de compilation plus ou moins
prioritaire. Une valeur élevée rend Portage moins prioritaire par rapport aux
autres processus et laisse le système plus disponible.
Pour plus d'information à propos de nice, veuillez consulter sa page
man :
Exemple de code 6.1 : La page man de nice |
$ man nice
|
Configuration de l'affichage
La variable NOCOLOR, dont la valeur par défaut est « false », indique
à Portage de ne pas utiliser de couleurs dans son affichage.
3. Faire cohabiter des branches différentes
3.a. Choisir sa branche
La branche stable
La variable ACCEPT_KEYWORDS définit quelle branche vous voulez utiliser. La
valeur par défaut est la branche stable pour votre architecture, par exemple
x86.
Il est recommandé de n'utiliser que la branche stable. Cependant, si la
stabilité des logiciels n'est pas votre première préoccupation ou si vous
souhaitez aider Gentoo et envoyer des rapports de bogues sur
http://bugs.gentoo.org, alors lisez ce qui suit.
La branche de test
Si vous désirez utiliser les versions les plus récentes des logiciels, vous
pouvez envisager de passer à la branche de test. Pour cela, ajoutez un ~
(tilde) devant le nom de votre architecture.
La branche de test désigne exactement ce que son nom indique - Test. Si
un paquet appartient à cette branche, cela signifie que les développeurs pensent
qu'il est fonctionnel mais qu'il n'a pas été suffisamment testé. Vous pouvez
très bien être le premier à découvrir un bogue sur le paquet, auquel cas vous
devriez remplir un rapport de bogue
pour que les développeurs soient au courant du problème.
Si vous décidez d'utiliser cette branche de test, attendez-vous à rencontrer
des problèmes de stabilité, des paquets imparfaits, notamment en ce qui
concerne les dépendances, des mises à jour fréquentes et donc beaucoup de
compilations, voire des paquets qui cessent de fonctionner. Si vous ne
maitrisez pas Gentoo ou si vous ne savez pas comment résoudre les problèmes
éventuels, il est fortement recommandé de vous en tenir à la branche stable.
Par exemple, pour utiliser la branche de test sur une machine x86, modifiez le
fichier /etc/make.conf comme suit :
Exemple de code 1.1 : Modifier la variable ACCEPT_KEYWORDS |
ACCEPT_KEYWORDS="~x86"
|
Si vous mettez votre système à jour maintenant, vous constaterez que
beaucoup de paquets vont être mis à jour. Veuillez noter qu'une fois
passé à la branche de test, il est pratiquement impossible de revenir à la
branche stable.
3.b. Mélanger les branches
L'emplacement package.keywords
Il est possible d'indiquer à Portage d'utiliser les versions de test pour
certains paquets tout en restant dans la branche stable. Pour cela, ajoutez le
nom du paquet dont vous voulez la version instable et sa catégorie dans le
fichier /etc/portage/package.keywords. Vous pouvez aussi créer un
répertoire (du même nom) et lister les paquets dans des fichiers contenus
dans ce répertoire. Par exemple, pour utiliser la version instable de
gnumeric, ajoutez :
Exemple de code 2.1 : Ajouter gnumeric dans /etc/portage/package.keywords, ligne complète |
app-office/gnumeric ~x86
|
Tester une version donnée
Si vous voulez tester une version donnée, mais ne voulez pas que Portage mette
cette version à jour par la suite, vous pouvez spécifier le numéro de version
désiré dans l'emplacement /etc/portage/package.keywords avec
l'opérateur =. Il est également possible de spécifier une plage de versions
avec les opérateurs <=, <, > ou >=.
Si vous spécifiez un numéro de version, vous devez utiliser un opérateur. Sans
numéro de version, vous ne pouvez pas utiliser d'opérateur.
Dans l'exemple suivant, demandons à Portage d'accepter la version 1.2.13 de
gnumeric :
Exemple de code 2.2 : Utiliser une version de test précise de gnumeric |
=app-office/gnumeric-1.2.13 ~x86
|
3.c. Utiliser des paquets masqués
L'emplacement package.unmask
Les développeurs Gentoo ne fournissent aucun support pour
l'utilisation de cet emplacement. Faites très attention quand vous l'utilisez.
Les demandes de support concernant package.unmask et/ou
package.mask ne seront pas considérées. Vous aurez été prévenu.
Si un paquet a été masqué par les développeurs Gentoo et que vous voulez
l'installer malgré les raisons précisées dans le fichier
package.mask (par défaut dans le répertoire
/usr/portage/profiles), ajoutez exactement la même ligne
dans le fichier /etc/portage/package.unmask (ou dans un fichier de
ce répertoire, si c'est un répertoire).
Par exemple, si =net-mail/hotwayd-0.8 a été masqué, vous pouvez le
rendre disponible en ajoutant la même ligne dans l'emplacement
package.unmask :
Exemple de code 3.1 : Exemple de /etc/portage/package.unmask |
=net-mail/hotwayd-0.8
|
L'emplacement package.mask
Si vous voulez empêcher Portage d'installer un paquet ou une version
particulière d'un paquet, vous pouvez ajouter son nom dans l'emplacement
/etc/portage/package.mask (soit dans ce fichier, soit dans un
fichier qui appartient à ce répertoire, s'il en est).
Par exemple, pour empêcher Portage d'installer des sources de noyaux plus
récentes que gentoo-sources-2.6.8.1, ajoutez la ligne suivante dans
l'emplacement package.mask :
Exemple de code 3.2 : Exemple de /etc/portage/package.mask |
>sys-kernel/gentoo-sources-2.6.8.1
|
4. Outils supplémentaires
4.a. dispatch-conf
L'outil dispatch-conf vous aide à intégrer les fichiers
._cfg0000_<nom>. Les fichiers
._cfg0000_<nom> sont créés par Portage quand un nouveau
fichier devrait en remplacer un autre dans un répertoire protégé par la
variable CONFIG_PROTECT.
Le programme dispatch-conf permet de garder une trace des modifications
apportées à vos fichiers de configuration. En effet, il stocke les différences
grâce au système de contrôle de versions RCS. Cela signifie que si vous faites
une erreur en modifiant un fichier de configuration, vous avez la possibilité
de revenir en arrière à tout moment.
Lorsque vous utilisez dispatch-conf pour mettre à jour un fichier, vous
avez le choix de le garder intact, de le remplacer par sa version mise à jour,
de le modifier directement ou d'intégrer les différences interactivement entre
la version actuelle et sa mise à jour. dispatch-conf peut même :
-
Intégrer automatiquement les fichiers où seuls des commentaires ont été
modifiés.
-
Intégrer automatiquement les fichiers qui ne varient que par des espaces,
des tabulations ou autres caractères « blancs ».
Commencez par éditer le fichier /etc/dispatch-conf.conf et par
créer le répertoire défini par la variable « archive-dir ».
Exemple de code 1.1 : Exécuter dispatch-conf |
# dispatch-conf
|
dispatch-conf va vous proposer chaque fichier de configuration ayant été
modifié, un par un. Pressez u (update) pour remplacer le fichier
actuel par sa mise à jour et continuer avec le fichier suivant. Pressez
z pour « zapper » (supprimer) cette mise à jour et continuer
avec le fichier suivant. Lorsque vous aurez traité tous les fichiers,
dispatch-conf terminera. Vous pouvez également presser q à
n'importe quel moment pour quitter.
Pour plus d'informations, allez donc voir la page man de dispatch-conf.
Elle vous dira comment intégrer les différences une par une entre une mise à
jour et le fichier actuel, comment éditer la mise à jour avant de remplacer la
version actuelle, comment voir les différences entre les deux, etc.
Exemple de code 1.2 : Lire la page man de dispatch-conf |
$ man dispatch-conf
|
4.b. etc-update
Vous pouvez aussi utiliser etc-update pour mettre à jour vos fichiers de
configuration. Il n'est pas aussi simple d'utilisation que
dispatch-conf, il contient moins de fonctionnalités, mais il peut
intégrer les différences d'une manière interactive et peut aussi s'occuper
automatiquement des mises à jour triviales.
Par contre, à la différence de dispatch-conf, etc-update ne garde
pas l'historique des modifications des fichiers. Une fois qu'un fichier
est modifié, l'ancienne version est irrécupérable. Alors, soyez très prudent,
l'utilisation d'etc-update est significativement moins sure que celle de
dispatch-conf.
Exemple de code 2.1 : Démarrer etc-update |
# etc-update
|
Après avoir intégré les modifications triviales, le programme affiche une liste
des fichiers protégés qui n'ont pas été remplacés et pour lesquels une mise à
jour est peut-être souhaitable. Les choix suivants sont indiqués au bas de la
liste :
Exemple de code 2.2 : Menu etc-update |
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
|
Si vous entrez -1, etc-update quitte et ne change rien aux
fichiers qui restent dans la liste. Si vous entrez -3 ou-5,
tous les fichiers seront remplacés par les nouvelles versions. Il est
donc très important de sélectionner les fichiers qui ne doivent pas être
remplacés automatiquement avant de choisir cette option. Il suffit d'entrer le
numéro du fichier dans la liste.
Par exemple, si vous sélectionnez le fichier /etc/pear.conf :
Exemple de code 2.3 : Mettre un fichier de configuration à jour |
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
|
Vous pouvez voir les différences entre le fichiers. Si vous pensez que la
nouvelle version peut être utilisée sur votre système, tapez 1. Si vous
pensez que la nouvelle version n'apporte rien qui ne vous soit utile ou qu'elle
n'est pas nécessaire, tapez 2. Si vous voulez intégrer des parties de la
nouvelle version de façon interactive, tapez 3.
Pendant l'intégration interactive, vous devez choisir entre les anciennes et
les nouvelles lignes. Les commandes suivantes vous permettent d'indiquer votre
choix :
Exemple de code 2.4 : Commandes disponibles pendant l'intégration interactive |
ed: Modifier et garder les deux versions avec un en-tête.
eb: Modifier et garder les deux versions.
el: Modifier et garder la version de gauche.
er: Modifier et garder la version de droite.
e: Saisir une nouvelle version.
l: Garder la version de gauche.
r: Garder la version de droite.
s: Garder les deux lignes, sans commentaire.
v: Garder les deux lignes, avec commentaire.
q: Quitter.
|
Après avoir traité les fichiers que vous jugez importants, vous pouvez laisser
Portage intégrer les fichiers restants. Le programme etc-update
n'insistera pas s'il n'y a plus de fichiers à intégrer.
4.c. quickpkg
Le programme quickpkg permet de créer un paquet binaire à partir d'un
paquet qui est déjà installé sur votre système. Un tel paquet binaire peut être
réinstallé sans devoir le recompiler. Il suffit de taper la liste des paquets à
construire.
Par exemple, pour créer des paquets binaires pour curl, arts et
procps :
Exemple de code 3.1 : Exemple d'utilisation de quickpkg |
# quickpkg curl arts procps
|
Les paquets seront placés dans le répertoire $PKGDIR/All
(/usr/portage/packages/All par défaut) et des liens symboliques
vers ceux-ci seront créés dans $PKGDIR/<catégorie>.
5. Diverger de l'arbre officiel
5.a. Utiliser un sous-ensemble de l'arbre Portage
Exclure des paquets ou des catégories
Vous pouvez mettre certains paquets ou certaines catégories à jour et en
ignorer d'autres. Portage fait exclure ces catégories ou paquets par la
commande rsync qu'il utilise pour l'action emerge --sync.
Dans /etc/make.conf, la variable PORTAGE_RSYNC_EXTRA_OPTS
doit définir le nom du fichier qui contient les filtres d'exclusion.
Exemple de code 1.1 : Définir le fichier qui contient les filtres d'exclusion dans /etc/make.conf |
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
|
Exemple de code 1.2 : Exclure tous les jeux dans /etc/portage/rsync_excludes |
games-*/*
|
Veuillez remarquer que cela peut causer des problèmes dans la gestion des
dépendances puisque de nouveaux paquets pourraient dépendre de paquets que vous
avez exclus.
5.b. Ajouter des ebuilds non officiels
Définir un répertoire superposé
Portage peut utiliser des ebuilds qui ne se trouvent pas dans l'arbre Portage
de Gentoo. Pour cela, créez un répertoire, par exemple
/usr/local/portage, dans lequel vous pourrez copier des ebuilds
d'origines diverses. Vous devrez utiliser la même structure que pour l'arbre
officiel.
Ensuite, définissez la variable PORTDIR_OVERLAY dans le fichier
/etc/make.conf et attribuez-lui le nom du répertoire que vous avez
créé. Portage utilisera alors les ebuilds qui se trouvent dans ce répertoire,
mais ne les modifiera pas lors de l'opération de synchronisation emerge
--sync.
Utiliser plusieurs sur-couches
Les utilisateurs avancés ont parfois besoin de conserver plusieurs répertoires
superposés, par exemple pour des ebuilds en test ou des arbres d'origines
diverses. Le paquet app-portage/gentoolkit-dev contient l'outil
gensync qui permet de maintenir ces répertoires à jour.
L'outil gensync permet de mettre tous les répertoires superposés à jour
en une seule opération. À chaque répertoire doit correrspondre un fichier
.syncsource dans le répertoire /etc/gensync/ qui
contient son nom, son emplacement, son identifiant, etc.
Supposons que vous avez deux répertoires superposés appelés java (pour
vos développements d'ebuils java) et entapps (pour les ebuilds utilisés
dans votre entreprise). Vous pouvez mettre vos répertoires à jour avec la
commande suivante :
Exemple de code 2.1 : Mettre vos répertoires Portage superposés à jour avec gensync |
# gensync java entapps
|
5.c. Paquets gérés hors de Portage
Utiliser Portage avec des paquets gérés manuellement
Dans certains cas, vous voudrez peut-être configurer, installer et maintenir
des paquets vous-même sans que Portage ne s'en mêle même si le paquet est
disponible dans l'arbre Portage. Des cas typiques sont le noyau et les pilotes
nvidia. Vous pouvez configurer Portage pour qu'il sache que certains paquets
ont été installés manuellement. On appelle cela « injecter un
paquet » et cela se fait grâce au fichier
/etc/portage/profile/package.provided.
Par exemple, pour informer Portage que vous avez installé le noyau
gentoo-sources-2.6.11.6 manuellement, ajoutez la ligne
suivante au fichier /etc/portage/profile/package.provided :
Exemple de code 3.1 : Une ligne dans package.provided |
sys-kernel/gentoo-sources-2.6.11.6
|
D. Configuration du réseau sous Gentoo
1. Préparation
1.a. Préparation
Note :
Ce document suppose que vous avez correctement configuré votre noyau et vos
modules en fonction de votre matériel et que vous connaissez le nom de vos
interfaces. De plus, ce guide procédera à la configuration d'eth0, mais
cela pourrait tout aussi bien être eth1, wlan0, etc.
|
Note :
Vous devez utiliser baselayout-1.11.11 ou supérieur pour pouvoir suivre
ce document.
|
Pour être prêt à configurer votre carte réseau, vous devez indiquer au système
RC (N.D.T : Configuration des ressources) de Gentoo le nom de cette
interface. Pour cela, un lien symbolique doit être créé de net.lo
vers net.eth0 dans le répertoire /etc/init.d/.
Exemple de code 1.1 : Déclarer une interface réseau |
# cd /etc/init.d
# ln -s net.lo net.eth0
|
Le système RC de Gentoo est à présent au courant pour votre interface. Il doit
maintenant savoir comment la configurer. Toutes les interfaces réseaux sont
configurées dans le fichier /etc/conf.d/net. Voici un exemple de
configuration en DHCP ou en adressage statique :
Exemple de code 1.2 : Exemples de /etc/conf.d/net |
config_eth0=( "dhcp" )
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )
config_eth0=( "192.168.0.7 netmask 255.255.255.0" )
routes_eth0=( "default via 192.168.0.1" )
|
Note :
Si vous ne spécifiez pas de configuration pour votre interface, elle sera
automatiquement configurée en DHCP.
|
Note :
CIDR signifie « Classless InterDomain Routing » (N.D.T : routage
sans tenir compte des classes). À l'origine, les adresses IPv4 étaient
classées A, B ou C. Ce vieux système de classification n'avait pas prévu la
popularité que connait aujourd'hui Internet et menaçait de ne plus pouvoir
offrir de nouvelles adresses. Le CIDR est un schéma d'adressage qui permet à
une adresse IP de désigner plusieurs adresses IP. Une adresse IP CIDR ressemble
à une adresse normale, sauf qu'elle se termine par un « / » (slash)
suivi d'un nombre. Par exemple : 192.168.0.0/16. Le CIDR est décrit en
anglais dans la RFC 1519.
|
Maintenant que notre interface est configurée, nous pouvons la démarrer et
l'arrêter grâce aux commandes suivantes :
Exemple de code 1.3 : Démarrage et arrêt du réseau |
# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop
|
Important :
Lorsque vous chercher à résoudre un problème de réseau, il est recommandé de
mettre RC_VERBOSE="yes" dans le fichier de configuration
/etc/conf.d/rc afin d'avoir plus d'informations sur ce qui se
passe.
|
Maintenant que vous avez démarré et arrêté votre carte réseau avec succès, vous
voulez peut-être qu'elle soit démarrée automatiquement lorsque Gentoo démarre.
Voici comment faire. La commande « rc » demande à Gentoo de démarrer
tous les scripts du niveau d'exécution actuel qui ne le sont pas.
Exemple de code 1.4 : Activer une interface réseau au démarrage du système |
# rc-update add net.eth0 default
# rc
|
2. Configuration avancée
2.a. Configuration avancée
La variable config_eth0 est le cœur de la configuration d'une interface.
Sa valeur est une liste d'instructions de haut niveau pour configurer une
interface (eth0 dans notre cas). Chaque commande de la liste
d'instructions est exécutée séquentiellement. L'interface est considérée active
si au moins une commande marche.
Voici une liste des instructions intégrées :
| Commande |
Description |
| null |
Ne fait rien. |
| noop |
Si l'interface est active et possède une adresse, alors annule sa
configuration en renvoyant un code de succès.
|
| Une adresse IPv4 ou IPv6 |
Ajoute l'adresse à l'interface. |
dhcp, adsl ou apipa
(ou bien une commande personnalisée venant d'une module tiers)
|
Exécute le module qui fournit la commande. Par exemple, dhcp
exécutera un module qui fournit le DHCP, ce qui peut être dhcpcd,
dhclient ou pump.
|
Si une commande échoue, vous pouvez spécifier une commande de secours. Celle-ci
doit correspondre exactement à la structure de configuration.
Vous pouvez enchainer ces commandes ensemble. Voici quelques vrais
exemples :
Exemple de code 1.1 : Exemples de configuration |
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
config_eth0=(
"noop"
"dhcp"
)
fallback_eth0=(
"null"
"apipa"
)
|
Note :
Lorsque vous utilisez le module ifconfig pour ajouter plusieurs
adresses, un alias d'interface est alors créé pour chaque adresse
supplémentaire. Donc, avec les deux exemples précédents, vous obtiendrez
eth0, eth0:1 et eth0:2. Vous ne pouvez rien faire de
particulier avec ces interfaces car le noyau et les applications considèreront
eth0:1 et eth0:2 comme n'étant juste qu'eth0.
|
Important :
L'ordre des commandes de secours est très important ! En effet, si nous
n'avions pas spécifié la commande null, alors la commande apipa
aurait été lancée si seule la commande noop avait échoué.
|
Note :
APIPA et
DHCP seront expliqués plus tard.
|
2.b. Dépendance du réseau
Les scripts de démarrage du répertoire /etc/init.d/ peuvent
dépendre d'une interface réseau particulière ou simplement de net.
Ce que signifie réellement net est configurable grâce à la variable
RC_NET_STRICT_CHECKING dans le fichier /etc/conf.d/rc.
| Valeur |
Description |
| none |
Le service net est toujours considéré comme actif. |
| no |
Cela signifie qu'au moins un service net.*, excepté
net.lo, doit être actif. Cela peut être utile pour les
utilisateurs de portables qui ont une interface wifi et une statique car
une seule interface active à la fois suffit.
|
| lo |
C'est la même chose que l'option no, mis à part que net.lo
compte. C'est utile pour les gens qui se fichent d'avoir forcément une
interface activée au démarrage du système.
|
| yes |
Ici, toutes les interfaces réseaux doivent être actives pour
que le service net soit considéré comme démarré.
|
Mais comment fait-on si net.br0 dépend de net.eth0 et
de net.eth1 ? net.eth1 peut être une interface
wifi ou bien une connexion ppp qui nécessite une configuration avant de pouvoir
être ajouté au pont réseau. Nous ne pouvons régler ce problème dans
/etc/init.d/net.br0 puisque c'est un lien symbolique vers
net.lo.
La réponse est que vous pouvez fabriquer votre propre fonction depend() dans
/etc/conf.d/net.
Exemple de code 2.1 : Les dépendances de net.br0 dans /etc/conf.d/net |
depend_br0() {
need net.eth0 net.eth1
}
|
Pour une explication plus détaillée des dépendances, veuillez consulter la
section « Écrire un script
d'initialisation » du Manuel Gentoo.
2.c. Noms et valeurs des variables
Le nom des variables est dynamique. En principe, il suit le schéma
variable_${interface|mac|essid|apmac}. Par exemple, la variable
dhcpcd_eth0 contient la valeur des options dhcpcd pour eth0 et
dhcpcd_essid contient la valeur des options dhcpcd pour quand une
interface se connecte à l'ESSID « essid ».
Cependant, il n'y a pas de règle pure et simple stipulant que les noms
d'interface doivent être de la forme ethX. En fait, de nombreuses interfaces
sans fil ont des noms tels que wlanX, raX ou encore ethX. Aussi, les interfaces
définies par l'utilisateur, telles que les ponts réseaux, peuvent avoir
n'importe quel nom, « foo » par exemple. Pour rendre la vie encore
plus intéressante, les bornes d'accès wifi peuvent avoir des noms qui
contiennent des caractères non alphanumériques (c'est important car vous pouvez
configurer les paramètres réseaux en fonction de l'ESSID)...
Le problème, dans tout ceci, c'est que Gentoo utilise des variables Bash pour
gérer le réseau... et Bash ne peut rien utiliser d'autre que les alphanumériques
anglais. Pour contourner cette limitation, nous transformons tout caractère qui
n'est pas un alphanumérique anglais en un souligné _.
Un autre problème de Bash est le contenu des variables : certains
caractères doivent être échappés. La parade est d'ajouter un antislash
\ devant chacun de ces caractères. Les caractères qui doivent
être échappés sont ", ' et \.
Dans cet exemple, nous utilisons un ESSID wifi car ils peuvent contenir un
ensemble plus large de caractères. Disons que nous devons utiliser l'ESSID
Mon "\ rézo :
Exemple de code 3.1 : Exemple de nom de variable |
dns_domain_Mon____r_zo="Mon \"\\ rézo"
|
3. Les modules réseaux
3.a. Les modules réseaux
Nous utilisons à présent des scripts réseaux modulaires, c'est-à-dire que nous
pouvons facilement ajouter du support pour un nouveau type d'interface ou des
nouveaux modules de configuration tout en gardant une compatibilité avec les
anciens.
Par défaut, un module se charge si le paquet nécessaire à son utilisation est
installé. Si vous spécifiez ici un module dont le paquet n'est pas installé,
vous obtiendrez alors une erreur vous indiquant quel paquet doit être installé
pour utiliser ce module. Typiquement, cette configuration n'est à faire que si
vous avez installé plusieurs paquets qui fournissent le même service et si vous
en préférez un en particulier.
Note :
Tous les réglages mentionnés ci-dessous se trouvent dans
etc/conf.d/net sauf mention contraire.
|
Exemple de code 1.1 : Choix des modules |
modules=( "iproute2" )
modules_eth0=( "pump" )
modules=( "!iwconfig" )
|
3.b. Outils de configuration d'interfaces réseau
Nous fournissons deux outils de configuration d'interfaces réseau
actuellement : ifconfig et iproute2. Vous avez besoin d'un
de ces deux outils pour pouvoir procéder à la configuration du réseau.
ifconfig est l'outil par défaut de Gentoo et est inclu dans le profil
« system ». proute2 est un paquet bien plus puissant et plus
flexible, mais n'est pas inclu par défaut.
Exemple de code 2.1 : Installer iproute2 |
# emerge sys-apps/iproute2
modules=( "iproute2" )
|
Puisqu'ifconfig et iproute2 font à peu près la même chose, nous
avons fait en sorte que la configuration de base fonctionne indifféremment avec
les deux modules. Par exemple, les deux extraits de code ci-dessous
fonctionnent quel que soit le module utilisé.
Exemple de code 2.2 : Exemple avec ifconfig ou iproute2 |
config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )
|
3.c. DHCP
Le DHCP est un moyen d'obtenir les informations nécessaires à la configuration
du réseau (adresse IP, serveurs DNS, passerelle, etc.) depuis un serveur DHCP.
Cela signifie que si un serveur DHCP est actif sur le réseau, vous n'avez qu'à
indiquer à chaque client d'utiliser DHCP et ce dernier se débrouillera tout
seul. Cependant, vous aurez peut-être quelque chose à configurer (réseau sans
fil, liaison PPP ou autre) avant de pouvoir utiliser le DHCP.
Le DHCP peut être fourni par dhclient, dhcpcd ou pump.
Chaque module DHCP a ses avantages et ses inconvénients. Voici un rapide
résumé.
| Module DHCP |
Paquet |
Avantages |
Inconvénients |
| dhclient |
net-misc/dhcp |
Produit par ISC, ceux-là même qui font le serveur DNS Bind.
Très configurable.
|
La configuration est trop complexe.
L'application est vraiment énorme.
Ne récupère pas les serveurs NTP en DHCP.
N'envoie pas le nom de la machine au serveur par défaut.
|
| dhcpcd |
net-misc/dhcpcd |
C'est le client par défaut de Gentoo depuis longtemps.
Ne s'appuie pas sur d'autre outils.
Est maintenu par l'équipe Gentoo.
|
Parfois lent.
Reste lancé même si l'adresse IP est allouée « pour toujours ».
|
| pump |
net-misc/pump |
Léger.
Ne repose pas sur d'autres outils.
|
N'est plus maintenu par ses développeurs.
Pas fiable, en particulier au travers des modems.
Ne sait pas récupérer les informations NIS depuis DHCP.
|
Si vous avez plus d'un client DHCP installé, vous devez spécifier lequel
utiliser, sinon nous utiliserons dhcpcd s'il est disponible.
Pour faire passer des options spécifiques au module dhcp, utilisez
module_eth0="..." en changeant « module » par le nom
du module DHCP à utiliser. Par exemple : dhcpcd_eth0.
Nous essayons de garder la configuration du DHCP relativement indépendante du
module utilisé. Ainsi, voici la liste des commandes utilisables avec la variable
dhcp_eth0. Par défaut, aucune n'est exécutée.
-
release : rend l'adresse IP afin qu'elle puisse être réutilisée.
-
nodns : n'écrase pas le fichier /etc/resolv.conf.
-
nontp : n'écrase pas le fichier /etc/ntp.conf.
-
nonis : n'écrase pas le fichier /etc/yp.conf.
Exemple de code 3.1 : Exemple de configuration DHCP dans /etc/conf.d/net |
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
Note :
dhcpcd et pump envoient le nom actuel de la machine au serveur
DHCP par défaut donc vous n'avez plus besoin de le spécifier.
|
3.d. L'ADSL avec PPPoE/PPPoA
Installons tout d'abord le logiciel pour gérer l'ADSL.
Exemple de code 4.1 : Installer le paquet ppp |
# emerge net-dialup/ppp
|
Note :
Vous devez utiliser >=baselayout-1.12.x pour avoir le support de PPPoA.
|
Ensuite, créez le script net PPP et le script net de l'interface Ethernet que
doit utiliser PPP :
Exemple de code 4.2 : Créer les script net PPP et Ethernet |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
|
Mettez bien RC_NET_STRICT_CHECKING="yes" dans le fichier
/etc/conf.d/rc.
Nous devons maintenant éditer le fichier /etc/conf.d/net.
Exemple de code 4.3 : Une configuration simple de PPPoE |
config_eth0=( null )
config_ppp0=( "ppp" )
link_ppp0="eth0"
plugins_ppp0=( "pppoe" )
username_ppp0='nom_utilisateur'
password_ppp0='mot_de_passe'
pppd_ppp0=(
"noauth"
"defaultroute"
"usepeerdns"
"holdoff 3"
"child-timeout 60"
"lcp-echo-interval 15"
"lcp-echo-failure 3"
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)
depend_ppp0() {
need net.eth0
}
|
Vous pouvez également placer votre mot de passe dans /etc/ppp/pap-secrets.
Exemple de code 4.4 : Exemple de fichier /etc/ppp/pap-secrets |
"nom_utilisateur" * "mot_de_passe"
|
Si vous utilisez PPPoE avec un modem USB, vous devez installer
br2684ctl. Lisez le fichier
/usr/portage/net-dialup/speedtouch-usb/files/README pour savoir
comment le configurer correctement.
Important :
Lisez attentivement la section sur l'ADSL et PPP dans le fichier
/etc/conf.d/net.example. Elle contient des explications très
détaillées sur les réglages à votre disposition pour configurer votre PPP.
|
3.e. APIPA (Adressage automatique d'adresse IP privée)
APIPA essaye de trouver une adresse libre dans l'intervalle
169.254.0.0-169.254.255.255 en faisant un arping sur une adresse au hasard sur
l'interface. S'il n'y a pas de réponse, alors l'adresse est assignée à cette
interface.
Cette méthode est utile pour les réseaux où il n'y a pas de serveur DHCP, où les
machines ne sont pas connectées directement à Internet et où tous les autres
ordinateurs utilisent APIPA.
Pour obtenir le support APIPA, installez net-misc/iputils ou
net-analyzer/arping.
Exemple de code 5.1 : Configuration APIPA dans /etc/conf.d/net |
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )
config_eth0=( "apipa" )
|
3.f. Agrégation de liens (Bonding)
Pour pouvoir faire de l'agrégation de liens (bonding, trunking), installez
net-misc/ifenslave.
L'agrégation de liens est utilisée pour augmenter la bande passante réseau. Si
vous avez deux cartes réseaux branchées sur le même réseau, vous pouvez les
fusionner afin que vos applications ne voient qu'une seule interface qui
utilise en réalité les deux cartes.
Exemple de code 6.1 : Configurer une agrégation de liens dans /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0=( "null" )
depend_bond0() {
need net.eth0 net.eth1 net.eth2
}
|
3.g. Pont réseau (« bridge » 802.1d)
Pour activer le support des ponts réseaux, installez
net-misc/bridge-utils.
Le pontage de réseaux est utilisé pour connecter plusieurs réseaux ensemble. Par
exemple, un serveur qui se connecte à Internet via un modem ADSL peut utiliser
un pont réseau pour permettre aux machines connectées sur sa carte réseau sans
fil d'accéder à Internet.
Exemple de code 7.1 : Configuration d'un pont réseau dans /etc/conf.d/net |
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.0.1/24" )
depend_br0() {
need net.eth0 net.eth1
}
|
Important :
Pour la configuration de certains ponts, vous pourriez avoir besoin de consulter
la documentation sur les noms des
variables.
|
3.h. Adresse MAC
Vous n'avez pas besoin d'installer quoi que ce soit pour changer l'adresse MAC
de votre interface si vous utilisez sys-apps/baselayout-1.11.14 ou une
version plus récente. En revanche, si vous utilisez une version de baselayout
plus ancienne ou si vous voulez assigner une adresse aléatoire, vous devez
installer net-analyzer/macchanger.
Exemple de code 8.1 : Exemples de modification d'adresse MAC |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
3.i. Les tunnels
Vous n'avez pas à installer quoi que ce soit pour créer des tunnels car l'outil
de configuration d'interfaces réseaux peut s'en charger.
Exemple de code 9.1 : Configuration de tunnels dans /etc/conf.d/net |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
config_vpn0=( "192.168.0.2 peer 192.168.1.1" )
|
3.j. VLAN (802.1q)
Pour activer le support des VLAN, installez net-misc/vconfig.
Un réseau virtuel (ou VLAN) est un groupe d'équipements réseaux qui agissent
comme s'ils se trouvaient sur un seul segment réseau, même si ce n'est pas le
cas. Les membres d'un VLAN peuvent uniquement voir les autres membres du même
VLAN, même s'ils sont physiquement sur le même réseau.
Exemple de code 10.1 : Configuration de VLAN dans /etc/conf.d/net |
vlans_eth0="1 2"
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )
|
Important :
Pour la configuration de certains VLAN, vous pourriez avoir besoin de consulter
la documentation sur les noms des
variables.
|
4. Les réseaux sans fil
4.a. Introduction
Actuellement, nous supportons la configuration des interfaces sans fil au moyen
des outils wireless-tools et wpa_supplicant. Une chose
essentielle à retenir est que la configuration des réseaux sans fil se fait
d'une manière globale et non d'une manière propre à l'interface.
wpa_supplicant est le meilleur choix mais il ne gère pas tous les
pilotes. Pour une liste des matériels supportés, lisez le site web de
wpa_supplicant. De plus, pour le moment, wpa_supplicant ne peut
se connecter qu'aux SSID pour lesquels il a été configuré.
wireless-tools supporte pratiquement toutes les cartes et tous les
pilotes, mais il ne sait pas se connecter aux points d'accès qui ne font que du
WPA.
Attention :
Le pilote linux-wlan-ng n'est pas supporté par baselayout pour le
moment, à cause de sa mise en place et de sa configuration qui est complètement
différente de ce qui se fait ailleurs. Des rumeurs émanant des développeurs de
linux-wlan-ng affirmeraient que leur procédure de mise en place se
conformerait à celle de wireless-tools. Lorsque ceci sera effectif, vous
pourrez utiliser linux-wlan-ng avec notre baselayout.
|
4.b. WPA Supplicant
WPA Supplicant est un
paquet qui vous permettra de vous connecter à un point d'accès WPA. Sa mise en
place est assez instable puisque c'est une application bêta ; elle marche
pourtant très bien.
Exemple de code 2.1 : Installer wpa_supplicant |
# emerge net-wireless/wpa_supplicant
|
Important :
Vous devez activer CONFIG_PACKET dans votre noyau pour que
wpa_supplicant puisse fonctionner.
|
Nous devons maintenant indiquer dans le fichier /etc/conf.d/net
que nous préférons utiliser wpa_supplicant plutôt que
wireless-tools (qui est celui par défaut si les deux sont installés).
Exemple de code 2.2 : Configuration de /etc/conf.d/net avec wpa_supplicant |
modules=( "wpa_supplicant" )
wpa_supplicant_eth0="-Dmadwifi"
|
Note :
Si vous utilisez le pilote host-ap, vous devez placer la carte en mode
Managed afin qu'elle puisse être utilisée correctement par
wpa_supplicant. Vous pouvez utiliser la commande iwconfig_eth0="mode
managed" dans /etc/conf.d/net pour accomplir cette tâche.
|
Plutôt simple, n'est-ce pas ? Pourtant, nous devons encore configurer
wpa_supplicant lui-même, ce qui peut devenir bien plus fastidieux selon
le niveau de sécurité demandé par le point d'accès auquel vous souhaitez vous
connecter. L'exemple ci-dessous est repris puis adapté depuis le fichier
/usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz fourni avec
wpa_supplicant.
Exemple de code 2.3 : Un exemple de fichier /etc/wpa_supplicant/wpa_supplicant.conf |
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="simple"
psk="une phrase super secrete"
priority=5
}
network={
ssid="second ssid"
scan_ssid=1
psk="phrase tres secrete"
priority=2
}
network={
ssid="exemple"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
network={
ssid="test-en-clair"
key_mgmt=NONE
}
network={
ssid="static-wep-test"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
network={
ssid="static-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="une phrase secrete"
}
|
4.c. Wireless Tools
Mise en place et mode « Managed »
Wireless
Tools fournit un moyen générique de configurer des interfaces sans fil
jusqu'au niveau de sécurité WEP. Bien que WEP soit une méthode faiblement
sécurisée, elle reste la plus répandue.
La configuration de Wireless Tools est contrôlée par quelques variables.
L'exemple de fichier de configuration ci-dessous devrait couvrir tous vos
besoins. Sachez simplement qu'en cas de non-configuration, nous essayons tout de
même de connecter l'interface au point d'accès le plus fort, quel qu'il soit.
Exemple de code 3.1 : Installer wireless-tools |
# emerge net-wireless/wireless-tools
|
Note :
Bien que vous puissiez stocker la configuration du réseau sans fil dans le
fichier /etc/conf.d/wireless, ce guide vous recommande de la placer
dans le fichier /etc/conf.d/net.
|
Exemple de code 3.2 : Exemple de configuration /etc/conf.d/net avec iwconfig |
modules=( "iwconfig" )
key_ESSID1="[1] s:votrecle key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
preferred_aps=( "ESSID1" "ESSID2" )
|
Réglages personnalisés pour la sélection de points d'accès
Vous pouvez éventuellement rajouter des options pour contrôler la sélection des
points d'accès. Ceci n'est pas indispensable.
Vous pouvez décider si nous devons nous connecter uniquement aux points d'accès
listés précédemment ou pas. Par défaut, si tout ce qui a été configuré a échoué
et si nous pouvons nous connecter à un point d'accès non chiffré, alors nous le
ferons. Ce comportement peut être contrôlé par la variable
associate_order. Voici une table qui présente les valeurs acceptables et
à quoi elles servent.
| Valeur |
Description |
| any |
Comportement par défaut. |
| preferredonly |
Nous nous connecterons uniquement à un point d'accès présent dans la
liste.
|
| forcepreferred |
Nous forcerons la connexion à un point d'accès dans l'ordre listé si
ceux-ci ne sont pas trouvés lors d'un scan.
|
| forcepreferredonly |
Ne lance pas le scan. Essaye simplement de se connecter à l'un d'entre eux
dans l'ordre indiqué.
|
| forceany |
Pareil que forcepreferred puis essaie n'importe quel autre point
d'accès si cela n'a pas marché.
|
Enfin, voici les variables blacklist_aps et unique_ap.
blacklist_aps fonctionne d'une manière similaire à preferred_aps.
unique_ap attend yes ou no pour savoir si une deuxième
interface peut se connecter sur le même point d'accès que la première.
Exemple de code 3.3 : Exemples pour blacklist_aps et unique_ap |
blacklist_aps=( "ESSID3" "ESSID4" )
unique_ap="yes"
|
Modes Ad-Hoc et Master
Vous pouvez aussi vous déclarer comme nœud Ad-Hoc si vous n'arrivez pas à
joindre un point d'accès.
Exemple de code 3.4 : Passer en mode Ad-Hoc |
adhoc_essid_eth0="Mon noeud Adhoc"
|
Et pourquoi pas se connecter à des réseaux Ad-Hoc ou bien tourner en mode Master
pour devenir nous-même un point d'accès ? Voici la configuration qu'il vous
faut. Vous aurez peut-être à spécifier des clés WEP comme indiqué précédemment.
Exemple de code 3.5 : Exemple de configuration Ad-Hoc/Master |
mode_eth0="ad-hoc"
essid_eth0="Mon noeud adhoc"
channel_eth0="9"
|
Important :
Ce qui suit est repris tel quel depuis la documentation
NetBSD sur WaveLAN. Il y a 14 canaux possibles. Nous avons été informés
que les canaux 1 à 11 sont légaux en Amérique du Nord, 1 à 13 dans une grande
partie de l'Europe, 10 à 13 en France et uniquement le 14 au Japon. En cas de
doute, consultez la documentation fournie avec la carte ou avec le point
d'accès. Assurez-vous que le canal choisi correspond à celui du point d'accès
(ou de l'autre carte en réseau Ad-Hoc). Par défaut, ce canal est le numéro 3
sur les cartes vendues en Amérique du Nord et dans une grande partie de
l'Europe, 11 en France et 14 au Japon).
|
Problèmes et résolutions concernant Wireless Tools
Il existe quelques variables supplémentaires que vous pouvez utiliser pour vous
aider à résoudre les problèmes de pilote ou d'environnement pour faire
fonctionner votre réseau sans fil. Voici une table répertoriant ce que vous
pouvez essayer :
| Variable |
Valeur par défaut |
Description |
| iwconfig_eth0 |
|
Lisez man iwconfig pour savoir ce qu'il est possible d'indiquer à
iwconfig.
|
| iwpriv_eth0 |
|
Lisez man iwpriv pour savoir ce qu'il est possible d'indiquer à
iwpriv.
|
| sleep_scan_eth0 |
0 |
Le nombre de secondes à attendre avant de lancer un scan. Cette commande est
requise lorsque le pilote a besoin de temps supplémentaire pour compléter
son activation et pour devenir utilisable.
|
| sleep_associate_eth0 |
5 |
Le nombre de secondes permis à l'interface pour qu'elle réussisse à
s'associer avec le point d'accès avant de passer au suivant.
|
| associate_test_eth0 |
MAC |
Certains pilotes n'assignent pas une adresse MAC invalide pendant qu'ils
essayent de se connecter.
Certains pilotes ne remettent pas à zéro le niveau de qualité pendant qu'ils
essayent se se connecter.
Les valeurs autorisées sont MAC, quality ou all, pour
les deux.
|
| scan_mode_eth0 |
|
Certains pilotes doivent scanner en mode Ad-Hoc. Donc si le scan échoue
systématiquement, essayez de spécifier ad-hoc ici.
|
| iwpriv_scan_pre_eth0 |
|
Envoie des commandes iwpriv à l'interface avant le scan.
Veuillez lire man iwpriv pour les détails.
|
| iwpriv_scan_post_eth0 |
|
Envoie des commandes iwpriv à l'interface après le scan.
Veuillez lire le man iwpriv pour les détails.
|
4.d. Spécifier une configuration réseau selon l'ESSID
Il se peut que lorsque vous vous connectez à ESSID1, vous ayez besoin
d'une adresse IP statique et que lorsque vous vous connectez à ESSID2,
vous vouliez du DHCP. En fait, on peut spécifier la plupart des variables selon
l'ESSID. Voici comment faire.
Note :
Cela marche si vous utilisez WPA Supplicant ou Wireless Tools.
|
Exemple de code 4.1 : Surcharger la configuration réseau selon l'ESSID |
config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )
config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )
dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="un.certain.domaine"
dns_search_domains_ESSID1="cherche.ce.domaine puis.cherche.celui.la"
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )
|
5. Ajout de fonctionnalités
5.a. Fonctions d'interception standard
Quatre fonctions, qui peuvent être définies par l'administrateur, sont appelées
lors du démarrage ou de l'arrêt du réseau. Ces fonctions sont appelées en
spécifiant le nom de l'interface en premier, afin de pouvoir contrôler plusieurs
interfaces avec un même script.
La valeur renvoyée par les fonctions preup() et predown() doit
être 0 (succès) pour que la configuration ou la déconfiguration de l'interface
puisse continuer. Si preup() renvoie autre chose que zéro, alors la
configuration de l'interface sera annulée. Si predown() renvoie autre
chose que zéro, alors l'interface ne sera pas autorisée à être désactivée.
La valeur renvoyée par les fonctions postup() et postdown() n'ont
pas d'importance car il n'y a rien à faire après.
La variable ${IFACE} contient le nom de l'interface qui doit être activée
ou désactivée. La variable ${IFVAR} contient une version utilisable dans
un nom de variable Bash du nom de l'interface.
Exemple de code 1.1 : Exemples de fonctions pre/post up/down |
preup() {
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
5.b. Fonction d'interception pour Wireless Tools
Note :
Cela ne marchera pas avec WPA Supplicant, mais les variables ${ESSID} et
${ESSIDVAR} sont disponibles dans la fonction postup().
|
Deux fonctions qui seront appelées avant et après la connexion à un point
d'accès peuvent être personnalisées. Les fonctions sont appelées en spécifiant
le nom de l'interface en premier afin de pouvoir contrôler plusieurs interfaces
avec la même fonction.
La valeur renvoyée par la fonction preassociate() doit être 0 pour
indiquer que la configuration ou la déconfiguration de l'interface peut
continuer. Si preassociate() renvoie autre chose que zéro, alors la
configuration de l'interface sera annulée.
La valeur renvoyée par la fonction postassociate() est ignorée, car il
n'y a plus rien à faire après.
La variable ${ESSID} contient le nom exact de l'ESSID du point d'accès
auquel on se connecte. ${ESSIDVAR} contient ce même nom, mais transformé
afin qu'il puisse être utilisé dans le nom d'une variable Bash.
Exemple de code 2.1 : Exemples de fonctions pre/post association |
preassociate() {
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
return 0
}
|
Note :
Les variables ${ESSID} et ${ESSIDVAR} ne sont pas disponibles dans
les fonctions predown() et postdown().
|
6. Gestion du réseau
6.a. Gestion du réseau
Si votre ordinateur et vous êtes tout le temps en déplacement, cela signifie
qu'il n'y a pas tout le temps un câble réseau de branché sur votre carte réseau
ou un point d'accès sans fil prêt à vous accueillir. Aussi, vous pouvez
configurer le système pour que le réseau soit automatiquement activé dès qu'un
câble est branché ou dès qu'un point d'accès est disponible.
Voici quelques outils qui vous aideront à réaliser cela.
Note :
Ce document ne parle que d'ifplugd, mais il existe d'autres alternatives
intéressantes, comme netplug. netplug est une alternative plus
légère à ifplugd mais il suppose que les pilotes réseau du noyau
fonctionnent correctement, ce qui n'est pas toujours le cas.
|
6.b. ifplugd
ifplugd est un
démon qui démarre et arrête les interfaces lorsqu'un câble Ethernet est branché
ou débranché. Il sait aussi détecter les associations à un point d'accès ou
lorsqu'un nouveau point d'accès devient disponible.
Exemple de code 2.1 : Installer ifplugd |
# emerge sys-apps/ifplugd
|
La configuration d'ifplugd est vraiment très simple. Consultez man
ifplugd pour savoir quelles sont les variables utilisables dans le fichier
/etc/conf.d/net. Lisez également
/etc/conf.d/net.example pour plus d'exemples.
Exemple de code 2.2 : Exemple de configuration d'ifplugd |
ifplugd_eth0="..."
ifplugd_eth0="--api-mode=wlan"
|
En plus de gérer plusieurs connexions réseaux, vous pouvez utiliser un petit
utilitaire qui facilite la gestion des configurations DNS. C'est vraiment
pratique lorsque vous recevez votre adresse IP par DHCP. Installez simplement
openresolv.
Exemple de code 2.3 : Installer openresolv |
# emerge openresolv
|
Voir man resolvconf pour mieux comprendre comment il fonctionne.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|