Installer une distribution linux slackware

L'installation de la slackware

Cette section s'intéresse plus particulièrement à l'installation de la slackware sur votre système. L'ensemble des conseils et explications donnés ici sont basés uniquement sur le premier CD d'installation: slackware-11.0-install-d1.iso . Seul le premier CD est réellement obligatoire pour une installation, le reste pouvant se passer entièrement par le réseau. Si vous n'êtes pas connecté ou si vous avez une liaison bas débit, essayez de récupérer de préference l'ensemble des CD ou le DVD.
  1. La hiérarchie du CDROM
    A la racine du CDROM se trouvent plusieurs fichiers textes dont les noms explicites se passent d'explications supplémentaires:
    ANNOUNCE.11_0          COPYRIGHT.TXT      PACKAGES.TXT      SPEAK_INSTALL.TXT
    BOOTING.TXT            CRYPTO_NOTICE.TXT  README.NPTL       Slackware-HOWTO
    CHANGES_AND_HINTS.TXT  ChangeLog.txt      README.TXT        UPGRADE.TXT
    CHECKSUMS.md5          FAQ.TXT            READ_D1.TXT       isolinux/
    CHECKSUMS.md5.asc      FILELIST.TXT       RELEASE_NOTES     kernels/
    COPYING                GPG-KEY            SPEAKUP_DOCS.TXT  slackware/
    
    Je vous invite très fortement à passer du temps à lire ces documentations avant de commencer. A peu près toutes les questions que vous pouvez vous poser sont traitées ici. C'est une mine de réponses, ne passez pas à coté. Entre autre pour ceux qui veulent upgrader de la 10.2 à la 11, lisez CHANGES_AND_HINT.TXT pour faciliter le passage.
    Concernant les trois répertoires présents: isolinux/ contient le nécessaire pour booter depuis un cdrom, c'est à dire le chargeur de démarrage isolinux lui même ainsi que le fichier initrd (l'emplacement est à noter, nous y reviendrons par la suite). Ce répertoire contient également les menus affichés lors du boot sur le cdrom.
    Le répertoire kernels/ contient une liste de noyaux qui permettent de booter la machine sur laquelle l'installation est prévue. La liste et leurs particularités sont donnée dans isolinux/f3.txt:
                          -+ Kernel Image List +-
     These are the kernels for you can use when booting this CD:
        adaptec.s   -      Supports most Adaptec SCSI and RAID controllers.
        ataraid.i   -      bare.i with support for ATA RAID chipsets.
        bare.i      -      The generic no-SATA IDE/ATAPI kernel.
        bareacpi.i  -      bare.i with support for ACPI.
        ibmmca.s    -      Supports old IBM Microchannel (PS/2) machines.
        jfs.s       -      bare.i with support for IBM's JFS and AIC7xxx.
        old_cd.i    -      Supports very old CD drives.
        pportide.i  -      Supports parallel-port disks and CD drives.
        raid.s      -      Kernel with support for Compaq Smart Array, Mylex
                           DAC960, AcceleRAID, and eXtremeRAID controllers.
        sata.i      -      Default kernel with SATA and PATA (IDE) support.
        scsi.s, scsi2.s, scsi3.s:  Support various SCSI controllers.
        speakup.s   -      bare.i with Speakup speech and Adaptec AIC7xxx SCSI.
        huge26.s    -      A loaded 2.6 kernel (requires modules from /extra)
        test26.s    -      A loaded 2.6 kernel (needs modules from /testing)
        xfs.s       -      bare.i with support for SGI's XFS and Adaptec
                           AIC7xxx support.  *NO* ext2/ext3/reiserfs!
    Other kernels on this disk might be usable if you enter the $PATH to them.
    
    Il y a forcément un noyau qui vous permettra de booter pour lancer l'installation. Si aucun ne fonctionne, tout n'est pas perdu, vous trouverez des aides dans le chapitre "installations non conventionnelles".
    Enfin le répertoire slackware/ contient les paquets qui vont être proposés à l'installation ainsi que le fichier MANIFEST.bz2 qui est un document contenant l'ensemble des fichiers se trouvant dans les paquets. C'est également un fichier important sur lequel nous reviendrons par la suite. Slackware range ses paquets selon une hiérarchie propre, dans une série de sous répertoires nommés: Il existe également kde/ et kdei/ pour KDE et son internationalisation, t/ pour teX et tcl/ pour tcl qui ne se trouvent pas sur le CD1. Certains utilisateurs remarqueront que Gnome n'est pas cité dans cette liste de paquetage. C'est normal, slacwkare ne supporte plus gnome dans sa version par défaut. La documentation livrée sur le CD explique cet état de fait, voir le fichier RELEASE_NOTES qui indique entre autre:
        The GNOME desktop is not shipped as a part of Slackware, and 
    continued maintenance of GNOME for Slackware has been adopted by a 
    couple of outside projects:
    
        http://gsb.sf.net
        http://gware.sf.net
    
        If you're looking for a GNOME distribution for Slackware, I can 
    recommend either of these as being extremely well built and more 
    comprehensive than any GNOME series that was previously included.  If 
    you're a GNOME fan, check them out.  I think you'll be pleased.
    
    Les paquets sont tous nommés selon la même nomenclature:
    kevin@zipslack:~$ ls /mnt/cdrom/slackware/ap/lsof-4.76-i486-1.tgz
    /mnt/cdrom/slackware/ap/lsof-4.76-i486-1.tgz
    
    Dans l'ordre: le nom, la version, le CPU pour lequel il est compilé et son incrément de compilation. Si le nom n'est pas suffisament parlant, il est possible d'avoir un bref résumé des fonctionnalités du paquet car ils sont tous fournis avec un fichier txt les résumant:
    kevin@zipslack:~$ cat /mnt/cdrom/slackware/ap/lsof-4.76-i486-1.txt
    lsof: lsof (list open files)
    lsof:
    lsof: Lsof is a Unix-specific tool.  Its name stands for "LiSt Open Files",
    lsof: and it does just that.  It lists information about files that are open
    lsof: by the processes running on the system.
    lsof:
    lsof: Victor A. Abell of Purdue University is the developer of lsof.
    lsof:
    
    Afin de connaître la liste des fichiers contenus dans un paquet, il faut utiliser le fichier MANIFEST.bz2 qui liste l'ensemble des fichiers de tous les paquets:
    ++========================================
    ||
    ||   Package:  ./ap/lsof-4.76-i486-1.tgz
    ||
    ++========================================
    drwxr-xr-x root/root         0 2006-03-26 18:16:27 ./
    drwxr-xr-x root/root         0 2006-03-26 18:16:26 usr/
    drwxr-xr-x root/root         0 2006-03-26 18:16:26 usr/bin/
    -rwxr-xr-x root/root    102528 2006-03-26 18:16:26 usr/bin/lsof
    drwxr-xr-x root/root         0 2006-03-26 18:16:26 usr/doc/
    drwxr-xr-x root/root         0 2006-03-26 18:16:26 usr/doc/lsof-4.76/
    -rw-r--r-- root/root    288768 2005-08-29 05:14:39 usr/doc/lsof-4.76/00FAQ
    -rw-r--r-- root/root      1347 2005-02-01 11:36:04 usr/doc/lsof-4.76/00LSOF-L
    -rw-r--r-- root/root     57823 2005-08-29 05:15:34 usr/doc/lsof-4.76/00README
    (...)
    
    Astuce: le programme "less" decompressera à la volée le fichier bz2. De plus less utilise une méthode de recherche rapide. Tapez sur la barre slash / puis tapez le mot-clé à rechercher suivi d'entrée. Une fois trouvé, la touche n vous redirige vers l'occurence suivante, la touche N vers la précédente.
  2. En mode texte seul
    L'installation se réalise en mode texte seul et en anglais. C'est une succession de scripts "dialog" (man dialog pour les explications) qui va vous guider tout au long de l'installation. Rien n'est compliqué la dedans. Il suffit de suivre le déroulement des opérations et de répondre aux questions posées. Si vous utilisez déjà linux, aucune question ne devrait vous être insurmontable. Sinon, c'est qu'il est temps de lire de la documentation.
  3. Le déroulement d'une installation
    Je considère que vous démarrez du CD. Le noyau que vous avez choisi va se lancer, suivi d'initrd. Plus qu'une procédure d'installation, c'est un live CD en mode texte dont vous disposez. Le premier choix a faire est celui du clavier (prenez fr-latin1 pour les français).
    Loguez vous root. A ce niveau là, vous êtes au commande d'un système linux complet. C'est toujours utile de le savoir pour sauver un système un jour. Il sera toujours possible de booter sur le CD, et utiliser ce linux-live pour rattraper un système. Vous disposez de plusieurs consoles textes accessible depuis alt-F1, alt-F2 etc..
    La première chose à faire est de tronçonner votre disque en utilisant fdisk ou cfdisk. Il n'existe pas de redimensionneur de partitions automatique. Attention donc aux personnes qui veulent redimensionner une partition windows pour faire de la place pour installer linux; il faudra utiliser d'autres outils. Lorsqu'une ou plusieurs partitions de type linux et une de swap, sera créée, il faut démarrer le programme d'installation en tapant: "setup".
    Le menu SETUP contient une liste de taches à faire, réalisez les dans l'ordre. Cela commence par le SWAP, puis les partitions et l'endroit où les monter dans le futur système, la source qui contient le repertoire slackware/ et les paquets, puis le groupement des paquets que vous souhaitez installer. Ils ont le même nom que les répertoires cités plus haut: a/ ap/ d/ etc.. C'est un premier filtre. Ensuite, vous avez différentes manières de choisir les paquetages, lors du menu "SELECT PROMPTING MODE". Choisissez "expert", cela vous proposera de choisir individuellement chacun des paquets dans les groupes que vous avez choisi. C'est à dire que si vous n'avez pas coché le groupe e/ (emacs), vous n'aurez aucune question posée sur les paquets emacs. Cette étape peut prendre beaucoup de temps. Si au cours de l'installation vous doutez de l'interêt d'un paquet, utilisez la deuxième console (alt-F2) puis lancez un cat sur son fichier d'informations. Le CD est monté sous /var/log/mount, donc les informations sur emacs par exemple sont situées sous /var/log/mount/slackware/e/emacs-21.4a-i486-3.txt.
    Cette phase de choix individuels prend du temps (comptez 20 à 40 minutes), mais permet de savoir ce qui est installé. Il est aussi possible d'installer l'intégralité des paquets en choisissant "FULL" lors du "SELECT PROMPTING MODE", ce qui représente à peu près 3Go de données.
    Une fois tous les fichiers copiés sur le disque, arrive la phase de configuration qui consiste à donner un mot de passe à root, à utiliser un noyau pour votre futur système (celui qui vous a servi pendant l'installation semble être un bon candidat), puis à installer lilo.
  4. Que faut il retenir de cette installation?
    Le programme d'installation n'est qu'un script shell. Ce script et tous les outils utilisés sont contenus dans le fichier initrd.
    La simplicité de cette méthode permet de parfaitement comprendre l'enchainement des étapes nécessaires à l'installation d'une salackware. Le chapitre suivant donne plusieurs méthodes pour installer une slackware en se basant sur ce qui a été vu jusqu'ici.
  5. Quelques installations non conventionnelles
    Le boot depuis le CDrom n'est pas la seule manière d'installer une slackware. Les exemples suivants permettent de mieux comprendre la méthode d'installation de la slackware, mais également donnent des pistes pour parvenir à installer slackware dans toutes les conditions imaginables.
    1. En bypassant entièrement le programme "setup".
      Comme dit plus haut, setup ne fait finalement pas grand chose. Il est possible de s'en passer entièrement. Même si cela n'a pas très grand interêt si ce n'est pour la performance, cela montre bien qu'avec slackware tout a une explication, et tout est compréhensible.
      Bootez sur le CD, lancez fdisk, formattez les partitions à la main. Ensuite, montez le CD quelque part, montez la future partition / sous /mnt et installez les paquets de cette manière, à l'aide de la variable ROOT
      ROOT=/mnt installpkg /cdrom/slackware/.tgz
      
      Cela va installer vos paquets sous /mnt. Pour plus d'informations, lisez le paragraphe sur le format de paquet slackware. Une fois les paquets installés, chrootez dans votre distribution
      # chroot /mnt
      
      et modifiez la fstab, créez un fichier lilo.conf, installez lilo, rebootez, votre slackware est installée.
    2. Depuis une image iso sans la graver
      Comme indiqué plus haut, toute la procédure d'installation est contenue dans le fichier initrd. Si vous ne disposez que d'une image iso, montez là en -o loop sur une machine. Récuperez le fichier noyau qui vous intéresse (répertoire kernels/ ), récuperez l'initrd (répertoire isolinux/ ). Ensuite, si votre PC boote par le réseau, installez un serveur DHCP, et TFTP. Faites démarrer votre PC sur le réseau, vous allez récuperer le noyau, puis l'initrd. Le sytème va démarrer puisque l'initrd est un système linux complet. Avant de lancer le programme "setup", montez en nfs un répertoire qui contient l'image iso. Montez en loop l'image iso quelquepart, comme /iso (n'utilisez pas /mnt). Lors du choix du "SOURCE MEDIA", signalez "from a premounted directory" et indiquez /iso/slackware. L'installation se fera sans heurts.
      Si vous souhaitez installer slackware sur une autre partition d'un ordinateur ayant déjà linux, faites simplement pointer le chargeur de boot sur le noyau et l'initrd précedemment extrait.
      Enfin, ceci est aussi valable si aucun des noyaux prévus ne fonctionne sur votre hardware. Compilez un noyau adéquat, démarrez sur celui-ci avec l'initrd du CD, et continuez l'installation.
    3. Depuis une zipslack
      Slackware fournit aussi "zipslack". C'est une version de slackware minimale prévue pour être utilisée sur un disk zip à l'origine (d'ou son nom), sur un filesystem FAT. Un module noyau appelé umsdos permet de gérer des droits étendus (uid/gid, liens symboliques, noms longs, etc..) sur une couche FAT. Attention néanmoins, umsdos n'est plus maintenu dans les noyaux 2.6. Il est possible de migrer cette distribution linux sur un système de fichier ext2/3. La zipslack FAQ explique tout ceci. C'est une excellente base pour démarrer. X n'est pas installé mais tout les outils réseaux nécessaires à l'installation de paquets supplémentaires sont fournis.
      La FAQ zipslack vous explique comment transformer ce zip en un fichier tar.gz qui contiendra la distribution. Il suffit donc de formater une partition (depuis une tomsrtbt, un liveCD knoppix, n'importe quel média), puis de detarree cette distribution dedans. Enfin, il suffira de odifier les fichiers nécessaires au moins pour le premier boot, /etc/fstab, /etc/rc.d/rc.local, et d'installer le chargeur de boot lilo. La slackware est prête à redémarrer.
    4. Depuis le réseau, à distance, premier cas d'étude
      Imaginons le cas suivant. Vous disposez d'un compte root sur une machine qui n'est accessible que par le réseau. Cette machine distante a une partition de libre sur laquelle vous voulez installer slackware. Copiez le fichier isolinux/initrd sur le linux dans /tmp. Lancez les commandes:
      # mv /tmp/initrd /tmp/initrd.gz
      # gunzip initrd
      # mount -t ext2 -o loop,rw /tmp/initrd /mnt
      # cat /proc/partitions > /mnt/proc/partitions
      # chroot /mnt /bin/ash
      # /usr/lib/setup/setup
      
      Quelques explications. Le but est de lancer l'installeur, qui n'est rien d'autre qu'un script shell. On récupère l'initrd. On le monte quelquepart. Au passage, on duplique l'information /proc/partitions (le script shell d'installation en aura besoin par la suite) dans le chroot. On chroot dans l'initrd sur le shell ash et le setup est lancé. L'image iso de la slackware doit être atteignable en nfs. Montage nfs, puis j'indique lors de l'installation /nfs/slackware comme "pre mounted directory". L'installation se déroule sans heurts.
    5. Depuis le réseau, à distance, second cas d'étude
      Enfin, en dernier ressort, il est possible de copier l'intégralité d'une slackware par le réseau. Le contexte technique de ce cas est le suivant: une debian sans partition de libre, un accès réseau firewallé avec comme unique port disponible le 22 (ssh). La méthode employée est la suivante:
      Installation d'une slackware plus que minimale dans un qemu pour un total de 120Mo. Dans le script rc.local, ajout de quelques lignes qui chargent le module de l'interface réseau de la debian et son adressage IP.
      Sur la debian, transformation de la partition swap en partition ext2, puis boot du qemu avec une tomsrtbt (distribution qui tient sur une disquette) et transvasement de l'installation de cette manière:
      Sur le PC local:
      ssh -L 4444:debian:4444 debian
      Dans la debian:
      mount -t ext2 /dev/hda5 /mnt
      cd /mnt
      nc -l -p 4444 | tar xvf -
      Et dans le qemu:
      mkdir /hd
      mount -t ext2 /dev/hda1 /hd
      cd /hd
      tar cvf - . | nc 10.0.2.2 4444
      
      Pour l'explication, la tomsrtbt est utilisée afin de ne pas avoir a démarrer la slackware. Tous les fichiers sont fermés, il n'y a donc pas de problèmes avec des fichiers spéciaux comme /proc ou /dev. Le tar renvoie dans le tube tous les fichiers. A l'extemité du tube, netcat envoie les données sur l'adresse IP 10.0.2.2 qui est l'adresse locale du PC situé local. Au bout de cette adresse locale, sur le port 4444, un tunnel ssh qui utilise le port 22 pour aller jusqu'à la debian. Sur la debian, le tunnel sort sur le port 4444 et tombe dans un tube qui détarre les fichiers sur la partition prévue au fur et à mesure de leur arrivée.
      La slackware se retrouve donc intégralement copiée sur l'ancienne partition swap de la debian. Il ne reste qu'a modifier le menu.lst pour booter sur cette partition, suivi d'un reboot. Enfin, la manipulation a été relancée une deuxième fois pour tout installer sur la partition racine /, et un dernier reboot a permis d'utiliser cette partition racine, et de réutiliser la partition swap en swap. ssh va ensuite servir à tunneler un proxy web pour aller chercher les paquets manquants.
    L'installation d'une distribution slackware n'est pas une incantation de magie noire, juste une succession de copie de fichiers sur un disque, un léger paramétrage et un chargeur de boot (lilo). Avec tout ce que nous avons vu, vous devriez être capable d'installer une slackware dans n'importe quelle condition.