2. Préparation du sytème, installation


  1. Concepts, limitations
  2. La zipslack est une mini-distribution slackware prévue pour tenir sur un disque zip de 100Mo. Sa petite taille, sa simplicité et ses possibilitées de configuration font qu'elle s'adapte très bien sur toutes sortes de petites machines. A mon avis cela permet de donner une seconde vie a des vieux PC qui ne supporteraient pas le choc des distros actuelles. Autre avantage: celui de l'apprentissage; le fait de devoir tout faire par soi-même force a devoir lire les docs kivonbien. Quand j'ai débuté linux, j'ai mis une mandrake. Je n'ai rien appris, si ce n'est cliquer un peu partout. J'ai tout appris avec cette zipslack.

    Bon, forcément, comme tout n'est pas rose dans le meilleur des mondes, il va falloir vous préparer a passer beaucoup de temps en configuration post-installation avec vi sous interface texte. (ne comptez pas sur vim, il n'est pas là). X n'est pas présent non plus, donc les interfaces qui font pouet-pouet en clignotant, ca n'est pas pour tout de suite.

    Par contre, il est possible d'arriver a en faire a peu près ce qu'on en veut. On dispose en standard d'un serveur ftp, d'un serveur telnet, d'un compilateur, des headers de développement de la glibc (pas ceux du noyau, par contre). La distrib reste une slackware, donc tous les paquets slack sont compatibles. On peut aussi s'en servir pour mettre au point des configs dédiées.



  3. Mise en oeuvre
  4. Préparation.

    Il vous faut récupérer la zipslack (bah, oui, forcément). Vous la trouverez sur le site de slackware http://www.slackware.com ou sur un de ses miroirs (la liste est disponible sur le site de slackware. Se méfier, l'archive est relativement imposante:

    [kevin@linux kevin]$ ls -l /cdrom/Slackware/zipslack.zip 
    -r-xr-xr-x    1 root     root     36069921 sep  7  2000 /cdrom/Slackware/zipslack.zip
    

    36Mo, donc possesseur de modem56k, passez votre chemin, ou récupérez-là par une autre méthode. Je l'ai personnellement téléchargée au boulot, et gravée ensuite. La solution "pote-qui-dispose-d'un-graveur-et-de-l'ADSL-et-qui-est-sympa" doit aller aussi. La solution "je-bazarde-tout-et-me-fait-ermite-dans-la-montagne-et-que-je-mets-encore-pleins-de-tirets-pour-foutre-en-l'air-la-mise-en-page-chteumeuleuh" me parait par contre etre une idée a ranger dans la catégorie "mauvaise".


    Considérons que la machine darkstar ait un disque IDE. Ouvrons le PC, et démontons le disque dur. Précautions d'usage: il est recommandé dans tous les bouquins d'utiliser des bracelets antistatiques pour éviter les chocs éléctrostatiques avec les composants de la machine. Si vous n'en avez pas, touchez la carcasse avant chaque manipulation, ca devrait être suffisant. (encore une fois, si votre carte mère grille ou quoi que ce soit d'autre, je ne suis pas responsable). (détail, j'ai grillé la carte mère d'un de mes PC chez moi. Je ne sais pas si c'est du à cela, mais ce commentaire devrait vous inciter à la prudence.

    Vous avez le disque dur en main, notez la position des jumpers. A priori, il devrait être en master.

        -Interlude: Sur un PC, vous disposez de deux nappes IDE, et chacune d'elle peut contenir deux périphériques IDE, un maitre et un esclave. Comment la carte mere dissocie le maitre de l'esclave? Ben en faisant confiance au positionnements des jumpers qui sont généralement a l'arrière du disque (ou du cdrom, ou autre). J'ai essayé pour vous de booter une machine avec deux disques durs master sur la même nappe, eh ben ca marche pas, pas la peine d'essayer.

    Sur la machine "linux", peu importe que le systeme soit en SCSI ou en IDE. S'il est en IDE, prenez un emplacement de libre. Si vous avez quatres péripheriques, supprimez en un le temps de l'installation. Branchez le disque dur en fonction de(des) emplacement(s) de libre et de la position de ses jumpers. Lors du boot, verifiez par un passage dans le BIOS que le nouveau disque est bien détecté. (j'ai remarque que des cartes mères positionnent les périphériques IDE en OFF par défaut. Si c'est le cas, mettez le en AUTO, ca devrait le faire). Pour la suite, je vais considérer que le disque contenant linux est /dev/hda, que le lecteur CD est /dev/hdc et que le disque darkstar est /dev/hdd. Modifiez les jumpers du disque en conséquence.



    Installation

    Vous disposez du CD contenant la zipslack d'une main, le PC "linux" a moitié éventré avec des câbles et des fils de partout, c'est bon, vous êtes prêt. Commencez par allumer la machine. (On raconte de par les vallées que certains moines bouddhistes contemplatifs suite à des méditations transversales (et non transcendantales) dans les lamasseries les plus reculées arrivent tout a fait a se passer d'ordinateur en imaginant de manière purement conceptuelle les interactions du noyau linux avec le matériel, mais c'est un cas purement théorique qui ne nous intéresse pas) (comment savoir si vous etes un moine ou un geek moyen? Si vous etes bassement connecte au net via un modem ou un cable reseau, fuyez! vous n'etes qu'un geek; si par contre, vous etes habille en jaune, que vous avez le crane rase, que les mysteres et les reponses de l'univers n'ont pas de secret pour vous, que votre liaison au net se fait via pigeon voyageur over IP, vous etes un moine zen; Si vous en etes un, contactez moi, j'ai deux ou trois problèmes existentiels a vous soumettre); bref, bootez.

    Si vous utilisez une de ces distribs qui lancent au démarrage un gestionnaire de périphérique comme kudzu, zappez le, ne modifiez pas votre configuration, ne touchez a rien. Normalement, l'installation se fait en un seul boot. (Et au démarrage suivant tout sera remis en place).

    Ouvrez un terminal. On va préparer le disque a recevoir la zipslack. Il va falloir partitionner, et formatter les partitions. Il existe a peu près autant de théories sur la manière de partitionner que de cailloux qui tournent en périphérie de la planète mars, alors je ne saurais pas trop quoi vous conseiller. Par exemple, sur une machine qui dispose d'un disque de 200Mo et un deuxieme de 300, j'ai partitionné de la manière suivante:

    [kevin@darkstar:~]$ df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/hda2              49M   44M  2.3M  95% /
    /dev/hdb1             315M  294M   15M  95% /usr
    /dev/hda6              24M   18M  6.2M  74% /var/spool
    /dev/hda5              19M   13M  5.7M  69% /home
    /dev/hda7              87M   72M   10M  87% /usr/X11R6
    [kevin@darkstar:~]$ cat /proc/swaps 
    Filename                        Type            Size    Used    Priority
    /dev/hda1                       partition       18520   304     -1
    

    Vous ne voulez pas vous prendre la tête? Créez une partition de 2x la quantité de RAM dispo sur darkstar pour le swap, une deuxieme de 100Mo pour / et le reste pour autre chose (je parle de la maniere de remplir le reste dans le chapitre 4 )

    [root@linux root]# fdisk /dev/hdd
    
    Commande (m pour aide) : m
    Action de commande
       a   (Dés)active un indicateur Bootable
       b   Edite le libellé de disque bsd
       c   (Dés)active l'indicateur de compatibilité DOS
       d   Supprime une partition
       l   Répertorie les types de partition connus
       m   Affiche ce menu
       n   Ajoute une nouvelle partition
       o   Crée une nouvelle table de partition DOS vide
       p   Affiche la table de partition
       q   Quitte le programme sans enregistrer les modifications
       s   Crée un nouveau libellé de disque Sun vide
       t   Change l'ID système d'une partition
       u   Change l'unité d'affichage/saisie
       v   Vérifie la table de partition
       w   Ecrit la table sur le disque et quitte le programme
       x   Fonctions supplémentaires (experts seulement)
    

    Bon, comme j'ai pas disque a zapper en live sous vos yeux attentifs, quoique néanmoins rougis parceque vous passez trop de temps derriere votre écran, je vous livre les principes, c'est très simple. Commencez par lister les partitions présentes sur le disque dur -> touche l. Supprimez les --> touche d (autant de fois que nécessaire). Créez la première --> touche n, partition primaire, numéro 1, de taille +32M (pour la faire de 32Mo par exemple), et changez son type pour qu'elle passe de linux en linux(swap) --> touche t, puis code 82. Créez une deuxieme partition qui suit la première, toujours primaire, de taille +100M, et laissez tout tel quel. Il existe d'autres outils que fdisk comme sfdisk ou cfdisk plus 'conviviaux' mais le but est le meme, tronconner le disque en morceaux. Et maintenant, formattez le tout:

    [root@linux root]# mkswap /dev/hdd1
    Configuration de l'espace d'échange version 1, taille = 1044480 octets
    [root@linux root]# mke2fs /dev/hdd2
    mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    25688 inodes, 102400 blocks
    5120 blocks (5.00%) reserved for the super user
    First data block=1
    13 block groups
    8192 blocks per group, 8192 fragments per group
    1976 inodes per group
    Superblock backups stored on blocks: 
            8193, 24577, 40961, 57345, 73729
    
    Writing inode tables: done                            
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 39 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@linux root]# mkdir /mnt/zipslack
    [root@linux root]# mount -t ext2 /dev/hdd2 /mnt/zipslack 
    [root@linux root]# 
    

    Ca y'est le disque est prêt a recevoir la zipslack. Il est monté sous /mnt/zipslack.

    S'il suffisait maintenant de dézipper la zipslack sur le disque pour qu'elle s'installe, ca serait trop simple, et je n'aurais pas ecrit cette bafouille. Ou est l'ennui? Bah que la zipslack est prevue pour un disque zip sur un filesystem DOS et non ext2. Comme DOS ne gere pas les droits et que linux en a besoin, slackware a eu l'idée d'utiliser la couche umsdos. C'est une couche qui permet d'avoir les droits unix sur un filesysteme DOS. Dans le détail, comment ca fonctionne? Tous les fichiers sont ecrits de la manière 8+3 (huit caracteres pour le nom de fichier, un point, et trois caracteres de nom d'extension, a la maniere DOS, ou autrement appelee FAT16). A la racine de chaque répertoire, umsdos utilise un fichier qui s'appelle --linux-.--- qui contient les noms longs de chaque fichier, et ses attributs. Il suffit de dezipper la zipslack dans une partition DOS, la démonter, la remonter en umsdos, et hop! Elle est copiable sur une partition ext2. Pour disposer d'une partition umsdos, rien de plus simple:

    [root@linux root]# dd if=/dev/zero of=/tmp/disk_umsdos bs=1024k count=100
    100+0 enregistrements lus.
    100+0 enregistrements écrits.
    [root@linux root]# mkdosfs /tmp/disk_umsdos 
    mkdosfs 2.7 (14 Feb 2001)
    [root@linux root]# mkdir /mnt/umsdos
    [root@linux root]# mount -t vfat -o loop /tmp/disk_umsdos /mnt/umsdos/
    [root@linux root]# 
    

    Et voila, vous disposez de 100Mo pourvus d'un filesystem DOS. Le dd a ecrit 100 fois 1024k de zero dans un fichier appele /tmp/disk_umsdos. Donc on se retrouve avec un gros fichier de 100Mo. Ensuite, on a formate le fichier. (Ou, je sais, ca fait bizarre de formatter un fichier comme s'il s'agissait d'une partition, mais linux s'en accomode tres bien). Puis on le monte sous le repertoire /mnt/umsdos en tant que filesysteme vfat. Il suffit maintenant de transvaser la zipslack la dedans:

    [root@linux root]# cd /mnt/umsdos/
    [root@linux umsdos]#
    [root@linux umsdos]# unzip /cdrom/Slackware/zipslack.zip
    
    -je coupe les "inflating: ..."-
    

    On peut verifier que tout est la, sous la forme umsdos

    [root@linux umsdos]# ls
    linux
    [root@linux umsdos]# ls linux
    bin   cdrom  etc      home  --linux-.---  loadlin      mnt   README.1st  root  tmp  var
    boot  dev    faq.txt  lib   linux.bat     loadlin.exe  proc  README.ppa  sbin  usr  vmlinuz
    [root@linux umsdos]# ls linux/sbin/
    agetty        explodep.{_m  initscri.{22  liloconf.{1_  modprobe      request-.{15  swapoff
    arp           fdisk         insmod        liloconf.{_v  mount         rmmod         swapon
    badblock.{_a  fsck          installp.{_j  --linux-.---  netconfi.{36  rmt           telinit
    cardctl       fsck_ext.{_g  ipchains      losetup       netconfi.{37  rootflag.{2v  tune2fs
    cardmgr       fsck_hpf.{_2  ipchains.{3k  lsmod         netconfi.{3e  route         udosctl
    clock         fsck_min.{2e  ipchains.{3l  lspci         pack_cis      rpc_port.{3c  umount
    debugfs       fsck_msd.{_3  ipfwadm       lspnp         pcinitrd      runlevel      umssetup
    depmod        fsck_ums.{_4  ipfwadm-.{3g  makeboot.{_n  pidof         scsi_inf.{1p  umssync
    dhclient      ftl_chec.{1h  ipfwadm-.{3m  makepkg       pkgtool       setpci        update
    dhcpcd        ftl_form.{1i  isapnp        mkdosfs       pkgtool.tty   setpnp        upgradep.{_o
    dip           genksyms      jaztool       mke2fs        plipconf.{3d  setseria.{21  vidmode
    dip-3_3_.{33  halt          kbdrate       mkfs          pnpdump       setseria.{2n  ziptool
    diplogin      hwclock       kerneld       mkfs_ext.{_f  powerd        setup
    dosfsck       ide_info      kernelve.{17  mkfs_min.{2g  ramsize       setup.tty
    dump_cis      ifconfig      killall5      mkfs_msd.{_5  rarp          shutdown
    dumpe2fs      ifport        ksyms         mklost#f.{_7  rdev          sln
    e2fsck        ifuser        ldconfig      mkswap        reboot        sulogin
    e2label       init          lilo          modinfo       removepk.{_l  swapdev
    

    Les noms longs sont bien presents en tant que 8+3, les fichiers --linux-.--- sont la, tout va bien. (on aurait pu regarder les droits des fichiers, et voir qu'ils sont arbirtrairement tous identiques. Et maintenant, laissons la magie opérer :) C'est simple, on démonte le systeme en vfat, et on le remonte en umsdos:

    [root@linux umsdos]# cd /root
    [root@linux root]# umount /mnt/umsdos/  
    [root@linux root]# mount -t umsdos -o loop /tmp/disk_umsdos /mnt/umsdos/
    [root@linux root]# cd /mnt/umsdos/linux/
    [root@linux linux]# ls
    bin   cdrom  etc      home  linux.bat  loadlin.exe  proc        readme.ppa  sbin  usr  vmlinuz
    boot  dev    faq.txt  lib   loadlin    mnt          readme.1st  root        tmp   var
    [root@linux linux]# ls sbin/
    agetty      e2label      ifuser             ksyms           mklost+found     rarp           setup.tty
    arp         explodepkg   init               ldconfig        mkswap           rdev           shutdown
    badblocks   fdisk        initscript.sample  lilo            modinfo          reboot         sln
    cardctl     fsck         insmod             liloconfig      modprobe         removepkg      sulogin
    cardmgr     fsck.ext2    installpkg         liloconfig.tty  mount            request-route  swapdev
    clock       fsck.hpfs    ipchains           losetup         netconfig        rmmod          swapoff
    debugfs     fsck.minix   ipchains-restore   lsmod           netconfig.color  rmt            swapon
    depmod      fsck.msdos   ipchains-save      lspci           netconfig.tty    rootflags      telinit
    dhclient    fsck.umsdos  ipfwadm            lspnp           pack_cis         route          tune2fs
    dhcpcd      ftl_check    ipfwadm-2.3.0      makebootdisk    pcinitrd         rpc.portmap    udosctl
    dip         ftl_format   ipfwadm-wrapper    makepkg         pidof            runlevel       umount
    dip-3.3.7p  genksyms     isapnp             mkdosfs         pkgtool          scsi_info      umssetup
    diplogin    halt         jaztool            mke2fs          pkgtool.tty      setpci         umssync
    dosfsck     hwclock      kbdrate            mkfs            plipconfig       setpnp         update
    dump_cis    ide_info     kerneld            mkfs.ext2       pnpdump          setserial      upgradepkg
    dumpe2fs    ifconfig     kernelversion      mkfs.minix      powerd           setserialbits  vidmode
    e2fsck      ifport       killall5           mkfs.msdos      ramsize          setup          ziptool
    [root@linux linux]# ls -l     
    total 1120
    drwxr-xr-x    2 root     bin          6144 jun 20  2000 bin
    drwxr-xr-x    2 root     root         2048 mai 13  2000 boot
    -etc..-
    

    des noms longs! des droits sur les fichiers!! Tout est la, il suffit de transvaser:

    [root@linux linux]# cd /mnt/zipslack/
    [root@linux zipslack]# cp -a /mnt/umsdos/linux/* ./
    [root@linux zipslack]#  ls
    bin   cdrom  etc      home  linux.bat  loadlin.exe  mnt   readme.1st  root  tmp  var
    boot  dev    faq.txt  lib   loadlin    lost+found   proc  readme.ppa  sbin  usr  vmlinuz
    

    Et voila, vous avez une zipslack d'installée sur votre disque dur. Mais tout n'est pas fini, il y a deux trois trucs a modifier. Il ne faut pas oublier que c'est une distro prevue pour de l'umsdos. Cela revient a modifier le fichier fstab de la zipslack:

    [root@linux zipslack]# vi /mnt/zipslack/etc/fstab 
    
    Le fichier contient a l'origine:
    /root/swapfile   swap      swap         defaults        0   0
    /dev/fd2         /         umsdos       defaults        1   1
    none             /dev/pts  devpts       gid=5,mode=620  0   0
    none             /proc     proc         defaults        0   0
    
    Il faut modifier la fstab pour qu'elle contienne ensuite :
    /dev/hda2	 /	   ext2	        defaults	1   1
    /dev/hda1	 swap	   swap	        defaults	0   0
    none             /dev/pts  devpts       gid=5,mode=620  0   0
    none             /proc     proc         defaults        0   0
    
    

    Et la, j'entends des gens dire que je me plante parceque j'ecris /dev/hda au lieu de /dev/hdd; je leur réponds RTFM (euh, non,pas tout de suite), je leur réponds que la fstab doit refléter l'emplacement futur du disque, pas l'actuel! Et donc vu que votre disque va rejoindre sa carcasse d'origine, il vaut mieux que la fstab soit en consequence.

    Tout est presque bon, le disque de darkstar a une distro prete a l'emploi. Il reste juste a résoudre la manière de lancer le systeme. Une solution simple est de booter au debut avec une disquette. Mettez une disquette vierge dans le lecteur, dumpez un noyau dessus, et indiquez lui la partition racine:

    [root@linux zipslack]# dd if=/mnt/zipslack/vmlinuz of=/dev/fd0
    1792+1 enregistrements lus.
    1792+1 enregistrements écrits.
    [root@linux zipslack]# rdev /dev/fd0 /dev/hda2
    [root@linux zipslack]# 
    

    la disquette contient juste un noyau et va chercher a utiliser la partition racine /dev/hda2 comme racine du systeme de fichier. Ne cherchez pas a monter cette disquette pour lire son contenu, vous ne pouvez pas. Cette disquette ne contient qu'un noyau, pas de système de fichiers.

    Derniers détails

    Vous pouvez eteindre le PC linux. Il vous reste a redémonter (physiquement, cette fois ci, avec vos mains et un tournevis, pas avec une commande unix :) ) le disque de darkstar pour lui faire réintegrer sa machine originelle. Vous pouvez remonter la machine "linux" telle qu'elle était a l'origine. Noubliez pas, les pièces telles que le boitier doit s'ajuster sans effort au reste du chassis. Dans tout les cas, je deconseille l'usage de la masse pour faire joindre le tout. (le chalumeau oxydrique n'est pas non plus la solution). (Les lettres d'insultes aux constructeurs qui laissent pleins d'aspéritées coupantes et blessantes peuvent être écrites, mais ca ne nettoie pas les traces de sang laissées sur les cartes meres.)


    Peut-on faire mieux?

    Je pense qu'il doit aussi être possible d'installer la zipslack sans démonter les machines. Le principe: sur linux, on s'arrete apres la modif du fichier fstab; on partage via nfs le répertoire /mnt/zipslack/linux. Sur darkstar, on boote avec la tomsrtbt, on tronconne/formatte le disque, on monte par nfs la zipslack, et on copie tout en local. Il faudrait pour cela que darkstar dispose d'une carte réseau reconnue par la tomsrtbt, ou passer par cable parrallèle et plip. (Si j'ai un jour l'occasion de tester ca, j'etofferais un peu le paragraphe).

    Autre possibilté. L'installation d'une zipslack en parrallèle sur la meme machine. Il suffit d'avoir une partition de libre, l'espace de swap pouvant etre commun aux deux distribs. Le principe est identique. On dézippe la zipslack, on la bascule en ext2, et on copie sur une partition montée. On modifie la fstab ensuite, on prépare la disquette de boot ensuite. (Ou on modifie le lilo.conf de la distro existante pour permettre de choisir au boot la zipslack). Tiens, ca serait peut-etre a étoffer aussi, ce paragraphe.


Chapitre suivant

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre