# [HOWTO] Création d'un CD Multi-Distribution

## _kal_

Création d'un CD Multi-Distribution

Table des matières:

1/ Introduction

2/ Préparation

3/ Ecriture du fichier isolinux.cfg

4/ Hack de l'installeur Debian  :Exclamation: 

5/ Génération de l'image ISO

6/ Facultatif: hack du LiveCD Gentoo afin de forcer le keymap FR

7/ Conclusion & remerciements

I) Introduction

Afin de réduire le nombre de CDR trainant sur mon bureau, j'ai décidé de créer un CD à usage personnel proposant différentes distributions de linux. Cependant, ce projet pouvant surement intéresser un grand nombre d'entre vous, je me propose de vous partager la mise en place de ce type de CD. Celui-ci sera constitué de 3 distributions différentes:

Gentoo (amd64 & x86)

Debian (amd64 & x86)

Fedora Core 4 (amd64 & x86)

Le choix de la distribution et de l'architecture désirée se fera au boot en renseignant un paramètre comme « gentoo-amd64 » ou encore « fedora ».

Afin de rendre cela possible, nous utiliserons le programme ISOLINUX de H. Peter Anvin disponible ici. L'usage de celui-ci n'est pas l'objectif de ce HOWTO et vous trouverez une documentation assez complète sur ce programme à la page de l'auteur.

II) Préparation

Passons maintenant aux choses sérieuses! Rassemblons les sources dans un seul et même répertoire  ~/LiveCD. Celui-ci abritera les répertoires gentoo, debian et fedora qui eux même abriteront des répertoire x86 et amd64 :

```

kal@nice ~/LiveCD $ ll

total 16

drwxr-xr-x  2 kal users 4096 jun 26 17:52 debian

drwxr-xr-x  2 kal users 4096 jun 26 17:52 fedora

drwxr-xr-x  2 kal users 4096 jun 26 17:53 gentoo

drwxr-xr-x  2 kal users 4096 jun 26 17:53 isolinux
```

Il suffit maintenant de monter l'iso de nos distributions et d'en copier l'intégraltié dans le répertoire concerné. 

```

nice ~ # mkdir /mnt/debian-amd64

nice ~ # mkdir /mnt/debian-x86

nice ~ # mkdir /mnt/gentoo-amd64

nice ~ # mkdir /mnt/gentoo-x86

nice ~ # mkdir /mnt/fedora-amd64

nice ~ # mkdir /mnt/fedora-x86nice ~ 

nice ~ # mount -o loop,uid=1003,gid=100 /mnt/250GO/Distribution_Linux/debian/debian-31r0a-amd64-netinst.iso /mnt/debian-amd64/

nice ~ # mount -o loop,uid=1003,gid=100 /mnt/250GO/Distribution_Linux/debian/debian-31r0a-i386-netinst.iso /mnt/debian-x86/

nice ~ # mount -o loop,uid=1003,gid=100 /mnt/250GO/Distribution_Linux/gentoo/install-x86-minimal-2005.0.iso /mnt/gentoo-x86/

nice ~ # mount -o loop,uid=1003,gid=100 /mnt/250GO/Distribution_Linux/gentoo/install-amd64-minimal-2005.0.iso /mnt/gentoo-amd64/

nice ~ # exit

kal@nice ~ $ cd /mnt/debian-x86/

kal@nice /mnt/debian-x86 $ tar cf - . | (cd /home/kal/LiveCD/debian/x86/ ; tar xf -)

kal@nice /mnt/debian-x86 $ cd /mnt/debian-amd64/

kal@nice /mnt/debian-amd64 $ tar cf - . | (cd /home/kal/LiveCD/debian/amd64/ ; tar xf -)

kal@nice /mnt/debian-amd64 $ cd /mnt/gentoo-x86/

kal@nice /mnt/gentoo-x86 $ tar cf - . | (cd /home/kal/LiveCD/gentoo/x86/ ; tar xf -)

kal@nice /mnt/gentoo-x86 $ cd /mnt/gentoo-amd64/

kal@nice /mnt/gentoo-amd64 $ tar cf - . | (cd /home/kal/LiveCD/gentoo/amd64/ ; tar xf -)
```

Remplacez évidemment les options uid et gid par celles de votre user :

```
kal@nice /mnt/gentoo-amd64 $ id

uid=1003(kal) gid=100(users) groupes=6(disk),10(wheel),18(audio),19(cdrom),27(video),35(games),80(cdrw),85(usb),100(users)
```

Vous avez surement remarquez que nous avons créé le répertoire pour la distribution Fedora Core mais que nous n'avons monté aucune iso et donc rien copié dans les répertoires ~/LiveCD/fedora/x86 et ~/LiveCD/fedora/amd64. En effet, RedHat propose un fichier boot.iso contenant l'installeur Anaconda des distributions Fedora Core. Nous n'avons besoin que de cela puisque nous ferons une installation via http/ftp/nfs (bah on va pas mettre 2GO de rpm sur le CD quand même  :Wink: ). Ce fichier est disponible ici:

http://download.fedora.redhat.com/pub/fedora/linux/core/4/x86_64/os/images/boot.iso

http://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os/images/boot.iso

Téléchargez donc ces fichiers et nommez les fedora-boot-x86.iso et  fedora-boot-amd64.iso :

```
kal@nice ~ $ wget http://download.fedora.redhat.com/pub/fedora/linux/core/4/x86_64/os/images/boot.iso -O fedora-boot-amd64.iso && wget http://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os/images/boot.iso -O fedora-boot-x86.iso
```

