Vous êtes ici: La documentation de Slackware-fr » Thématique Installation » Articles, Installation » Linux From Slack

Linux From Slack

Par Mushroom

Version 13.1.0.

Copyright © 2005, 2007, 2008, 2009, 2010 Sébastien Boillod.

Quiconque obtient une copie de ce document acquiert par la même le droit de reproduire, diffuser, modifier, traduire, adapter et/ou vendre celle-ci comme il l'entend, en plaçant les éventuelles contributions qu'il aura apportées sous les présents termes ou les termes de son choix. Cela tant qu'y figurent la mention copyright ci-dessus, cette autorisation et l'exonération de garantie ci-dessous.

LES INFORMATIONS ET/OU LE CODE CONTENUS DANS CETTE OEUVRE NE SONT NULLEMENT GARANTIS MAIS SIMPLEMENT MIS À DISPOSITION « EN L'ÉTAT », DANS L'ESPOIR D'ÊTRE UTILES. VOUS ADMETTEZ EN LES UTILISANT AVOIR LES COMPÉTENCES REQUISES POUR PRENDRE TOUTES LES MESURES ET PRÉCAUTIONS NÉCESSAIRES À L'INNOCUITÉ DE CET USAGE, ET RECONNAISSEZ AINSI AGIR ENTIÈREMENT ET SANS RÉSERVE À VOS RISQUES ET PÉRILS : EN AUCUN CAS L'AUTEUR NE POURRA ÊTRE TENU POUR RESPONSABLE DES ÉVENTUELS DOMMAGES, TOUTES NATURES CONFONDUES, DIRECTS OU INDIRECTS, RÉSULTANT DE CETTE UTILISATION.

Slackware est une marque déposée par Patrick Volkerding et Slackware Linux, Inc. Ce document et les informations qu'il contient n'émanent pas du projet Linux Slackware et n'ont donc aucun caractère officiel.

Avant-propos

Cette version de Linux from Slack est la réécriture de celle publiée sur léa-linux, le maintien de cette dernière étant laissé aux wikistes du lieu.

Pour la numérotation de la présente version, nous avons choisi de reprendre le numéro de la dernière Slackware stable avec laquelle elle a été testée, en ajoutant simplement un troisième nombre indiquant le nombre de révisions subies par une même version.

Beaucoup de personnes seraient à remercier pour l'élaboration de ce document, à commencer par toutes celles qui créent, traduisent ou diffusent de la documentation Linux et/ou donnent des coups de main sur les forums, partout sur la Toile. Néanmoins des remerciements particuliers sont à donner à fraaaz qui a fourni l'indispensable matière pour la sous-partie sur la connexion ADSL, ainsi qu'à l'ensemble des actifs du feu groupe Slackware pour lea-linux qui ont assisté la naissance de la première version de Linux From Slack. Merci également à Pat pour son excellente distribution et pour sa méthode tout-terrain de configuration d'ALSA.

Introduction

L'objectif de Linux From Slack est de vous faire bâtir un système Linux Slackware couche par couche, en dégageant pour chaque fonctionnalité le lot de paquets nécessaires et en détaillant le rôle respectif de ceux-ci.

Au delà de l'intérêt pédagogique de la démarche, ce document peut aussi servir de guide aux vieux routards slackeux souhaitant constituer une bonne base minimaliste pour personnaliser leur système. Pour ces derniers (et pour les flemmards), à qui nous n'apprendrons pas grand chose, nous avons mis en place un Appendice pour le Slackeux pressé où ils trouveront le nécessaire pour accélérer sensiblement les choses.

Pour les autres, ce qui va suivre n'est pas particulièrement compliqué à réaliser, néanmoins par soucis de concision (plus c'est petit, mieux c'est maintenable) et eu égard à notre objet, nous ne traiterons pas outre-mesure de l'installation Slackware à proprement parler. Il est donc conseillé d'être à l'aise avec les menus de setup ou de s'armer d'une bonne documentation avant de poursuivre.

Concernant l'aspect matériel de la mise en oeuvre, nous partirons du principe que vous avez une machine mono-poste utilisant un bon vieux système de fichier ext3, sans besoins particuliers (RAID, LVM, etc. ) et bootant à partir du noyau d'installation par défaut. Si vous avez des raisons de penser que vous n'entrez pas dans ce cadre, jetez un oeil sur les fichiers slack-desc de la série A et repérez ceux susceptibles de vous servir.

A présent, vous pouvez booter sur le premier CD d'installation de notre Slackware (le seul nécessaire si vous n'escomptez pas installer d'interface graphique) : three, two, one, let's jam!

Éclosion

Dans cette partie, nous allons limiter notre ambition à un objectif bien basique : obtenir un système bootable.

Comme indiqué précédemment, nous vous laisserons à vous même pour l'installation jusqu'à ce que vous ayez à choisir les séries de paquets à installer (entrée SELECT).

Une fois parvenu à cette étape, déselectionnez toutes les séries à l'exception de A et AP, validez votre choix puis, lorsqu'on proposera divers modes d'installation, indiquez expert. Setup vous demandera alors de choisir individuellemnt chaque paquet à installer dans A puis dans AP. Voici la liste commentée des paquets à demander pour chaque série (déselectionnez tout ce qui n'y figure pas).

