Gentoo Logo

Le Manuel Gentoo Linux/PPC

Table des matières :

  • Installer Gentoo
    Cette partie explique comment installer Gentoo sur votre machine.
    1. À 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.
    2. Choisir le bon support d'installation
      Il y a plusieurs façons d'installer Gentoo. Ce chapitre explique comment le faire à partir du CD d'installation minimale.
    3. Configurer votre connexion réseau
      Pour pouvoir télécharger les sources, vous avez besoin d'une connexion Internet ; vous devez la configurer.
    4. Préparer les disques
    5. 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.
    6. Installer le système de base de Gentoo
      Maintenant que le fichier stage3 est installé et configuré nous cherchons à disposer d'un système Gentoo de base. Ce chapitre explique comment le rendre opérationnel.
    7. Configurer le noyau
      Le noyau Linux est le cœur de toute distribution Linux. Ce chapitre vous explique comment le configurer.
    8. 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.
    9. Installer les outils système
      Ce chapitre vous aide à choisir et à installer quelques outils importants.
    10. Configurer le chargeur de démarrage
      Il y a plusieurs chargeur de démarrage avec chacun leur configuration. Dans ce chapitre, nous décrirons toutes les possibilités qui s'offrent à vous et la manière de configurer un chargeur de démarrage répondant à vos besoins.
    11. Finaliser votre installation
      Vous avez presque fini. Il ne vous reste plus qu'à définir un ou plusieurs utilisateurs pour votre système.
    12. 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.
    1. Introduction à Portage
      Ce chapitre explique les bases qu'un utilisateur doit absolument connaitre pour maintenir les logiciels de son système.
    2. La variable USE
      Les options de la variable USE sont une part très importante de Gentoo. Dans ce chapitre, vous apprendrez à utiliser ces options et à comprendre comment elles interagissent avec votre système.
    3. 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.
    4. 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.
    5. 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.
    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.
    1. Préparation
      Un guide qui vous permettra d'avoir rapidement un réseau fonctionnel, pour les environnements les plus communs.
    2. 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.
    3. 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.
    4. Les réseaux sans fil
      La mise en place du réseau sans fil n'est pas évidente, suivez le guide.
    5. Ajout de fonctionnalités
      Si vous vous sentez l'âme aventureuse, ajoutez vos propres fonctions de gestion du réseau.
    6. 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 autre que Gentoo, 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 Gentoo Installation CD 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.

Note : d'autres méthodes d'installation sont abordées dans notre guide des méthodes d'installation alternatives, notamment en utilisant un autre CD que Gentoo.

Vous pourriez aussi trouver notre Gentoo Installation Tips & Tricks utile.

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 pourrait contenir 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 car notre canal de conversation couvre l'ensemble du spectre de Gentoo:)

Si vous avez une question relative à Gentoo, vous devriez consulter notre Foire aux questions , disponible sur le Gentoo Wiki. Vous pouvez également consulter les FAQs sur nos forums.

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.
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 sur 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

CD d'installation minimale de Gentoo

Le CD d'installation minimale de Gentoo est un CD amorçable qui contient un environnement Gentoo autonome. Il vous permet de démarrer Linux depuis le CD. Durant le processus de démarrage, votre matériel est détecté et les pilotes appropriés sont chargés. Il est maintenu par les développeurs de Gentoo et vous permet d'installer Gentoo via une connexion Internet active.

Tous les CD d'installation vous permettent de démarrer, de configurer le réseau, initialiser vos partitions et commencer à installer Gentoo depuis l'Internet.

Le CD d'installation minimale de Gentoo

Le CD d'installation minimale est appelé install-powerpc-minimal-<release>.iso et occupe 140 Mo d'espace disque.

L'archive d'étape 3

Une archive d'étape 3 contient un environnement minimal d'utilisation à partir duquel vous pouvez installer Gentoo sur votre système en suivant les instructions de ce manuel. Des archives stage1 et stage2 ont été disponibles et documentées, mais ne sont plus documentées dans ce manuel bien que ces archives soient encore disponibles. Si vous tenez absolument à réaliser une installation à partir d'une de ces archives, veuillez consulter notre Comment installer Gentoo à partir d'une archive d'étape 1 ou 2 ? à ce sujet.

Les archives d'étape 3 peuvent être téléchargées de c releases/ppc/autobuilds/current-stage3/ sur n'importe quel des miroirs officiels Gentoo et ne sont pas sur le LiveCD.

2.c. Télécharger et graver un CD d'installation

Téléchargement et gravure des 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é le CD d'installation, mais où pouvez-vous le trouver ?

Vous pouvez télécharger le CD d'installation à partir d'un de nos miroirs. Le CD d'installation se trouve dans le sous-répertoire releases/ppc/autobuilds/current-iso.

Dans ce répertoire, vous trouverez le fichier ISO. C'est une image de CD complète 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-powerpc-minimal-<release>.iso.DIGESTS. Vous pouvez vérifier la somme de contrôle SHA-2 avec l'outil sha512sum sous Linux/Unix ou Calculateur de somme de contrôle sous Windows.

Note : L'outil va essayer de vérifier les sommes de contrôle dans la liste même si la somme de contrôle a été calculée avec un algorythme différent. En conséquence, la sortie de la commande peut indiquer un succès ( pour les sommes de contrôle SHA) ou un échec (pour les autres sommes de conttrôle). Au moins un OK doit être retourné pour chacun des fichiers.

Exemple de code 3.1 : vérifier la somme de contrôle SHA-2

$ sha512sum -c <downloaded iso.DIGESTS>

Note : Si vous obtenez un message indiquant qu'aucune somme de contrôle proprement formatée n'a été trouvée, consultez le fichier DIGESTS vou-même pour voir ce que les sommes de contole prises en charge sont.

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 de signature et procurez-vous les clés publiques dont les identifiants peut être trouvés à l'adresse release engineering project site.

Exemple de code 3.2 : obtenir la clé publique

(... Remplacez les identifiants de clé par ceux mentionnés sur le site "release engineering"  ...)
$ gpg --keyserver subkeys.pgp.net --recv-keys 96D8BF6D 2D182910 17072058

Ensuite, vérifiez la signature :

Exemple de code 3.3 : vérifier les fichiers

$ gpg --verify <downloaded iso.DIGESTS.asc>
$ sha512sum -c <downloaded iso.DIGESTS.asc>

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 ci-dessous comment faire avec cdrecord et k3b. Vous trouverez d'autres méthodes dans notre FAQ Gentoo .

  • Avec cdrecord, tapez simplement cdrecord dev=/dev/sr0 <downloaded iso file> (remplacez /dev/sr0 par le fichier de périphérique matériel de votre graveur).
  • Avec K3B, sélectionnez Tools > Burn CD Image. Dans la zone « Image to Burn », sélectionnez le fichier ISO et cliquez sur Start.

Par défaut: amorcer le CD d'installation avec Yaboot

Sur les machines NewWorld, placez le CD dans le lecteur de CD-ROM et redémarrez le système. Au bip de démarrage, maintenez la touche C enfoncée jusqu'au démarrage sur le CD..

Une fois le CD chargé, vous pourrez voir un message d'accueil et une invite de démarrage en bas de l'écran.

Nous fournissons un noyau générique :ppc32 qui prend en charge des processeurs multiples, mais conviend aussi à des machines à processeur unique également.

Vous pouvez définir quelques options du noyau à cette invite. La table suivante liste quelques unes des options de démarrage disponibles que vous pouvez ajouter.