Nous pouvons maintenant les monter (en root) :

```

nice ~ # mount -o loop,uid=1003,gid=100 /home/kal/fedora-boot-x86.iso /mnt/fedora-x86/

nice ~ # mount -o loop,uid=1003,gid=100 /home/kal/fedora-boot-amd64.iso /mnt/fedora-amd64/
```

En copier le contenu de celles-ci :

```
kal@nice /mnt/fedora-x86 $ tar cf - . | (cd /home/kal/LiveCD/fedora/x86/ ; tar xf -)

kal@nice /mnt/fedora-x86 $ cd /mnt/fedora-amd64/

kal@nice /mnt/fedora-amd64 $ tar cf - . | (cd /home/kal/LiveCD/fedora/amd64/ ; tar xf -)
```

Avant de passer à la configuration d'isolinux, il est important de déplacer certains fichiers de Gentoo. En effet, les LiveCD Gentoo utilise la méthode squashfs et je suis parvenu a booter dessus si et seulement si les fichiers « livecd » et « livecd.squashfs » sont situé à la racine de notre futur CD.

```
kal@nice ~/LiveCD $ mv gentoo/x86/livecd.squashfs livecd-x86.squashfs

kal@nice ~/LiveCD $ mv gentoo/x86/livecd .

kal@nice ~/LiveCD $ mv gentoo/amd64/livecd.squashfs livecd-amd64.squashfs
```

Vous remarquez probablement la présence du fichier « livecd » dans les dossier  gentoo/x86 et  gentoo/amd64. Celui-ci est un fichier vide propre au fonctionnement de squashfs que nous ne détaillerons pas ici.

III) Ecriture du fichier isolinux.cfg

Lorsque nous démarrerons sur notre futur CD, celui-ci exécutera en premier lieu le fichier isolinux/isolinux.cfg. Vous remarquerez quand dans chacun des répertoires des distributions présente dans notre CD se trouve également ce dossier/fichier. On va donc lire ce fichier sur chacune de nos distribution et y inséré le code nous interessant dans ~/LiveCD/isolinux/isolinux.cfg. Commencons par celui de notre cher Gentoo. Ouvrez le fichier  ~/LiveCD/gentoo/x86/isolinux/isolinux.cfg dans votre éditeur de texte favori et observez ce qui nous interesse le plus :

~/LiveCD/gentoo/x86/isolinux/isolinux.cfg :

```
label gentoo

   kernel gentoo

  append initrd=gentoo.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd.squashfs udev nodevfs  cdroot vga=791 dokeymap splash=silent,theme:livecd-2005.0

label gentoo-nofb

   kernel gentoo

   append initrd=gentoo.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd.squashfs udev nodevfs  cdroot
```

Nous allons adapté ce code à notre structure de la manière suivante et le placer dans ~/LiveCD/isolinux/isolinux.cfg :

```
label gentoo

   kernel /gentoo/x86/isolinux/gentoo

  append initrd=/gentoo/x86/isolinux/gentoo.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd-x86.squashfs udev nodevfs  cdroot vga=791 dokeymap splash=silent,theme:livecd-2005.0

label gentoo-nofb

   kernel /gentoo/x86/isolinux/gentoo

   append initrd=/gentoo/x86/isolinux/gentoo.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd-x86.squashfs udev nodevfs  cdroot
```

 Nous nous occuperons de « l'en tête » du fichier isolinux.cfg en dernier lieu. Répétons l'opération pour Gentoo amd64:

```

label gentoo-amd64

   kernel /gentoo/amd64/isolinux/gentoo

  append initrd=/gentoo/amd64/isolinux/gentoo.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd-amd64.squashfs udev nodevfs  cdroot vga=791 dokeymap splash=silent,theme:livecd-2005.0

label gentoo-amd64-nofb

   kernel /gentoo/amd64/isolinux/gentoo

   append initrd=/gentoo/amd64/isolinux/gentoo.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd-amd64.squashfs udev nodevfs  cdroot

label gentoo-em64t

   kernel /gentoo/amd64/isolinux/gentoo-em64t

  append initrd=/gentoo/amd64/isolinux/gentoo-em64t.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd-amd64.squashfs udev nodevfs -em64t_kernelopts cdroot vga=791 dokeymap splash=silent,theme:livecd-2005.0

label gentoo-em64t-nofb

   kernel /gentoo/amd64/isolinux/gentoo-em64t

   append initrd=/gentoo/amd64/isolinux/gentoo-em64t.igz root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd-amd64.squashfs udev nodevfs -em64t_kernelopts cdroot

```

Prenez soin de ne pas attribuer plusieurs fois le même « label ». Celui-ci repésente ce que vous taperez au démarrage : vous devrez entrer gentoo-amd64 pour lancer le kernel /gentoo/amd64/isolinux/gentoo etc...

Répétons maintenant l'opération pour la distribution Fedora. Editez les fichiers ~/LiveCD/fedora/x86/isolinux/isolinux.cfg et ~/LiveCD/fedora/amd64/isolinux/isolinux.cfg afin de « ripper » ce qui vous interesse et l'intégrer à votre propre fichier isolinux.cfg. Voici à quoi cela doit ressembler :