Quand nous parlons du « pingouin standard », nous voulons dire que la plupart des développeurs (en particulier de scripts) s'attendront à ce que votre système possède au moins une des commandes contenu dans le paquet décrit (l'absence de less n'empêchera bien sûr pas votre système de booter).
  • A :
    • aaa_base : arborescence du système. C'est grâce à ce paquet que certains dossiers vides ou liens symboliques importants ne sont jamais effacés lors des désinstallations ;
    • aaa_elflibs : collection de bibliothèques de base, requises par beaucoup de logiciels. La Slackware gérant parfaitement les installation surchargées, ces bibliothèques sont en fait issues de divers autres paquets mais regroupées ici pour satisfaire les dépendances cruciales à peu de frais ;
    • aaa_terminfo : descriptions (capacités, comportement, initialisation, etc. ) de terminaux, requises pour en utiliser un ;
    • acpid : démon gérant l'énergie et le refroidissement du système. Si votre matériel n'est pas récent, apm est plus indiqué à la place ;
    • bash : le Bourne Again SHell, l'interpréteur de commandes le plus répandu sous Linux ;
    • bin : collection d'utilitaires communément utilisés par les scripts système sous Linux ;
    • bzip2 : commandes pour compresser et décompresser des données au format éponyme, très courant sous Linux ;
    • coreutils : collection de commandes de base, en particulier toutes celles qui ont trait à la gestion des fichiers et répertoires ;
    • cpio : format d'archivage permettant de créer notamment les célèbres RPM. Sur une Slackware, il est requis pour pouvoir créer le ramdisk nécessaire à l'emploi d'un noyau générique ;
    • cxxlibs : bibliothèques assurant la compatibilité des applications liées à de plus anciennes versions de la bibliothèque standard C++ avec celle utilisée par le système ;
    • dialog : utilitaire permettant de créer des interfaces ncurses à partir de scripts shell. La plupart des outils Slackware l'utilisent ;
    • dcron : démon permettant d'exécuter des tâches pré-définies au moment choisi ;
    • devs : peuple le répertoire /dev, qui contient les points d'accès entre le système et le matériel ;
    • e2fsprogs : utilitaires de gestion pour les systèmes de fichiers ext2 et ext3, natifs pour le noyau Linux ;
    • eject : permet d'ejecter CDs, zips, disquettes à partir de la ligne de commande. Fais partie du pingouin standard ;
    • elvis : éditeur de fichier par défaut sous Slackware Nous le reverrons dans ce guide, car c'est lui qui est appelé par la commande vi ;
    • etc : fichiers de configuration du système ;
    • file : commande permettant de déterminer le format d'un fichier par l'analyse de celui-ci. Fait partie du pingouin standard ;
    • findutils : utilitaires pour trouver des fichiers et répertoires. Contient notamment la pingouinistiquement standard commande find ;
    • floppy : outils pour utiliser un lecteur de disquettes ;
    • gawk : langage dédié à l'analyse et au traitement de chaînes de caractères. Encore un morceau du pingouin standard ;
    • gettext : permet de traduire les messages des (nombreux) programmes utilisant la méthode de localisation GNU gettext ;
    • glibc-solibs : bibliothèques C partagées du système, contenant les routines essentielles à son fonctionnement. Il s'agit là d'un élément vraiment critique du système, il convient d'ailleurs d'être prudent lorsqu'on le manipule ;
    • glibc-zoneinfo : permet de configurer le fuseau horaire de la machine ;
    • gpm : permet de faire des sélections à la souris en mode console ;
    • grep : outil servant à filtrer des chaînes de caractères et des fichiers. Si vous avez supputé que c'est encore une histoire de pingouin standard, vous avez gagné ;
    • gzip : format standard de compression sous Linux ;
    • infozip : compresse et décompresse des archives au format ZIP ;
    • kbd : permet de sélectionner une configuration de clavier autre qu'américaine en mode console ;
    • kernel-firmware : firmwares permettant de gérer certains matériels (majoritairement des cartes sons) et désormais distribués séparément du reste du noyau ;
    • kernel-huge-smp : l'énorme noyau par défaut de l'installation. Vous en aurez besoin pour booter la première fois, dans la mesure où il emporte en dur les supports des systèmes de fichiers ;
    • kernel-generic-smp : le même noyau que ci-dessus mais entièrement modulaire et donc plus adaptable à votre configuration. Il nécessite un ramdisk pour être utilisé, car contrairement à son gros copain il n'embarque aucun support de système de fichiers ;
    • kernel-modules-smp : les modules associés au deux noyaux précédents ;
    • less : pagine la sortie standard ou les fichiers. Le pingouin standard a encore frappé ;
    • lilo : le LInux LOader, gestionnaire de boot permettant de choisir quel système d'exploitation/noyau charger ;
    • mkinitrd : utilitaire nécessaire pour créer le ramdisk requis par le noyau générique. Pour plus d'informations, consultez /boot/README.initrd après votre premier boot ;
    • module-init-tools : outils pour gérer les modules du noyau ;
    • openssl-solibs : bibliothèques partagées de cryptographie ;
    • patch : permet d'appliquer des changements à un fichier, ceux-ci étant stockés dans un fichier à part. Cette commande est tellement standard qu'elle a donné son nom aux fameux patches qui résolvent/amènent tant de problèmes ;
    • pciutils : utilitaires de configuration du matériel PCI, il est très probable que vous en ayez ;
    • pkgtools : outils de gestion des paquets Slackware ;
    • procps : utilitaires permettant d'analyser et de gérer les processus en cours ;
    • sed : éditeur non-interactif, permettant de traiter fichiers et chaines de caractères sans intervention de l'utilisateur. Entendez piailler avec enthousiasme notre pingouin standard ;
    • shadow : stocke les mots de passe des comptes utilisateurs sous forme cryptée ;
    • slocate : permet de localiser un fichier ou un répertoire à partir d'une base de données ;
    • sysklogd : démon compulsant le journal du système (les fameux logs) ;
    • syslinux : permet de faire des disquettes de boot ;
    • sysvinit : programme gérant l'initialisation du système lorsque celui-ci est démarré ou arrêté ;
    • sysvinit-scripts : contient les scripts exécutés pour l'initialisation du système sous Slackware ;
    • tar : permet de créer et manipuler les archives au format éponyme, extrêmement courant sous Linux (basiquement, les paquets Slackware ne sont d'ailleurs jamais que des archives tar) ;
    • time : permet de mesurer le temps d'exécution d'une commande. Bien évidemment, il y a encore du pingouin standard là-dessous ;
    • tree : liste récursivement le contenu d'un répertoire. Oui, lui aussi il en est ;
    • udev : démon créant dynamiquement les points d'accès système/matériel selon le matériel détecté ;
    • usbutils : utilitaires pour la gestion du matériel USB ;
    • utempter : programme permettant de connaître les utilisateurs connectés au système. Réclamé par de nombreux programmes (les émulateurs de terminaux, notamment) ;
    • util-linux-ng : utilitaires divers nécessaires au fonctionnement d'un système Linux (contient notamment fdisk qui sert à partionner les disques durs) ;
    • which : localise un exécutable dans le PATH ; Sacré pingouin standard !
    • xz : basé sur l'algorithme de compression LZMA2, c'est désormais le format par défaut des paquets Slackware.
  • AP :
    • diffutils : évaluent la différences enre deux dossiers ou deux répertoires, c'est comme ça qu'on obtient les patches ;
    • groff : format documentaire, utilisé principalement pour écrire des pages de manuels ;
    • man : commande permettant de lire les pages de manuels ;
    • man-pages : les pages de manuels du Linux Documentation Project (LDP) en version originale.
Comme vous l'aurez peut-être compris, par la suite nous supposerons pour les éditions de fichiers que vous savez utiliser vi. Si donc vous n'êtes pas à l'aise avec les éditeurs de texte en console ou si vous détestez vi, pensez à ajouter un éditeur à votre main (dans AP, nano est sans doute le plus simple pour ceux qui manquent de pratique).

À noter également que les utilisateurs de vim peuvent tout à fait installer celui-ci à la place d'elvis ; vi se référera alors à vim.

Une fois cela effectué, laissez-vous tranquillement porter jusqu'au bout du processus d'instllation. Pour les habitués, pas de panique si rien n'est demandé sur la configuration du réseau, nous verrons tout cela plus tard. Pour l'heure, il est temps de rebooter afin d'assister à l'éclosion de votre nouveau pingouin, nous croisons les doigts avec vous…

Mon pingouin est un manchot !

Théoriquement, à cette ligne vous devez être devant l'invite login: de votre bestiole tout frais sortie de sa coquille. Connectez-vous en root, le seul utilisateur disponible pour le moment.

Bon, c'est pas qu'en l'état il est pas mignon votre pingouinet, mais côté fonctionnalités c'est un peu le désert : il est incapable de faire trois pas dehors, il est muet et il n'entend rien au français. Nous allons prendre les problèmes un à un.

Pointer le bec dehors

Pour commencer, nous allons mettre en place la connexion internet, ce qui vous permettra au moins de faire des recherches si tout ne se déroule pas comme escompté. Commencez par installer les paquets suivants (pour toutes les listes de paquets, la lettre entre parenthèses indique la série dans laquelle vous les trouverez):

  • iptables (N) : outil permettant de filtrer les connexions réseau, utilisé pour élaborer les pare-feux sous Linux ;
  • iputils (N) : outils relatifs au réseau communément employés sur les systèmes UNIX et assimilés (dont Linux) ;
  • net-tools (N) : utilitaires de base pour être capable d'utiliser un réseau sous Linux ;
  • network-scripts (N) : scripts de configuration du réseau ;
  • ppp (N) : démon permettant de se connecter à internet via un modem ;
  • tcp-wrappers (N) : outils/bibliothèque permettant de sécuriser les démons utilisant le réseau.

La base du réseau

À présent, nous allons pouvoir configurer la base du réseau en tapant netconfig. Une interface graphique de type ncurses apparaîtra alors, vous demandant d'entrer divers renseignements, dans l'ordre :

  • Hostname : c'est le nom que vous souhaitez attribuer à votre machine en lieu et place de l'actuel darkstar (par exemple, slacknut) ;
  • Domain name : pour avoir un nom de machine pleinement qualifié, il vous faut un nom de domaine local. Vous pouvez laisser libre cours à votre imagination (ex. slackbasket.net, ce qui donnera comme nom pleinement qualifié slacknut.slackbasket.net) ;
  • Setup IP address : sauf si vous avez une IP fixe ou si votre modem-routeur est configuré pour faire du dhcp (dans ce dernier cas, installez le paquet dhcpc qui est dans N), loopback devrait être le bon choix ;
  • Pour finir, des IP de classe locale par défaut vous seront proposées. Si à votre connaissance vous n'avez pas besoin d'une IP spéciale, acceptez-les.

À ce stade, nous avons normalement une base de réseau fonctionnelle. Pour vous en assurer, activez-la en exécutant /etc/rc.d/rc.inet1 puis tapez netstat -i. Une ligne commençant par lo doit apparaître, indiquant que l'interface réseau interne à votre machine est active.

La connexion internet

Reste à configurer la connexion internet proprement dite. Pour cela, nous allons passer par PPPD (Point-to-Point Protocol Daemon), qui permet d'aller sur internet directement à partir du modem (si vous vous connectez en DHCP ou avec une IP fixe, à l'exception du passage sur le pare-feu, vous pouvez sauter cette section car normalement votre connexion est prête). Deux cas sont présentés ici : la connexion 56K et la connexion ADSL.