Option de démarrage Description
video Cette option prend un des marqueurs spécifiques aux fabricants suivants : nvidiafb, radeonfb, rivafb, atyfb, aty128 ou ofonly. Vous pouvez faire suivre ce marqueur de la résolution, du taux de rafraîchissement et de la profondeur de couleur à utiliser.Par exemple, video=radeonfb:1280x1024@75-32 sélectionnera le tampon de trames ATI Radeon à une résolution de 1280x1024 avec un taux de rafraîchissement de 75Hz et une profondeur de couleur de 32 bits. Si vous n'êtes pas sûr, et que les valeurs par défaut ne marchent pas, video=ofonly fonctionnera très certainement.
nol3 Désactive le cache de niveau 3 sur certains PowerBooks (nécessaire pour au moins le 17")
dofirewire Active le support pour les périphériques IEEE1394 (FireWire) , tels que les disques durs externes.
dopcmcia Si vous avez besoin d'utiliser des périphériques PCMCIA durant votre installation (comme de cartes réseau PCMCIA ) vous devez valider cette option.
dosshd Démarre le démon sshd. Utile pour des installations à distance.
passwd=foo Établit tout ce qui se trouve après le signe = en tant que mot de passe root. À utiliser avec dosshd pour des installations à distance.

To use the above options, at the boot: prompt, type ppc32 followed by the desired option. In the example below, we'll force the kernel to use the Open Firmware framebuffer instead of the device specific driver.

Exemple de code 3.4 : Force the use of the Open Firmware framebuffer

boot: ppc32 video=ofonly

If you don't need to add any options, just type ppc32 at this prompt, and a complete Gentoo Linux environment will be loaded from the CD. Continue with And When You're Booted....

Alternative: démarrer à partir d'un CD d'installation sur machine Pegasos

Sur une machine Pegasos insérez seulement un CD et à l'invite de démarrage SmartFirmware tapez boot cd /boot/menu. Ceci affichera un petit menu de démarrage dans lequel vous pourrez choisir entre plusieurs configuration vidéo pré-établies. Si vous avez besoin de définir des options de démarrage spéciales, vous pouvez les ajouter à la ligne de commande juste comme vous l'avez vu plus haut avec yaboot. Par exemple : boot cd /boot/pegasos video=radeonfb:1280x1024@75 mem=256M. Les options par défaut du noyau (pour le cas où les choses se passeraient mal et que vous en auriez besoin) sont pré-configurées avec console=ttyS0,115200 console=tty0 init=/linuxrc looptype=squashfs loop=/image.squashfs cdroot root=/dev/ram0.

Alternative: démarrer à partir d'un CD d'installation avec BootX

Si vous avez une machine Mac OldWorld la partie amorçable de LiveCD ne peut pas être utilisée. La solution la plus simple est d'utiliser MacOS 9 ou antérieur pour démarrer dans un environnement Linux avec un outil appelé BootX.

Commencez par télécharger BootX et extrayait l'archive. Copiez l'extension BootX de l'archive extraite vers le dossier Extensions et le BootX App Control Panel dans Control Panels, qui sont tous les deux situés dans le dossier system de votre MacOS. Puis créez un dossier appelé "Linux Kernels" dans votre dossier system et copiez le noyau ppc32 du CD vers ce dossier. Pour finir, copiez ppc32.igz du dossier boot du CD l'installation dans le dossier System du MacOS.

Pous préparer BootX, démarrez le BootX App Control Panel. Sélectionnez d'abord le dialogue des options et vérifiez Use Specified RAM Disk et choisissez ppc32.igz du dossier system. Continuez en retournant à l'écran initial et assurez-vous que la taille du disque virtuel est d'au moins 32000. Pour terminer, définissez les arguments du noyau comme suit :

Exemple de code 3.5 : arguments du noyau BootX

cdroot root=/dev/ram0 init=linuxrc loop=image.squashfs looptype=squashfs console=tty0 

Note : les paramètres du noyau dans la section yaboot plus haut sont aussi valable ici. Vous pouvez ajouter n'importe laquelle de ces options aux argument du noyau vu précédemmemt.

Revérifiez que tous les paramètres sont bons et sauvegardez la configuration. Ceci évite de retaper si ça ne démarre pas ou si quelque chose manque. Pressez le bouton Linux en haut de la fenêtre. Si tout se passe bien, vous devriez démarrer du CD. Continuez avec Une fois démarré...

Une fois démarré...

Vous serez accueilli par une invite de commande root ("#") sur la console courante. Vous pouvez passer sur d'autres consoles en pressant Alt-F2, Alt-F3 et Alt-F4. Retournez à la console initiale avec Alt-F1. Selon l'agencement du clavier vous pouvez avoir besoin de Alt-fn-Fx sur les machines Apple.

Si vous installez Gentoo sur un système avec un clavier non US, utilisez loadkeys pour charger la table de touches (keymap) de votre clavier. Pour lister les agencements de clavier disponible, executez ls /usr/share/keymaps/i386.

Exemple de code 3.6 : lister les tables de touches disponibles

(PPC utilise des tables de touches x86 sur la plupart des systèmes.)
# ls /usr/share/keymaps/i386

Maintenant chargez la table de touches de votre choix.

Exemple de code 3.7 : charger une table de touches

# loadkeys be-latin1

Maintenant continuez avec 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 détection automatique 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 la détectetion automatique 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 8139too (support de certaines interfaces réseau) :

Exemple de code 3.8 : charger des modules du noyau

# modprobe 8139too

Facultatif : Les 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.9 : changer le mot de passe de root

# passwd
New password: (Entrez votre nouveau mot de passe.)
Re-enter password: (Confirmez votre mot de passe.)

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.10 : création d'un compte utilisateur

# useradd -m -G users john
# passwd john
New password: (Entrez le mot de passe de john.)
Re-enter password: (Confirmez le mot de passe de john.)

Vous pouvez passer de l'utilisateur root à l'utilisateur que vous venez de créer avec la commande su :

Exemple de code 3.11 : devenir john

# su - john

Facultatif : Consulter la documentation pendant l'installation

Si vous désirez consulter le Manuel Gentoo pendant l'installation, 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éé.

Vous pourrez lire le Manuel avec links, une fois que vous aurez terminé le chapitre Configuration du Réseau (sinon vous ne pourrez pas vous connecter à Internet pour le lire) :

Exemple de code 3.12 : 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.13 : démarrer le démon SSH

# /etc/init.d/sshd start

Note : si vous (ou d'autres utilisateurs) vous connectez au système, vous recevrez un message vous disant que la clé d'hôte pour ce système doit être confirmée (via ce qui est appelé une empreinte). Ceci ne se produit q''à la première connexion d'un utilisateur au système. Cependant, quand votre système est configuré et que vous vous connectez au tout nouveau système, votre client SSH vous avertit que la clé d'hôte a été changée. Ceci est dû au fait que, pour SSH, vous vous connnectez à un serveur différent (nommément votre tout nouveau système plutôt que l'environnement live sur lequel vous vous trouvez maintenant). Quand vous recevez cet avertissement, suivez les instructions données sur l'écran pour remplacer la clé d'hôte sur le système client.

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 ifconfig. Elle devrait afficher la liste des interfaces réseau opérationnelles (en plus de lo).

Exemple de code 1.1 : affichage de ifconfig quand une connexion existe

# 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 

Le nom de l'interface réseau sur votre système peut ne pas être eth0. Des médias d'installation récents peuvent afficher des noms d'interface réseau standards comme eno0, ens1 ou encore enp5s0. Recherchez simplement le nom de l'interface dans la sortie d'une commande ifconfig pour laquelle l'adresse IP pointe sur votre réseau local.

Dans toute la suite de ce document, nous supposerons que cette interface s'appelle eth0.

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

(Si le mandataire gère le HTTP)
# export http_proxy="http://proxy.gentoo.org:8080"
(Si le mandataire gère le FTP)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(Si le mandataire gère le RSYNC)
# 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

(Dans cet exemple, nous chargeons le pilote pcnet32.)
# 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 (ici encore, eth0 doit être considéré comme un exemple de nom) :

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

La liste des interfaces réseau disponibles sur votre système peut être lue dans le système de fichiers /sys  :

Exemple de code 3.5 : visualiser la liste des interfaces réseau disponibles

# ls /sys/class/net
dummy0  eth0  lo  sit0  tap0  wlan0

Dans l'exemple présenté ci-dessus, 6 interfaces ont été trouvées. Celle nommée eth0 est probablement l'adaptateur (cablé) tandis que celle nommée wlan0 est l'interface sans fil.

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.6 : utilisation de dhcpcd

# dhcpcd eth0
Certains administrateurs de réseau imposent l'utilisation des
noms de machine et de domaine attribués par le serveur DHCP.
Dans ce cas, utilisez :
# 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.7 : 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.8 : modifier le code ESSID et/ou définir une clef WEP

(Nommer votre réseau « GentooNode ».)
# iwconfig eth0 essid GentooNode

(Définir une clef WEP en hexadécimal.)
# iwconfig eth0 key 1234123412341234abcd

(Définir un clef WEP avec un code ASCII - préfixez-le avec « s: ».)
# 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.9 : 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.10 : 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.11 : 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.12 : 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.13 : 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.14 : 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.15 : /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 tenants et aboutissants 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 célèbre étant certainement celui qui représente le premier disque dans un système Linux, /dev/sda. Les disques durs SCSI, Serial ATA et mêmes les disques durs IDE sont tous nommés en /dev/sda depuis les nouveaux pilotes libata de Linux. Si vous utilisez les anciens pilotes, votre premier disque dur IDE s'appelle alors /dev/hda.

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 se préoccuper de savoir 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 blocs 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. Choisissez le système de fichiers qui correspond le mieux au type de PowerPC que vous utilisez.

Apple New World

Les machines Apple New World sont très faciles à configurer. La première partition est toujours une Table des partitions Apple (Apple Partition Map) . Cette partition contient en permanence l'agencement du disque. Vous ne pouvez pas la retirer. La partition suivante doit toujours être un partition d'amorçage. Cette partition contient un petit système de fichiers HFS (de 800 ko) sur lequel se trouve implanté le chargeur de démarrage Yaboot et ses fichiers de configuration. Cette partition n'est pas équivalente à la partition /boot que l'on trouve sur les autres architectures. Après la partition de démarrage, les systèmes de fichiers habituels de Linux sont placés selon le schèma ci-dessous. La partition de mémoire virtuelle (swap) est un espace de stockage temporaire utilisé dans les cas où le système vient à manquer de mémoire physique. Si vous souhaitez avoir un système en dual-boot, la partition OSX peut être placée n'importe où après la partition de démarrage pour garantir que Yaboot va démarrer en premier.

Note : les partitions pilote de disque telles que Apple_Driver63, Apple_Driver_ATA, Apple_FWDriver, Apple_Driver_IOKit, et Apple_Patches peuvent exister sur votre disque. Elles sont nécessaires au démarrage de MacOS, et donc, si vous n'avez pas ce besoin, vous pouvez les retirer en intitialisant le disque avec l'option i de mac-fdisk. Cela effacera complètement le disque ! Si vous avez un doute, laissez-les en place.

Note : si vous avez partitionné votre disque avec l'utilitaire de disque de Apple, il peut y avoir un espace de 128 Mo entre les partitions qu'Apple réserve pour un usage futur. Vous pouvez les retirer en toute sécurité.

Partition Taille Système de fichiers Description
/dev/sda1 32k Aucun Table des partitions Apple
/dev/sda2 800k HFS Amorçage Apple
/dev/sda3 512Mb Swap Linux Swap
/dev/sda4 Reste du disque ext3, ext4, reiserfs, xfs Linux Root

Apple Old World

Les machines de l'Apple Old World sont un peu plus difficiles à configurer. La première partition est toujours une table des partitions Apple qui tient à jour en permanence l'agencement du disque. Vous ne pouvez pas la retirer. Si vous utilisez le chargeur de démarrage BootX, la configuration présentée plus bas suppose que MacOS est installé sur un autre disque. Si ce n'est pas le cas, il y aura des partitions additionnelles pour les pilotes de disque Apple tels que Apple_Driver63, Apple_Driver_ATA, Apple_FWDriver, Apple_Driver_IOKit, Apple_Patches et l'installation de MacOS. Si vous utilisez Quik, il vous faudra, contrairement aux autres méthodes avec Apple, créer une partition de démarrage (boot) pour contenir le noyau. Après la partition boot, les systèmes de fichiers habituels de Linux sont placés selon le schéma ci-dessous. La partition de mémoire virtuelle (swap) est un espace de stockage temporaire utilisé dans les cas où le système vient à manquer de mémoire physique. La partition racine (root) contiendra le système de fichiers sur lequel Gentoo est installée.

Note : se vous utilisez une machine OldWorld, vous devrez laisser MacOS disponible. L'agencement présenté ici suppose que MacOS est installé sur un autre disque.

Partition Taille Système de fichiers Description
/dev/sda1 32k Aucun Table des partitions Apple
/dev/sda2 32Mb ext2 Partition de démarrage de Quik Boot (pour quik uniquement )
/dev/sda3 512Mb Swap Linux Swap
/dev/sda4 Reste du disquek ext3, ext4, reiserfs, xfs Linux Root

Pegasos

Le plan de partitionnement Pegasos est très simple à coté des plans pour Apple. La première partition est une partition de démarrage qui contient les noyaux à démarrer, ainsi qu'un script open source qui affiche le menu au démarrage. Après la partition de démarrage, les systèmes de fichiers habituels de Linux sont placés selon le schéma ci-dessous. La partition de mémoire virtuelle (swap) est un espace de stockage temporaire utilisé dans les cas où le système vient à manquer de mémoire physique. La partition racine (root) contiendra le système de fichiers sur lequel Gentoo est installée.

Partition Taille Système de fichiers Description
/dev/sda1 32Mb affs1 ou ext2 Partition de démarrage
/dev/sda2 512Mb Swap Linux Swap
/dev/sda3 Reste du disque ext3, ext4, reiserfs, xfs Racine Linux (root)

IBM PReP (RS/6000)

La plateforme de référence PowerPC d'IBM (IBM PowerPC Reference Platform ou PReP) demande une petite partition de démarrage en tant que première partition du disque, suivie de la partition de mémoire virtuelle et de la partition racine (root).

Partition Taille Système de fichiers Description
/dev/sda1 800k Aucune Partition de démarrage PReP (Type 0x41)
/dev/sda2 512Mb Swap Linux Swap (Type 0x82)
/dev/sda3 Reste du disque ext3, ext4, reiserfs, xfs Linux Root (Type 0x83)

Attention : parted est capable de redimensionner les partitions, y compris HFS+. Malheureusement, il peut y avoir des problèmes lors du redimensionnement de systèmes de fichiers journalisés HSF+, c'est pourquoi, pour de meilleurs résultats, désactivez la journalisation dans Mac OS X avant le redimensionnement. Rappelez-vous que toute opération de redimensionnement est périlleuse et que vous la faites à vos risques et périls ! Assurez-vous d'avoir sauvegardé vos données au préalable !

Si vous voulez savoir de quelle taille doit être une partition, ou même de combien de partitions vous avez besoin, continuez la lecture. Sinon, continuez avec par défaut: utiliser mac-fdisk (Apple) pour partitionner votre disque ou Alternative : utiliser parted pour partitionner votre disque (Pegasos and RS/6000).

Combien et de quelle taille ?

Le nombre de partitions dépend très fortement de votre environnement. Par exemple, si vous avez beaucoud d'utilisateurs, vous préférerez probablement disposer d'une partition /home séparée, dans la mesure où cela augmente la sécurité et rend les sauvegardes plus faciles. Si vous installer Gentoo pour en faire un serveur de courrier, votre dossier /var devrait être sur une partition séparée car tous les courriers reçus sont stockés dans /var. Un bon choix de système de fichiers devrait aussi augmenter les performances. Les serveurs de jeux devraient avoir le dossier /opt sur une partition séparée dans la mesure où tous les serveurs de jeux sont installés là. Pour des raisons de sécurité et de sauvegarde /home devrait aussi être sur une partition séparée. Quel que soit le plan de partitionnement que vous adoptez, vous devrez vous assurer que /usr dispose d'espace ; non seulement il contient la majorité des applications ; l'arbre de Portage à lui seul occupe 500 Mo sans compter les nombreux fichiers sources qui y sont stockés.

Comme vous pouvez le voir, ça dépend beaucoup de ce que vous voulez faire. Des partitions ou des volumes séparés offrent les avantages suivants ::

  • Vous pouvez choisir le système de fichiers le plus performant adapté à chaque partition ou volume.
  • Votre système entier ne peut manquer d'espace dans le cas où un outil défectueux écrit continuellement sur une partition ou un volume.
  • Si nécessaire, les vérifications des systèmes de fichiers prennent moins de temps, dans la mesure où plusieurs vérifications peuvent avoir lieu en paralléle. (quoi que cet avantage est plus sensible pour des disques séparés que pour des partitions séparées.)
  • La sécurité peut être améliorée en montant certaines partitions ou certains volumes en lecture seule, nosuid (les bits setuid sont ignorés), noexec (les bits executable sont ignorés) etc.

Néanmoins, avoir des partitions multiples présente des inconvénients malgré tout. Si elles ne sont pas configurées correctement, vous allez vous retrouver avec un système comprenant des partitions avec beaucoup d'espace libre et d'autres sans. Un autre inconvénient, c'est que les partitions séparées - en particulier pour les points de montage majeurs tels que /usr ou /var - exigent souvent que l'administrateur démarre avec un disque intial virtuel (initramfs) pour monter la partition avant que les autres scripts de démarrage ne soient exécutés. Ce n'est pas toujours le cas, c'est pourquoi les résultats peuvent être très différents.

Il y a aussi une limite de 15 partitions pour les disques SCSI et SATA.

4.c. Par défaut: utiliser mac-fdisk (Apple) pour partitionner votre disque

À ce point, créez vos partitions en utilisant mac-fdisk:

Exemple de code 3.1 : lancer mac-fdisk

# mac-fdisk /dev/sda

Si vous utilisez l'utilitaire de disque de Apple (Apple's Disk Utility) pour faire de la place à Linux, commencez par effacer les partitions que vous avez créées auparavant pour faire de la place à votre nouvelle installation. Utilisez d à l'intérieur de mac-fdisk pour effacer ces partitions. L'utilitaire vous demandera à chaque fois le numéro de partition à effacer. Habituellement, la première partition sur les machines New World (la table des partitions Apple) ne peut être effacée. Si vous préférez démarrer avec un disque vide, initialisez simplement le disque en pressant la touche i. Cela effacera complètement le disque ; utilisez donc cette commande avec précaution !

Ensuite créez une partition d'amorçage Apple (Apple_Bootstrap) en tappant b. Cela vous demandera à partir d'où vous voulez commencer. Saisissez le numéro de votre premère partition libre suivi de p. Par exemple : 2p.

Note : cette partition n'est pas la partition /boot. Elle n'est pas du tout utilisée par Linux. Vous n'avez pas à y placer un système de fichiers et vous ne devriez jamais la monter. Les utilisateurs d'Apple n'ont pas besoin d'une partition supplémentaire pour /boot.

Créez maintenant une partition de mémoire virtuelle en pressant c. Cette fois encore mac-fdisk vous demandera à partir de quel bloc vous voulez commencer cette partition. Comme vous avez utilisé 2 auparavant pour créer la partition amorçage Apple (Apple_Bootstrap) , vous devez entrer 3p. Quand on vous demande la taille, saisissez 512M (ou une autre taille de votre choix -- un minimum de 512 Mo est recommandé, mais deux fois la taille de votre mémoire réelle est en général le choix recommandé). Quand on vous demande un nom, saisisssez : swap.

Pour créer la partition /root saisissez c, suvi de 4p pour définir à partir de quel bloc la partition va commencer. quand on vous demande la taille, saisissez 4p à nouveau. mac-fdisk l'interprétera comme "Utiliser tout l'espace libre".Quand on vous demande le nom, saisissez root.

Pour terminer, écrivez les partitions sur le disque en utilisant w , puis quitter le programme mac-fdisk avec q.

Note : pour vous assurer que tout est correct, exécutez la commande mac-fdisk -l et assurez-vous que toutes les partitions sont présentes et telles que vous les avez prévues. Si vous ne voyez aucune des partitions, ou aucun des changements, que vous avez voulu créer, vous devriez réinitialiser vous partitions en pressant i à l'intérieur de mac-fdisk. Notez que cela recréera une table des partitions et, en conséquence, effacera toutes les partitions.

Maintenant que vos partitions sont en place, vous pouvez continuer avec Création des systèmes de fichiers.

4.d. Alternative : utiliser parted pour partitionner votre disque (Pegasos and RS/6000)

parted, l'éditeur de partitions peut désormais gérer les partitions HFS+ utilisées par Mac OS et Mac OS X. Grâce à cet outil, vous pouvez redimensionner vos partitions Mac et créer de l'espace pour vos partitions Linux. Néanmoins, l'exemple ci-dessous, ne décrit le partitionnement que pour les machines Pegasos.

Commencez par lancer parted:

Exemple de code 4.1 : lancer parted

# parted /dev/sda

Si le disque n'est pas partitionné, exécutez mklabel amiga pour créer une nouvelle étiquette de disque pour le disque.

Vous pouvez taper print à tout moment dans parted pour afficher la table des partitions courante. Si, à n'importe quel moment, vous changez d'avis ou faites une erreur, vous pouvz taper Ctrl-c pour faire avorter parted.

Si vous avez aussi l'intention d'installer MorphOS sur votre machine Pegasos créez un système de fichiers affs1 au début du disque. 32 Mo devraient amplement suffir pour stocker le noyau MorphOS. Si votre machine est une Pegasos I ou si vous voulez utiliser un système de fichiers autre que ext2 ou ext3, vous devrez aussi devrez aussi placer votre noyau Linux sur cette partition (la machine Pegasos II ne peut démarrer que de partitions ext2/ext3 ou affs1). Pour créer la partition, exécutez mkpart primary affs1 START ENDSTART et END sont à remplacer par la plage en Mo (ex. 0 32) qui crée une partition de 32 Mo démarrant à 0 Mo et se terminant à 32 Mo. Si, au lieu de cela, vous choisissez de crèer une partition ext2 ou ext3, remplacez affs1 par ext2 ou ext3 dans la commande mkpart.

Il vous faudra créer deux partitions pour Linux, une partition root et une partition swap. Exécutez mkpart primary START END pour créer chacune des partition en remplaçant START et END par les limites en Mo appropriées.

On recommande en général de créer une partition swap dont la taille est de deux fois celle de la mémoire réelle, mais 512 Mo est un minimum. Pour créer la partition swap, exécutez mkpart primary linux-swap START END en remplaçant START et END par les limites en Mo appropriées.

Quand vous en avez terminé avec parted tapez simplement quit.

4.e. Création des systèmes de fichiers

Introduction

Maintenant que vos partitions sont créées, c'est le moment d'y placer des systèmes de fichiers. Si vous ne savez pas quel système de fichiers choisir, et si notre proposition par défaut vous sied, continuez avec Appliquer un système de fichiers à une partition. Sinon, continuez à lire à propos des systèmes de fichiers.

Les systèmes de fichiers

Plusieurs systèmes de fichiers sont disponibles sur PowerPC, notamment ext2, ext3, ext4, XFS et ReiserFS, chacun avec leurs avantages et leurs inconvénients.

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 incohérent.

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 HTree qui permet d'obtenir d'excellentes performances dans pratiquement toutes les situations. En résumé, ext3 est un système de fichiers très bon et très fiable.

ext4 est un système de fichier dérivant de ext3 et y apportant de nouvelles fonctionnalités, une amélioration des performances et la suppression de la taille limite, ceci moyennant des changements modérés au formatage du disque. Il peut couvrir des volumes allant jusqu'à 1 EB avec une taille maximum de fichier de 16 TB. À la place de la classique table d'allocation de blocs des systèmes ext2/3, ext4 utilise les extents, ce qui améliore la performance des fichiers de grande taille et réduit la fragmentation. Ext4 offre également des algorythmes sophistiqués d'allocation de blocs (allocation retardée et allocation multi-blocs) donnant ainsi au pilote du système de fichiers plus de moyens d'optimiser l'arrangement des données sur le disque. Le système de fichiers ext4 est un compromis entre la stabilité d'un code pour la production et le désir d'introduire des extensions dans un système de fichiers vieux de près de 10 ans. Ext4 est le système de fichier recommandé pour les systèmes de fichiers non spécifiques sur toutes les architectures.

Si vous avez l'intention d'installer Gentoo sur une petite partition (inférieure à 8 GO), vous devez indiquer à ext2, ext3 ou ext4 (si disponibles) de réserver suffisamment d'inodes à la création du système de fichiers. L'application mke2fs utilise le paramètre "bytes-per-inodes" pour calculer combien d'inodes un système de fichiers doit avoir. En lançant mke2fs -T small /dev/<device> (ext2) ou mke2fs -j -T small /dev/<device> (ext3/ext4) le nomble d'inodes sera généralement quadruple pour un système de fichiers donné lorsque son "bytes-per-inode" passe de un tous les 16 kO à un tous les 4 kO. Vous pouvez peaufiner cela encore plus en utilisant mke2fs -i <ratio> /dev/<device> (ext2) ou mke2fs -j -i <ratio> /dev/<device> (ext3/ext4).

ReiserFS est un système de fichiers journalisé basé sur les B+tree qui a de très bonnes performances, spécialement dans le cas de petits fichiers au prix d'une plus grande consommation de cycles CPU. ReiserFS est apparemment moins maintenu que les autres systèmes 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. XFS ne semble pas pardonner les éventuels problèmes de matériel.

Activer la partition de mémoire virtuelle

mkswap est la commande à utiliser pour initialiser les partitions de mémoire virtuelle :

Exemple de code 5.1 : créer une signature de partition de mémoire virtuelle

# mkswap /dev/sda3

Pous activer la partition de mémoire virtuelle, utilisez swapon:

Exemple de code 5.2 : activer la partition de mémoire virtuelle

# swapon /dev/sda3

Créez et activez la partition de mémoire virtuelle maintenant avant de créer les autres systèmes de fichiers.

Appliquer un système de fichiers à une partition

Pour créer un système de fichiers sur une partition ou sur un volume, il existe un outil pour chaque type de système de fichiers :

Système de fichiers Commande de création
ext2 mke2fs
ext3 mke2fs -j
ext4 mkfs.ext4
reiserfs mkreiserfs
xfs mkfs.xfs

Par exemple, pour créer un système de fichiers ext4 sur la partition root (/dev/sda4 dans notre cas), il faut utiliser :

Exemple de code 5.3 : appliquer un système de fichiers à une partition

# mkfs.ext4 /dev/sda4

Créez maintenant les systèmes de fichiers sur vous nouvelles partitions (ou volumes logiques).

Important : si vous choisissez d'utiliser un système de fichiers ReiserFS pour /, ne changez pas sa taille de bloc par défaut si vous comptez aussi utiliser yaboot en tant que chargeur de démarrage, comme expliqué dans Configurer le chargeur de démarrage.

Note : sur PegasosII le système de fichiers de la partition qui contient le noyau doit être de type ext2, ext3 ou affs1. Les machines NewWorld peuvent démarrer à partir de systèmes de fichiers ext2, ext3, XFS, ReiserFS ou 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 vous configurerez votre chargeur de démarrage.

4.f. Mountage des partitions

Maintenant que vos partitions sont initialisées et hébergent un système de fichiers, c'est le moment de les monter. Utilisez la commande mount. En tant qu'exemple, nous présentons le montage de la partition root :

Exemple de code 6.1 : montage des partitions

# mount /dev/sda4 /mnt/gentoo

Note : si vous voulez que votre répertoire /tmp réside sur une partition séparée, assurez-vous de changer ses permissions, après le montage et l'extration des archives avec chmod 1777 /mnt/gentoo/tmp. Ceci s'applique aussi à /var/tmp.

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

Si la date/heure n'est pas bonne, mettez-la à jour en utilisant la commande 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. 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.

5.b. Utilisation d'une archive téléchargée depuis l'Internet

Télécharger l'archive « stage »

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 « stage ». 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 un mirroir proche de chez vous. Ordinairement, les mirroirs HTTP suffisent, mais d'autres protocoles sont possibles. Déplacez-vous ensuite dans le répertoire releases/ppc/autobuilds/. Vous devriez y voir tous les fichiers de « stage » 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 le 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

(Via un serveur mandataire avec links :)
# 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.

Si vous voulez vérifier l'intégrité de l'arcihive téléchargée, utilisez openssl et comparez la sortie avec la somme de contrôle fournie sur le mirroir. Les fichiier « digests » fournissent plusieurs sommes de contrôle, chacune faisant appel à un algorithme différent. Les algorithmes recommmandés sont SHA512 et Whirlpool.

Exemple de code 2.4 : calcul de la somme de contrôle d'une archive de stage

## Calcul de la somme de contrôle SHA512 
# openssl dgst -r -sha512 stage3-ppc-<release>.tar.bz2
ou
# sha512sum stage3-ppc-<release>.tar.bz2

## Calcul de la somme de contrôle Whirlpool
# openssl dgst -r -whirlpool stage3-ppc-<release>.tar.bz2

Maintenant, comparez ces valeurs de sortie avec celles enregistrées dans les fichiers .DIGESTS(.asc) qui sont également disponibles sur les mirroirs. Les valeurs doivent correspondre. Dans le cas contraire le fichier téléchargé est corrompu (ou le fichier .DIGESTS).

Comme pour le fichier ISO, vous pouvez également vérifier la signatuer cryptographique du fichier the .DIGESTS.asc avec gpg pour vous assurer que les sommes de contrôle n'ont pas été altérées : 

Exemple de code 2.5 : valider les sommes de contrôle avec gpg

# gpg --verify stage3-ppc-<release>.tar.bz2.DIGESTS.asc

Décompresser l'archive de « stage 

Maintenant, décompressez l'archive 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.6 : 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 de fichier 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 Configurer les options de compilation.

5.c. 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/portage/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.example. 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 3.1 : ouvrir /etc/portage/make.conf

# nano -w /mnt/gentoo/etc/portage/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). Une valeur utilisée courramment est native qui précise au compilateur de choisir l'architecture cible du système courant (celui sur lequel vous faites l'installation.)

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 mais utilise plus de mémoire. Sur des systèmes avec peu de mémoire, gcc peut être tué. Dans ce cas n'utilisez pas cette option.

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 3.2 : Définition des variables CFLAGS et CXXFLAGS

CFLAGS="-O2 -mcpu=powerpc -mtune=powerpc -fno-strict-aliasing -pipe"
# Utilisez les mêmes réglages pour les deux variables
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 3.3 : MAKEOPTS pour un système classique à 1 processeur

MAKEOPTS="-j2"

À vos marques, prêts, partez !

Mettez à jour votre /mnt/gentoo/etc/portage/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. Changement de racine (chrooting)

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 les choisir et de les enregistrer plus facilement.

Exemple de code 1.1 : définir la variable GENTOO_MIRRORS avec mirrorselect

# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

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 avec mirrorselect

# mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf

Après avoir utilisé mirrorselect, il est conseillé de vérifier le contenu de /mnt/gentoo/etc/portage/make.conf.

Note : si vous désirez déclarer un serveur SYNC à la main dans make.conf, vous devriez consulter la liste des mirroirs de la communauté pour trouver les mirroirs les plus proches de chez vous. Nous vous conseillons de choisir un pool, comme rsync.us.gentoo.org, plutôt que de choisir un seul mirroir. Ceci permet de répartir la charge et fournit une solution de repli quand un mirroir est hors service.

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

(L'option -L garantit qu'on ne copie pas un lien symbolique.)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/

Monter les systèmes de fichiers requis (/proc et /dev)

Dans un moment, nous allons changer la racine de Linux vers le nouvel emplacement. Pour être sûr que le nouvel environment fonctionne correctement, nous devons rendre certains fichiers disponibles.

Montez le système de fichiers /proc sur /mnt/gentoo/proc pour permettre à l'installation d'utiliser les informations fournies par le noyau même lorsqu'on se trouve dans l'environnement sous la nouvelle racine, et montez-liez les systèmes de fichiers /dev et /sys.

Exemple de code 1.4 : monter /proc et /dev

# mount -t proc none /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev

Attention : Lorsque vous utilisez un médium d'installation non Gentoo, ceci peut ne pas suffire. Quelques distributions font de /dev/shm un lien symbolique vers /run/shm qui, après le changement de racine, devient invalide. Faire de /dev/shm une interface de montage de système de fichiers temporaire correct peut résoudre ce problème.

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 en changeant la racine de Linux (chrooting). 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).

Le changement de racine se fait en trois étapes. D'abord, on déplace la racine / depuis l'environnement d'installation vers /mnt/gentoo sur vos partitions, en utilisant chroot. Puis nous rechargeons en mémoire quelques paramètres de configuration fournis par /etc/profile via la commande source. La dernière étape consiste à redéfinir l'invite de commande pour que nous nous rapellions que nous sommes dans un environnement après changement de racine.

Exemple de code 1.5 : entrer dans le nouvel environnement

# chroot /mnt/gentoo /bin/bash
# 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 :-)

Si, à n'importe quel moment, vous avez besoin d'accéder au nouvel environnement depuis un autre terminal ou une autre console, tout ce que vous avez à faire et d'exécuter à nouveau les étapes précédentes.

6.b. Configurer Portage

Installer un instantané de Portage

Vous devez maintenant installer un instantané de Portage, c'est à dire, une collection de fichiers qui disent à Portage quel programmes vous pouvez installer, quels profils sont disponibles, etc.

Nous recommandons d'utiliser la commande emerge-webrsync. Ceci ira chercher l'instantané de Portage le plus récent (que la communauté Gentoo met à jour quotidiennement) depuis l'un de nos mirroirs et l'installera sur votre système.

Exemple de code 2.1 : exécuter emerge-webrsync pour installer un instantané de Portage

# emerge-webrsync

Note : Durant cette opération, il se peut que emerge-webrsync se plaigne d'un emplacement /usr/portage manquant. Il faut s'y attendre et il n'y a rien à craindre de cela - l'outil va créer l'emplacement pour nous.

À partir de ce poin, Portage peut indiquer que certaines mises à jours sont recommandées. C'est parce que certains paquets systèmes disposent d'une version plus récente que celle installées par l'archive d'étape 3 et que Portage en prend conscience parce qu'un nouvel instantané vient d'être installé. Vous pouvez ne pas en tenir compte pour le moment et ne faire la mise à jour qu'après la fin de l'installation.

Facultatif : mettre l'arbre de Portage à jour

Vous pouvez maintenant mettre votre arbre Portage à jour. emerge --sync utilise le protocole rsync pour mettre l'arbre de Portge à jour (celui que vous êtes allé chercher auparavant avec emerge-webrsync.)

Exemple de code 2.2 : mise à jour de l'arbre de Portage

# emerge --sync
(Si vous utilisez un terminal lent comme certains tampons de trames ou une
connexion série, vous pouvez ajouter l'option --quiet pour gagner du
temps :)
# emerge --sync --quiet

Si vous vous trouvez derrière un pare-feu qui bloque le trafic rsync, vous pouvez pour l'instant ignorer cette étape car vous avez déjà un arbre récent.

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. On peut aussi vous signaler de prendre connaissance de certaines nouvelles. Plus sur ce point après.

Lecture des nouvelles

Lors de la synchronisation d'un arbre Portage, Portage peut attirer votre attention sur les points suivants :

Exemple de code 2.3 : portage vous informe que des nouvelles sont à lire

 * IMPORTANT: 2 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

Les nouvelles de Portage ont été créées pour permettre de communiquer des messages critiques aux utilisateurs via la synchronisation. Pour les lire, vous devez utiliser eselect news. Avec la sous-commande read vous pouvez lire toutes les nouvelles. Avec la sous-commande list vous pouvez en avoir une vue d'ensemble et avec purge vous pouvez les éliminer dès que vous les avez lues et que vous n'en avez plus besoin.

Exemple de code 2.4 : lecture des nouvelles de Portage

# eselect news list
# eselect news read

Des informations détaillées sont disponibles sur le lecteur de nouvelles par le biais de sa page de manuel : man news.eselect.

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 :

Note : La sortie de la commande ci-dessous est juste donnée à titre d'exemple. Elle peut évoluer dans le temps.

Exemple de code 2.5 : connaitre le profil utilisé

# eselect profile list
Available profile symlink targets:
  [1]   default/linux/powerpc/ppc32/13.0 *
  [2]   default/linux/powerpc/ppc32/13.0/desktop
  [3]   default/linux/powerpc/ppc32/13.0/desktop/gnome
  [4]   default/linux/powerpc/ppc32/13.0/desktop/kde

Les sous-profils desktop 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.6 : 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 la prise en charge de GTK ou de Qt. D'autres peuvent être compilés avec ou sans prise en charge de SSL. Certains programmes peuvent même être compilés avec une prise en charge du tampon de trames « framebuffer » (svgalib) plutôt que de X11 (serveur X).

La plupart des distributions compilent leurs paquets avec une prise en charge aussi complète 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 la prise en charge de ssl dans les programmes qui le supportent. -X retirera la prise en charge du serveur X (remarquez le signe moins devant le mot-clé). gnome gtk -kde -qt3 -qt4 compilera vos programmes avec la prise en charge de GNOME (et GTK), mais sans la prise en charge de KDE (ni Qt). Le résultat sera un système complètement optimisé pour GNOME.

Les options par défaut de la variable 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/portage/make.profile pointe, ainsi que dans tous ses répertoires parents. Les options par défaut de la variableUSE sont donc la somme de toutes les options de la variable USE de ces fichiers. Vos modifications à /etc/portage/make.conf sont jugées en fonction de ces options par défaut. Si vous ajoutez quelque chose aux options de la variableUSE, c'est ajouté à la liste par défaut. Si vous retirez quelque chose des options de la variable 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/portage/make.profile car ces fichiers sont écrasés lors des mises à jour de Portage !

Une description complète de la variable 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.7 : afficher les options de la variable USE disponibles

# less /usr/portage/profiles/use.desc
(Utilisez les flèches de votre clavier pour faire défiler
le texte et tapez 'q' pour quitter.)

L'exemple suivant montre les options de la variable USE pour un système basé sur KDE avec prise en charge d'ALSA, pour les DVD et pour la gravure de CD :

Exemple de code 2.8 : ouverture de /etc/portage/make.conf

# nano -w /etc/portage/make.conf

Exemple de code 2.9 : options de la variable USE

USE="-gtk -gnome  qt4 kde dvd alsa cdr"

6.c. Facultatif: en utilisant systemd

La suite du manuel de Gentoo se focalise sur OpenRC en tant que système pour la prise en charge de l'initialisation. Si vous préférez utiliser systemd à la place, ou si vous avez l'intention d'utiliser Gnome 3.8 ou postérieur (qui requiert systemd), consultez la page sur systemd sur le wiki de Gentooo qui renseigne sur les différentes méthodes de configuration.

Le manuel de Gentoo peut être suivi en conservant cela à l'esprit.

6.d. 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 sur /etc/localtime.

Exemple de code 4.1 : définir l'information relative au fuseau horaire

# ls /usr/share/zoneinfo
(En supposant que vous désiriez utiliser  Europe/Brussels)
# echo "Europe/Brussels" > /etc/timezone

Évitez les fuseaux du type /usr/share/zoneinfo/Etc/GMT* car leur nom prête à confusion. Par exemple, GMT-8 est en fait GMT+8.

Ensuite, reconfigurez le paquet timezone-data, qui mettra à jour le fichier /etc/localtime pour nous, en se basant sur l'entrée /etc/timezone. Le fichier /etc/localtime est utilisé par la bibliothèque système C pour déterminer dans quel fuseau horaire se trouve le système.

Exemple de code 4.2 : reconfigurer les informations de fuseau horaire (timezone-data)

# emerge --config sys-libs/timezone-data

6.e. Configurer les locales

YVous n'utiliserez probablement qu'une ou deux locales sur votre système. Vous devez spécifier les locales dont vous avez besoin dans /etc/locale.gen.

Exemple de code 5.1 : Éditer /etc/locale.gen

# nano -w /etc/locale.gen

Les locales suivantes sont un exemple pour disposer à la fois de l'anglais (US) et de l'allemand. avec les formats de caractères associés (tels qu'UTF-8).

Exemple de code 5.2 : Spécifier les locales

en_US ISO-8859-1
en_US.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15

Note : Vous pouvez choisir les locales désirées dans la liste en exécutant la commande locale -a.

Attention : nous vous recommandons fortement d'utiliser au moins une locale UTF-8 car certaines applications l'exigent.

L'étape suivante consiste à utiliser la commande locale-gen. Elle générera toutes les locales que vous avez spécifiées dans le fichier /etc/locale.gen .

Exemple de code 5.3 : exécuter locale-gen

# locale-gen

Vous pouvez vérifier que les locales que vous avez selectionnées sont disponible via la commande locale -a.

Une fois cela fait, vous avez la possibilité de définir les paramètres de locale valable pour tout le système. Grâce à la commande eselect locale list, les cibles disponibles sont affichées.

Exemple de code 5.4 : afficher les paramètres de langue (LANG) disponibles

# eselect locale list(
Available targets for the LANG variable:
(Cibles de langue disponibles -variable LANG)
  [1] C
  [2] POSIX
  [3] en_US
  [4] en_US.iso88591
  [5] en_US.utf8
  [6] de_DE
  [7] de_DE.iso88591
  [8] de_DE.iso885915
  [9] de_DE.utf8
  [ ] (free form)

Via eselect locale set <value> on peut définir la locale :

Exemple de code 5.5 : Définir la variable LANG

# eselect locale set 9

On peut toujours définir cela à la main dans le fichier /etc/env.d/02locale :

Exemple de code 5.6 : Définir la locale par défaut dans le fichier /etc/env.d/02locale

LANG="de_DE.UTF-8"
LC_COLLATE="C"

Assurez-vous qu'une locale est définie, sinon vous risquez d'avoir des avertissements et des erreurs lors de la compilation du noyau et le déploiement d'autres programnes plus loin dans la phase d'installation.

N'oubliez pas de recharger votre environment:

Exemple de code 5.7 : recharger l' environment du shell

# env-update && source /etc/profile

Nous tenons un Guide de Localization complet à votre disposition pour vous aider dans ce processus. Vous pouvez également lire l' article UTF-8 pour des informations très détaillées sur activer UTF-8 sur votre système.

7. Configurer le noyau

7.a. 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 1.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-3.4.9. Gardez bien à l'esprit que votre version du noyau peut être différente.

Exemple de code 1.2 : examiner le lien symbolique vers le noyau

# ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-3.4.9

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 c'est le moyen le plus efficace pour optimiser votre environnement.

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.b. 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).

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 2.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).Pour vous apporter une aide complémentaire, nous vous proposons également Le guide de configuration du noyau de Gentoo sur le wiki de Gentoo.

