[LinuxFocus-icon]
LinuxFocus article number 298
http://linuxfocus.org

[Photo of the Author]
par Tjabo Kloppenburg (homepage)

L´auteur:

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.



Traduit en Français par:
Iznogood <iznogood/at/iznogood-factory.org>

CDROM 8cm multi-démarrage avec un Linux Knoppix modifié

[Illustration]

Résumé:

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.


_________________ _________________ _________________

 

Prérequis

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

 

Les bases

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.

 

Assez de bavardage, au travail

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

 

Menu de démarrage avec boot scriptor

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.

 

Comment créer des images de démarrage de disque ?

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


 

Créons maintenant le fichier ISO et gravons-le.

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

Il reste maintenant une chose à faire : graver le fichier iso sur un CD-RW. Vous pouvez aussi le graver sur un CD-R. Mais si vous avez seulement un ou deux caractères erronés dans le fichier « bscript.ini », vous pouvez jeter le CD à la poubelle. Gravez donc un CD-RW :-).
Si vous prenez un CD-RW déjà utilisé, vous devez l'effacer. « cdrecord » possède deux modes : « blank=fast » et « blank=all ». Le mode "fast" est le plus rapide :).

Avant de graver, vous devez détecter le paramètre 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 ».

Essayez de nouveau. Vous avez ici un exemple sur la manière de trouver le périphérique (ici : 0,0,0) et de graver le fichier iso sur un CD-RW :
# 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

Certains CD-RWs sont lents (i.e. : 4). Cela n'a pas d'importance, « cdrecord » lit les données de description de média depuis le CD-RW et utilise automagiquement les vitesses les plus rapides possibles selon les valeurs données (32).

Lorsque le processus de gravage est terminé, vous pouvez faire un essai et démarrer depuis le CDROM.

 

Utiliser un Makefile

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)

L'indentation doit être faite par la touche TAB. N'utilisez pas les espaces pour cela !

Comme déjà mentionné, nous installons le Makefile dans un répertoire de la structure du CDROM. Un endroit comme « /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

Pour créer un nouveau CDROM après avoir fait quelques modifications (disque de démarrage, images, contrôleurs de virus), nous avons juste à taper trois commandes dans le répertoire « mboot/ » :
# make blank
# make iso
# make burn

Facile, non ?

 

D'autres disques de démarrage

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.

 

Encore plus

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 :

La solution rapide a été de copier le binaire avec le nom 'fprot' et d'oublier le script :).

La seconde partie de cet article concerne la manière d'intégrer une distribution Linux dans notre CDROM, nous donnant ainsi l'outil adapté à toute situation de panique.

 

Intégrer knoppix

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

 

Adapter knoppix

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 :

Le nouveau système de fichiers compressé doit être copié dans « /KNOPPIX/KNOPPIX » dans la structure de répertoire du CDROM où le processus de démarrage de knoppix pourra le trouver.

Vous pouvez maintenant démarrer Knoppix et... :

Monter une zone de donnée et copier les fichiers :
# mkdir /1
# mount -t ext2 /dev/hda<n> /1
# cp -Rp /KNOPPIX /1

Passez dans l'environnement non-compressé, inscriptible :
# chroot /1/KNOPPIX
# mount -t proc /proc proc

Configurez le réseau:
# (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.)

Installez / désinstallez les paquetages :
# apt-get install joe   (Model_k 1.2 comes without editor :) )
# ...

Lorsque c'est prêt, quittez le système :
# (si vous avez changé /etc/resolv.conf, effacez-le et ajoutez le lien.)
# démontez /proc
# sortez (exit)


Nous devons maintenant compresser le système de fichiers "démonté". Le processus de démarrage monte « /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.

 

Conclusion

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!



Site Web maintenu par l´équipe d´édition LinuxFocus
© Tjabo Kloppenburg
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Translation information:
de --> -- : Tjabo Kloppenburg (homepage)
de --> en: Tjabo Kloppenburg (homepage)
en --> fr: Iznogood <iznogood/at/iznogood-factory.org>

2005-02-14, generated by lfparser_pdf version 2.51