Le 56K

Pour ce type de connexion, c'est avec pppsetup que ça se passe. L'exécution de la command fera apparaître une autre série de menus ncurses qui vous réclameront respectivement les informations suivantes :

  • N° de votre FAI : entrez adtd suivi du dit numéro (ex. atdt0813254769) ;
  • Port du modem : indiquez le port qui convient, en général ttys0 ou /dev/modem si vous l'avez configuré lors de l'installation ;
  • Vitesse du modem : 115200 pour le 56K standard ;
  • Callback : indiquez No, à moins que vous ne soyez sûr que cette option est requise ;
  • Initialisation du modem : si vous validez un champs vide, vous aurez la chaîne par défaut AT&FH0 OK. Outre le fait qu'elle ne semble pas fonctionner, elle a le mauvais goût de laisser le modem exprimer toute sa joie lorsqu'il se connecte. En voici donc une autre : ATZ OK ATM0L0 OK ;
  • Nom de domaine de votre FAI : free.fr, wanadoo.fr, alice.fr,… bref, le nom de votre FAI suivi de son extension de domaine ;
  • DNS de votre FAI : ce dernier a dû vous fournir les adresse IP de ses serveurs de noms de domaines (des séries de nombre séparées par des points). Entrez une de celles-ci ;
  • Méthode d'authentification : PAP ou CHAP en général. Si vous ne savez pas laquelle prendre, sélectionnez la première ;
  • Login et mot de passe : c'est ce que demandent les deux derniers champs. Là encore votre FAI a dû vous les fournir.

Une fois que vous aurez entré tout ça, un rapport de configuration vous sera donné. Sachez que vous pouvez tout recommencer en cas d'erreur, une nouvelle configuration écrasant la précédente, il suffit de réexécuter pppconfig.

L'ADSL

Il n'y a pas d'interface pour configurer simplement l'ADSL (enfin si, il y a pppoe-setup dans le paquet rp-pppoe situé dans N, mais comme il n'est pas nécessaire on va s'en passer), nous allons donc devoir plonger légèrement dans les entrailles de PPPD.