Activer les options requises

Allez à la section File Systems et activez le support nécessaire pour les systèmes de fichiers que vous utilisez. Ne compilez pas le système de fichiers que vous utilisez en tant que système de fichier racine sous forme de module,, 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 nécessaire si vous utilisez un Pegasos ou les partitions Macintosh si vous utilisez un Apple.

Exemple de code 2.2 : activer le support pour les systèmes de fichiers

File systems --->
  Pseudo Filesystems --->
    (/proc sera peut-être forcé, auquel cas vous verrez ---.)
    [*] /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

 (Sélectionnez le(s) système(s) de fichiers dont vous avez besoin.)
  <*> 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 2.3 : 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 2.4 : 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 2.5 : sélectionner le pilote réseau

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

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 2.6 : 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 2.7 : 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 devriez activer le pilote du framebuffer supporté par votre puce (Mach64, Rage128 ou Radeon).

Exemple de code 2.8 : 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.

Ensuite sélectionnez Maintain a devtmpfs file system to mount at /dev de façon que vos périphériques de fichiers critiques soient disponibles très tôt dans le processus de démarrage.

Exemple de code 2.9 : Activer la prise en charge de devtmpfs

Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

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 2.10 : 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 2.11 : installer le noyau

# cd /usr/src/linux
Votre version de noyau peut être différente.
(Apple/IBM)
# cp vmlinux /boot/kernel-3.4.9-gentoo
(Pegasos)
# cp arch/powerpc/boot/images/zImage /boot/kernel-3.4.9-gentoo

