Utilisateur:Marck
Un article de Projet de documentation fug-fr .
[modifier] Créer facilement un liveCD
Il existe déjà de bons liveCDs comme FreeSBIE ainsi que des ports (sysutils/freesbie) permettant de créer de tels liveCDs. Modestement cette page propose une méthode pour créer simplement et rapidement son propre liveCD et plus particulièrement une base FreeBSD telle quelle mais en liveCD. Diverses possibilités d'évolutions sont ensuite évoquées.
[modifier] Création de la base
Nous utiliserons ici les paquets d'une 6.1-Release, mais a priori la méthode devrait convenir pour d'autres Releases passées et à venir. Par souci de simplicité et de sécurité, nous opèrerons uniquement en mode utilisateur et depuis notre répertoire personnel. Ainsi commençons par nous rendre dans ce répertoire afin d'y créer un nouveau répertoire.
% cd % mkdir livecd
Nous allons maintenant installer la base FreeBSD dans ce répertoire. Ici nous procèdons à l'aide du premier CD, monté dans le répertoire /cdrom. Si vous ne possédez pas ce CD1, téléchargez les paquets base/base.?? depuis un FTP dans le répertoire de votre choix, et modifiez la commande proposée en conséquence.
% cat /cdrom/6.1-RELEASE/base/base.?? | tar --unlink -xpzf - -C livecd/
Cette commande ne sort pas de nulle part, elle vient du script base/install.sh et nous permet donc d'installer la base de façon orthodoxe. Complétons-la maintenant avec un noyau, ici le noyau generic. Comme précédemment, si vous ne possédez pas le CD1, téléchargez les paquets kernels/generic.?? depuis un FTP et modifiez la première commande.
% cat /cdrom/6.1-RELEASE/kernels/generic.?? | tar --unlink -xpzf - -C livecd/ % rmdir livecd/boot/kernel/ % mv livecd/GENERIC/ livecd/boot/kernel
Enfin ajoutons à cette base un fichier /etc/fstab ad hoc sinon le noyau sera incapable de trouver la racine au démarrage (^D signifie qu'il faut appuyer simultanément sur les touche Ctrl et D).
% cat > livecd/etc/fstab /dev/acd0 / cd9660 ro 0 0 ^D
D'une certaine façon, nous avons déjà terminé la création de notre base FreeBSD en liveCD. En effet si nous construisions maintenant son image iso, que nous la gravions et redémarrions, nous parviendrions bien à ce que nous souhaitons:
FreeBSD/i386 (Amnesiac) (ttyv0) login:
Il ne nous resterait alors plus qu'à entrer root (sans mot de passe) pour commencer à utiliser notre nouveau liveCD. Cependant lors du démarrage quelques messages d'erreur seraient apparus, comme ceux affichés ci-dessous.
... Generating nsswitch.conf. eval: cannot create /etc/nsswitch.conf: Read-only file system Generating host.conf. eval: cannot open /etc/nsswitch.conf: No such file or directory ... Updating motd ... /etc/motd is not writable, update failed. ... sendmail_submit: /etc/mail/aliases.db not present, generating warning: cannot lock /etc/mail/aliases: Unknown error: 0 Cannot open hash database /etc/mail/aliases.db: Read-only file system WARNING: cannot open alias database /etc/mail/aliases Cannot create database for alias file /etc/mail/aliases ...
Tous ces messages sont dus au fait que /etc n'est pas accessible en écriture lors du démarrage, ce qui provoque d'ailleurs l'échec du lancement de sendmail. Nous pourrions imaginer plusieurs façon pour les supprimer mais le système lui-même nous indique une façon simple de procéder. En effet il a lors du démarrage créé automatiquement deux disques mémoire pour les répertoire /tmp et /var.
# mount /dev/acd0 on / (cd9660, local, read-only) devfs on /dev (devfs, local) /dev/md0 on /var (ufs, local) /dev/md1 on /tmp (ufs, local)
Ces deux disques mémoire ont été créés par les scripts tmp et var du répertoire /etc/rc.d. Dès lors pourquoi ne pas utiliser ces disques déjà créés et créer avec rc.d notre propre disque pour /etc? C'est ce que fait le script suivant inspiré de man rc.d. Après cette digression, revenons donc à la création de notre liveCD.
% ee livecd/etc/rc.d/mdetc
#!/bin/sh
# PROVIDE: mdetc
# REQUIRE: tmp
# BEFORE: motd nsswitch sendmail
. /etc/rc.subr
name="mdetc"
start_cmd="mdetc_start"
stop_cmd=":"
mdetc_start()
{
echo "Creating a memory filesystem for /etc"
/bin/cp -R /etc /tmp
/sbin/mdmfs -s 16m md /etc
/bin/cp -R /tmp/etc/* /etc
/bin/rm -rf /tmp/etc
}
load_rc_config $name
run_rc_command "$1"
Ce script créé, rendons-le exécutable.
% chmod +x livecd/etc/rc.d/mdetc
Cette fois nous avons bien terminé, il ne nous reste plus qu'à créer l'imge iso. Pour ce faire la commande mkisofs possède de très nombreuses options. Juste un conseil si vous hésitiez, évitez l'option -r qui permet certes de créer des CDs bien proprets mais n'est pas ici adaptée. Préférez lui l'option -R accompagnée des correctifs que vous souhaitez. Donc, par exemple:
% mkisofs -R -gid 0 -uid 0 -b boot/cdboot -no-emul-boot -c .boot.catalog -o livecd_fbsd61r.iso livecd/
Gravez maintenant cette image ; ce liveCD de base FreeBSD telle quelle devrait démarrer sans aucun message d'erreur et fonctionner correctement (du moins d'après mes essais).
[modifier] Evolutions possibles
La simple base que nous venons de créer offre déjà de nombreuses possibilités comme s'initier à FreeBSD, tester rapidement un PC, essayer de réparer un système défaillant ou au moins d'en sauvegarder les données essentielles... De plus cette base est très souple dans son utilisation et si, par exemple, un petit programme vous manque, rien ne vous empêche (à condition toutefois d'avoir suffisamment de RAM et d'être connecté à internet) de créer un disque mémoire pour le répertoire /usr/local puis d'installer ce programme à l'aide d'un simple pkg_add.
# mdmfs -s 32m md /usr/local # pkg_add -r elinks
Voilà vous avez installé le navigateur elinks et pouvez maintenant aller chercher si nécessaire de la documentation et de l'aide sur ce wiki et les forums de fug-fr... Pour le reste, tout dépend de vos objectifs. Certains trouveront ce liveCD trop imposant et voudront le réduire au minimum, supprimer des fichiers et des services ; d'autres au contraire souhairont le compléter. Voici quelques pistes dans cette dernière direction.
Une fois connecté avec le liveCD, vous avez sans doute dû entrer kbdmap (ou kbd,qp) afin de choisir une carte clavier car celui-ci était en QWERTY et non en AZERTY. Bien sûr prévoir un clavier AZERTY (et/ou d'autres configurations) dès le début aurait été possible en incluant simplement un fichier /etc/rc.conf adapté au liveCD que vous souhaitez ; par exemple:
% ee livecd/etc/rc.conf hostname="livecd.fbsd61r" keymap="fr.iso.acc" font8x16="iso-8x16"
D'autre part, vous avez aussi peut-être regretté l'absence de certains éléments importants de FreeBSD comme les célèbres pages de manuel. Celles-ci peuvent bien sûr être incluses et de façon similaire à la base et au noyau.
% cat /cdrom/6.1-RELEASE/manpages/manpages.?? | tar --unlink -xpzf - -C livecd/
Enfin plutôt que d'avoir à bricoler pour installer elinks ou un autre paquet, il aurait sans doute été préférable de l'inclure dès le départ dans le liveCD. Ici nous serons cependant obligés de procéder en root, à moins que vous ne puissiez faire un chroot en tant qu'utilisateur. Adaptez les ???? de la commande ci-dessous au bon répertoire utilisateur et, si cela ne fonctionne pas, peut-être est-ce parce que vous n'avez pas fait de copie de votre fichier /etc/resolv.conf dans votre répertoire livecd/etc.
# pkg_add -r -C /home/????/livecd/ elinks
Voilà, vous avez compris. Vous pouvez installer des éléments de FreeBSD en vous inspirant des scripts install.sh de leurs répertoires, des paquets à l'aide de pkg_add et configurer l'ensemble à l'aide des fichiers habituels... Pour le reste, gardez à l'esprit qu'un liveCD peut avoir sur certains points ses spécificités et en essayez de les anticiper au mieux.

