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