Maintenant, poursuivez votre lecture avec Installer des modules du noyau individuels.

7.c. Alternative: utiliser genkernel

Maintenant que votre arbre des sources du noyau est en place, il est temps de compiler votre noyau en utilisant notr script genkernel qui va compiler automatiquement un noyau pour vous. genkernel travaille en configurant un noyau presque identique à celui de votre CD d'installation. Ceci signifie que, quand vous utilisez genkernel pour compiler votre noyau, votre système va détecter votre matériel au moment du démarrage, comme le fait le CD d'installation. Comme genkernel ne requiert aucune configuration manuelle, c'est la solution idéale pour ceux qui ne sont pas très à l'aise avec la configuration et la compilation de leur propre noyau..

Tout d'abord, installez genkernel :

Exemple de code 3.1 : installation de genkernel

# emerge genkernel

Si vous démarrer à partir d'un périphérique FireWire ou USB, vous devrez ajouter des modules à l'initrd. Éditez /usr/share/genkernel/arch/ppc/modules_load et changez MODULES_FIREWIRE="ieee1394 ohci1394 sbp2" pour la prise en charge de FireWire ou MODULES_USB="usbcore ohci-hcd ehci-hcd usb-storage" pour la prise en charge de l'USB.

Avant de compiler vos sources, le fichier fstab doit être légèrement modifié. Le reste de ce fichier sera complété à une étape ultérieure, c'est pourquoi, il ne faut pas vous préoccuper des détails maintenant. Si vous n'avez pas créé de partition boot séparée, (PAS bootstrap, ce qui est différent), retirer la ligne faisant référence à /boot du fichier /etc/fstab. Ceci doit être fait sur la plupart des ordinateurs Apple.

Exemple de code 3.2 : retirer /boot de /etc/fstab sur les machines sans partition boot

# nano -w /etc/fstab
Retirer cette ligne
/dev/BOOT  /boot    ext2    noauto,noatime    0 2

Maintenant compilez les sources du noyau avec genkernel --genzimage all. Pour les machines Pegasos, il faut utiliser une configuration différente et créer une image zImage au lieu du noyau vmlinux utilisé sur les machines Apple. Soyez conscient que genkernel compile un noyau qui prend en charge presque toutes les fonctionnalités matérielles et que cette compilation peut prendre un temps important !

Notez que, si la partition où le noyau devrait être placé n'utilise pas un système de fichiers ext2 ou ext3, vous pourriez être forcé de configurer votre noyau à la main avec la commande genkernel --menuconfig all et ajouter la prise en charge de votre système de fichiers dans le noyau (i.e. pas par un module). Les utilisateurs de LVM2 voudrons certainement ajouter --lvm comme argument aussi.

Exemple de code 3.3 : exécuter genkernel

# genkernel all

Exemple de code 3.4 : exécuter genkernel sur Pegasos

# genkernel --genzimage all