Nous ne parlerons ici que du cas des modems branchés en ethernet, ceux branchés en USB requiérant un pilote (souvent conçu pour les produits Microsoft™ puis « encapsulés » pour s'interfacer avec Linux) et pouvant s'avérer de véritables plaies à configurer. Bref, si vous avez le choix de brancher votre modem en ethernet, faites-le.

Tout d'abord, il faut indiquer à notre cher démon que nous allons avoir besoin de son plugin rp-pppoe (Roaring Penguin - Point-to-Point Protocol Over Ethernet). Pour ce, éditez le fichier /etc/ppp/options avec votre éditeur de texte (vi, par défaut), puis modifiez-le comme suit (entre <> sont indiquées les informations à insérer) :

plugin rp-pppoe.so
name <votre login>
noipdefault
defaultroute
mtu 1492
mru 1492
lock

Ensuite, éditez /etc/ppp/chap-secrets et/ou /etc/ppp/pap-secrets (selon la méthode d'authentification utilisée par votre FAI), et remplissez-le(s) ainsi :

<votre login> * <votre mot de passe>

Ces fichiers contenant vos login et mot de passe, seul le superutilisateur devrait pouvoir les lire, assurez-vous donc que c'est le cas en tapant chmod 600 /etc/ppp/chap-secrets /etc/ppp/pap-secrets.

Après cela, c'est au tour de /etc/resolv.conf d'être renseigné sur les serveurs de noms de domaines de votre FAI (sauf si vous êtes d'humeur badine et comptez n'utiliser que des adresses IP par la suite) :

search <nom de domaine votre fai, par ex. "free.fr">
nameserver <une des adresses DNS de votre FAI>

Puis précisez dans /etc/host.conf l'ordre dans lequel se résolvent les noms d'hôtes :

order hosts, bind
multi on

Pour finir, ne reste plus qu'à activer le support de votre carte réseau dans un fichier /etc/modprobe.d/ethernet que nous créerons pour l'occasion :

alias <nom de votre interface réseau, 'ethx', où X vaut en général 0> via-rhine

Vous voici paré à vous connecter, quoique…

Le pare-feu

Comme il est là, votre pingouin peut certes aller sur le réseau, mais demeurre sans défense contre les agresseurs de tous acabits. C'est pourquoi il est conseillé de mettre en place un pare-feu, ou plus précisément un script iptables.

Si vous en avez un sous la main c'est tant mieux pour vous, autrement vous pouvez toujours essayer liquette qui devrait parfaitement faire l'affaire. Dans tous les cas, copiez le fichier en tant que /etc/rc.d/rc.firewall, rendez-le exécutable, puis exécutez-le en tapant la séquence de commandes suivante :

cat liquette > /etc/rc.d/rc.firewall
chmod 700 /etc/rc.d/rc.firewall
/etc/rc.d/rc.firewall start

Ainsi mis en place, le pare-feu sera automatiquement activé à chaque démarrage du système.

En avant !

C'est le moment de nous essayer à une première glissade ventrale en tapant une des commandes ci-après selon le cas qui vous concerne :

  • 56K : /usr/sbin/ppp-go ;
  • ADSL : /usr/sbin/pppd <votre interface réseau, ethX>.

Si vous voulez vous amuser (ou trouver un meilleur guide d'installation), vous pouvez installer links (ou lynx si vous êtes nostalgique, les deux sont dans N) et surfer en mode texte sur la Toile. Si jamais vous êtes bien connecté mais que vous ne pouvez accéder à aucun site, c'est peut-être un problème de pare-feu : désactivez-le en tapant /etc/rc.d/rc.firewall stop. Si après cela tout fonctionne, inhibez-le définitivement au démarrage en lui retirant les droits d'exécution : chmod 600 /etc/rc.d/rc.firewall (attention cependant car votre pingouin sera de nouveau tout nu). Autrement, si le problème persiste malgré la désactivation du pare-feu, revoyez votre configuration (en particulier /etc/resolv.conf).

Bien, assez joué sur le net, il y a encore du pain sur la planche. Si elle est activée, coupez la connexion avec la commande suivante : /usr/sbin/ppp-stop.

Il est temps à présent d'apprendre à notre pingouin à parler.

Premiers piaillements

Ça ne vous a sûrement pas sauté aux oreilles, puisqu'aucune application n'a utilisé le son jusqu'ici, mais votre bestiole est totalement muette. Pour remédier à cela, commencer par lui coller dans le bec la décoction suivante :

  • alsa-lib (L) : bibliothèque ALSA nécessaire aux programmes utilisant celle-ci ;
  • alsa-oss (L) : assure la compatibilité pour les applications basées sur l'ancien Open Source Sound (OSS) qu'a remplacé ALSA ;
  • alsa-utils (AP) : utilitaires de configuration pour ALSA.

Sur les Linux modernes, c'est ALSA (Advanced Linux Sound Architecture) qui est en charge du son. La première chose à faire est de lui faire reconnaître votre carte son. Il suffit normalement pour ce d'activer le son en tapant alsamixer. Vous vous retrouverez alors devant une interface constituée de plusieurs barres verticales correspondant chacune à un canal. Pour le moment, comme l'indique le MM aux pieds des barres, tous les canaux sont muets. Déplacez-vous donc au moins sur les barres PCM et Master, activez les canaux en appuyant sur [M], puis ajustez le volume (à zéro pour le moment) en jouant des touches [Page Haut] et [Page bas]. Une fois cela fait, quittez l'interface en appuyant sur [Q] et enregistrez vos règlages en tapant alsactl store.

Voilà, votre pingouin en sait normalement assez pour jacasser comme une pie. D'ailleurs, nous allons tout de suite mettre sa volubilité à l'épreuve en écoutant ce qu'il a à dire sur – par exemple – la (merveilleuse) commande sed. Il suffit pour cela d'entrer cat /bin/sed | aplay.

Bon, c'est vrai, sur l'articulation ça laisse à désirer mais notez qu'il a trouvé le chemin de vos enceintes, ce qui n'est déjà pas si mal (si ce n'est pas le cas, re-vérifiez vos règlages puis, s'il sont corrects, essayez de passer par la commande alsaconf pour obtenir la reconnaissance de votre matériel). Non, s'il pèche vraiment c'est plutôt à l'écrit, car en effet il semble parfaitement hermétique au français. Voyons voir ça…

French KISS

Autant vous prévenir tout de suite, ne vous attendez pas à ce que votre palmipède vous ponde du Baudelaire. Sous Slackware et dans le monde de l'Open Source en général, l'anglais demeure en effet la règle (c'est injuste mais c'est ainsi). Faisons nonobstant de notre mieux et entâmons une nouvelle séquence d'installation :

  • glibc (L) : c'est la version complète de la glibc dont ont retrouve les éléments partagés dans le paquet glibc-solibs (A). Elle contient, outre ces derniers, ce qui est requis pour compiler des application en C et manipuler les locales ;
  • glibc-i18n (L) : locales du système, nécessaires pour avoir un système autrement qu'en américain.

Localiser le système

C'est dans /etc/profile.d/lang.sh que se déroulera l'essentiel – pour ne pas dire la totalité – du cours de langue que nous venons d'entreprendre. La marche à suivre en est par ailleurs très simple : éditez le fichier, commentez toutes les lignes qui ne le sont pas à l'exception de LC_COLLATE (afin de prévenir certains comportements inattendus lors des tris de chaînes), puis ajoutez celles-ci à la fin :

export LANG=fr_FR@euro
export LESSCHARSET=latin9

La première ligne indique que, lorsqu'il est disponible, les interfaces et la sortie des commandes doivent être en français, et permettre l'emploi du symbole ?. La seconde ligne indique pour sa part à less, la commande de pagination utilisée lors de l'affichage des pages de manuel, d'employer un jeu de caractères avec accents et symbole ?. Cette dernière précision est importante si vous souhaitez avoir des pages de manuel françaises lisibles.

Une fois ces règlages mis en place, vous pouvez dès maintenant actualiser votre environnement en tapant . /etc/profile.d/lang.sh. Entrez ensuite rmdir /, le message d'erreur résultant devrait vous être retourné en français.

« Regarde Ton Foutu Manuel »

Ce sera notre second et dernier point de francisation. En effet, avoir des pages de manuel dans sa langue maternelle peut faire gagner du temps dans la résolution des problèmes, voir être nécessaire quand on n'a pas la chance de lire l'anglais. Les pages que nous nous proposons d'installer ici sont les traductions de celles du LDP (Linux Documentation Project), qui couvrent la plupart des commandes essentielles du système (car quotidiennement utilisées).

Si vous savez comment et préférez le faire, vous pouvez les empaqueter vous-même en récupérant les dernières sources (man-pages-fr et man-pages-extra-fr) à leur adresse de maintien. Cependant le plus simple est certainement de télécharger les paquets amoureusement emballés par votre serviteur. Dans tous les cas installez les paquets, puis tapez man bash. Si tout s'est bien passé, le manuel doit s'afficher en français.

Récapitulons : le réseau, le son, la francisation, … amusant mais cela laisse l'impression qu'on a oublié un truc… un truc essentiel, même… mais qu'est ce que ça peut bien être ?

On n'a pas oublié quelqu'un en root ?

Le root ! abomination linuxienne par excellence, le seul compte disponible pour se connecter à votre système est celui du superutilisateur. Par bonheur, le système étant encore très minimaliste et normalement à l'abri derrière un pare-feu, les risques courus jusqu'ici ont été plutôt minces. Notre pingouin étant cependant appelé à prendre de l'embonpoint, il est plus que temps de rejoindre l'orthodoxie en la matière.

Et root créa l'utilisateur...

Le plus simple pour créer un nouveau compte utilisateur est de passer par la commande adduser (à ne pas confondre avec useradd, beaucoup moins conviviale). Celle-ci exécutée, elle vous réclamera divers paramètres en vous proposant à chaque fois entre crochets une valeur par défaut qui sera adoptée si vous validez un champs vide. Dans l'ordre d'apparition :

  • Login name : le nom de votre utilisateur, en minuscules non-accentuées et sans caractères spéciaux ni espaces (ex. ciceron ;
  • User id : si vous avez besoin/envie que votre utilisateur ait une UID (User IDentity), donnez le nombre voulu (supérieur à 1000). Autrement acceptez la valeur par défaut ;
  • Initial group : le groupe initial de l'utilisateur. Validez en l'état ;
  • Additional UNIX groups : les noms des groupes auxquels vous souhaitez ajouter votre utilisateur. Comme indiqué, il est conseillé de presser [Flèche Haut] afin de sélectionner les groupes auxquels il est vraiment souhaitable d'appartenir. À noter que si vous avez un graveur et souhaitez l'utiliser autrement qu'avec root, il est recommandé d'ajouter disk à cette liste ;
  • Home directory : le répertoire personnel de l'utilisateur. Là encore, si vous n'avez aucune raison de faire autrement, validez le choix par défaut ;
  • Shell : si bash ne vous convient pas, entrez le nom du shell désiré puis validez. Attention cependant car pour le moment seul bash est disponible, vous trouverez les autres shells (ash, ksh, tcsh, zsh) dans AP. Si vous ne savez pas quoi choisir, bash est certainement ce qu'il y a de plus standard sous Linux ;
  • Account expiry date : date d'expiration du compte. Par défaut “jamais”, ce qui est un choix parfaitement acceptable sur une machine personnelle.

Une fois tout cela renseigné, on vous demandera de valider l'ensemble de vos choix. Si vous le faites, le compte sera créé, puis démarrera une nouvelle série de paramétrages, tous optionnels (vous pouvez tout valider à vide). Viendra alors le moment crucial de vous choisir un mot de passe, promis nous ne regardons pas…

Attention si vous utilisez le pavé numérique, par défaut [Verr Num] n'est pas actif.

Si vous avez fini, il est temps de tester notre nouveau compte. Allez sur la deuxième console en appuyant simultanément sur [Alt] et [F2] et essayez de vous connecter en tant qu'utilisateur (là encore, attention à [Verr Num]).

Dans le cas où vous n'y parviendriez pas après plusieurs tentatives, ce sera certainement un problème de mot de passe. Retournez alors sur la première console ([Alt] et [F1]), puis tapez passwd <nom de l'utilisateur> et redéfinissez votre mot de passe plus attentivement, ce jusqu'à ce que vous parveniez à connecter autre chose que root sur la deuxième console.

... ce gros nul !

Si vous tentez de vous égayer sur votre système en tant qu'utilisateur, vous vous rendrez rapidement compte que vous êtes soumis à présent à pas mal d'interdits. C'est un peu le principe nous direz-vous narquois, ce à quoi nous nous empresserons d'acquiescer. Néamoins vous reconnaîtrez qu'être privé d'internet et incapable d'éteindre simplement votre machine peut à la longue se révéler un poil usant. C'est pourquoi nous allons mettre en place et configurer sudo. Commencez par retourner sur la première console (seul root peut installer des paquets) et installez le paquet correspondant.

  • sudo (AP) : permet à un utilisateur d'exécuter des commandes prédéfinies avec les droits d'un autre.

Cela fait, il nous faut éditer le fichier /etc/sudoers. La commande – sécurisée – pour faire ça est normalement visudo (sans argument), mais si l'ergonomie de vi vous donne des boutons, vous pouvez prendre votre éditeur habituel. Voici, commenté par nos soins, le contenu de notre configuration :

# SUDOERS - règles pour 'sudo'.
#
# Pour avoir les détails de configuration, 'man sudoers'.
#

# Nous n'autoriserons l'emploi de sudo qu'à partir de notre machine. Pour
# des raisons de commodité, nous créons l'alias "BOX". Insérez le nom
# de votre machine (ex. "slacknut", mais en aucun cas "localhost").
Host_Alias BOX = <machine>

# À présent nous créons deux groupes. Le premier accueillera tous les
# utilisateurs qui ont le droit de couper la machine, le second ceux qui
# ont le droit de se connecter à internet (séparez les noms par des
# virgules s'il y en a plusieurs). Ajouter votre utilisateur aux deux.
User_Alias U_PWR = <utilisateur>
User_Alias U_NET = <utilisateur>

# Maintenant, nous définissons deux groupes de commandes que nous ferons
# correspondre à chaque groupe d'utilisateur.
Cmnd_Alias C_PWR = /sbin/poweroff, /sbin/reboot
Cmnd_Alias C_NET = /usr/sbin/ppp-stop, /usr/sbin/pppd <interface> # ou '/usr/sbin/ppp-go',
                                                                  # en cas de 56K.

# Ne reste plus qu'à rendre effectives nos autorisations.
U_PWR BOX = NOPASSWD: C_PWR
U_NET BOX = NOPASSWD: C_NET

# Sans oublier pour finir d'autoriser root à exécuter n'importe quoi en
# tant que n'importe qui (le calife reste le calife ;-).
root    ALL=(ALL) ALL

# FDF
Si vous n'avez pas édité le fichier avec visudo, assurez vous que ce que vous avez écrit est correct en tapant visudo -c.

Après cela, nous devrions déjà pouvoir aller librement sur le net et éteindre notre machine simplement en tapant sudo <commande autorisée>.

Il est toutefois vrai que toutes ces choses à taper sont encore un poil lourdes, c'est pourquoi nous alons nous simplifier à nouveau la vie en définissant quelques alias dans le .bashrc de notre utilisateur. Repassez sur la deuxième console et créez/éditez le fichier ~/.bashrc, afin qu'il ressemble à ceci :

alias halt='sudo /sbin/poweroff'
alias reboot='sudo /sbin/reboot'
alias net-on='sudo /sbin/ppp-go'
alias net-off='sudo /sbin/ppp-stop'

Ne reste plus qu'à en exporter le contenu dans l'environnement courant en tapant . ~/.bashrc, et nous pourrons tester le tout, par exemple en nous connectant à internet avec notre alias : net-on.

Voilà, vous pourrez désormais montrer votre bestiole à vos amis linuxiens sans vous exposer à leur (juste) indignation avec un système entièrement utilisé en root. Et puisque nous avons bien travaillé, nous allons passer à des choses un peu plus futiles comme doter notre palmipède d'une chouette boîte de coloriage.

Dessine-moi un pingouin

Si votre machine est destinée à être autre chose qu'un serveur, il est probable que vous souhaiterez jouir d'une interface graphique. Pour cela, il vous faudra installer le serveur graphique qu'est Xorg.

Les nouvelles moutures de Xorg utilisant désormais HAL pour gérer leur configuration, la première chose à faire est d'installer celui-ci et ses dépendances :

  • hal (L) : Hardware Abstraction Layer, permettant aux applications de gérer directement le matériel ;
  • hal-info (L) : fichiers de description et de configuration des périphériques gérés par HAL ;
  • dbus (A) : démon permettant aux applications de communiquer entre elles et de réagir lorsque survient un changement au niveau des périphériques connectés au système ;
  • dbus-glib (L) : bindings pour D-Bus, servant à coder des applications s'interfaçant avec lui.

Viens ensuite l'installation du serveur proprement dit. Le soucis à ce stade, c'est que Xorg est aujourd'hui modulaire et fractionné en plus de 200 paquets, tous stockés dans X. Aussi vous comprendrez que nous ne pourrons pas donner le détail du rôle de chacun, ce d'autant que la documentation disponible sur le sujet est plutôt laconique (mais pas inexistante, si vous voulez vous amuser ;-)). Nous allons donc procéder pour cette fois « en négatif » : au lieu de ce que vous devrez installer, nous vous indiquerons ce que vous pourrez laisser de côté.

Voici donc ce dont votre serveur peut se passer :

  • les serveurs alternatifs : les paquets xorg-server-xnest et xorg-server-xvfb contiennent d'autres serveurs graphiques que Xorg. Le premier sert de proxy pour faire interagir plusieurs serveurs graphiques, et le second (expérimental) s'imbrique dans un autre serveur graphique. Vous n'en aurez très probablement jamais l'usage ;
  • le matériel de développement : xorg-cf-files et tous les paquets dont le nom se termine par proto ou protocol peuvent être ignorés. Notez cependant que vous en aurez besoin pour compiler des applications graphiques et que ne pas les installer ne fait économiser guère plus que 5mo ;
  • la documentation : chaque élément emportant son manuel, le contenu du paquet xorg-docs ne vous sera guère utile si vous ne prévoyez pas de hacker Xorg. Vous pouvez également vous passer de xorg-sgml-doctools qui sert à générer ladite documentation ;
  • les polices supplémentaires : seuls les paquets font-alias, font-cursor-misc et font-misc-misc sont réellement requis par le serveur. Cependant il est probable que vous voudrez installer des polices plus sympathiques que celles par défaut, on peut donc préciser ce qui risque vraiment d'être inutile, à savoir les polices non-latines contenues dans font-cronyx-cyrillic, font-misc-cyrillic, font-screen-cyrillic, font-winitzki-cyrillic (cyrillique – alphabet employé notamment en Russie), font-misc-meltho (syriaque – langue ancienne du Moyen-Orient), font-misc-ethiopic (guèze – langue ancienne d'Éthiopie), tous les paquets dont le nom débute par scim (langues asiatiques), ttf-indic-fonts (langues d'Inde), sinhala_lklug-font-ttf (srilankais), anthy, font-jis-misc, sazanami-fonts-ttf (japonais), font-isas-misc, wqy-zenhei-font-ttf (chinois) et tibmachuni-font-ttf (tibétain). À cette liste de polices, on peut également ajouter le paquet libhangul qui sert au support des claviers coréens.

Avec ces indications, vous devriez obtenir un Xorg épuré sensiblement identique à ce que contenait le paquet de l'ancien Xorg monolithique dans les Slackware antérieures (<= 11.0).

Une fois vos installation terminées, il vous faudra lancer les scripts setup mkfontdir et fontconfig afin de mettre à jour l'index des polices du serveur. Pour ce, tapez pkgtool, prenez l'entrée Setup, sélectionnez ces deux scripts dans la liste avec [Espace], puis validez leur exécution.

Cette dernière opération est à répéter chaque fois que que vous ajoutez ou enlevez une police à Xorg.

Pour tout ce qui est configuration du serveur à proprement parler (choix de la carte graphique, etc. ), Xorg se débrouille normalement tout seul. La seule chose restant à la charge de l'utilisateur est de choisir la disposition du clavier, qui par défaut est en QWERTY américain. Pour ce faire, nous allons passer par HAL, commencez par créer le répertoire /etc/hal/fdi/policy/10osvendor/ puis copiez-y le fichier /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi. Ensuite éditez la copie et changez comme indiqué les valeurs des lignes suivantes :

    [...]
     <merge key="input.xkb.layout" type="string">fr</merge>
     <merge key="input.xkb.variant" type="string">latin9</merge>
    [...]

Il ne vous reste qu'à lancer le démon hald avec un /etc/rc.d/rc.hald start (restart, s'il est déjà actif) afin de charger notre nouvelle configuration.

Il est encore possible de passer par ce bon vieux xorg.conf. Xorg requiérant de toutes manières pour démarrer que le démon hald soit actif, il paraît cependant clair que ce n'est désormais plus la voie à privilégier. En cas de problème ou simplement pour plus de détails sur ces questions, référez-vous à l'article dédié.

Vous êtes maintenant prêt à démarrer votre serveur, du moins si votre carte graphique est supportée par celui-ci (il y a de grandes chances). Pour vous en assurer, retournez sur la deuxième console, tapez xwmconfig puis sélectionner le très euh… austère Windows Manager de Xorg : twm. Lancez ensuite startx, si l'interface graphique s'affiche c'est que votre serveur est fonctionnel. Il ne vous restera plus alors qu'à installer et configurer votre environnement favori. Sortez en pressant sur le bouton gauche de la souris avant de sélectionner Exit.

Si TWM est facécieux et ne vous rend pas la main quand vous sortez, pressez simultanément sur [Ctrl], [Alt] et [f2]. Vous retournerez alors sur la deuxième console et il vous suffira d'appuyer sur [Ctrl]+[C] pour tuer le processus en cours.

Bon, l'oiseau ayant à présent tout le nécessaire pour développer sa sensibilité artistique, il est temps de passer à l'ultime étape de son développement, qui consiste à faire un peu le tri de ses idées.

D'une tête bien pleine à une tête bien faite

Jusqu'ici, nous nous sommes surtout préoccupés de limiter l'espace disque occupé par notre pingouin, en choisissant scrupuleusement nos paquets. Or, cela n'est qu'une part du travail si nous voulons véritablement obtenir un système minimaliste, puisqu'à l'heure où vous lisez ces lignes plusieurs méga-octets de précieuse mémoire vive doivent être gaspillés.

En effet, pour pouvoir booter vous avez dû charger une énorme ( « huge » en anglais) image de noyau, embarquant énormément de choses afin de s'adapter sans douleur au plus grand nombre de configurations possibles. Il en résulte qu'une bonne partie du code chargé actuellement en mémoire l'est en pure perte. Nous allons donc changer de noyau et opter pour le noyau générique modulaire que vous avez installé lors du choix des paquets initiaux (paquet kernel-generic). Étant modulaire, celui-ci laissera au système la tâche d'évaluer précisément le code qu'il convient de charger pour répondre à ses besoins, économisant ainsi pas mal de poids mort.

Le soucis c'est qu'un tel noyau nécessite un ramdisk pour pouvoir booter, c'est à dire un fichier prêt à être chargé en mémoire et contenant le code requis pour cette opération (principalement le support du système de fichiers présent sur votre partition de boot). Nous allons donc procéder dans cette section à tous les changements nécessaires.

Tout d'abord commencez par vous rendre dans le dossier /boot, et assurez-vous que les lien symbolique vmlinuz et System.map sont bien associés à l'image générique :

cd /boot
rm vmlinuz
ln -s vmlinuz-generic-smp-<version du noyau>-smp vmlinuz
rm System.map
ln -s System.map-generic-smp-<version du noyau>-smp System.map

Ensuite créez le ramdisk en indiquant le système de fichiers utilisé (ici ext3, avec une racine système située sur /dev/sda1, adaptez à votre configuration) :

mkinitrd -c -m ext4 -f ext4 -r /dev/sda1
Si le système de fichiers de votre racine n'est pas ext3 ou si vous voulez en apprendre plus sur la création de ramdisks avec mkinitrd, consultez le fichier /boot/README.initrd et la page de manuel man 8 mkinitrd.

Cette opération effectuée, corrigez les entrées dans /etc/lilo.conf afin qu'elles ressemblent à ceci (là encore, corrigez bien sûr si votre racine n'est pas /dev/sda1) :

# L'entrée de notre noyau générique, que nous nommons « Current », avec une ligne pour désigner
# le ''ramdisk'' à charger.
image = /boot/vmlinuz
    initrd = /boot/initrd.gz
    root = /dev/sda1
    label = Current
    read-only

# L'entrée de notre ancien noyau, que nous appelons logiquement « Old ».
image = /boot/vmlinuz-huge-smp-<version du noyau>-smp
  root = /dev/sda1
  label = Old
  read-only

À présent il ne vous reste plus qu'à relancer lilo pour que vos changements soient pris en compte. Au prochain boot de votre machine, deux entrées devraient vous être proposées, « Old » faisant office d'issue de secours en cas d'échec au chargement du noyau générique.

Et bien ! avouez qu'on a plutôt bien travaillé, non ? à ce stade, il ne vous reste normalement qu'à adapter votre système à vos besoins en installant les logiciels adéquats. Cela étant uniquement de votre ressort, il est donc temps pour nous de prendre congé…

Petit pingouin deviendra grand

Plaît-il ? Vous tremblez et blêmissez à présent qu'a sonnée l'heure ? Effectivement une explication sur la marche à suivre pour parachever votre système ne serait pas de trop. Allons, séchez-nous ces larmes, c'est en fait fort simple.

Lorsque vous voulez ajouter une application, commencer par installer le paquet la contenant, puis exécutez dans une console (ou un terminal) la commande y correspondant. Vous devriez alors écoper d'un message relevant que quelque_chose.so est not found. Cela veut simplement dire qu'il manque une bibliothèque pour que l'application puisse s'exécuter correctement.

La Slackware étant garantie livrée sans problèmes de dépendances, ce dont vous avez besoin est nécessairement dans la distribution, ne reste donc qu'à identifier dans quel paquet il se trouve. Pour cela, nous avons à la racine de chacun des répertoires slackware/ que contiennent les CDs Slackware un fichier MANIFEST.bz2. Ceux-ci recensent l'ensemble des fichiers contenus dans le CD auquel ils appartiennent respectivement.

La première chose à faire est de tous les copier sur votre disque dur, par exemple dans /tmp en tant que MANIFESTCD1.bz2, MANIFESTCD2.bz2, MANIFESTCD3.bz2, etc. selon les CDs que vous allez utiliser. Ensuite ne vous restera plus qu'à lancer une recherche en usant de la syntaxe bzgrep “Package:\|<votre recherche>” /tmp/MANIFESTCD* | grep -v Package: -B 1. En illustration, voici ce que donnerait celle-ci appliquée à la recherche de libpango :

$ bzgrep "Package:\|libpango" /tmp/MANIFESTCD* | grep -v Package: -B 1
/tmp/MANIFESTCD1.bz2:||   Package:  ./l/pango-1.16.4-i486-1.tgz
/tmp/MANIFESTCD1.bz2:-rw-r--r-- root/root       822 2007-05-04 16:04 usr/lib/libpangox-1.0.la
/tmp/MANIFESTCD1.bz2:-rwxr-xr-x root/root      1289 2007-05-04 16:04 usr/lib/libpangocairo-1.0.la
/tmp/MANIFESTCD1.bz2:-rwxr-xr-x root/root    172852 2007-05-04 16:05 usr/lib/libpangoft2-1.0.so.0.1600.4
/tmp/MANIFESTCD1.bz2:-rwxr-xr-x root/root       927 2007-05-04 16:04 usr/lib/libpango-1.0.la
/tmp/MANIFESTCD1.bz2:-rwxr-xr-x root/root     41228 2007-05-04 16:05 usr/lib/libpangox-1.0.so.0.1600.4
/tmp/MANIFESTCD1.bz2:-rwxr-xr-x root/root    245380 2007-05-04 16:05 usr/lib/libpango-1.0.so.0.1600.4
/tmp/MANIFESTCD1.bz2:-rw-r--r-- root/root       834 2007-05-04 16:04 usr/lib/libpangoxft-1.0.la
/tmp/MANIFESTCD1.bz2:-rw-r--r-- root/root       834 2007-05-04 16:04 usr/lib/libpangoft2-1.0.la
/tmp/MANIFESTCD1.bz2:-rwxr-xr-x root/root     30864 2007-05-04 16:05 usr/lib/libpangocairo-1.0.so.0.1600.4
/tmp/MANIFESTCD1.bz2:-rwxr-xr-x root/root     23480 2007-05-04 16:05 usr/lib/libpangoxft-1.0.so.0.1600.4

Comme vous le voyez, pas d'équivoque possible, la bibliothèque que nous cherchons est dans le paquet pango qui nous attend dans la série L.

Pour accélérer la recherche, vous pouvez décompresser les fichiers MANIFEST après les avoir copiés, en tapant bunzip2 -v /tmp/MANIFEST*. Cela prend bien sûr un peu plus d'espace disque (une grosse dizaine de méga-octets pour les MANIFEST des deux premiers CDs), mais le gain en vitesse d'exécution est très sensible.

Il vous suffira de répéter à nouveau le procédé jusqu'à ce que toutes vos applications soient fonctionnelles. Au passage, ne vous alarmez pas si les premières applications demandent beaucoup de dépendances, c'est simplement parce qu'actuellement votre système n'embarque presque rien. Sur un système un peu étoffé, une nouvelle application ne réclame en général guère plus que l'installation de deux ou trois « paquets-dépendances ».

Épilogue

Cette fois point de doute possible, nous voici rendus à l'inéluctable terme de ce guide.

Pour les (téméraires) débutants et les post-débutants sous Slackware, nous espérons que celui-ci vous aura permis d'entrer plus avant dans votre système et de vous familiariser avec chacun de ses composants essentiels. Pour les autres, les vieux écumeurs de banquise, nous prions simplement pour ne pas avoir écrit trop de bêtises, et espérons qu'au moins l'exposé aura été assez cohérent pour vous faire gagner du temps dans vos expérimentations.

Dans tous les cas, notre voeu le plus cher reste qu'arrivé ici vous disposiez d'une base fonctionnelle ouverte aux adaptations les plus folles que puissiez secrètement concevoir. Car ce document ne serait rien si en définitive il ne vous permettait pas de personnaliser votre système de A à Z. Soyez inventifs et amusez-vous bien, voilà donc tout ce que nous pouvons dire pour conclure !

Appendice pour le Slackeux pressé

Pour faire gagner du temps à ceux qui se moquent du détail des paquets, nous avons prévu une archive contenant les fichiers tagfile des catégories traitées dans ce guide, ainsi que quelques outils (note : le dernier chiffre renvoie au nombre de révisions opérées sur l'archive, pas sur le guide).

Si vous ne savez pas utiliser les tagfiles, consultez l'article traitant du sujet. Pour le reste, tout ce qu'il y a à savoir devrait être dans le fichier LISEZ-MOI que vous trouverez à la racine de l'archive.

Tags

installation/articles/linux_from_slack.txt · Dernière modification: 2010/08/26 20:14 (édition externe)