```
# Fedora x86

label fedora

  kernel /fedora/x86/isolinux/vmlinuz

  append initrd=/fedora/x86/isolinux/initrd.img ramdisk_size=8192

label fedora-text

  kernel /fedora/x86/isolinux/vmlinuz

  append initrd=/fedora/x86/isolinux/initrd.img text ramdisk_size=8192

label fedora-expert

  kernel /fedora/x86/isolinux/vmlinuz

  append expert initrd=/fedora/x86/isolinux/initrd.img ramdisk_size=8192

label fedora-ks

  kernel /fedora/x86/isolinux/vmlinuz

  append ks initrd=/fedora/x86/isolinux/initrd.img ramdisk_size=8192

label fedora-lowres

  kernel /fedora/x86/isolinux/vmlinuz

  append initrd=/fedora/x86/isolinux/initrd.img lowres ramdisk_size=8192

# Fedora amd64

label fedora-amd64

  kernel /fedora/amd64/isolinux/vmlinuz

  append initrd=/fedora/amd64/isolinux/initrd.img ramdisk_size=9216

label fedora-amd64-text

  kernel /fedora/amd64/isolinux/vmlinuz

  append initrd=/fedora/amd64/isolinux/initrd.img text ramdisk_size=9216

label fedora-amd64-expert

  kernel /fedora/amd64/isolinux/vmlinuz

  append expert initrd=/fedora/amd64/isolinux/initrd.img ramdisk_size=9216

label fedora-amd64-ks

  kernel /fedora/amd64/isolinux/vmlinuz

  append ks initrd=/fedora/amd64/isolinux/initrd.img ramdisk_size=9216

label fedora-amd64-lowres

  kernel /fedora/amd64/isolinux/vmlinuz

  append initrd=/fedora/amd64/isolinux/initrd.img lowres ramdisk_size=9216
```

Enfin, insérons maintenant le code pour Debian, dont nous garderons juste le noyau 2.6 pour l'architecture x86 (vous pouvez aussi mettre le noyau 2.4 si cela vous interesse...). Apres avoir visualisé les fichiers isolinux.cfg de vos deux Debian, adaptez le et inserez le dans votre isolinux.cfg :

```
# Debian x86

label debian

  kernel /debian/x86/install/2.6/vmlinuz

  append  vga=normal initrd=/debian/x86/install/2.6/initrd.gz ramdisk_size=10240 root=/dev/rd/0 devfs=mount,dall rw --

label debian-expert

  kernel /debian/x86/install/2.6/vmlinuz

  append  DEBCONF_PRIORITY=low vga=normal initrd=/debian/x86/install/2.6/initrd.gz ramdisk_size=10240 root=/dev/rd/0 devfs=mount,dall rw --

# Debian amd64

label debian-amd64

  kernel /debian/amd64/install/vmlinuz

  append  vga=normal initrd=/debian/amd64/install/initrd.gz ramdisk_size=10240 root=/dev/rd/0 devfs=mount,dall rw --

label expert

  kernel /debian/amd64/install/vmlinuz

  append  DEBCONF_PRIORITY=low vga=normal initrd=/debian/amd64/install/initrd.gz ramdisk_size=10240 root=/dev/rd/0 devfs=mount,dall rw --
```

Voilà, notre ficier isolinux.cfg est pratiquement prêt, il ne reste plus qu'a inséré le code « d'en tête »:

```
KBDMAP fr.kmp

default gentoo

prompt 1

timeout 0

display boot.msg

F1 boot.msg

F2 fedora.msg

F3 gentoo.msg

F4 debian.msg

F5 kernel.msg
```

La première ligne sert à définir le keymap FR afin d'avoir le clavier azerty. Vous trouverez le fichier fr.kmp ici :

http://kalhfr.free.fr/linux/divers/fr.kmp

Ce fichier est à placer dans ~/LiveCD/isolinux/. La seconde ligne, comme vous devez vous en doutez, défini le « label » gentoo comme défault et boot sur celui-ci si vous appuyez simplement sur la touche ENTREE. « prompt 1 » force l'affichage du prompt boot: et « timeout 0 » empêche le démarrage automatique sur le label par défault si rien n'est définie. Mettez « timeout 5 » si vous voulez que ca boot sur le label gentoo au bout de 5 secondes si rien n'est entrée, en l'occurence ici Gentoo x86.

Le fichier boot.msg sera affiché au démarrage sur le CD. Voici, à titre indicatif, à quoi ressemble le mien (bien que ce fichier ne soit pas obligatoire) :

 *Quote:*   

> 
> 
> ^L 
> 
>  -  Pour installer Gentoo 2005.0 x86, appuyez sur : ^0f<ENTER>^07.
> ...

 

Les « ^0 » servent à définir les couleurs FG/BG et ^L à effacer l'écran. Vous trouverez plus d'information à ce sujet dans la documentation du programme ISOLINUX.

Enfin, si on appui sur F2 alors cela affiche le fichier fedora.msg, F3 affiche le fichier gentoo.msg etc... Je vous laisse soin d'illustrer vos propres fichiers de message, en vous inspirant peut être de ceux disponible dans les repertoires isolinux/ de nos distributions  :Wink: 

Téléchargez maintenant le fichier boot.cat et placez le dans le répertoire ~/LiveCD/isolinux/. Ce fichier est disponible ici :

http://kalhfr.free.fr/linux/divers/boot.cat

De même, il est disponible dans chacun des sous-répertoire isolinux des distributions! Mais il n'est pas fourni avec syslinux donc c'est à nous de se débrouiller  :Wink: 

