Slackware 13.37 : configuration et peaufinage Dans le précédent numéro de Planète Linux, nous avons installé Slackware, mais il nous reste encore toute une série de points de détails à régler avant de nous retrouver avec un poste de travail pleinement fonctionnel. Suivez le guide. Créer un initrd pour utiliser le noyau «générique» Lors du premier démarrage de votre système Slackware, vous avez peut-être jeté un oeil distrait sur les messages affichés à l écran, et vous avez été vaguement inquiété par quelque chose qui ressemble à ceci : EXT3-fs (sda3): error: couldn't mount because of unsupported optional features (240) Jetons un oeil sur l unique stance actuellement configurée dans le chargeur de démarrage LILO, vers la fin du fichier /etc/lilo.conf : image = /boot/vmlinuz root = /dev/sda3 label = Linux read-only Regardons de près tout ce qu il y a comme noyaux dans le répertoire /boot : # ls -l /boot/vmlinuz* lrwxrwxrwx 1 root root 29 Feb 14 12:16 /boot/vmlinuz -> vmlinuz-huge-smp-2.6.37.6-smp -rw-r--r-- 1 root root 2687280 Apr 10 2011 /boot/vmlinuz-generic-2.6.37.6 -rw-r--r-- 1 root root 2813968 Apr 9 2011 /boot/vmlinuz-generic-smp-2.6.37.6-smp -rw-r--r-- 1 root root 5523488 Apr 10 2011 /boot/vmlinuz-huge-2.6.37.6 -rw-r--r-- 1 root root 5719840 Apr 10 2011 /boot/vmlinuz-huge-smp-2.6.37.6-smp Nous utilisons actuellement le noyau vmlinuz-huge-smp-2.6.37.6-smp, la cible du lien symbolique /boot/vmlinuz. Il s agit d un noyau «prêt-à-porter» avec toutes les options compilées «en dur». La bonne pratique, recommandée par Patrick Volkerding, consiste à utiliser le noyau «générique» avec un initrd. Si vous ne savez pas ce que c est qu un initrd, imaginez une sorte de besace virtuelle contenant les modules nécessaires pour le démarrage du système. On y trouve notamment le support des systèmes de fichiers comme ext3, ext4, etc. Dans un premier temps, nous devons savoir quels sont les modules à inclure dans notre initrd. Notre système fournit un utilitaire assez pratique pour cela. Rendez-vous dans le répertoire /usr/share/mkinitrd et lancez le script mkinitrd_command_generator.sh : # cd /usr/share/mkinitrd #./mkinitrd_command_generator.sh Le script nous affiche une commande avec toute une série de paramètres, comme ceci : mkinitrd -c -k 2.6.37.6-smp -f ext4 -r /dev/sda3 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz Retenons les arguments qui suivent l option -m, c est-à-dire jbd2:mbcache:ext4. Ce sont là les modules dont notre machine a besoin pour démarrer. Notons-les dans un coin de notre tête ou sur un bout de papier, et éditons un fichier /etc/mkinitrd.conf avec notre éditeur préféré. Le répertoire /etc contient déjà un modèle (sample) que nous allons adapter à nos besoins : # cd /etc # cp mkinitrd.conf.sample mkinitrd.conf # vim mkinitrd.conf Si vous n aimez pas Vim, utilisez un autre éditeur comme nano, joe ou mcedit.
SOURCE_TREE="/boot/initrd-tree" CLEAR_TREE="1" OUTPUT_IMAGE="/boot/initrd.gz" KERNEL_VERSION="$(uname -r)" KEYMAP="fr-latin1" MODULE_LIST="jbd2:mbcache:ext4" ROOTDEV="/dev/sda3" ROOTFS="ext4" RAID="0" LVM="0" UDEV="1" MODCONF="0" WAIT="1" Vous aurez probablement deviné que KEYMAP, c est la disposition du clavier dans la console. MODULE_LIST contient la liste des modules mentionnée plus haut, séparés par des «:». Attention à ne pas inclure d espace, ce qui peut entraîner des conséquences fatales. ROOTDEV désigne ici la partition principale de notre système (/dev/sda3), et ROOTFS le système de fichiers (ext4) utilisé sur celle-ci. Une remarque au passage sur une source de confusion potentielle. RAID="0" signifie tout simplement que nous n utilisons pas le RAID, et non pas que nous utilisons du RAID niveau 0. Créons maintenant notre initrd : # mkinitrd -F OK: /lib/modules/2.6.37.6-smp/kernel/fs/jbd2/jbd2.ko added. OK: /lib/modules/2.6.37.6-smp/kernel/fs/mbcache.ko added. OK: /lib/modules/2.6.37.6-smp/kernel/fs/ext4/ext4.ko added. 16118 blocks /boot/initrd.gz created. Be sure to run lilo again if you use it. L opération a effectivement créé un nouveau fichier /boot/initrd.gz. Une remarque s impose ici. Il se peut que certains modules apparaissent «en double». Cela n a pas de conséquence sur le bon fonctionnement du système. Si cela vous gêne, vous pouvez supprimer le ou les modules en question (très probablement jbd2 et mbcache) de la ligne MODULE_LIST. Ensuite, réitérez mkinitrd -F et appréciez le résultat. Notez ici que nous aurions très bien pu créer notre initrd sans éditer le fichier /etc/mkinitrd.conf, en utilisant directement la commande mkinitrd avec une ribambelle d options détaillées dans man mkinitrd. Différents chemins mènent à Saint-Bauzille-de-Montmel. Configurer le chargeur de démarrage LILO À en croire les messages dans les forums divers et variés, le chargeur de démarrage LILO fait horreur à la plupart des utilisateurs de Linux. Certes, il est un peu moins flexible que GRUB ou GRUB2, et il ne pardonne pas les fautes de frappe. En dehors de cela, c est un chargeur de démarrage éprouvé, qui fait très bien ce qu on lui demande, ni plus ni moins. Il ne nous reste plus qu à ajouter une stance à LILO pour utiliser le noyau «générique» avec notre initrd nouvellement créé. Éditez /etc/lilo.conf, regardez la stance vers la fin du fichier pour la syntaxe, et ajoutez une deuxième stance juste après, comme ceci : image = /boot/vmlinuz-generic-smp-2.6.37.6-smp initrd = /boot/initrd.gz root = /dev/sda3 label = LinuxGeneric read-only Slackware 13.37 troisième partie - page 2 de 7
Ici, deux précautions s imposent. D une part, la chaine de caractères correspondant à label ne doit pas contenir d espaces. D autre part, si vous utilisez Slackware64, vous n utiliserez le noyau vmlinuz-generic-2.6.37.6, et non pas le vmlinuz-generic-smp-2.6.37.6-smp, ce qu il faudra indiquer à LILO comme ceci : image = /boot/vmlinuz-generic-2.6.37.6 Prenons en compte la nouvelle configuration de LILO : # lilo Warning: LBA32 addressing assumed Added Linux * Added LinuxGeneric One warning was issued. L avertissement est bénin, et nous pouvons tranquillement l ignorer pour l instant. LILO nous affiche «Added» pour chacune des stances définies. À partir de là, nous pouvons déjà redémarrer sur le nouveau noyau, en choisissant LinuxGeneric dans le splashscreen de LILO. Si tout se passe bien, les erreurs concernant d éventuelles fonctionnalités non supportées au démarrage auront cédé la place au message suivant : /boot/initrd.gz: Loading kernel modules from initrd image: Il ne nous reste plus qu à finaliser la configuration de LILO. Retournez dans /etc/lilo.conf et supprimez allègrement la stance initiale. Renommez éventuellement la stance pointant vers le noyau générique, comme ceci : image = /boot/vmlinuz-generic-smp-2.6.37.6-smp initrd = /boot/initrd.gz root = /dev/sda3 label = Linux read-only Un peu plus haut dans le fichier, vous pouvez également modifier la valeur de timeout, exprimée en dixièmes de secondes. Si vous souhaitez que Slackware se lance automatiquement au bout de dix secondes, mettez ceci : timeout = 100 Enfin, l option suivante vous débarrassera du message d erreur mentionné plus haut : lba32 Si vous ne savez pas où l ajouter, mettez-la juste après timeout, par exemple. Là aussi, n oubliez pas de prendre en compte les modifications : # lilo Added Linux * Configurer le réseau Si vous souhaitez modifier la configuration réseau définie au moment de l installation, vous avez deux possibilités : l utilisation de netconfig ou l édition manuelle des fichiers de configuration correspondants. Lancez netconfig en invoquant simplement son nom. Vous vous retrouvez alors dans la même interface NCurses qu au moment de l installation, avec la même série de questions : nom d hôte, nom de domaine, configuration dynamique ou statique, et ainsi de suite. Pour une configuration plus pointue ou si vous préférez tout simplement passer par l édition manuelle vous pourrez passer directement par l édition du fichier de configuration /etc/rc.d/rc.inet1.conf. Admettons que vous disposiez d une interface réseau eth0 et que vous souhaitiez la configurer dynamiquement. Dans ce cas, la stance correspondante dans rc.inet1.conf Slackware 13.37 troisième partie - page 3 de 7
ressemblerait à ceci : # Config information for eth0: IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]="yes" DHCP_HOSTNAME[0]="" Voici à quoi pourrait ressembler une configuration statique : # Config information for eth0: IPADDR[0]="192.168.2.4" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]=""... # Default gateway IP address: GATEWAY="192.168.2.1" Dans ce deuxième cas, il faudra également renseigner le ou les serveurs DNS. Admettons que vous souhaitiez utiliser les serveurs DNS primaire et secondaire de votre FAI, vous devrez fournir leurs adresses IP respectives dans le fichier /etc/resolv.conf, comme ceci par exemple : nameserver 62.4.16.70 nameserver 62.4.17.69 Comme la vaste majorité des fichiers de configuration de Slackware, rc.inet1.conf est amplement commenté. Vous noterez en regardant un peu plus bas dans le fichier qu il comprend toute une section sur les connexions sans fil, mais ceci dépasse le cadre de notre article. Ajouter un ou plusieurs utilisateurs Pour l instant, notre installation ne comporte que le seul compte root. Or, pour travailler au quotidien, il nous faut créer au moins un utilisateur «commun mortel». Le script adduser permet de faire ceci très simplement. On peut l invoquer en tapant simplement adduser, ou alors fournir en argument l identifiant de l utilisateur que l on souhaite créer : # adduser kikinovak Login name for new user: kikinovak L UID de l utilisateur, c est le numéro unique (Unique IDentifier) qui permet de l identifier. Un peu comme votre numéro de sécurité sociale dans la vraie vie. Confirmez simplement par [Entrée] pour que le système choisisse le prochain UID disponible : User ID ('UID') [ defaults to next available ]: Sur un système Slackware, chaque utilisateur nouvellement créé fait automatiquement partie du groupe users. Or, l accès à certains périphériques et/ou certaines fonctionnalités du système dépend de l appartenance à une série de groupes. À titre d exemple, un utilisateur qui souhaitera utiliser les périphériques amovibles comme les clés USB ou les disques durs externes devra impérativement être membre du groupe plugdev. Ici, il suffit d appuyer une fois sur la touche [FlècheHaut] pour présélectionner une panoplie cohérente de groupes et de confirmer par [Entrée] : Initial group [ users ]: Additional UNIX groups:... Press ENTER to continue without adding any additional groups Or press the UP arrow key to add/select/edit additional groups Slackware 13.37 troisième partie - page 4 de 7
: audio cdrom floppy plugdev video power netdev Sauf indication contraire, le répertoire utilisateur par défaut sera /home/<utilisateur> : Home directory [ /home/kikinovak ] Bash est l interpréteur de commandes par défaut : Shell [ /bin/bash ] Il suffit de ne spécifier aucune date pour que le compte n expire jamais : Expiry date (YYYY-MM-DD) []: Ici, adduser affiche un petit récapitulatif qui permet de vérifier si tout est correct : New account will be created as follows: --------------------------------------- Login name...: kikinovak UID...: [ Next available ] Initial group...: users Additional groups: audio,cdrom,floppy,plugdev,video,power,netdev Home directory...: /home/kikinovak Shell...: /bin/bash Expiry date...: [ Never ] This is it... if you want to bail out, hit Control-C. Otherwise, press ENTER to go ahead and make the account. Tapez [Entrée] pour finaliser la création du compte. Les données telles que le nom complet, le bureau ou le numéro de téléphone sont entièrement facultatives : Full Name []: Kiki Novak Room Number []: 101 Work Phone []: Home Phone []: Other []: Le mot de passe est obligatoire, en revanche : Changing password for kikinovak Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New password: ********* Re-enter new password: ********* passwd: password changed. Account setup complete. Ça y est, le compte utilisateur est créé. Puisque les questions reviennent souvent dans les forums, je vous détaille ici deux manipulations de base pour la gestion des utilisateurs en ligne de commande. Si vous souhaitez ajouter un utilisateur à un groupe, utilisez la commande usermod avec les options -a (append) et -G (groupe secondaire). Concrètement, pour ajouter l utilisateur kikinovak au groupe scanner, voici comment il faut s y prendre : # usermod -a -G scanner kikinovak On peut même spécifier plusieurs groupes «à la louche», comme ceci : # usermod -a -G wheel,camera kikinovak Et enfin, la commande userdel avec l option -r permet de supprimer un utilisateur ainsi que le contenu de son répertoire utilisateur : # userdel -r kikinovak N oubliez pas de vous méfier du potentiel destructeur de cette dernière commande. Une dernière remarque sur la gestion des utilisateurs en ligne de commande. Ne confondez pas le script interactif adduser avec la commande useradd, bien plus générique. Certes, useradd vous Slackware 13.37 troisième partie - page 5 de 7
permet de faire exactement la même chose que adduser, mais dans ce cas, il vous faudra très certainement l invoquer avec toute une série d options et d arguments, que je vous laisse découvrir en lisant man useradd. Quel intérêt d avoir deux commandes pour une seule et même fonction, direz-vous? Alors que adduser est bien plus confortable en usage interactif, useradd se prête surtout à l utilisation dans les scripts. Configurer le son Nous utiliserons les outils graphiques en ligne de commande fournis par ALSA (Advanced Linux Sound Architecture) pour configurer le son sur notre machine. Vous verrez que c est très simple, et que nous n avons pas besoin d une usine à gaz du genre YaST ou DrakConf pour effectuer ceci. Les lecteurs assidus de Planète Linux se rappelleront peut-être la configuration de la distribution Arch. Ce sera quasiment la même chose ici. Le son se configure normalement en tant que simple utilisateur. La commande su (switch user) ne nous permet pas seulement d endosser l identité de root lorsque nous avons besoin d administrer notre machine. Inversement, elle permet de devenir un simple utilisateur, un peu comme ces Dieux de la mythologie à qui il arrive d endosser une identité de simple mortel. Le tiret en argument de su signifie que nous prenons également en compte l ensemble des variables d environnement de l utilisateur en question : # su kikinovak Affichez la console de mixage : $ alsamixer La table de mixage graphique en ligne de commande est assez intuitive, à un ou deux détails près. Repérez les barres verticales pour les canaux Master et PCM. Appuyez plusieurs fois sur la touche [, ] (virgule) et observez comment on bascule entre l activation (00) et la désactivation (MM pour Mute) d un canal. Ajustez le volume de chacun des canaux pour obtenir un gain de 0,00 db, comme ceci : Item: PCM [db gain: 0.00, 0.00] Le réglage que nous venons d effectuer permet d optimiser le son sur votre machine, c est-à-dire d avoir un maximum de son avec un minimum de distorsions. Les touches fléchées permettent de naviguer entre les canaux, la touche [Esc] vous permet de quitter la console de mixage. Nous voici prêts pour tester le son à l aide des sons de test inclus dans notre système. Le répertoire /usr/share/sounds/alsa contient une collection de fichiers WAV, que nous allons essayer de jouer comme ceci : $ aplay /usr/share/sounds/alsa/*.wav Si vous entendez une voix féminine qui égrène une série d informations du genre «Front center, front left, front right», c est que le son fonctionne correctement sur votre système. Il ne nous reste plus qu à enregistrer les réglages, ce que nous allons faire en tant que root (exit pour quitter l identité endossée avec su) : $ exit # alsactl store La fin de cette série vous attend au prochain numéro. Nous y verrons la gestion et même la construction des paquets, la configuration du serveur graphique et la mise en place d un environnement de bureau. Slackware 13.37 troisième partie - page 6 de 7
Annexe des illustrations 1. lilo.png Le gestionnaire de démarrage LILO, le seul composant estampillé «Slackware». 2. boot.png Le premier démarrage nous affiche quelques messages d erreur sans conséquence. L utilisation du noyau «générique» y remédiera. 3. mkinitrdconf1.png Slackware fournit des exemples de fichiers de configuration pour la plupart des fonctionnalités du système. 4. mkinitrdconf2.png La bonne pratique consiste à adapter ces fichiers «modèles» à nos besoins. 5. mkinitrd.png La création d un initrd, une «besace à modules» pour le noyau. 6. liloconf1.png Inspirez-vous de la stance existante dans lilo.conf pour éditer la deuxième, sans oublier la ligne pour l initrd. 7. liloconf2.png Une fois que vous avez démarré sans problèmes sur le noyau «générique», vous pouvez faire un peu de ménage dans lilo.conf. 8. netconfig.png L utilitaire netconfig permet de modifier les paramètres réseau en répondant à une série de questions. 9. adduser1.png La gestion des utilisateurs se fait entièrement en ligne de commande. 10. adduser2.png Le script interactif adduser permet de créer un utilisateur de manière simple et efficace. 11. alsamixer1.png La console de mixage graphique en ligne de commande. 12. alsamixer2.png Optimisez les canaux audio pour éviter les distorsions. Slackware 13.37 troisième partie - page 7 de 7