Dès que genkernel a compilé un noyau, un jeux complet de modules et un disque virtuel initial (initramfs) sont créés. Vous utiliserez le noyau et initrd lors de la configuration du chargeur de démarrage plus loin dans ce document. Notez le nom du noyau et celui de initrd car vous en aurez alors besoin. Le initrd sera démarré tout de suite après le démarrage pour assurer la détection automatique du matériel (comme le fait le CD d'installation) avant que votre système réel ne démarre. Assurez-vous de copier les arguments de démarrage aussi, car ils sont nécessaire à un démarrage réussi avec genkernel.

Exemple de code 3.5 : vérifier le nom de l'image noyau et du initrd créés

Notez que la version de votre noyau peut être différente.
# ls /boot/kernel-genkernel-ppc-3.4.9-gentoo /boot/initramfs-genkernel-ppc-3.4.9-gentoo

Maintenant continuez avec Kernel Modules.

7.d. Kernel Modules

Configurer les modules

Vous devriez indiquer la liste des modules que vous souhaitez charger automatiquement dans /etc/conf.d/modules. Vous pouvez également ajouter des options aux modules si vous le souhaitez.

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/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

Par exemple, pour charger automatiquement le module 3c59x.ko (c'est un pilote pour certaines cartes réseau 3Com), il suffit de renseigner ce module dans le fichier de configuration /etc/conf.d/modules.

Exemple de code 4.2 : Modifier le fichier /etc/conf.d/modules

# nano -w /etc/conf.d/modules
modules_2_6="3c59x"

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.).

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

Dans la suite de ce texte, nous utilisont le pseudo-fichier de périphérique de blocs /dev/sd* comme partition. Vous pouvez aussi choisir d'utilisers les liens symboliques dans les dossiers /dev/disk/by-id ou /dev/disk/by-uuid. Ces noms sont peu susceptibles de changer car le nommage de pseudo-fichier de périphérique de blocs dépend d'un certains nombre de facteurs (comme comment et dans quel ordre les disques sont attachés à votre systèm. Cependant, si vous n'avez pas l'intention de jouer avec l'ordre des disques, vous pouvez continuer avec les pseudo-fichiers de périphérique par défaut en toute sécurité.

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.2 : un exemple complet de fichier /etc/fstab

/dev/sda4   /            ext4    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'occurrence 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. Ceci est également recommandé pour les utilisateurs de disques solides (SSD) qui devraient aussi activer l'option de montage discard (ext4 et btrfs seulement à ce stade) ce qui permet à la commande TRIM de fonctionner.

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

(Attribuez le nom de votre machine à la variable 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.

Note : Le fichier /etc/conf.d/net n'existe pas par défaut, vous pourriez donc avoir besoin de le créer.

Exemple de code 2.2 : définir le nom de domaine

# nano -w /etc/conf.d/net

(Attribuez le nom de votre domaine à la variable dns_domain.)
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

(Attribuez le nom de votre domaine à la variable nis_domain.)
nis_domain_lo="mondomaineNIS"

Note : pour plus d'information sur la configuration du DNS et du NIS, lisez les exemples fournis dans le fichier /usr/share/doc/netifrc-*/net.example.bz2 que vous pouvez lire en utilisant bzless. 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 : la partie configuration réseau de Gentoo de ce manuel fournit une information détaillée , y compris les ponts, le couplage d'interface, les réseaux 802.1Q et sans fil.

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 qui couvre de nombreuses configurations différentes se trouve dans le fichier /usr/share/doc/netifrc-*/net.example.bz2.

Commençons par installer netifrc:

Exemple de code 2.4 : installer netifrc

# emerge --noreplace netifrc

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.5 : ouvrir /etc/conf.d/net

# nano -w /etc/conf.d/net

Pour entrer une adresse fixe, un masque de réseau et une adresse de passerelle, vous devez définir config_eth0 et routes_eth0 :

Note : ceci suppose que votre interface réseau est appelée eth0. Cela reste malgré tout très dépendant du système. Nous vous recommandons de supposer que l'interface porte le même nom que l'interface utilisée lors du démarrage sur un medium d'installation. à condition qu'il soit suffisamment récent. Vous trouverez de l'information additionnelle au chapitre Nommage des interfaces réseau.

Exemple de code 2.6 : définir une adresse statique pour eth0 à la main

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" )

Vous trouverez toutes les options disponibles en lisant le fichier /usr/share/doc/netifrc-*/net.example.bz2. Assurez-vous de lire aussi la page de manuel du client DHCP si vous souhaitez fixer des options DHCP particulières.

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 »

# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default

Si vous avez plusieurs interfaces réseau, vous devez créer les scripts net.* appropriés de la même manière que celle employée pour créer net.eth0).

Si par la suite, vous vous rendez compte que le nom utilisé pour l'interface réseau (que nous avons supposé être eth0) est faux, alors :

  1. mettez à jour le fichier /etc/conf.d/net avec le nom correct (tel que enp3s0 à la place de eth0),
  2. créez un nouveau lien symbolique (tel que /etc/init.d/net.enp3s0),
  3. retirez l'ancien lien symbolique (rm /etc/init.d/net.eth0),
  4. ajoutez le nouveau au niveau d'exécution par défaut et,
  5. retirez l'ancien avec la commande rc-update del net.eth0 default.

Noter l'information relative au réseau

Vous devez maintenant fournir à Linux l'information relative à votre réseau. Celle-ci est définie 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.9 : ouvrir /etc/hosts

# nano -w /etc/hosts

Exemple de code 2.10 : inscrire les informations réseau

(Ceci sert à définir votre propre machine)
127.0.0.1     tux.homenetwork tux localhost

(Définit des machines supplémentaires sur le réseau. Ces machines
doivent avoir une IP statique pour que celà fonctionne.)
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.11 : 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 : configurer les services

# nano -w /etc/rc.conf

Ensuite, sauvez votre fichier et quittez votre éditeur.

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.

Quand vous en avez terminé avec le fichier /etc/conf.d/keymaps, sauvez et quittez.

Ensuite, éditez le fichier /etc/conf.d/hwclock pour configurer les options relatives à l'horloge :

Exemple de code 3.4 : ouvrir /etc/conf.d/hwclock

# nano -w /etc/conf.d/hwclock

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 « sauts d'heure ».

Lorsque vous aurez fini de configurer /etc/conf.d/hwclock, sauvegardez puis quittez l'éditeur.

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 plusieurs 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 le choix entre plusieurs démon cron :bcron, dcron, fcron et cronie. 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 cronie.

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
(Seulement si vous avez choisi dcron ou fcron.) # 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 mlocate

# emerge mlocate

9.d. Facultatif: accès à distance

Si vous avez besoin d'accéder à votre système à distance, n'oubliez pas d'ajouter sshd au miveau d'exécution « par défaut »:

Exemple de code 4.1 : ajout de sshd au niveau d'exécution « par défaut »

# rc-update add sshd default

Si vous avez besoin d'un accès par console série (ce qui est possible dans le cas de servers distants), vous pourriez avoir besoin de décommenter la section « serial console » dans /etc/inittab si cela n'a pas déjà été fait automatiquement.

Exemple de code 4.2 : édition de /etc/inittab

# nano -w /etc/inittab

L'extrait suivant présente la section décommentée :

Exemple de code 4.3 : décommenter serial consoles dansinittab

# SERIAL CONSOLES
s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100

9.e. 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, ext3 ou ext4(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 5.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.f. 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 6.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 6.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é, et que les fichiers de configuration requis ont été correctement documentés, c'est le moment d'installer un programme qui lancera votre noyau au démarrage du système. Un tel progrmanne est appelé chargeur de démarrage.

Le chargeur de démarrage que vous utiliserez dépend du type de machine PPC que vous utilisez.

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  # ceci vous fera quitter l'environnement chroot
# mount --rbind /dev /mnt/gentoo/dev
# mount --rbind /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

###########################################################
## Cette section peut être dupliquée si vous avez plusieurs noyaux ou jeux
## d'options du noyau (remplacez l'image et l'initrd par les noms exacts de
## votre noyau et de votre image initrd).
###########################################################
image=/boot/kernel-genkernel-ppc-3.4.9-gentoo
  label=Linux
  root=/dev/ram0
  partition=3
  initrd=/boot/initramfs-genkernel-ppc-3.4.9-gentoo
  # Vous pouvez ajouter ici des arguments additionnels tels que
  # rootdelay=10 pour démarrer sur USB/Firewire
  append="real_root=/dev/sda3"  
  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/sda2. 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.

Exemple de code 2.6 : fichier /etc/yaboot.conf

## /etc/yaboot.conf
##
## Lisez « man yaboot.conf » pour plus de détails. Ne continuez pas avant de l'avoir fait !
## Consultez aussi : /usr/share/doc/yaboot/examples pour des exemples de configuration.
##
## Pour un menu « multiple-boot », ajoutez une ou plusieurs de ces options :
## bsd=/dev/sdaX, macos=/dev/sdaY, macosx=/dev/sdaZ

## La partition de démarrage :

boot=/dev/sda2

## ofboot indique la partition de démarrage selon Open Firmware.
## Sans cela, yaboot échoue sur un G5 et sur certains G4
## (à moins que vous ne passiez les arguments
## nécessaires au programme mkofboot/ybin).
## hd:X signifie /dev/sdaX.
##
## Pour un G5, décommentez la ligne suivante :

#ofboot=hd:2

## Pour ceux qui démarrent sur Firewire :
# ofboot=fw/node/sbp-2/disk@0:

## Pour ceux qui démarrent sur USB :
# ofboot=usb/disk@0:

## hd: correspond au premier disque trouvé par Openfirmware.
device=hd:

## Pour USB ou Firewire, il faut spécifier le nom complet du périphérique.
## On peut s'aider d'ofpath, inclu dans yaboot.

# device=fw/node@0001d200e00d0207/sbp-2@c000/disk@0:


delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot

############################################################
## Recopiez cette section si vous avez plusieurs noyaux ou plusieurs jeux
## d'options de démarrage. Remplacez la variable image par le nom de fichier
## exact de votre noyau.
###########################################################
image=/boot/kernel-3.4.9-gentoo
  label=Linux
  root=/dev/sda3
  partition=3
  #  append="rootdelay=10"  # requis pour démarrer sur USB/Firewire
  read-only
##################

## Pour un G5 et certains G4, utilisez les lignes ci-dessous
##   macos=hd:13/
##   macosx=hd:12
## au lieu des lignes suivantes :
macos=/dev/sda13
macosx=/dev/sda12
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-3.4.9-gentoo"

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-3.4.9-gentoo "/mnt/mac/System Folder/Linux Kernels"
cdimage ~# cp /mnt/gentoo/boot/initramfs-genkernel-ppc-3.4.9-gentoo "/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 -l /mnt/gentoo/dev{/pts,/shm,}
cdimage ~# umount -l /mnt/gentoo{/proc,/sys,}
cdimage ~# umount -l /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 Linux\n"
# La partition /boot
partition = 2
root = /dev/sda4
timeout = 30
default = gentoo
# Le noyau
image = /kernel-3.4.9-gentoo
  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.

Exemple de code 4.3 : déplacer quik.conf sur /boot

# mv /etc/quik.conf /boot/quik.conf

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.4 : définir les variables de démarrage

# Mettez false si vous voulez rester dans l'OpenFirmware, tous les
# modèles ne peuvent pas afficher la sortie d'OpenFirmware
# nvsetenv auto-boot true

# Vérifiez les problèmes sur la page citée précédemment pour cette
# commande.
# nvsetenv output-device video

# nvsetenv input-device kbd

# Pour le SCSI
# nvsetenv boot-device scsi/sd@1:0

# Pour l'ATA
# nvsetenv boot-device ata/ata-disk@0:0

# D'abord le chemin vers le noyau, puis la partition racine.
# Vous pouvez ajouter des paramètres du noyau à la suite.
# nvsetenv boot-file /boot/kernel-3.4.9-gentoo root=/dev/sda4

# Mettez bye pour MacOS ou boot pour Linux.
# 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

#
# Exemple de configuration pour bootcreator 1.1
#

[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-3.4.9-gentoo video=radeonfb:1024x768@70 root=/dev/sda3

[SECTION]
Local HD -> Genkernel (Normal)
ide:0 kernel-genkernel-ppc-3.4.9-gentoo root=/dev/ram0
real_root=/dev/sda3 initrd=initramfs-genkernel-ppc-3.4.9-gentoo

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 -l /mnt/gentoo/dev{/pts,/shm,}
livecd ~# umount  /mnt/gentoo{/proc,/sys,}
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
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: (votre mot de passe root)

# useradd -m -G users,wheel,audio -s /bin/bash john
# passwd john
Password: (tapez le mot de passe pour john)
Re-enter password: (retapez-le pour vérifier)

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 que vous avez téléchargée et sauvée sur votre disque dur. Normalement vous l'aviez placée dans /.

Exemple de code 2.1 : Supprimer l'archive stage3

# rm /stage3-*.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.

Nous avons également un wiki officiel ( Gentoo Wiki ) sur lequel vous pouvez trouver de la documentation complémentaire produite par la communauté. L'équipe de documentation met aussi à votre disposition Vue d'ensemble de la documentation.

Vous pourriez avoir besoin de consulter notre guide de localisation pour vous sentir plus à votre aise avec le système.

De plus, notre Manuel de sécurité Gentoo Linux pourra sans doute vous être utile.

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.

Nous allons nous taire maintenant et vous laisser profiter de votre installation. :)

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 langage Python et en langage Bash qui sont tous les deux des langagages 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 manuel 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 faisons souvent allusion aux 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 maintenir les logiciels (les installer, les rechercher, etc.). Par défaut, ces ebuilds se trouvent dans le dossier /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 soit informé de l'apparition de nouvelles versions des logiciels que vous utilisez ou de 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 et rapide. 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

Un avantage supplémentaire qu'apporte emerge-webrsync réside dans le fait que ceci permet à l'administrateur de n'installer que des instantanés de l'arbre Portage authentifiés par la clé GPG de la « Gentoo release engineering team ». Des informations complémentaires sons disponibles dans la section Recherche d'instatanés validés de l'arbre Portage de la page Portage et ses fonctionnalités.

1.c. Maintenir 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 », utilisez :

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 se passent de commentaires supplémentaires.

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

Comme de nombreuses applications dépendent les unes des autres, il se peut que, lorsque vous essayez d'en installer une, d'autres applications dont cette application dépend (dépendances) soient installées en même temps. Ne vous inquiétez pas, Portage gère très bien les dépendances. Si vous voulez connaitre la liste des paquets que Portage installerait si vous installiez un paquet donné, vous pouvez utiliser l'option --pretend. Voici 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 sauvegarde 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 sont fournis avec 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

(L'utilisation d'alsa-lib n'est qu'un exemple bien sûr.)
# 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 de n'avoir 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 paquetGentoolkit.

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

(Autre méthode, avec equery :)
# 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
(etc.)

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à (ceux qui sont listés dans /var/lib/portage/world). Il ne prendra pas en compte de manière exhaustive leurs dépendances. Si vous voulez que ces dépendances soient aussi mises à jour, utilisez aussi l'option --deep :

Exemple de code 3.11 : mettre à jour votre système y compris les dépendances

# emerge --update --deep @world

Mais cela ne veut pas dire pour autant tous les paquets; certains paquets de votre sysème ne sont nécessaires que durant la phase de compilation des paquets, mais une fois ces paquets installés, ces dépendances ne sont plus nécessaires. Portage les reconnait comme dépendances de compilation. Pour les prendre en compte dans le cycle de mise à j*our, ajoutez   --with-bdeps=y

Exemple de code 3.12 : mise à jour du système entier

# emerge --update --deep --with-bdeps=y @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.13 : une mise à jour complète

# emerge --update --deep --with-bdeps=y --newuse @world

Les méta-paquets

Certains paquets ne contiennent aucun logiciel, mais servent à installer un ensemble de paquets. Par exemple, le paquet kde-meta 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 la suite, 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.14 : 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.15 : installer gentoolkit

# emerge gentoolkit

1.d. Licences

Depuis la version 2.1.7 de Portage, vous pouvez accepter ou refuser l'installation de paquets en fonction de leur licence. Tous les paquets de l'arbre de Portage ont une entrée LICENCE dans leur ebuild. La commande emerge --search nomdupaquet vous permet de voir cette licence.

Par défaut, Portage autorise toutes les licencees, sauf les Contrats de Licence Utilisateur Final (CLUF) ou End User Licence Agreement (EULA) en anglais, qui réclament une lecture et la signature d'un accord.

La variable qui définit les licences acceptées est ACCEPT_LICENSE, dont on peut fixer la valeur dans /etc/portage/make.conf. Dans l'exemple qui suit nous montrons sa valeur par défaut :

Exemple de code 4.1 : définir ACCEPT_LICENSE dans /etc/portage/make.conf

ACCEPT_LICENSE="* -@EULA"

Avec cette configuration, les paquets qui requièrent une interaction pendant l'installation pour que leur CLUF soit approuvé ne seront pas installables. Les paquets sans CLUF seront installables.

Vous pouvez définir ACCEPT_LICENSE globalllement dans /etc/portage/make.conf, ou vous pouvez la définir paquet par paquet dans le fichier /etc/portage/package.license.

Par exemple, si vous voulez autoriser la licence truecrypt-2.7 pour app-crypt/truecrypt, ajoutez ce qui suit à /etc/portage/package.license:

Exemple de code 4.2 : autorisation d'une licence pour truecrypt dans package.license

app-crypt/truecrypt truecrypt-2.7

Ceci autorise l'installation de versions de truecrypt qui relèvent de la licence truecrypt-2.7 , mais pas de versions qui relèvent de la licence truecrypt-2.8.

Important : les licences sont stockées dans /usr/portage/licenses, et les groupes de licences dans /usr/portage/profiles/license_groups. La première entrée de chaque ligne en CAPITALES est le nom du groupe de licences, et chacune des entrées qui suit est une licence individuelle.

Les groupes de licences définis dans ACCEPT_LICENSE sont préfixés par un signe @. Un réglage couremment requis est le n'autoriser que l'installation de logiciel libre et de sa documentation. Pour ce faire, nous pouvons retirer toutes les licences actuellement acceptées (en utilisant -*), puis ensuite autoriser seulement les licences du groupe FREE comme suit :

Exemple de code 4.3 : n'autoriser que du logiciel et de la documentation libre dans /etc/portage/make.conf

ACCEPT_LICENSE="-* @FREE"

Dans cet exemple, le mot "free" fait référence à la définition donnée par la FSF et par l'OSI. Tout paquet dont la licence ne respecte pas les exigences qui y sont mentionnées ne sera pas installé.

1.e. 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 se conforme à un profil qui contient la liste des paquets qui forment un système cohérent et fonctionnel.

Paquets bloqués

Exemple de code 5.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 5.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.

Bien que les versions récentes de Portage viennent à bout d'incompatibilités mineures sans intervention de l'utilisateur, il arrive que vous deviez régler le problème vous-même comme nous l'expliquons tout de suite.

Pour résoudre un tel blocage, vous pouvez soit ne pas installer le logiciel dont l'installation était envisagée, 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 5.3 : avertissement à propos de paquets masqués

!!! all ebuilds that could satisfy "bootsplash" have been masked.

Exemple de code 5.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)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

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.
  • license signifie que la licence du paquet n'est pas autorisée par la variable ACCEPT_LICENSE. Vous devez l'autoriser explicitement (individuellement ou dans un groupe) dans /etc/portage/make.conf ou dans /etc/portage/package.license. Reportez-vous à Licences pour obtenir l'information nécessaire.

Changements demandés de la variable USE

Exemple de code 5.5 : portage demande des changements de la variable USE

The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test

Ce message d'erreur peut aussi apparaître comme ce qui suit si la variable --autounmask n'est pas définie :

Exemple de code 5.6 : erreur annoncée par Portage à propos de la variable USE

emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])

Un tel avertissement ou erreur apparaît lorsque vous voulez installer un paquet qui, non seulement dépend d'un autre paquet, mais nécessite aussi que ce paquet soit compilé avec une option (ou un jeu d'options) bien particulière dans la variable USE. Dans l'exemple cité, le paquet app-text/feelings requiert d'être compilé avec USE="test", mais cette option n'est pas déclarée dans USE.

Pour résoudre ce problème, vous pouvez, ajouter l'option requise à la variable USE, soit globalement dans /etc/portage/make.conf, soit spécifiquement pour le paquet dans /etc/portage/package.use.

Dépendances manquantes

Exemple de code 5.7 : 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 5.8 : avertissement à propos de noms d'ebuilds ambigus

[ Results for search key : listen ]
[ Applications found : 2 ]

*  dev-tinyos/listen [ Masked ]
      Latest version available: 1.1.15
      Latest version installed: [ Not Installed ]
      Size of files: 10,032 kB
      Homepage:      http://www.tinyos.net/
      Description:   Raw listen for TinyOS
      License:       BSD

*  media-sound/listen [ Masked ]
      Latest version available: 0.6.3
      Latest version installed: [ Not Installed ]
      Size of files: 859 kB
      Homepage:      http://www.listen-project.org
      Description:   A Music player and management for GNOME
      License:       GPL-2

!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.

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 5.9 : 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 5.10 : 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 5.11 : 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 5.12 : 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 options de la variable USE ?

Les notions sous-jacentes aux options de la variable 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 options de la variable USE

C'est ici qu'interviennent les options de la variable USE. Une telle option est un mot-clé qui définit le support et les dépendances pour un concept donné. Si vous définissez une option donnée de la variable USE, 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 options de la variable USE disponibles ?

