Page suivantePage précédenteTable des matières
La plupart des opérations ci-dessus sont valables pour démarrer depuis
un cdrom. Comme je voulais également documenter cette façon de booter,
je le précise ici pour éviter de taper trop de choses une seconde fois.
Pourquoi démarrer depuis un cdrom ?
C'est surtout intéressant partout où l'on veut faire tourner
une application spécifique comme un kiosque, une base de données de
bibliothèque ou un cyber-café, et qu'on n'a pas de réseau ou de serveur
pour utiliser root par NFS.
C'est simple : démarrer avec un cdrom en tant que racine.
Pour que ce soit possible, nous utiliserons l'extension rockridge
pour graver un système de fichiers unix et l'extension eltorito pour
rendre le cd amorçable.
Les choses ne peuvent être si simples...
Bien sûr cette configuration soulève quelques problèmes.
Ils sont à peu près les mêmes que précédemment :
- Nous avons besoin d'accès en écriture sur : /dev, /var et /tmp.
- Nous utiliserons les mêmes solutions :
- pour /dev nous utiliserons Devfs
- pour /var et /tmp nous utiliserons un ramdisk partagé de 1 Mo.
/tmp est remplacé par un lien vers /var/tmp.
- le remplissage du ramdisk peut être fait aussi bien à partir
d'une archive que d'un répertoire template. Nous retiendrons là
encore le répertoire template pour la simplicité des modifications.
- Certaines applications ont besoin d'un accès à /home en écriture.
- Dans ce cas, on mettra le répertoire de l'utilisateur de ces
applications sous /var, et on finira de remplir /var à chaque boot.
- /etc/mtab doit être accessible en écriture :
- Créer un lien vers /proc/mounts et créer un fichier vide sous /proc,
comme décrit précédemment.
- Pour commencer, prenez une des machines que vous allez utiliser
et mettez dedans un gros disque et un graveur de cd.
- Installez la distribution de votre choix et laissez une
partition de 650 Mo pour le test. Cette installation servira à
créer l'image iso et à graver le cd, aussi il faut installer les outils
necessaires. Elle servira également à recommencer en cas de problème.
- Sur la partition de 650 Mo, installez la distribution de votre choix
avec la configuration que vous voudrez avoir sur le cd. Ce sera la
configuration de test.
- Démarrez sur la configuration de test.
- Compilez le noyau comme décrit dans la section 3.1, en suivant toutes
les étapes. Les modifications pour devfs doivent être faites ici aussi.
A l'étape 3, ajoutez ce qui suit :
- isofs compilé dans le noyau
- devfs compilé
- support du cdrom compilé
- tout ce dont vous avez besoin, compilé ou en module
- Configuration de la partition de test :
- créer l'utilisateur qui lancera les applications
- mettre son répertoire sous /var
- installer l'application (si nécessaire)
- configurer l'application si nécessaire
- configurer l'utilisateur de telle façon que l'application
démarre automatiquement après le login
- configurer linux pour démarrer une session en tant
que cet utilisateur
- configurer tout ce qui doit encore être configuré
- Vérifiez que la configuration démarre correctement sous l'application
et que tout fonctionne bien.
- Redémarrez sur l'installation principale et montez la partition de
650 Mo sur /test.
- Mettez ce qui suit dans un fichier /test/etc/rc.d/rc.iso (il sera
exécuté au début de rc.sysinit pour créer /var) :
#/var
echo Creating /var ...
mke2fs -q -i 1024 /dev/ram1 1024
mount /dev/ram1 /var -o defaults,rw
cp -a /lib/var /
#restore devfs settings, needs proc
mount -t proc /proc /proc
/etc/rc.d/rc.devfs restore /etc/sysconfig
umount /proc
- Editez /test/etc/rc.sysinit en commentant les lignes où / est
remonté en lecture-écriture et ajoutez les 2 lignes suivantes
après l'initialisation de la variable PATH :
#to boot from cdrom
. /etc/rc.d/rc.iso
- Copiez ce qui suit dans un script et exécutez-le : cela va créer
un répertoire modèle pour /var et des liens pour /tmp et /etc/mtab.
#!/bin/sh
echo tmp
rm -fR /test/tmp
ln -s var/tmp /test/tmp
###
echo mtab
touch /test/proc/mounts
rm /test/etc/mtab
ln -s /proc/mounts /test/etc/mtab
###
echo var
mv /test/var/lib /test/lib/var-lib
mv /test/var /test/lib
mkdir /test/var
ln -s /lib/var-lib /test/lib/var/lib
rm -fR /test/lib/var/catman
rm -fR /test/lib/var/log/httpd
rm -f /test/lib/var/log/samba/*
for i in `find /test/lib/var/log -type f`; do cat /dev/null > $i; done
rm `find /test/lib/var/lock -type f`
rm `find /test/lib/var/run -type f`
- Enlevez la création de /etc/issue* de /test/etc/rc.local (ça
planterait à coup sûr).
- Maintenant, démarrez sur la partition de test : elle sera
en lecture seule comme un cdrom.
Si quelque chose ne fonctionne pas, redémarrez sur la partition de travail
et réparez puis réessayez. On peut aussi remonter / en lecture-écriture,
réparer puis redémarrer directement sur la partition de test.
Pour remonter / :
mount -o remount,rw /
Créer une image de démarrage (image de boot)
D'abord, démarrer sur la partition de travail. Pour créer un cd
amorçable, nous aurons besoin d'une image d'une disquette de démarrage.
Mais copier par dd une zimage ne suffit pas parce que,
au tout début du chargement de celle-ci, un pseudo lecteur de disquette est
créé et le chargeur du système ne s'y retrouve plus dans le cas
d'un cd amorçable.
Donc nous utiliserons plutôt syslinux.
- récupérer boot.img sur un cdrom redhat
- monter boot.img quelque part par loopback en tapant :
mount boot.img somewhere -o loop -t vfat
- enlever tout ce qui est dans boot.img sauf :
- copier le noyau de la partition de test vers boot.img
- editer syslinux.cfg pour ajouter ce qui suit, en remplaçant zImage
par le nom d'image approprié :
default linux
label linux
kernel zImage
append root=/dev/<insert your cdrom device here>
- démonter boot.img :
umount somewhere
- Si /etc/mtab est un lien vers /proc/mounts, le démontage
ne va pas automatiquement libérer /dev/loop0 donc il faut le libérer en
tapant :
losetup -d /dev/loop0
Créer l'image iso
Maintenant que nous avons l'image de boot et une installation qui peut
démarrer sur un montage en lecture seule, il est temps de créer une image
iso du cd :
- copier boot.img sur /test
- aller dans le répertoire ou vous voulez stocker l'image (en prenant
garde qu'il y ait assez de place sur la partition)
- générer l'image :
mkisofs -R -b boot.img -c boot.catalog -o boot.iso /test
Vérifier l'image iso
- monter l'image en loopback en tapant :
mount boot.iso somewhere -o loop -t iso9660
- vérifier que le contenu est correct
- démonter boot.iso :
umount somewhere
- si /etc/mtab est un lien sur /proc/mounts, libérer /dev/loop0 :
losetup -d /dev/loop0
Graver le cd
Si cdrecord est installé et configuré :
cdrecord -v speed=<desired writing speed> dev=<path to your writers
generic scsi device> boot.iso
Hé bien le titre de ce paragraphe a tout dit ! ;)
Page suivantePage précédenteTable des matières