Enfin, placez aussi le fichier isolinux.bin dans ce même répretoire. Ce fichier est vital au fonctionnement d'ISOLINUX puisque c'est celui-ci que est utilisé pour démarrer sur le CD. Vous le trouverez à l'adresse suivante :http://www.kernel.org/pub/linux/utils/boot/syslinux/

```

kal@nice ~ $ wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.09.tar.bz2 && tar xvfj syslinux-3.09.tar.bz2 && cp syslinux-3.09/isolinux.bin LiveCD/isolinux/

kal@nice ~ $ wget http://kalhfr.free.fr/linux/divers/boot.cat && mv boot.cat LiveCD/isolinux/
```

IV) Hack de l'installeur Debian

Voici la partie la plus fun du HOWTO : modifier l'installeur Debian afin qu'il accepte d'installer à partir du dossier debian/x86 ou debian/amd64! En effet, lors de l'installation, celui-ci cherche les fichiers à la racine du CD et non dans le dossier /debian/x86 (ou /debian/amd64) comme on le voudrait. On va donc tricher  :Wink: 

Je tiens a remercier pijalu pour son aide dans cette partie. Sans lui, notre CD ne proposerai pas Debian et ce HOWTO n'existerai pas. Merci  :Wink: 

C'est parti ! En root, copier l'initrd de vos deux Debian dans votre home et « gunzippez-les ». Mounter les ensuite dans un dossier /mnt/initrd-x86 et /mnt/initrd-amd64 :

```

nice ~ # cp /home/kal/LiveCD/debian/x86/install/2.6/initrd.gz initrd-x86.gz &&  cp /home/kal/LiveCD/debian/amd64/install/initrd.gz initrd-amd64.gz

nice ~ # gunzip initrd-*

nice ~ # mount -o loop initrd-amd64 /mnt/initrd-amd64/

nice ~ # mount -o loop initrd-x86 /mnt/initrd-x86/
```

Editez maintenant le fichier /mnt/initrd-x86/var/lib/dpkg/info/cdrom-detect.postinst, et, avant la ligne 135 :

```
if [ -e /cdrom/.disk/info ] ; then
```

Inserez le code suivant :

```

# Bind de /cdrom/debian/x86 dans /cdrom/

if [ -z $usedir ] ; then

   usedir=debian/x86 

fi

log "Mounting /cdrom/${usedir} as /cdrom"

mount -o bind /cdrom/${usedir} /cdrom

```

Que fait on ici ? Bah on bind un répertoire enfant de /cdrom dans son répertoire parent /cdrom ! Oui mais lequel ? C'est la qu'intervient la variable $usedir. Si vous souhaitez placez votre distribituion Debian ailleur que dans debian/x86, par exemple dans pingoo/32bit alors vous pouvez le faire a tout moment et sans avoir besoin de remodifié l'initrd de Debian. Indiqué simplement l'option usedir=votre/repertoire/debian dans la ligne append de votre isolinux.cfg. Par exemple :

```
label debian

  kernel /pingoo/32bit/2.6/vmlinuz

  append  vga=normal initrd=/pingoo/32bit/install/2.6/initrd.gz usedir=pingoo/32bit ramdisk_size=10240 root=/dev/rd/0 devfs=mount,dall rw --
```

Si rien n'est indiqué, alors le répertoire debian/x86 est utilisé par default. Vous pouvez adaptez ce code à votre guise  :Smile: 

Comme vous le savez, l'installeur ejecte le CD à la fin de l'installation. Cependant, si on ne prend pas soin de démonter le bind que nous venons d'effectuer, le CD ne sera pas éjecter. Pour corrigez ce problème, éditez le fichier /mnt/initrd-x86/usr/lib/prebaseconfig.d/15cdrom-detect et copiez la ligne « 

umount /cdrom || true » en dessous de celle-ci:

```
   if [ -n "$CDDEV" ]; then

      log "Unmounting and ejecting '$CDDEV'"

      umount /cdrom || true

      umount /cdrom || true

      /target/usr/bin/eject $CDDEV || true

   else
```

Répétez l'opération pour les fichiers /mnt/initrd-amd64/var/lib/dpkg/info/cdrom-detect.postinst et /mnt/initrd-amd64/usr/lib/prebaseconfig.d/15cdrom-detect.

Voilà, nous avons fini et pouvons démonter les initrd puis les copiez dans le dossier de nos deux Debian:

```
nice ~ # umount /mnt/initrd-*

nice ~ # gzip initrd-amd64 && gzip initrd-x86

nice ~ # cp initrd-x86.gz /home/kal/LiveCD/debian/x86/install/2.6/initrd.gz

nice ~ # cp initrd-amd64.gz /home/kal/LiveCD/debian/amd64/install/initrd.gz
```

Ce hack a été testé sur une Debian et uniquement sur une Debian! Vous pouvez essayer celui-ci sur une autre distribution si elle recquiert les fichier à la racine du CD, mais il vous faudra trouver quel(s) fichier(s) corriger. Bon amusement  :Wink: 

V) Génération de l'image ISO

Dans votre home, tapez ceci :

```

kal@nice ~ $ mkisofs -J -R -v -T -V "LiveCD" -o /chemin/vers/liso/de/sortie/livecd.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table LiveCD/
```

Vous pouvez modifier votre label du cd en changeand "LiveCD" par ce que vous désirez. De même indiquez un chemin correcte pour le fichier de sortie livecd.iso.