On distingue deux types d'options de la variable USE : les options globales et les options locales.

  • Une option globale de la variable USE est utilisée par plusieurs paquets dans l'ensemble du système. C'est ce que la plupart des gens considèrent comme les options de la variable USE.
  • Une option locale de la variable USE n'est utilisée que par un seul paquet et n'est utilisée que pour des décisions spécifiques à ce paquet.

Une liste des options de la variable USE peut être trouvée en ligne ou localement dans /usr/portage/profiles/use.local.desc.

2.b. Utiliser les options de la variable USE

Déclarer des options permanentes de la variable USE

Nous allons maintenant vous expliquer comment déclarer des options de la variable USE, en espérant que vous soyez convaincu de leur importance.

Comme mentionné plus haut, toutes les options de la variable USE sont déclarées dans la variable USE. Pour permettre aux utilisateurs de trouver et choisir facilement les options de la variable USE, nous fournissons une configuration par défaut de USE. Cette configuration est un ensemble d'options de la variable USE dont nous pensons qu'elles sont communément employées 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 13.0 :

Exemple de code 2.1 : variable USE après cumul d'un profil 13.0

(Cet exemple est le résultat du cumul des options définies dans base, default-linux,
default-linux/x86 et default-linux/x86/13.0)
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"

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/portage/make.conf. Dans cette variable, vous ajouterez les options de la variable USE que vous désirez et enlèverez celles dont 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/portage/make.conf :

Exemple de code 2.2 : exemple de configuration USE dans /etc/make.conf

USE="-kde -qt3 -qt4 ldap"

Déclarer des options de la variable USE spécifiques à des paquets

Parfois, vous voudrez déclarer certaines options de la variable 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. Ce n'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 une option de la variable 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 options temporaires de la variable USE

Il peut arriver que vous ne souhaitiez définir une option donnée de la variable USE qu'en une seule occasion. Plutôt qu'éditer /etc/portage/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 la variable 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 des options de la variable USE sont ordonnées comme suit (la première déclaration a la plus faible priorité) :

  1. Déclaration par défaut dans les fichiers make.defaults de votre profil ;
  2. Déclaration par l'utilisateur dans /etc/portage/make.conf ;
  3. Déclaration par l'utilisateur dans /etc/portage/package.use ;
  4. Déclaration par l'utilisateur comme une variable d'environnement ;

Pour voir la configuration finale de la variable 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 d'une mise à jour des options de la variable 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  d'emerge:

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 ont été rendues obsolètes par les nouvelles options de la variable USE.

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.

Exemple de code 2.9 : exécuter revdep-rebuild

# revdep-rebuild

Une fois tout ceci accompli, le système tient compte des nouvelles options de la variable USE.

2.c. Options de la variable USE spécifiques à un paquet

Savoir quelles options de la variable USE influencent un paquet

Prenons l'exemple de seamonkey : à quelles options de la variable USE est-il sensible ? Pour le savoir, nous utilisons emerge avec les options --pretend et --verbose :

Exemple de code 3.1 : afficher les options de la variable 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 options de la variable USE d'un paquet donné. Par exemple, pour le paquet gnumeric :

Exemple de code 3.3 : utiliser equery pour afficher les options de la variable 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/portage/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 déjà activées

$ 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 sur 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/portage/make.conf. Ensuite, modifiez la variable MAKEOPTS pour y ajouter -jXX 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. Cepedant, la première fois que vous compilerez avec le cache, ce sera plus lent qu'une compilation normale. Les compilations ultérieures seront quant à elles beaucoup plus rapdes. ccache n'est utile si vous devez recompiler la même applications de nombreuses fois; par conséquent cette fonctionnalité s'adresse surtout aux développeurs.

Si vous êtes intéressé par les tenants et aboutissants de ccache, veuillez visiter le site de ccache.

