original in de: Tjabo Kloppenburg
de to en: Tjabo Kloppenburg
en to fr: Iznogood
J'ai été contaminé en 1996. Avec une Slackware 3.1 :-). J'aime les langages de script comme Python, Perl, GAWK, etc. Je m'intéresse aussi aux périphériques de démarrage.
Après avoir lu quelques articles de linuxfocus et d'autres pages web, j'ai
finalement trouvé une méthode fiable pour créer des CDROM de démarrage, afin
de lancer des disques sains (sans virus), des systèmes sans disques
durs ou un système Knoppix adapté.
Il est gravé sur un CDROM 8cm et "pèse" 183Mo. Il peut se mettre dans les
poches et peut être utilisé dans de nombreuses situations.
Je suppose que vous possédez les bases et que vous savez
comment graver des CD. Vous devez avoir un graveur qui puisse aussi graver des
CD-RW. C'est une bonne chose puisque faire des erreurs est une façon
d'apprendre...
Il vous faut un disque CD-RW, quelques CD-R 8cms (ou CD-RW) et un système
Linux fonctionnel avec quelques centaines de Mo disponibles.
Plus tard, lors de l'intégration de Knoppix, nous devrons avoir un accès réseau rapide
car nous devrons télécharger des paquetages depuis Internet. Si vous
savez comment installer NFS ou samba pour obtenir un miroir local
Debian, vous n'avez pas besoin de l'accès réseau rapide. Vous devez enfin avoir
quelques connaissances sur Debian (installer et désinstaller des paquetages) ou un
ami/canal IRC où poser vos questions. Vous devez aussi savoir comment
utiliser un périphérique "loop".
Démarrer depuis des CDROM est très similaire au démarrage depuis une disquette ou
un disque dur. Des éléments du disque sont lus en mémoire par le BIOS et s'ensuit
une phase d'initialisation. Au début des CDROM, ceux-ci n'étaient pas
destinés au démarrage, les développeurs de matériel ont dû faire
de la magie : après avoir fait des changements spécifiques dans les BIOS, ils ont
finalement défini le standard « el torito ».
Il définit une structure sur le CDROM, contenant une image de démarrage et un peu de
code pour le BIOS afin de charger cette structure dans la mémoire, c'est-à-dire
d'émuler une disquette dans la mémoire. Après avoir chargé le disque en mémoire,
il démarre comme n'importe quel disque de lancement.
Avec cette émulation de disquette, nous pouvons créer un CDROM de démarrage avec une simple
image de disque, le lancer avec une disquette 1.44Mo ou une avec 2.44Mo. Vous n'avez
jamais vu une telle disquette mais le BIOS peut la gérer. Pour démarrer depuis le CDROM,
nous n'avons pas besoin d'une disquette de 2.88 MB - simplement d'une image de disque
créée avec le périphérique loop et quelques outils.
Un disque simple n'est pas multi-démarrage. Nous avons besoin d'un outil pour
charger et initialiser d'autres images de démarrage depuis un système de fichiers.
Boot-Scriptor est notre ami. Avec boot-scriptor, nous allons démarrer depuis un CDROM
avec un chargeur (sans émulation de disque, c'est aussi faisable) et nous allons
ensuite choisir une image de disque dans un menu. Boot-Scriptor fera un peu de magie
pour charger l'image dans un émulateur de disquette, d'où l'image démarrera
comme à partir d'une disquette dans le lecteur.
Ces disques de démarrage peuvent être des images de disque comme les disques de démarrage
windoze de différentes versions, un changeur de mot de passe NT, une mini distribution
Linux ou un disque de démarrage Knoppix pour lancer un système Knoppix de taille moyenne.
Nous avons besoin d'un répertoire avec suffisamment d'espace vide pour construire
la structure de répertoire de notre CDROM. Je suppose que vous avez beaucoup d'espace
dans votre répertoire « /data
». Le répertoire de base de notre
projet peut être « /data/mboot
». J'ai créé à l'intérieur deux répertoires,
« toolcd/
» (contenu du cd) et « /archive
» (versions orginales
des outils que j'utilise, comme les scanners de virus).
Récupérez l'archive et les fichiers INI sur Boot-Scriptor.
Il n'y a pas de documentation dans l'archive, vous ne la trouverez que sur le site web.
Boot-Scriptor a besoin de son propre répertoire « bscript/
» sur le CDROM,
avec le chargeur, un fichier graphique optionnel (voir les docs) et un fichier appelé
« bscript.ini
».
Ce fichier définit le menu de démarrage dans un langage comme le basic, possèdant des
commandes comme « print
», « onkey
» (branchement sur la touche
pressée) et « memdisk
» (image de disque de démarrage).
Jetez un oeil à ce petit exemple et créez votre propre fichier ini :
print "\ac\c0e--=> mon CDROM multi-démarrage avec Linux <=--" print "F1 Disque de démarrage 1" print " w démarrage à chaud" MenuLoop: onkey f1 goto bootDisk1 onkey w reboot warm goto MenuLoop bootDisk1: memdisk \images\boot1.img
Il existe un tas d'autres commandes. Faites une copie de la documentation et placez-la quelque part dans la structure du répertoire du CDROM. Vous en aurez besoin dans les premières étapes pour comprendre les commandes de base.
Pour le premier CDROM de test, nous avons simplement besoin d'un simple disque de démarrage
comme celui de windoze. Ou d'un disque de démarrage Linux créé avec lilo. Ou
essayez un de ces petits systèmes Linux à disque unique comme HAL ou TomsRtBt (2.88MB). Demandez-le
à votre moteur de recherche web favori.
Nous utilisons « dd » pour créer un fichier image depuis le disque dur :
( insert disk ) # cd /data/mboot/toolcd # mkdir images (répertoire pour les images de disque) # dd if=/dev/fd0 of=images/boot1.img
Le programme « mkisofs » doit être lancé avec l'option « -b » pour s'assurer d'une bonne
installation du chargeur de démarrage. Le chemin de l'argument « -b » est relatif au
répertoire de base du CDROM (« toolcd/
»):
# cd /data/mboot # mkisofs -r -o iso.01 -b bscript/loader.bin \ -no-emul-boot -boot-load-size 4 toolcd
bscript.ini
», vous pouvez jeter le CD à la poubelle.
Gravez donc un CD-RW :-).cdrecord
» possède deux modes :
« blank=fast
» et « blank=all
». Le mode "fast" est le plus rapide :).dev
du graveur.
Tapez « cdrecord -scanbus
» pour voir tous les périphériques disponibles.
S'il n'y a pas de périphérique, vous devrez charger un module de pilote de périphérique
comme « ide-scsi
» avec une commande telle que « modprobe ide-scsi
».# cdrecord -scanbus Cdrecord 1.10 (i686-pc-linux-gnu) (C) 1995-2001 J. Schilling Linux sg driver version: 3.1.22 Using libscg version 'schily-0.5' scsibus0: 0,0,0 0) 'LG ' 'CD-RW CED-8083B ' '1.05' Removable CD-ROM ... # cdrecord -v dev=0,0,0 speed=32 iso.01
L'appel à « mkisofs
» possède de nombreux caractères, rendant facile
l'oubli ou les fautes de frappe. « cdrecord
» nécessite des aussi des
paramètres corrects; c'est donc une bonne idée d'utiliser un script ou un Makefile pour
s'assurer des arguments de commande corrects. Nous utiliserons un Makefile pour la
commande « make
». Installez-le si vous ne l'avez pas sur votre système.
« make » est l'une des commandes qu'un programmeur doit connnaître.
Nous placerons le Makefile dans la structure du répertoire du CDROM, le liant au répertoire
« mboot/
». Ce n'est pas seulement une des façons de le faire -
c'est une bonne idée d'y placer tous les éléments dont nous avons besoin pour créer
le CDROM. Cela permet de créer de meilleurs CDROM, même si vous n'avez plus les
fichiers sur le disque dur, c'est donc aussi une bonne sauvegarde... :-).
Le Makefile peut être simple. Vous avez ici un exemple :
BASE = toolcd DEV = 0,0,0 SPEED = 4 VERSION = 01 ISO = iso.$(BASE).$(VERSION) OPTIONS= -b bscript/loader.bin -no-emul-boot -boot-load-size 4 blank: cdrecord -v dev=$(DEV) blank=fast blankall: cdrecord -v dev=$(DEV) blank=all iso: echo "deleting ~ files:" @find $(BASE) -name "*~" -exec rm {} \; echo "creating iso file:" @mkisofs -r -o $(ISO) $(OPTIONS) $(BASE) @echo ls -al $(ISO) burn: cdrecord -v dev=$(DEV) speed=$(SPEED) $(ISO)
/data/mboot/toolcd/scripts
» est
idéal. Nous créons un lien symbolique vers « /data/mboot/Makefile
» :
# cd /data/mboot # ln -s toolcd/scripts/Makefile Makefile
mboot/
» :# make blank # make iso # make burn
Vous trouverez d'autres disques de démarrage dans vos distributions et sur le web.
Mais rappelez-vous que vous ne savez jamais réellement ce qu'il y a sur une
image de disque téléchargée depuis internet. Je pense que c'est toujours une
bonne idée de demander à un moteur de recherche comme google si quelqu'un a eu
des problèmes en utilisant un disque de démarrage pris sur un site internet.
Et lancez un scanner de virus sur les disques.
J'ai récupéré quelques disques de démarrage sur www.bootdisk.com. Les disques sont des versions
anglaises, la plupart d'entre eux possèdent un support CDROM. Il est recommandé de scanner le CDROM
pour découvrir d'éventuels virus ou de lancer une mise à jour du BIOS
depuis un autre CDROM. J'aime beaucoup l'image de disque de démarrage « drdflash »,
fournissant un disque de démarrage minimum avec suffisament d'espace pour "flasher"
le BIOS. Utilisez simplement « rawrite
» (dos) ou « dd
»
(linux) pour écrire l'image sur un disque et vous aurez un "flasheur"
de BIOS en une minute. J'ai assisté à une réunion réseau et j'ai vu le temps
qu'il fallait à une bande de gourous de Linux pour trouver une disquette de démarrage
pour une mise à jour du BIOS... :-)
Note: Vous pouvez trouver « rawrite.exe
» sur la plupart des distributions
Linux sur CDROM.
Avec votre petit et pratique CDROM 8cms, vous avez un outil pour démarrer
un disque propre n'importe où. Pourquoi ne pas lui ajouter un scanner de virus ?
J'ai pris « F-Prot » sur F-Secure. Ils ont
une version Linux et DOS en libre téléchargement.
Le seul problème est de savoir comment mettre à jour les définitions de virus sur
le CDROM. J'ai entendu parler de CD-RW en 8cms mais je n'en ai jamais vu dans les
boutiques. Dommage. Une autre solution serait de démarrer un système Linux minimal
depuis le CDROM 8cms, pour télécharger de nouvelles définitions de fichiers depuis
internet.
Les deux problèmes que j'ai dû résoudre avec f-prot étaient :
Si vous ne connaissez pas encore Knoppix,
jetez-y un cop d'oeil ! C'est un sytème Linux complet exécutable avec 2-3 Go de logiciels
sur un seul CDROM de 650Mo. Il possède une détection de matériel et d'autres fonctionnalités
intéressantes. Mais il ne rentre pas dans notre mini CDROM.
Ne pleurez pas car il est possible de reconstruire le CDROM knoppix (ou un projet clone).
Vous avez simplement besoin de connaissances Debian de base et d'un peu de place sur votre
disque dur.
Knoppix utilise une méthode magique pour faire tenir 2-3Go dans un CDROM de 650Mo : le
système de fichier a été compressé dans le fichier « /KNOPPIX/KNOPPIX
» et il
est monté par du processus d'initialisation de démarrage de disquette (*) en utilisant
un module de pilote spécial « cloop
». (* En fait, le contenu du fichier
image du disque de démarrage est utilisé lors de l'appel de « mkisofs
» avec
l'option « -b
».)
L'image du disque de démarrage qui a été utilisée pour créer le CDROM knoppix peut être
trouvée dans le répertoire « /KNOPPIX
» de chaque CDROM knoppix :
« boot.img
». Il y a encore ici, l'idée d'embarquer tous les gènes pour la
prochaine évolution...
Je vous suggère de monter l'image du disque de démarrage knoppix par le périphérique
loop pour tenter de comprendre comment le processus de démarrage de knoppix (ou de Linux)
fonctionne. Recherchez sur le web le « bootdisk howto » pour trouver plus ample information.
Un des fichiers que vous trouvez sur l'image du disque est un fichier compressé « .gz »
contenant une image de système de fichiers. C'est le ramdisk initial avec le système de
fichier ramdisk utilisé au tout début du démarrage.
Ainsi, lors du démarrage de knoppix, voici ce qui arrive : le fichier « boot.img » du fichier
iso charge le noyau Linux depuis l'émulation de disquette, chargeant le ramdisk initial.
Le processus linuxrc charge le module du pilote « cloop.o » et recherche un fichier
« /KNOPPIX/KNOPPIX » sur tous les périphériques attachés avec un système de fichiers connu.
Oui, il doit être possible de lancer le knoppix compressé même depuis un disque dur. Mais je
ne l'ai jamais testé.
Après avoir trouvé un périphérique contenant le système de fichiers compressé, il le monte et
la détection matérielle et tout le reste démarrent.
La disquette « boot.img » ne se préoccupe pas d'où elle démarre (périphérique ou émulation),
il est donc simple de l'intégrer dans un CDROM à multiple démarrage : copiez « boot.img »
dans le répertoire « images/
» et ajoutez une touche de fonction dans
« bscript.ini
».
Un CDROM original de knoppix est beaucoup trop gros pour notre petit CDROM 8cms.
Rappelez-vous : nous avons 183Mo sur un mini-CDROM. Nous avons besoin de retirer beaucoup
d'éléments, ce qui représente beaucoup de travail. Pourquoi ne pas profiter du travail
de quelqu'un d'autre ? Le site web
Knoppix Customizations
possède une liste de versions knoppix modifiées, avec quelques unes d'entre elles dont la
taille a été compressée aux alentours de 50-60Mo.
J'ai décidé d'utiliser la « Model_k ». Elle est petite mais il n'y a pas d'interface
graphique ni de support pour les claviers non-anglais. Peut être que « Damn Small Linux »
est mieux...
J'ai récupéré les instructions que vous trouverez ci-dessous dans un document de Sunil Thomas
Thonikuzhiyil, qui a décrit le processus de remastering d'une manière très détaillée.
Lisez-les si vous voulez savoir comment changer le noyau ou le ramdisk initial
du disque de démarrage. Mais normalement, nous n'avons pas besoin de ces éléments lors de
la modification du « Model_k » ou d'un système similaire pour notre mini-CDROM...
La plaisanterie classique sur le remastering de knoppix repose sur le fait que knoppix est un système
Debian pleinement fonctionnel - si le système de fichiers est inscriptible [un CDROM est en
lecture seule :)]. La partie principale du remastering est donc l'installation et la
désinstallation des paquetages.
Cela reste très simple.
Pour modifier un knoppix, nous devons d'abord le démarrer. Les étapes suivantes sont
ensuite nécessaires :
# mkdir /1 # mount -t ext2 /dev/hda<n> /1 # cp -Rp /KNOPPIX /1
# chroot /1/KNOPPIX # mount -t proc /proc proc
# (utilisez ifconfig s'il n'y a pas de serveur DHCP dans vore réseau.) # (modifiez la configuration du serveur de nom lorsqu'il n'y a pas de DHCP. Effacez le # lien "/etc/resolv.conf" et créez votre propre fichier.)
# apt-get install joe (Model_k 1.2 comes without editor :) ) # ...
# (si vous avez changé /etc/resolv.conf, effacez-le et ajoutez le lien.) # démontez /proc # sortez (exit)
/KNOPPIX/KNOPPIX
» par « cloop
». Nous
connaissons déjà « loop
» - nous l'utilisons pour monter un fichier du
système. « cloop
» est un périphérique « loop
» avec
(dé)compression, nous devons donc créer un système de fichiers avec « mkisofs
»
et le compresser avec un programme spécial de knoppix :
« create_compressed_fs
» :
# mkisofs -R /1/KNOPPIX | create_compressed_fs - 65536 > /1/KNOPPIX.2
Nous "pipons" directement la sortie de « mkisofs » vers l'outil de
compression. Faites une copie de votre fichier KNOPPIX
original et copiez
le fichier résultant « KNOPPIX.2
» sur « KNOPPIX/KNOPPIX
» dans
la structure de répertoire de votre CDROM. Vous pouvez alors créer et graver un
autre CDROM et esssayer votre « nouvelle » variante de knoppix.
Nous avons vu qu'il n'est pas difficle de créer un CDROM multi-démarrage très pratique,
avec des outils très utiles pour nous aider dans différentes situations. Nous n'avons
pas réinventé la roue mais nous avons utilisé des roues inventées par les autres, en y
ajoutant un peu de magie.
Nous avons mis tout ce que nous avions besoin sur le CDROM, nous avons donc une sauvegarde
sous la main - et il est possible de recréer le CDROM à la volée.
J'espère que vous avez aimé mon petit article.
Salut!