Si vous desirez tester votre CD sans le graver, vous pouvez « emergez » le logiciel qemu qui est trés efficace. Pour cela, tapez :

```
kal@nice ~ $ qemu -cdrom /chemin/vers/livecd.iso -boot d 
```

Si vous souhaitez emuler une architecture 64 Bits avec qemu, utilisez le programme qemu-system-x86_64. Génial non ?  :Wink: 

VI) Facultatif: hack du LiveCD Gentoo afin de forcer le keymap FR

Vous en avez assez d'oublier de spécifier le keymap pendant la phase de boot et souhaitez être automatiquement en azerty ? Ok c'est parti! En root, tapez ceci:

```
nice ~ # cp /home/kal/LiveCD/gentoo/x86/isolinux/gentoo.igz gentoo-x86.gz && cp /home/kal/LiveCD/gentoo/amd64/isolinux/gentoo.igz gentoo-amd64.gz

nice ~ # gunzip gentoo-*

nice ~ # mount -o loop gentoo-x86 /mnt/initrd-x86/ && mount -o loop gentoo-amd64 /mnt/initrd-amd64/

```

Ensuite dans votre éditeur de texte favoris, éditez le fichier /mnt/initrd-x86/linuxrc. Après la ligne 124 qui est :

```
read -t 10 -p '<< Load keymap (Enter for default): ' keymap]
```

Ajoutez le code :

```
   # set the fake default

   if [ -z $keymap ]

   then

      keymap=fr

      notdefkeymap=false

   else

      notdefkeymap=true

   fi
```

Ensuite, sous la ligne :  *Quote:*   

> if [ -e /lib/keymaps/${keymap}.map ]

  Ajoutez :

 *Quote:*   

> 	if [ -e /lib/keymaps/${keymap}.map ]
> 
> 	then
> 
> # say something about the keymap
> ...

 

Tout d'abord, avant de vous expliquer comment ca marche, vous pouvez voir qu'on a copié les lignes : 

 *Quote:*   

> $nodefkeymap && echo -e "${GOOD}>>${NORMAL}${BOLD} Loading the ''${keymap}'' keymap...${NORMAL}"
> 
> 		$nodefkeymap || echo -e "${GOOD}>>${NORMAL}${BOLD} Keeping default keymap...${NORMAL}"

 

Par conséquent, prenez soin de supprimez la ligne qui suit :

```
echo -e "${GOOD}>>${NORMAL}${BOLD} Loading the ''${keymap}'' keymap...${NORMAL}"
```

Ceci afin d'eviter de répéter deux fois la meme chose  :Smile: 

De même vous pouvez supprimer ces trois lignes qui ne seront jamais executées :

```
   elif [ "$keymap" = '' ]

   then

      echo -e "${GOOD}>>${NORMAL}${BOLD} Keeping default keymap...${NORMAL}"
```

Bien, analysons maintenant ce code! Si $keymap ne vaut rien, donc si nous avons rien spécifié au promp, alors on intialise keymap=fr. De plus, on initialise la variable notdefkeymap à « false » afin de n'afficher que la ligne "${GOOD}>>${NORMAL}${BOLD} Keeping default keymap...${NORMAL}". Dans l'autre cas, c'est à dire si nous spécifions une keymap, alors on initialise  notdefkeymap à « true » ce qui laisse afficher uniquement echo -e "${GOOD}>>${NORMAL}${BOLD} Loading the ''${keymap}'' keymap...${NORMAL}". Fastoche non ?  :Wink: 

Supposons que vous souhaitiez entrer le nom d'une keymap. Le clavier n'est pas encore en azerty puisque nous n'avons pas executé le « if ». Pour pallier à ce petit probleme, isérer :

 *Quote:*   

> 	cat /lib/keymaps/keymapList*
> 
> loadkmap < /lib/keymaps/fr.map 
> 
> 	read -t 10 -p '<< Load keymap (Enter for default): ' keymap

 

Pour la forme, vous pouvez aussi éditez le fichier /mnt/initrd-x86/lib/keymaps/keymapList et remplacer :

 *Quote:*   

> Please select a keymap from the following list by typing in the appropriate
> 
> name or number. Hit Enter for the default "us/41" US English keymap.

 

Par:

 *Quote:*   

> Please select a keymap from the following list by typing in the appropriate
> 
> name or number. Hit Enter for the default "fr/16" Fench keymap.

 

Voilà, répétez l'opération avec les fichiers /mnt/initrd-amd64/linuxrc et  /mnt/initrd-amd64/lib/keymaps/keymapList. Demontez vos initrd puis copiez les dans le dossier de gentoo :

```
nice ~ # umount /mnt/initrd-*

nice ~ # gzip gentoo-amd64

nice ~ # gzip gentoo-x86

nice ~ # cp gentoo-x86.gz  /home/kal/LiveCD/gentoo/x86/isolinux/gentoo.igz

nice ~ # cp gentoo-amd64.gz  /home/kal/LiveCD/gentoo/amd64/isolinux/gentoo.igz
```

That's all!  :Wink: 

VII) Conclusion & remerciements

Vous êtes maintenant capable de vous créer votre propre CD Multi-Distribution. Les techniques utilisées ici peuvent surement être adapté à d'autres distributions mais je ne peux l'assurez  :Wink: 