Attention : ccache est connu comme engendrant de nombreuses erreurs de compilation. Dans certains cas il retient des morceaux de code périmés ou corrompus qui peuvent rendre les paquets non compilables. Dans une telle situation (si vous avez des messages d'erreurs tels que "File not recognized: File truncated"), essayez de recompiler l'application en désactivant (FEATURES="-ccache" dans /etc/portage/make.conf) avant de rapporter un bogue. Sauf si vous êtes développeur n'activez pas 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/portage/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/portage/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/portage/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/portage/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 à abandonnerles 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é.

3.f. Extraction d'instantanés validés de l'arbre Portage

En tant qu'administrateur, vous pouvez décider de ne mettre à jour votre arbre Portage qu'à partir des instantanés cryptés de l'arbre Portage validés par Gentoo.org. Ceci permet de garantir qu'un mirroir rsync malhonnête n'a pas ajouté de code ou de paquet indésirable dans l'arbre que vous téléchargez.

Pour configurer Portage, commencez par créer un dépôt de confiance duquel vous téléchargez et acceptez les clés de Gentoo.org servant à signer les instantanés. Bien-sûr, si vous le souhaitez, vous pouvez valider ces clés GPG en suivant les conseils de la page GnuPG. (comme celui de vérifier l'empreinte de la clé). La liste des clés GPG utilisées par la Release Engineering team est disponible sur leur page de projet Release engineering.

Exemple de code 6.1 : créer un dépôt de confiance pour Portage

# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
(... Remplacez les clés par celles mentionnées sur le site   release engineering ...)
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0xDB6B8C1F96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0xDB6B8C1F96D8BF6D trust

Ensuite, éditez /etc/portage/make.conf et activez la prise en charge pour la validation des instantanés signés de l'arbre de Portage (en utilisant FEATURES="webrsync-gpg") et en désactivant la mise à jour de l'arbre de Portage tree par la méthode régulière de la commande emerge --sync.

Exemple de code 6.2 : Mise à jour de make.conf

FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"

Exemple de code 6.3 : Mise à jour de repos.conf

# Assurez-vous que  sync-type et sync-uri sont exclues par  la marque des commentaires
# sync-type = rsync
# sync-uri = ...

Voilà ! La prochaine fois que vous lancerez emerge-webrsync, seuls les instantanés dûment signés seront déployés sur votre système.

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 en ménoire l'image du noyau que vous avez définie dans son fichier de configuration. Ensuite, il demande au processeur d'exécuter ce noyau. Ce dernier initialise alors ses propres structures et tâches puis lance le processus d'initialisation (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 dans n'importe quel ordre. 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 que d'autres scripts doivent être exécutés avant eux.

Quand tous les scripts liés dans /etc/runlevels/boot ont été exécutés, init poursuit avec ceux vers lesquels un lien symbolique existe 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 (voir cette notion plus-bas) il doit exécuter . La ligne suivante définit le niveau d'exécution :

Exemple de code 1.3 : la ligne initdefault

id:3:initdefault:

Dans ce cas (qui est celui de la majorité des utilisateurs de Gentoo), 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é qu'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, 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 autres services dépendants (ceux qui l'utilisent mais n'en ont pas un besoin impérieux) ne sont pas affectés.

Pour stopper un service sans toucher aux services qui l'utilisent, utilisez l'option --nodeps avec la commande stop  :

Exemple de code 1.7 : stopper postfix sans toucher aux services qui l'utilisent

# /etc/init.d/postfix --nodeps stop

Pour afficher le statut d'un service (démarré, arrêté,...), 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 peuvent simplement utiliser (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 n'aient à les modifier directement; cela évite bien des problèmes. Cependant, les services ont parfois besoin d'être configurés ou de recevoir certaines options.

Il importe donc de bien séparer les scripts de leur configuration car cela 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/portage/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() {
  (Information sur les dépendances)
}

start() {
  (Commandes à exécuter pour démarrer le service)
}

stop() {
  (Commandes à exécuter pour arrêter le service)
}

La partie start() est indispensable, les autres sont facultatives.

Dépendances

Il y a deux paramètres de dépendances que vous pouvez définir, et qui influencent l'ordre d'exécution des scripts d'initialisation : use and need. À coté de ces paramètres, il y a aussi deux autres paramètres pour influencer cet ordre d'exécution : before et after. Ces derniers ne créent pas de dépendance en eux-mêmes; il ne font pas échouer le script initial si le script mentionné n'est pas programmé pour démarrer ( où ne parvient pas à démarrer).

  • Le paramètre use informe le système que le script utilise (use-s) la fonctionnalité offerte par le script mentionné, mais n'en dépend pas directement. Un bon exemple serait use logger or use dns. Si ces deux services sont disponibles, ils seront utilisés. Néanmoins, si aucun logger ou service DNS n'est disponible, le service continuera à fonctionner sans eux. Si ces services existent, ils seront démarrés avant le script qui les utilise ( use-s).
  • Le paramètre need implique une dépendance absolue. Il indique que le script a besoin d' (need-s) un autre script et ne démarrera pas avant que cet autre script ne soit exécuté avec succès. Ainsi, si cet autre script est redémarré, il en sera de même pour le script requérant.
  • Un script qui utilise le paramètre before (avant) , est lancé avant le script auquel ce before fait référence, si ce dernier fait partie du niveau d'exécution. Ainsi, par exemple, un script xdm qui fait usage de before alsasound démarre avant le script alsasound , mais seulement si alsasound fait également partie du même niveau d'éxécution. Si ce n'est pas le cas, ce paramètre n'a aucune influence et xdm est démarré quand le système d'initialisation le juge opportun.
  • De la même manière, un script qui utilise le paramètre after (après), est lancé après le script auquel ce after fait référence, si ce dernier fait partie du niveau d'exécution. Dans le cas contraire, ce paramètre n'a aucune influence et ce script est démarré quand le système d'initialisation le juge opportun.

D'après ce qui précède, seul le paramètre need implique une véritable dépendance, en ce sens qu'il peut remettre en question, où pas, le démarrage du script. Les autres paramètres ne font qu'influer sur l'ordre de démarrage des scripts.

Par ailleurs, si vous regardez attentivement beaucoup de scripts d'initialisation de Gentoo, vous verrez que certains d'entre-eux indiquent des dépendances sur des choses qui ne sont pas des scripts d'initialisation. Ces choses sont appelées services virtuels (virtuals).

Une dépendance d'un service virtuel (virtual) est une dépendance qui se rapporte, non pas à un sevice unique, mais à un service disponible parmi un groupe de services plus ou moins équvalents et interchangeables. Votre script d'initialisation peut très bien dépendre d'un système de journalisation, mais il existe plusieurs tels systèmes disponibles (metalogd, syslog-ng, sysklogd, ...). Comme vous ne pouvez exprimer le besoin (need ) de chacun d'entre-eux (aucun système raisonnable ne possède tous ces systèmes de journalisation installés et opérationnels), nous faisons en sorte que ces services fournissent, solidairement, un service virtuel qui pourra être utilisé comme dépendance.

Jetons un coup d'œ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

Comme expliqué précédemment, vous pouvez dire au système d'initialisation dans quel ordre démarrer (ou arrêter) les scripts. Cet ordonnancement est assuré par l'utilisation des paramètres de dépendance use et need, mais aussi par celle des paramètres d'ordonnancement before et after. Comme nous en avons déjà parlé, considérons maintenant un exemple de script d'initialisation, ici pour 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 de ce qu'il advient de la tentative de démarrage d'un service.

Exemple de code 4.6 : exemple de fonction start()

start() {
  if [ "${RC_CMD}" = "restart" ];
  then
    # Faire quelque chose dans le cas où un redémarrege nécessite plus qu'un simple arrêt, redémarrage. t
  fi

  ebegin "Starting my_service"
  start-stop-daemon --start --exec /path/to/my_service \
    --pidfile /path/to/my_pidfile
  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.

Un autre réglage notable utilisé dans l'exemple précédent est de vérifier le contenu de la variable RC_CMD. Contrairement aux précédents scripts d'initialisation, le nouveau système openrc ne prend pas en charge les fonctions de redémarrage spécifique à un script. Au lieu de cela, le script doit vérifier le contenu de la variable RC_CMD pour savoir si une fonction (qu'elle soit start() ou stop()) est appelée à l'intérieur d'un restart ou pas.

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 la fonction facultative stop() pour arrêter un service, mais Gentoo est capable de s'en passer si vous avez utilisé la commande start-stop-daemon.

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, une excellente page de manuel (man page) est disponible pour la commande start-stop-daemon :

Exemple de code 4.9 : consulter le manuel de start-stop-daemon

$ man start-stop-daemon

La syntaxe des scripts d'initialisation est basée sur le Shell POSIX. Vous pouvez donc utiliser toutes les fonctionnalités de bash (ou compatibles sh) dans vos scripts.

Ajouter une option personnalisée

Si vous voulez utiliser une option non prévue par nos scripts, vous devez l'ajouter à la variable extra_commands et créer une fonction qui a le même nom que l'option. Par exemple, pour ajouter une option restartdelay :

Exemple de code 4.10 : ajouter une option restartdelay

extra_commands="restartdelay"

restartdelay() {
  stop
  sleep 3    # Temporisation de 3 secondes
  start
}

Important : la fonction restart() ne peut pas être ré-écrite (overriden) dans openrc!

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 contribue à 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 puisque 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

(Copier tous les services du niveau d'exécution default vers offline.)
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(Supprimer les services superflus du niveau d'exécution offline.)
# rc-update del net.eth0 offline
(Afficher les services du niveau d'exécution offline.)
# rc-update show offline
(Affichage partiel :)
               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, une fonctionnalité appelée démarrage à chaud. Par défaut, Gentoo n'active pas le démarrage à chaud.

Si vous voulez activer le démarrage à chaud, mais uniquement pour un choix de scripts, utilisez la variable rc_hotplug dans /etc/rc.conf:

Exemple de code 5.3 : désactiver un service démarré par une interface dans /etc/conf.d/rc

# Autoriser net.wlan comme les autres services, sauf ceux dont le nom commence par net. (y compris le point). 
# démarrage à chaud autorisé
rc_hotplug="net.wlan !net.*"

Note : vous trouverez plus d'informations sur les services démarrés par les interfaces en consultant les commentaires du fichier /etc/rc.conf.

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 »

L'utilisation de l'option bootlevel est tout à fait analogue à celle de softlevel. La seule différence ici, c'est que vous définissez un deuxième niveau d'exécution "boot" au lieu de définir un deuxième niveau d'exécution "défaut".

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 pourADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH, KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK, PKG_CONFIG_PATH and PYTHONPATH. Les autres variables reçoivent uniquement la dernière valeur définie dans les fichiers de /etc/env.d pris par ordre alphabétique.

Vous pouvez ajouter d'autres variables dans cette liste de variables concaténée en ajoutant le nom de la variables en le séparant soit par DEUX POINTS soit par une ESPACE (ceci égalemen dans un fichier env.d).

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 les nouveaux terminaux relisent et prennent en compte les nouvelles 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éconnecter 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

(Les deux-points à la fin sans répertoire à leur suite
ajoutent le répertoire courant automatiquement.)
PATH="${PATH}:/home/my_user/bin:"

Quand vous vous reconnecterez, 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 /usr/share/portage/config/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 lequel le lien symbolique /etc/portage/make.profile 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/portage/make.profile plus loin dans ce document.

Pour modifier une variable de configuration, ne modifiez ni le fichier /usr/share/portage/config/make.globals, ni les fichiers make.defaults. Modifiez plutôt /etc/portage/make.conf qui a priorité sur les autres fichiers. Vous trouverez aussi un fichier /usr/share/portage/config/make.conf.example, un fichier exemple que Portage ne lit pas mais que vous pouvez utiliser pour configurer votre propre /etc/portage/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/portage/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 qui contient la liste des paquets que vous voulez ne jamais installer.
  • package.unmask qui contient la liste des paquets que vous voulez installer bien qu'ils aient été masqués par les développeurs Gentoo.
  • package.accept_keywords qui 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 qui 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 à ces endroits précis. 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/portage/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/portage/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 est définie comme /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.

La base de données de Portage

Portage mémorise l'état de votre système (quels sont les paquets installés, quels fichiers appartiennent à quel paquet, ... ) /var/db/pkg. Ne modifiez pas ces fichiers à la main ! Cela pourrait pourrait faire perdre à Portage l'exacte vision de votre système.

Le cache de Portage

Le cache de Portage (qui contient les dates de modification, les virtuels, les modifications de l'arbre de dépendances, ...) est stocké /var/cache/edb. Cet emplacement est réellement un cache, vous pouvez le vider is vous n'êtes pas en train d'exécuter une application en relation avec Portage.

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 une 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/portage/make.conf ou l'un des sous-répertoires de /etc/portage. Vous trouverez une description complète de ces variables dans les pages de manuel de make.conf et de portage. Pour la consulter, faites :

Exemple de code 1.1 : lire les pages de manuel

$ man make.conf
$ man portage

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 donne cinq secondes à l'utilisateur pour s'opposer à la suppression de 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 définit l'emplacement de serveur rsync que vous utilisez pour mettre votre arbre de portage à jour. Elle est définie dans le fichier /etc/portage/repos.conf (ou un fichier dans ce répertoire s'il s'agit d'un répertoire):

  • SYNC définit le serveur utilisé pour synchroniser l'arbre Portage et sa valeur par défaut est "rsync".

Les variables concernant les miroirs Gentoo (GENTOO_MIRRORS), sync-type et sync-uri, 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 sauvegardent 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 https://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/portage/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 (sauf si vous avez fait de sauvegardes).

3.b. Mélanger les branches STABLE et TEST

L'emplacement package.accept_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.accept_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.accept_keywords

app-office/gnumeric 

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.accept_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 

3.c. Utiliser des paquets masqués

L'emplacement package.unmask

Important : 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

Note : si une entrée dans /usr/portage/profiles/package.mask contient une plage de versions d'un paquet, vous devez démasquer les seules versions que vous désirez réellement. Reportez-vous à la section précédente pour apprendre comment spécifier une version dans package.unmask.

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, orage et procps :

Exemple de code 3.1 : Exemple d'utilisation de quickpkg

# quickpkg curl orage procps

Les paquets seront placés dans le répertoire $PKGDIR (/usr/portage/packages/ 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 nouveaux paquets que vous avez exclus.

5.b. Ajouter des ebuilds non officiels

Définir un répertoire pour les arbres alternatifs

Portage peut utiliser des ebuilds qui ne se trouvent pas dans l'arbre Portage officiel de Gentoo mais dans des arbres alternatifs placés dans des dépôts maintenus par des tierces parties. 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/portage/make.conf et attribuez-lui le nom du répertoire que vous avez créé. Portage utilisera alors les ebuilds des arbres alternatifs qui se trouvent dans ce répertoire, mais ne les modifiera pas lors de l'opération de synchronisation emerge --sync.

Utiliser plusieurs arbres alternatifs

Les utilisateurs avancés ont parfois besoin de conserver plusieurs arbres alternatifs, par exemple pour des ebuilds en test ou des arbres d'origines diverses. Le paquet app-portage/layman contient l'outil layman qui permet de maintenir ces arbres alternatifs à jour en les synchronisant avec leur dépôt.

Commencez par installer et configurer l'outil layman comme c'est expliqué dans Les arbres alternatifs de Gentoo : guide de l'utilisateur, et ajouter les arbres alternatifs de votre choix avec la commande layman -a <nom_du_dépôt>nom_du_dépôt est le nom du dépôt à partir duquel l'arbre alternatif doit être synchronisé.

Supposons que vous ayez deux abres alternatifs appelés java (pour vos développements d'ebuils java) et entapps (pour les ebuilds utilisés dans votre entreprise). Vous pouvez mettre ces abres alternatifs à jour avec la commande suivante :

Exemple de code 2.1 : mettre vos abres alternatifs à jour avec layman

# layman -S

Pour plus d'information sur la manière de travailler avec des arbres alternatifs, lisez les pages de manuel de layman en utilisant la commande man layman et lisez aussi le Les arbres alternatifs de Gentoo : guide de l'utilisateur.

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 eno0, ens1, wlan0, enp1s0 etc.

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 (ou tout autre nom attribué à votre interface dans votre système) 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

# Pour DHCP :
config_eth0="dhcp"

# Pour une adresse IP statique en utilisant la notation CIDR :
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"

# Pour une adresse IP statique en utilisant un masque réseau
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"

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 cherchez à résoudre un problème de réseau, jetez un coup d'œil dans /var/log/rc.log. À moins d'avoir rc_logger="NO" paramétré dans /etc/rc.conf, vous trouverez des informations sur le processus de démarrage dans ce fichier de journal.

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'un 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

# Ajout de trois adresses IPv4 :
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"

# Ajout d'une adresse IPv4 et deux adresses IPv6
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"

# On garde l'adresse déjà assignée par le noyau, sauf si l'interface
# tombe. Dans ce cas, on en assigne une autre grâce à DHCP. Si DHCP ne marche
# pas, alors on ajoute une adresse statique déterminée par APIPA.
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 n'aurait seulement été lancée qu'en cas d'échec de la commande noop.

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. Toutes les interfaces réseau dans le système d'initialisation de Gentoo fournissent ce qui est appelé net.

Si rc_depend_strict="YES" est renseigné dans /etc/rc.conf, alors toutes les interfaces réseau qui fournissent net doivent être actives avant qu'une dépendance sur "net" soit satisfaite. Autrement dit, si vous avez net.eth0 et net.eth1 et un script d'initialisation qui dépend de "net", alors les deux doivent être actives.

À l'inverse, si rc_depend_strict="NO" est renseigné, alors la dépendance sur "net" est résolue dès lors qu'une interface réseau est activée.

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 solution est de définir un paramètre rc_need_ dans /etc/conf.d/net.

Exemple de code 2.1 : les dépendances de net.br0 dans /etc/conf.d/net

rc_need_br0="net.eth0 net.eth1"

Ce paramètre seul n'est pas suffisant. Les scripts d'initialisation réseau de Gentoo utilisent une dépendance virtuelle nommée net pour informer le système que le réseau est disponible. Dans le cas présent, il est évident que le réseau doit être marqué disponible quand net.br0 est actif et non pas quand les autres le sont. Nous allons également renseigner cela dans le fichier /etc/conf.d/net :

Exemple de code 2.2 : mise à jour des dépendances virtuelles pour le réseau

rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"

Pour une explication plus détaillée des dépendances, veuillez consulter la section Écrire un script d'initialisation du Manuel Gentoo. Plus d'informations sur /etc/rc.conf sont disponibles sous forme de commentaires à l'intérieur du fichier.

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éseau 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 caractères alphanumériques de l'anglais. Pour contourner cette limitation, nous transformons tout caractère qui n'est pas un caractère alphanumérique de l'anglais en un _.

Un autre problème de Bash est le contenu des variables : certains caractères doivent être échappés. Ceci se fait en ajoutant 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 il peut 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

# Cela marche, mais le domaine est invalide.
dns_domain_Mon____r_zo="Mon \"\\ rézo"

# La ligne ci-dessus configure le domaine DNS à « Mon "\ rézo »
# lorsqu'une carte sans fil se connecte à un point d'accès
# dont l'ESSID est « Mon "\ rézo ».

2.d. Nommage des interfaces réseau

Comment ça marche ?

Les noms des interfaces réseau ne sont pas choisis arbitrairement : le noyau Linux et le gestionnaire de périphériques (la plupart des système utilisent udev comme gestionnaire de périphériques bien que d'autres existent) choisissent le nom de l'interface en fonction de règles bien définies.

Quand une interface est détectée sur un système, le noyau Linux rassemble les données nécessaires sur cette carte. Ceci inclut :

  1. le nom enregistré (sur l'interface elle-même) de la carte, qui sera par la suite noté comme étant le paramètre ID_NET_NAME_ONBARD  ;
  2. le connecteur sur lequel la carte est enfichée qui sera par la suite noté comme étant le paramètre ID_NET_NAME_SLOT ;
  3. le chemin via lequel la carte est accessible, qui sera par la suite noté comme étant le paramètre ID_NET_NAME_PATH  ;
  4. l'adresse MAC (fournie par le fabricant) de la carte, qui sera par la suite notée comme étant le paramètre the ID_NET_NAME_MAC  ;

Sur la base de ces informations, le gestionnaire de périphériques décide du nom à attribuer à l'interface sur le système. Par défaut, il utilise le premier des paramètres cités ci-dessus qu'il rencontre (ID_NET_NAME_ONBOARD, _SLOT ou _PATH). Par exemple, s'il rencontre ID_NET_NAME_ONBOARD et que ce dernier vaut eno1, alors l'interface sera appelée eno1.

Si vous connaissez le nom de votre interface, vous pouvez lire les paramètres associés avec la commande udevadm:

Exemple de code 4.1 : lire les informations de la carte interface

# udevadm test-builtin net_id /sys/class/net/enp3s0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
ID_NET_NAME_PATH=enp3s0

Comme le premier paramètre rencontrés des trois paramètres est ID_NET_NAME_PATH , c'est cette valeur qui est utilisée comme nom de l'interface. Si aucun paramètre n'est trouvé, le système en revient aux noms fournis par le noyau (eth0, eth1, etc.)

Utilisation du nommage traditionnel du noyau

Avant ce changement, les cartes interfaces réseau étaient nommées par le noyau Linux lui-même, selon l'ordre de chargement des pilotes (parmi d'autres, vraisemblablement plus obscures, raisons). Ce comportement peut toujours être activé en positionnant l'option de démarrage net.ifnames=0 dans le chargeur de démarrage.

Utilisation de vos propres noms

L'idée maîtresse à la base du changement du système de nommage n'est pas de semer la confusion dans l'esprit de l'utilisateur, mais de rendre les changements plus faciles. Supposons que vous ayez deux cartes d'interface appelées eth0 et eth1. L'une est prévue pour l'accès au réseau par câble, tandis que l'autre est prévue pour un accès sans fil. Avec la prise en charge du nommage des interfaces, vous pouvez les appeler lan0 (câblée) et wifi0 (sans fil) - c'est mieux de ne pas utiliser les noms habituels tels que eth* et wlan* car ceux-ci peuvent encore entrer en conflit avec les noms que vous proposerez.

Tout ce que vous devez faire, c'est trouver les paramètres des cartes et utiliser cette information pour définir votre propre règle de nommage :

Exemple de code 4.2 : définir le nom lan0 pour l'interface courante eth0

# udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.

# vim /etc/udev/rules.d/70-net-name-use-custom.rules
# La première utilise l'information MAC, et le nombre 70- number pour être placée avant les autres régles réseau 
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="c8:0a:a9:42:9d:76", NAME="lan0"

# vim /etc/udev/rules.d/76-net-name-use-custom.rules
# La deuxième utilise l'information ID_NET_NAME_PATH , et le nombre  76- pour être placée entre.
#   75-net-*.rules et  80-net-*.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp3s0", NAME="wifi0"

Comme les règles sont appelées avant la règle par défaut (elles sont en fait appelées dans l'ordre alphabétique, ainsi 70 est appelée avant 80) les noms fournis par le fichier de règles seront utilisés à la place des noms fournis par défaut. Le numéro alloué à un fichier devrait être entre 76 et 79 (les variables d'environnement sont définies par un début de règle et commencent par 75 alors que la solution de repli du nommage est définie par une règle numérotée 80).

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

# On préfère iconfig plutôt qu'iproute2 .
modules="ifconfig"

# Vous pouvez également spécifier un module pour une interface particulière.
# Ici, on préfère utiliser pump plutôt que dhcpcd pour eth0.
modules_eth0="pump"

# Vous pouvez enfin spécifier quels modules *ne pas* charger.
# Par exemple, vous pouvez utiliser WPA Supplicant ou
# linux-wlan-ng pour contrôler la configuration du sans fil mais vous voulez
# toujours configurer le réseau en fonction de l'ESSID.
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 ». iproute2 est un paquet bien plus puissant et plus flexible, mais n'est pas inclus par défaut.

Exemple de code 2.1 : installer iproute2

# emerge sys-apps/iproute2

# Pour préférer ifconfig à iproute2 si les deux sont installés 
# comme openrc prefère utiliser iproute2 :
modules="ifconfig"

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 : exemples avec ifconfig ou iproute2

config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"

# On peut aussi spécifier l'adresse de diffusion (broadcast) :
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

# Nécessaire seulement si plusieurs modules DHCP sont installés.
modules="dhcpcd"

config_eth0="dhcp"
dhcpcd_eth0="-t 10" # On attend une réponse en 10 secondes maxi.
dhcp_eth0="release nodns nontp nonis" # On ne fait que récupérer une adresse.

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

Installez tout d'abord le logiciel pour gérer l'ADSL.

Exemple de code 4.1 : installer le paquet ppp

# emerge net-dialup/ppp

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

Assurez-vous de définir rc_depend_strict à "YES" dans /etc/rc.conf.

Maintenant, éditez le fichier /etc/conf.d/net.

Exemple de code 4.3 : une configuration de base de PPPoE

config_eth0=null (Remplacez éventuellement eth0 par le nom correct.)
config_ppp0="ppp"
link_ppp0="eth0" (Ici aussi.)
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
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"

rc_need_ppp0="net.eth0"

Vous pouvez également définir votre mot de passe dans /etc/ppp/pap-secrets.

Exemple de code 4.4 : exemple de fichier /etc/ppp/pap-secrets

# Le caractère « * » est important.
"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 /usr/share/doc/netifrc-*/net.example.bz2. I 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 requête arp 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

# Essaye d'abord DHCP puis APIPA, si cela ne marche pas.
config_eth0="dhcp"
fallback_eth0="apipa"

# Utilise juste 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.

Tout d'abord, annulez la configuration des interfaces participantes :

Exemple de code 6.1 : annulation de la configuration des interfaces dans /etc/conf.d/net

config_eth0="null"
config_eth1="null"
config_eth2="null"

Ensuite, définissez la liaison entre les interfaces:

Exemple de code 6.2 : Définir l'agrégation de liens

slaves_bond0="eth0 eth1 eth2"
config_bond0="192.168.100.4/24"

Retirez les services net.eth* des niveaux d'exécution, créez un net.bond0 ajoutez le au niveau d'exécution correct.

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, vous pourriez avoir un serveur qui se connecte à Internet via un modem ADSL et une carte réseau sans fil pour accéder à Internet à travers le modem ADSL. Vous pourriez créer un pont pour connecter les deux réseaux ensemble.

Exemple de code 7.1 : configuration d'un pont réseau dans /etc/conf.d/net

# Configuration du pont (voir « man brctl » pour plus de détails) :
brctl_br0="setfd 0
sethello 2
stp on"

# Ajout de ports au pont br0 :
bridge_br0="eth0 eth1"

# Les ports doient être explicitement non configurés pour ne pas
# lancer DHCP :
config_eth0="null"
config_eth1="null"

# On assigne enfin une adresse au pont. Nous aurions pu utiliser DHCP ici :
config_br0="192.168.0.1/24"

# Dépend de eth0 et eth1  car elles peuvent demander une configuration supplémentaire.
rc_need_br0="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

Si vous en avez besoim, vous pouvez modifier l'adresse MAC de vos interfaces via les fichiers de configuration réseau aussi :

Exemple de code 8.1 : exemples de modification d'adresse MAC

# Pour assigner une adresse MAC à une interface :
mac_eth0="00:11:22:33:44:55"

# Pour tirer au hasard les trois derniers octets :
mac_eth0="random-ending"

# Pour obtenir une adresse aléatoire en gardant le type physique de
# votre interface (par exemple : fibre, cuivre, sans fil...) :
mac_eth0="random-samekind"

# Pour obtenir une adresse aléatoire sans garder le type physique de
# votre interface (par exemple : fibre, cuivre, sans fil...) :
mac_eth0="random-anykind"

# Pour une adresse totalement aléatoire (ATTENTION : certaines adresses
# générées de cette façon n'agissent pas comme l'on pourrait s'y attendre) :
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

# Pour un tunnel GRE :
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# Pour un tunnel IPIP :
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Pour configurer l'interface du tunnel :
config_vpn0="192.168.0.2 peer 192.168.1.1"

3.j. VLAN (802.1q)

Pour la prise en charge des VLAN, assurez-vous que sys-apps/iproute2 est installé et que iproute2 est utilisé comme module de configuration plutôt que ifconfig.

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.

Pour configurer les VLANs, commencez par spécifier les numéros de VLAN dans /etc/conf.d/net comme ceci :

Exemple de code 10.1 : Spécifier les numéros de VLAN

vlans_eth0="1 2"

Enusuite configurez l'interface de chaque VLAN:

Exemple de code 10.2 : configuration de l'interface pour chaque VLAN

config_eth0_1="172.16.3.1 netmask 255.255.254.0"
routes_eth0_1="default via 172.16.3.254"

config_eth0_2="172.16.2.1 netmask 255.255.254.0"
routes_eth0_2="default via 172.16.2.254"

Les configuration spécifiques aux VLAN sont assurées par vconfig comme ceci :

Exemple de code 10.3 : configurer les VLANs

vlan1_name="vlan1"
vlan1_ingress="2:6 3:5"
eth0_vlan1_egress="1:2"

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

Faire fonctionner le réseau sans fil est en général assez direct sur Linux. Il y a deux manières de le configurer : les clients graphiques ou la ligne de commande.

Le moyen le plus facile est d'utiliser un client graphique, une fois que vous avez installé un environnement de bureau. La plupart des clients graphiques tels que wicd et NetworkManager, sont d'usage assez évident. Ils offrent une interface simple qui vous permet de configurer votre réseau en quelques secondes.

Note : wicd possède une fonctionnalité de ligne de commande en plus de l'interface graphique principale. Vous pouvez l'obtenir en installant wicd avec l'option ncurses de la variable USE. Cet utilitaire wicd-curses est particulièrement utile pour ceux qui n'utilisent pas un environnement de bureau basé sur gtk, mais désirent néanmoins un outil en ligne de commande facile qui ne requiert pas d'éditer des fichiers de configuration.

Néanmoins, si vous ne voulez pas utiliser un client graphique, vous pouvez configurer le sans fil en ligne de commande en éditant quelques fichiers de configuration. Ceci prend un peu plus de temps, mais demande moins de paquets à télécharger et installer. Comme les client graphiques sont d'usage évident (avec des écrans d'aide en page d'accueil) nous nous focaliserons sur la configuration en ligne de commande.

Vous pouvez configurer le réseau sans fil en ligne de commande en installant wireless-tools ou wpa_supplicant. La chose importante à se rappeler, c'est que vous configurez les réseaux sans fil globalement et non pas par 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.

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. Si vos réseaux n'offrent que le chiffrage WEP ou sont complètement ouverts, il se peut que vous préfériez la simplicité de wireless-tools.

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.

Certaines cartes sans fil sont désactivées par défaut. Pour les activer, reportez-vous à la documentation de votre matériel. Certaines de ces cartes peuvent être débloquées en utilisant l'application rfkill. Si c'est votre cas, exécutez la commande rfkill list pour afficher la liste des cartes disponibles et rfkill unblock <index> pour activer la fonctionnalité sans fil. Si ce n'est pas le cas, vous devez débloquer la carte sans fil via un bouton, un commutateur ou une combinaison particulière de touches sur votre ordinateur.

4.b. WPA Supplicant

WPA Supplicant est un paquet qui vous permettra de vous connecter à un point d'accès WPA.

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.Essayer la commande grep CONFIG_PACKET /usr/src/linux/.config pour savoir si c'est activé dans votre noyau.

Note : selon les options USE , wpa_supplicant peut installer une interface graphique écrite en Qt4, qui s'intégrera parfaitement dans KDE. Pour l'avoir, exécutez echo "net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use en tant qu'administrateur root avant d'installer wpa_supplicant.

Nous devons maintenant indiquer dans le fichier /etc/conf.d/net que nous préférons utiliser wpa_supplicant plutôt que wireless-tools (si les deux sont installés, wireless-tools est l'interface par défaut).

Exemple de code 2.2 : configuration de /etc/conf.d/net pour wpa_supplicant

# On préfère utiliser wpa_supplicant :
modules="wpa_supplicant"

# Il est important de spécifier à wpa_supplicant quel pilote nous
# allons utiliser car il n'est pas encore doué pour les devinettes :
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 ce résultat.

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

# La ligne ci-dessous ne doit pas être changée sinon cela ne marchera pas :
ctrl_interface=/var/run/wpa_supplicant

# On s'assure que seul root peut lire la configuration WPA :
ctrl_interface_group=0

# Laissons wpa_supplicant se charger de scanner et de choisir un
# point d'accès :
ap_scan=1

# Cas simple : WPA-PSK, une phrase ASCII en guise de PSK, on autorise
# tous les chiffrages disponibles :
network={
    ssid="simple"
    psk="une phrase super secrete"
    # Plus la priorité est haute, plus tôt se fera la reconnaissance :
    priority=5
}

# Idem, mais en demandant un scan spécifique à un SSID (pour les points
# d'accès qui rejettent les SSID de diffusion (broadcast) :
network={
    ssid="second ssid"
    scan_ssid=1
    psk="phrase tres secrete"
    priority=2
}

# Seul WPA-PSK est utilisé. N'importe quel chiffrage est autorisé.
network={
    ssid="exemple"
    proto=WPA
    key_mgmt=WPA-PSK
    pairwise=CCMP TKIP
    group=CCMP TKIP WEP104 WEP40
    psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
    priority=2
}

# Connexion en clair (pas de WPA, pas de IEEE 802.1X) :
network={
    ssid="test-en-clair"
    key_mgmt=NONE
}

# Connexion à clé WEP partagée (pas de WPA, pas de IEEE 802.1X) :
network={
    ssid="static-wep-test"
    key_mgmt=NONE
    # Les clefs entres guillemets sont des chaines ASCII
    wep_key0="abcde"
    # Les clefs sans guillemets sont en hexadécimal
    wep_key1=0102030405
    wep_key2="1234567890123"
    wep_tx_keyidx=0
    priority=5
}

# Connexion à clé WEP partagée (pas de WPA, pas de IEEE 802.1X) en
# utilisant une authentification à clé partagée IEEE 802.11 :
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
}

# Réseau IBSS/ad-hoc avec WPA-None/TKIP :
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.

Important : vous devrez consulter la documentation sur les noms des variables.

Exemple de code 3.2 : exemple de configuration /etc/conf.d/net avec iwconfig

# On préfère utiliser iwconfig plutôt que wpa_supplicant :
modules=( "iwconfig" )

# On configure les clés WEP pour les points d'accès nommés ESSID1 et ESSID2.
# Vous pouvez mettre jusqu'à quatre clés WEP, mais seulement une pourra
# être active à la fois. Au cas où vous auriez déjà une clé WEP active, on
# spécifie un index [1] lors de la création de la clé. On règle ensuite le
# niveau de sécurité pour ce même index [1].
#
# Le préfixe « s: » de la clé indique que c'est une clé ASCII. Sinon, ce serait
# une clé hexadécimale.
#
# « enc open » spécifie le mode de sécurité « open » (le moins sécurisé),
# « enc restricted » spécifie le mode « restricted » (le plus sécurisé).
key_ESSID1="[1] s:votrecle key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# La variable ci-dessous n'est utilisée que lorsqu'on procède à un scan
# pour trouver les points d'accès disponibles.

# Parfois, plusieurs points d'accès peuvent être accessibles. Nous
# devons donc définir un ordre pour pouvoir choisir auquel se connecter.
preferred_aps="'ESSID1' 'ESSID2'"

Réglagesfins pour la sélection de points d'accès

Vous pouvez éventuellement rajouter des options pour affiner 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 préférés 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 liste noire (blacklist)_aps et unique_ap

# Il se peut que vous souhaitiez ne pas vous connecter à certains
# points d'accès :
blacklist_aps="'ESSID3' 'ESSID4'"

# Si vous avez plus d'une carte sans fil, vous pouvez spécifier ici si vous
# acceptez que plusieurs cartes se connectent au même point d'accès.
# Il faut mettre « yes » (par défaut) ou « no ».
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 : se replier sur le 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

# Spécifie le mode.
# Peut être « managed » (par défaut), « ad-hoc » ou « master ».
# Attention, tous les pilotes ne supportent pas forcément tous les modes.
mode_eth0="ad-hoc"

# Spécifie l'ESSID des interfaces.
# En mode managed, cela force l'interface à essayer de se connecter à l'ESSID
# spécifié et à aucun autre.
essid_eth0="Mon noeud adhoc"

# Le canal à utiliser (par défaut c'est 3) :
channel_eth0="9"

Important : ce qui suit est repris en l'état de 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.

Important : vous devrez consulter la documentation sur les noms des variables.

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"

# On peut également définir les serveurs de noms, entre autres.
# Note : DHCP écraserait ces valeurs à moins qu'on ne lui
# indique le contraire.
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"

# On surcharge en fonction de l'adresse MAC du point d'accès.
# C'est pratique si plusieurs points d'accès ont le même ESSID.
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 accrochables standard

Des points d'accroche sont prévus pour quatre fonctions, qui peuvent être définies par l'administrateur dans /etc/conf.d/net, et sont appelées lors du démarrage/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() {
  # On teste l'état du lien de l'interface avant de l'activer. Cela ne
  # fonctionne qu'avec certaines cartes réseaux et utilise le paquet ethtool.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # On n'oublie surtout pas de renvoyer 0 en cas de succès :
  return 0
}

predown() {
  # La fonction predown par défaut vérifie que le système de fichiers / n'est
  # pas monté en NFS et bloque l'arrêt de l'interface si c'est le cas. Sachez
  # que si vous spécifiez votre fonction predown, ceci ne sera plus vérifié.
  # Voici la fonction, au cas où vous voudriez la voir...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # On n'oublie surtout pas de renvoyer 0 en cas de succès :
  return 0
}

postup() {
  # Cette fonction pourrait servir, par exemple, à activer une redirection DNS
  # dynamique ou bien à récupérer des mails une fois que l'interface est
  # activée.
       return 0
}

postdown() {
  # Cette fonction est surtout présente pour faire un compte rond... Je n'ai pas
  # encore trouvé quelque chose d'intéressant à faire avec ;-) 
  return 0
}

Note : pour plus d'information sur la façon d'écrire vos propres fonctions accrochables, reportez-vous à /usr/share/doc/netifrc-*/net.example.bz2.

5.b. Fonction accrochables pour Wireless Tools

Note : cela ne marchera pas avec WPA Supplicant, mais les variables ${ESSID} et ${ESSIDVAR} sont disponibles dans la fonction postup().

Des points d'accroche sont prévus pour deux fonctions, définies dans /etc/conf.d/net, qui sont appelées avant et après la connexion à un point d'accès et 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 dans /etc/conf.d/net

preassociate() {
  # Le code ci-dessous ajoute deux variables de configuration leap_user_ESSID et
  # leap_pass_ESSID. Lorsqu'elles correspondent à l'ESSID auquel on se connecte,
  # on lance le script Cisco Leap.

  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() {
  # Cette fonction est surtout présente pour faire un compte rond... Je n'ai pas
  # encore trouvé quelque chose d'intéressant à faire avec ;-) 

  return 0
}

Note : les variables ${ESSID} et ${ESSIDVAR} ne sont pas disponibles dans les fonctions predown() et postdown().

Note : pour plus d'information sur la façon d'écrire vos propres fonctions, reportez-vous à /usr/share/doc/netifrc-*/net.example.bz2.

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 /usr/share/doc/netifrc-*/net.example.bz2 pour plus d'exemples.

Exemple de code 2.2 : exemple de configuration d'ifplugd

(Remplacez eth0 par l'interface à surveiller.)
ifplugd_eth0="..."

(Pour surveiller une interface sans fil.)
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.

Imprimer

Dernière mise à jour le 31 août 2014

Une version originale plus récente datée du 31 août 2014 existe.

Résumé : Le Manuel Gentoo est le résultat d'un effort de centralisation des informations sur Gentoo Linux. Ce manuel contient les instructions d'installation avec une connexion Internet pour des systèmes PPC. Il couvre également l'utilisation de Gentoo et de Portage.

Sven Vermeulen
Auteur

Grant Goodyear
Auteur

Roy Marples
Auteur

Daniel Robbins
Auteur

Chris Houser
Auteur

Jerry Alexandratos
Auteur

Seemant Kulleen
Développeur Gentoo x86

Tavis Ormandy
Développeur Gentoo Alpha

Jason Huebel
Développeur Gentoo AMD64

Guy Martin
Développeur Gentoo HPPA

Pieter Van den Abeele
Développeur Gentoo PPC

Joe Kallar
Développeur Gentoo SPARC

John P. Davis
Correcteur

Pierre-Henri Jondot
Correcteur

Eric Stockbridge
Correcteur

Rajiv Manglani
Correcteur

Jungmin Seo
Correcteur

Stoyan Zhekov
Correcteur

Jared Hudson
Correcteur

Colin Morey
Correcteur

Jorge Paulo
Correcteur

Carl Anderson
Correcteur

Jon Portnoy
Correcteur

Zack Gilburd
Correcteur

Jack Morgan
Correcteur

Benny Chuang
Correcteur

Erwin
Correcteur

Joshua Kinard
Correcteur

Tobias Scherbaum
Correcteur

Joshua Saddler
Correcteur

Lars Weiler
Correcteur

Jochen Maes
Correcteur

Joseph Jezak
Correcteur

Gerald J. Normandin Jr.
Relecteur

Donnie Berkholz
Relecteur

Ken Nowack
Relecteur

Xavier Neys
Correcteur, traducteur

Camille Huot
Traducteur

Benjamin Girault
Traducteur

Olivier Fisette
Traducteur

Olivier Roomans
Traducteur

Vincent Strubel
Traducteur

José Fournier
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.