Je tiens a remercier pijalu qui s'est beaucoup investi dans ce projet (il a même failli y laisser son /, sisi j'vous assure...  :Laughing: ) et qui sans lui ce HOWTO n'existerai pas. C'est lui qui m'a guidé pour le hack de debian/gentoo. Merci!  :Smile: 

Kal

Ce document est protégé par la licence Creative Commons : Attribution-NonCommercial-ShareAlike 2.5Last edited by _kal_ on Wed Jun 29, 2005 4:55 pm; edited 9 times in total

----------

## titix

Génial exactement ce qu'il me fallait.

Merci  :Very Happy:  !

----------

## _kal_

 *titix wrote:*   

> Génial exactement ce qu'il me fallait.
> 
> Merci  !

 

Pas de quoi  :Wink: 

----------

## katyanh

 Juste un petit message d'encouragement car je sais que tu travailles beaucoup et que tu fais de gros efforts!  :Wink:  bon le français quelques petites fautes à corriger quand même mais sinon ça va t'as le level!  :Wink:  ben sinon moi je trouve que c'est très bien (bah oui mon bébé c'est le meilleur attention!). Moi n'ai rien compris mais bon lol ça a l'air plutôt pas mal. Te fais de gros bisouuuussss MOUAH!

----------

## _kal_

 *katyanh wrote:*   

>  Juste un petit message d'encouragement car je sais que tu travailles beaucoup et que tu fais de gros efforts!  bon le français quelques petites fautes à corriger quand même mais sinon ça va t'as le level!  ben sinon moi je trouve que c'est très bien (bah oui mon bébé c'est le meilleur attention!). Moi n'ai rien compris mais bon lol ça a l'air plutôt pas mal. Te fais de gros bisouuuussss MOUAH!

 

 :Laughing: 

Bah oui quand on est 100% Nerdz, on a même sa copine sur le forum gentoo!

Merci ma douce  :Rolling Eyes: 

----------

## pijalu

Excellent, ca tue bien  :Smile: 

Juste pour la forme (sinon je ne serais pas moi meme):

* Pour la partie debian: isolinux.cfg : Tu dois ajouter usedir=debian/amd64 comme param de kernel  :Wink: 

* Pour la partie hack gentoo: 

tu peux changer egalement /lib/keymaps/keymapList (qui donne le clavier par default, l'install fait un simple cat du fichier)

en forme de patch c'est

```

--- ori/lib/keymaps/keymapList  2003-09-10 07:45:07.000000000 +0200

+++ new/lib/keymaps/keymapList  2005-06-26 18:36:09.000000000 +0200

@@ -1,5 +1,5 @@

 Please select a keymap from the following list by typing in the appropriate

-name or number. Hit Enter for the default "us/41" US English keymap.

+name or number. Hit Enter for the "fr" keymap.

  1 azerty   7 cf       13 es   19 il   25 mk   31 ru        37 trf

  2 be       8 croat    14 et   20 is   26 nl   32 se        38 trq

```

Pour le linuxrc: tu peux en fait supprimer 3 lignes (facultatif, meme si tu ne tapes rien elle ne seront pas executer car dans ce cas, le code ajouter place la valeur "fr" dedans...) 

```

       elif [ "$keymap" = '' ]

       then

               echo -e "${GOOD}>>${NORMAL}${BOLD} Keeping default keymap...${NORMAL}"

```

En patch:

```

--- ori/linuxrc 2005-03-18 22:37:14.000000000 +0100

+++ new/linuxrc 2005-06-26 19:00:06.000000000 +0200

@@ -122,9 +122,21 @@

        echo -e "${GOOD}>>${NORMAL}${BOLD} Loading keymaps...${NORMAL}"

        cat /lib/keymaps/keymapList

        read -t 10 -p '<< Load keymap (Enter for default): ' keymap

+       # set the fake default

+       if [ -z $keymap ]

+       then

+               keymap=fr

+               notdefkeymap=false

+       else

+               notdefkeymap=true

+       fi

+

        if [ -e /lib/keymaps/${keymap}.map ]

        then

-               echo -e "${GOOD}>>${NORMAL}${BOLD} Loading the ''${keymap}'' keymap...${NORMAL}"

+               # say something about the keymap

+               $nodefkeymap && echo -e "${GOOD}>>${NORMAL}${BOLD} Loading the ''${keymap}'' keymap...${NORMAL}"

+               $nodefkeymap || echo -e "${GOOD}>>${NORMAL}${BOLD} Keeping default keymap...${NORMAL}"

+

                loadkmap < /lib/keymaps/${keymap}.map

                xkeymap=${keymap}

                echo ${keymap} | egrep -e "[0-9]+" >/dev/null 2>&1

@@ -133,9 +145,6 @@

                fi

                mkdir -p /etc/sysconfig

                echo "XKEYBOARD=${xkeymap}" > /etc/sysconfig/keyboard

-       elif [ "$keymap" = '' ]

-       then

-               echo -e "${GOOD}>>${NORMAL}${BOLD} Keeping default keymap...${NORMAL}"

        else

                echo -e "${BAD}!! ${NORMAL}${BOLD}Sorry, but keymap ''${keymap}'' is invalid!${NORMAL}"

                chooseKeymap

```

Petite note: Le clavier, au moment d'entrer les choix est tjs en US ... un ptit 

```

loadkmap < /lib/keymaps/fr.map

```

avant la ligne 

```

 read -t 10 -p '<< Load keymap (Enter for default): ' keymap

```

Corrige cela... 

[disclam=pour guru]

Pourquoi reecrire le test, il suffisait de faire ce loadkey avant.... ben non, il fallait de toute façon reecrire le test pour inclure lors du passage en elif la creation du sysconfig  :Smile: 

[/disclam]Last edited by pijalu on Mon Jun 27, 2005 7:50 am; edited 1 time in total

----------

## anigel

Joli document, et très bon travail ! Merci d'avoir partagé  :Wink:  !

----------

## Adrien

Merci pour ce howto _kal_ et..... content que tu aies réussi!  :Wink: 

PS: Ton avatar déchire tout!!  :Laughing: 

----------

## kwenspc

un bon ptit howto comme je les aime  :Cool: 

 *Adrien wrote:*   

> PS: Ton avatar déchire tout!! 

 

oui d'ailleurs _kal_, ta copine est pas jalouse?   :Laughing: 

----------

## Adrien

 *kwenspc wrote:*   

> un bon ptit howto comme je les aime 
> 
>  *Adrien wrote:*   PS: Ton avatar déchire tout!!  
> 
> oui d'ailleurs _kal_, ta copine est pas jalouse?  

 

Meuhhh non!! C'est justement sa copine qu'on voit sur la photo!!  :Laughing: 

----------

## katyanh

 non d'abord son avatar il déchire rien du tout d'ailleurs j'ai pas compris pourquoi il a mis celui-là parce que la fille est trop moche! (et d'abord je ne suis pas jalouse je suis mieux qu'elle  :Cool: ) et sinon non ce n'est pas moi du tout sur son avatar lol j'arrive même pas à mettre le mien  :Crying or Very sad:  

----------

## _kal_

 *pijalu wrote:*   

> Excellent, ca tue bien 
> 
> Juste pour la forme (sinon je ne serais pas moi meme):
> 
> * Pour la partie debian: isolinux.cfg : Tu dois ajouter usedir=debian/amd64 comme param de kernel 
> ...

 

Bonjour monsieur  :Wink: 

Merci pour le tips sur le hack gentoo, j'ai corrigé cela. Cependant, je ne vois pas ce que tu veux dire pour l'installeur debien. Il n'y a pas besoin de mettre debian/amd64 comme param kernel puisque ceci est le default. En effet, je dit aux lecteurs :

 *Quote:*   

> Répétez l'opération pour les fichiers /mnt/initrd-amd64/var/lib/dpkg/info/cdrom-detect.postinst et /mnt/initrd-amd64/usr/lib/prebaseconfig.d/15cdrom-detect.

  Par conséquent, je pense qu'il sont suffisemment logique pour mettre :

```
# Bind de /cdrom/debian/x86 dans /cdrom/

if [ -z $usedir ] ; then

   usedir=debian/amd64

fi

log "Mounting /cdrom/${usedir} as /cdrom"

mount -o bind /cdrom/${usedir} /cdrom
```

 :Laughing: 

----------

## _kal_

 *anigel wrote:*   

> Joli document, et très bon travail ! Merci d'avoir partagé  !

 

Y'a pas de quoi  :Wink: 

 *Adrien wrote:*   

> Merci pour ce howto _kal_ et..... content que tu aies réussi! 
> 
> PS: Ton avatar déchire tout!! 

 

Héhé, vui d'ailleurs ma copine elle a trop la rage quand je met des asiatiques en avatar (elle en est une aussi pourtant)  :Laughing: 

 *kwenspc wrote:*   

> oui d'ailleurs _kal_, ta copine est pas jalouse?

 

Elle dit que non mais bon : on connait les femmes... On sait à quoi s'en tenir  :Wink: 

----------

## kernelsensei

Super le Howto  :Smile:  Merci, faudra que je teste !

----------

## Adrien

 *_kal_ wrote:*   

> Elle dit que non mais bon : on connait les femmes... On sait à quoi s'en tenir 

 

Tiens, ça c'est un troll! Mais pas trop le genre qu'on a l'habitude de voir ici!  :Razz: 

----------

## _kal_

 *kernel_sensei wrote:*   

> Super le Howto  Merci, faudra que je teste !

 

Ca fait plaisir de rendre service à ceux qui nous aide  :Wink: 

 *Adrien wrote:*   

> Tiens, ça c'est un troll! Mais pas trop le genre qu'on a l'habitude de voir ici! 

 

 :Laughing: 

Ne vous inquiétez pas, j'ai prévenu ma douce de ne pas poser de question sur l'O$ qu'elle utilise  :Twisted Evil: 

----------

## kwenspc

 *_kal_ wrote:*   

> Ne vous inquiétez pas, j'ai prévenu ma douce de ne pas poser de question sur l'O$ qu'elle utilise 

 

ouh tiou tiou tou : c'est pas encore une geekette! mon ptit _kal_ : faut la convertir!   :Very Happy: 

(c'est ce que j'ai fait trés rapidement et maintenant elle frime avec ça  :Laughing: )

----------

## _kal_

 *kwenspc wrote:*   

>  *_kal_ wrote:*   Ne vous inquiétez pas, j'ai prévenu ma douce de ne pas poser de question sur l'O$ qu'elle utilise  
> 
> ouh tiou tiou tou : c'est pas encore une geekette! mon ptit _kal_ : faut la convertir!  
> 
> (c'est ce que j'ai fait trés rapidement et maintenant elle frime avec ça )

 

La mienne est têtue comme une mule  :Evil or Very Mad:  En plus avec tout les virus/spyware/ver qu'elle se tape, ca ne pourrai qu'être positif  :Rolling Eyes: 

----------

## pijalu

 *_kal_ wrote:*   

> 
> 
> ... Par conséquent, je pense qu'il sont suffisemment logique pour mettre...
> 
> 

 

MDR  :Wink: 

Je conclus que tu as compris cke je voulais dire... bah, c kom tu le sents  :Wink: 

----------

## _kal_

 *pijalu wrote:*   

>  *_kal_ wrote:*   
> 
> ... Par conséquent, je pense qu'il sont suffisemment logique pour mettre...
> 
>  
> ...

 

 :Laughing: 

Vui je pense que le lecteur comprendra que pour le cas de l'amd64, les occurences x86 sont remplacées par amd64  :Laughing: 

----------

## Ti momo

Super, je testerais à la fin de la semaine si j'ai le temps  :Smile:  Merci ...

----------

## boozo

'alute

merci à toi (enfin a vous deux  :Wink:  ) pour cette initiative comme quoi une idée simple peu rendre souvent bien des services... et bel exemple d'entraide et de réussite pour ce mini projet  :Cool: 

vais m'y mettre a ton 'live-six-in-one' et virer des cds et des iso... m'fera de la place tiens  :Laughing: 

HS: bienvenue a ta compagne également... une présence féminine est toujours appréciable - et avec tout le respect qu'il vous est dû a tous deux - d'autant plus lorsqu'elle est sympa et... ravissante  :Wink: 

----------

## _kal_

 *boozo wrote:*   

> 'alute
> 
> merci à toi (enfin a vous deux  ) pour cette initiative comme quoi une idée simple peu rendre souvent bien des services... et bel exemple d'entraide et de réussite pour ce mini projet 

 

Ouaip c'est beau l'entraide, ca sert aussi à ça l'Open Source  :Wink: 

 *boozo wrote:*   

> 
> 
> vais m'y mettre a ton 'live-six-in-one' et virer des cds et des iso... m'fera de la place tiens 

 

C'est la raison qui ma pousser à créer ce CD  :Laughing: 

 *boozo wrote:*   

> 
> 
> HS: bienvenue a ta compagne également... une présence féminine est toujours appréciable - et avec tout le respect qu'il vous est dû a tous deux - d'autant plus lorsqu'elle est sympa et... ravissante 

 

Héhé merci  :Smile: 

----------

## Trevoke

Oha le ouf! Joli travail, c'est clair que ca me servira un jour, ca..  :Smile: 

----------

## katyanh

 *boozo wrote:*   

> 'alute
> 
> merci à toi (enfin a vous deux  ) pour cette initiative comme quoi une idée simple peu rendre souvent bien des services... et bel exemple d'entraide et de réussite pour ce mini projet 
> 
> vais m'y mettre a ton 'live-six-in-one' et virer des cds et des iso... m'fera de la place tiens 
> ...

 

lol c'est gentil pour le compliment mais la fille qu'il a mis sur son avatar c'est pas moi  :Twisted Evil: 

----------

## katyanh

La mienne est têtue comme une mule  :Evil or Very Mad:  En plus avec tout les virus/spyware/ver qu'elle se tape, ca ne pourrai qu'être positif  :Rolling Eyes: [/quote]

 ben disons ke windows c'est beaucoup plus courant quoi comme j'ai pas envie de me prendre la tête mais bon moi je veux bien essayer si tu me montres mais bon c'est dommage je ne pourrais plus voir les smileys sur MSN lol  :Crying or Very sad: 

----------

## yoyo

 *katyanh wrote:*   

> lol c'est gentil pour le compliment mais la fille qu'il a mis sur son avatar c'est pas moi  

 Oui mais :  *katyanh wrote:*   

> (et d'abord je ne suis pas jalouse je suis mieux qu'elle  )

 Nous on te fait confiance ...  :Wink: 

EDIT : avec gaim, les smileys MSN machent bien (peut-être pas ceux de la dernière version msn ...)

EDIT bis : évite de tout mettre en gras stp, c'est comme si tu nous hurlais dans les oreilles.  :Rolling Eyes: 

----------

## Trevoke

Okay les enfants, je vous rappelle que c'est un thread HOWTO, donc limitez le off-topic svp..

----------

## katyanh

 *Trevoke wrote:*   

> Okay les enfants, je vous rappelle que c'est un thread HOWTO, donc limitez le off-topic svp..

 

 d'accord chef désolé c'est à cause de moi... je ne recommençerai plus  :Embarassed:  d'ailleurs je vous laisse entre hommes  :Wink: 

----------

## _kal_

 *katyanh wrote:*   

>  *Trevoke wrote:*   Okay les enfants, je vous rappelle que c'est un thread HOWTO, donc limitez le off-topic svp.. 
> 
>  d'accord chef désolé c'est à cause de moi... je ne recommençerai plus  d'ailleurs je vous laisse entre hommes 

 

Ooo ptit bébé né veu passer a linux aussi! Bon tu peux ouvrir un nouveau topic si tu le désires, on se fera une joie de t'aider  :Wink: 

De plus, je pourrai trés facilement t'assister a distance en cas de problème, contrairement à windows. Enfin :

 *Quote:*   

> EDIT bis : évite de tout mettre en gras stp, c'est comme si tu nous hurlais dans les oreille

 

Effectivement, t'es pas sur MSN ici, évite de parler en gras  :Laughing: 

T'embrasse

----------

