# [howto] GentooMove

## bouleetbil

Bonjour,

Ce post est la suite de https://forums.gentoo.org/viewtopic-t-466086.html dans sa version détaillée. De tip passe à howto  :Wink: 

Prérequis

1. Une Gentoo qui fonctionne

2. Compilation du noyau avec genkernel

3. Utiliser GRUB comme chargeur ou installer syslinux

Introduction :

Comme Mandrake il est possible de se créer sa propre GentooMove, ce qui peut-être utile en cas de maintenance ou d'installation d'un PC, ou même pour des démonstrations.

L'avantage par rapport à un LiveCD c'est que l'on peut disposer de tous logiciels que l'on désire.

J'ai pris le parti d'utiliser le format de fichier ext3 qui très commun et suffit largement dans ce cadre d'utilisation. Libre à vous de modifier le type de fichier.

Pour la configuration du noyau utiliser une configuration assez générique. La configuration proposé par défaut par genkernel suffit généralement mais selon vos besoins vous pouvez ajouter des options.  

Comment sa marche ?

En faite, j'utilise la méthode de détection officielle du LiveCD Gentoo adapté à un boot USB :

L'initrd recherche un fichier, ici c'est GentooMove sur toutes les partitions /dev/sd* puis une fois trouvé, boot sur cette partition.  

Juste pour rajouter un petit commentaire le linuxrc de genkernel est très bien fait car documenté et donc très instructif.

1. Création du disque :

J'utiliserais ici /dev/sda1 pour représenter le disque USB vous pouvez l'adapter.

Formater le disque en ext3

```

# mkfs.ext3 /dev/sda1

```

Monter le disque sur /mnt/cle

```

# mount -t ext3 /dev/sda1 /mnt/cle

```

Copier la Gentoo qui fonctionne en ignorant /dev /tmp /proc

```

# cp -aRv /bin /mnt/cle

# cp -aRv /boot /mnt/cle

# cp -aRv /etc /mnt/cle

# cp -aRv /home /mnt/cle

# cp -aRv /lib /mnt/cle

# cp -aRv /opt /mnt/cle

# cp -aRv /root /mnt/cle

# cp -aRv /sbin /mnt/cle

# cp -aRv /sys /mnt/cle

# cp -aRv /usr /mnt/cle

# cp -aRv /var /mnt/cle

# mkdir /mnt/cle/tmp

# mkdir /mnt/cle/proc

# mkdir /mnt/cle/dev

```

Copier le fichier fstab en fstab.new qui servira de base à l'initrd. 

```

# cp /mnt/cle/etc/fstab /mnt/cle/etc/fstab.new

```

Editer le fichier /mnt/cle/etc/fstab.new afin de supprimer l'entrée concernant la partition racine. Le fichier fstab sera mis à jour grâce à l'initrd.

Modifier genkernel sur la clé:

Editer /mnt/cle/usr/share/genkernel/generic/linuxrc afin de rajouter une option bootusb à genkernel.

A la ligne 74 ajouter

```

bootusb)

         BOOTUSB=1

      ;;  

```

Ajouter à  la ligne 244 avant  

```

# Run debug shell if requested

rundebugshell  

```

```

if [ "${BOOTUSB}" -eq '1' ] ; then

                     #création point de montage temporaire

                     mkdir /cle

                     for a in `find /dev/ -name [sh]d??`

                     do

                             mount $a /cle

                             #attente de 10 secondes pour avoir le temps de monter la clé

                             sleep 10

                             #vérification si on trouve le fichier GentooMove

                             if [ -e /cle/GentooMove ]

                             then

                                        REAL_ROOT="${a}"

                                        #Mise à jour fstab

                                        rm /cle/etc/fstab 2>/dev/null

                                        cp /cle/etc/fstab.new /cle/etc/fstab

                                        echo "${a}       /       ext3     defaults        1 1 "  >> /cle/etc/fstab

                                        umount /cle 2>/dev/null

                                        break

                              fi

                              umount cle 2>/dev/null

                     done    

                     #suppression point de montage temporaire

                     rm -R /cle 2>/dev/null 

fi  

```

Regénerer l'initrd

```

# chroot /mnt/cle  

# genkernel --gensplash VotreTheme initrd --install

# exit

```

Création du fichier qui permettra de déterminer quel disque doit être utilisé par l'initrd:

```

# touch /mnt/cle/GentooMove

```

2. Configuration du chargeur :

Pour le chargeur d'amorcage, il y a deux choix possible :

GRUB ou Syslinux. 

2.1 GRUB :

2.1.1 Configuration

Mise à jour de grub pour le mode LiveCD (il n'accèpte pas les liens symbolique):

Supprimer /mnt/cle/menu.lst et renommer grub.conf en menu.lst

```

# rm /mnt/cle/boot/grub/menu.lst

# mv /mnt/cle/boot/grub/grub.conf /mnt/cle/boot/grub/menu.lst

```

Ajouter l'option bootusb, scandelay (qui permet de marquer un temps mort le temps de montage de clé)à GRUB.

Préciser que Grub fonctionne en mode LiveCD c'est l'option "(cd)".

Pour cela, editer /mnt/cle/boot/grub/menu.lst afin qu'il ressemble à ceci :

```

title  Gentoo-2.6.16-gentoo-r5

root (cd)

kernel (cd)/boot/kernel-genkernel-x86-2.6.16-gentoo-r5 ro root=/dev/ram0 init=/linuxrc splash=verbose,fadein,theme:emergence quiet CONSOLE=/dev/tty1 scandelay bootusb

initrd (cd)/boot/initramfs-genkernel-x86-2.6.16-gentoo-r5  

```

2.1.2 Installation de GRUB :

L'installation de GRUB ne fonctionnera que si votre PC permet de démarrer sur l'usb sinon, il faut utiliser syslinux

```

# grub-install /dev/sda1

```

2.1.3 Création d'un lanceur :

Le lanceur permet de démarrer sur un CD pour les PC qui ne peuvent pas booter sur un port USB, puis l'initrd recherchera le disque USB qui contient la GentooMove.

Il faut créer un miniCD.

Tout d'abord copier les fichiers nécessaire :

```

# mkdir /mnt/cle/tmp/lanceur

# cp -aRv /mnt/cle/boot /mnt/cle/tmp/lanceur

```

Création de l'image :

```

# cd /mnt/cle/tmp/lanceur

# mkisofs -J -R -l -V "Lanceur" -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4  -c livecd -o /tmp/live.iso /mnt/cle/tmp/lanceur 

```

2.2 Syslinux

Syslinux est une alternative à GRUB il peut être installé sur la clé même si votre PC ne permet pas le boot USB.

L'inconvéniant, est que la configuration du boot est figée, on ne pas éditer au démarrage le fichier de configuration comme Grub si besoin.

2.2.1 Installation

```

# chroot /mnt/cle

# emerge syslinux

# exit

```

Recopier le fichier /usr/lib/syslinux/isolinux.bin dans /boot/isolinux

```

# mkdir /mnt/cle/boot/isolinux

# cp -a /mnt/cle/usr/lib/syslinux/isolinux.bin /mnt/cle/boot/isolinux

```

Cette version n'accepte pas de splashcreen. Si vous voulez une image de fond au démmarage, vous pouvez utiliser le fichier isolinux.bin présent sur les LiveCD du site www.frogdev.info. Il s'agit en faite d'une version patché par ubuntu. Le fichier splash.rle représente l'image de fond. Pour utiliser un clavier azerty recopier le fichier fr.kmp dans /mnt/cle/boot/isolinux

Pour installer cette version ubuntu :

```

# cd /tmp

# wget http://www.frogdev.info/live-cd/lanceur.iso

# mkdir /tmp/iso

# mount -o loop,ro -t iso9660 lanceur.iso /tmp/iso

# cp -av /tmp/iso/boot/isolinux/isolinux.bin /mnt/cle/boot/isolinux/isolinux.bin (Isolinux qui accepte le splashscreen)

# cp -av /tmp/iso/boot/isolinux/splash.rle /mnt/cle/boot/isolinux/splash.rle ( Le splashscreen)  

# cp -av /tmp/iso/boot/isolinux/fr.kmp  /mnt/cle/boot/isolinux/fr.kmp (Pour avoir le clavier azerty)

# umount /tmp/iso

# rm /tmp/iso

# rm /tmp/lanceur.iso

```

2.2.1.2 Création d'un splashscreen

Attention, c'est du 16 couleurs.

Créer votre image au fromat png à l'aide de gimp ou autre.

La convertir et la rendre reconnaissable par isolinux

```

$ convert splash.png splash.ppm

$ ppmtolss16 <splash.ppm >splash.rle

```

2.2.2 Configuration

La configuration de syslinux se rapproche de lilo.

Créer un fichier isolinux.cfg qui contient les options par défaut et les différents boot disponibles.

```

# nano -w /mnt/cle/boot/isolinux.cfg  

```

```

timeout 300               => Délai d'attent en milliseconde

prompt 1                  => Le noyau par défaut défini plus bas

font lat1_16.psf          => La police utilisé (Disponible sur le liveCD frogdev)

KBDMAP fr.kmp             => Clavier en azerty

display isolinux.txt      => Le fichier qui contient le message de bienvenu au boot

F1 isolinux.txt           => Le fichier qui contient l'aide quand on appuie F1 si besoin

F2 aide.txt               => Le fichier qui contient l'aide quand on appuie F2 si besoin

 

 

label BootUSB

kernel /boot/Gentoo-2.6.16-gentoo-r5

append  initrd=/boot/initramfs-genkernel-x86-2.6.16-gentoo-r5 ro root=/dev/ram0 init=/linuxrc splash=verbose,fadein,theme:emergence quiet CONSOLE=/dev/tty1 scandelay bootusb dobladecenter

```

Par rapport à Grub, ajouter l'option "dobladecenter" pour laisser le temps de monter les périphériques USB.

Editer le message de bienvenu, C'est ce qui apparaitra au boot.

nano -w /mnt/cle/boot/isolinux.txt  

```

splash.rle                 => L'image de fond si besoin

LiveUSB Perso.

[Enter] Boot   

[F1] Menu  

[F2] 0ptions disponibles

```

Editer l'aide si besoin :

```

$ nano -w /mnt/cle/boot/aide.txt  

```

Exemple :

```

F1 revient au menu principal

F2 affiche cette aide

```

2.2.3 Installation sur la clé de syslinux

```

# umount /dev/sda1

# syslinux /dev/sda1

```

2.2.4 Création du lanceur

Tout d'abord copier les fichiers nécessaire :

```

# mkdir /mnt/cle/tmp/lanceur

# cp -aRv /mnt/cle/boot /mnt/cle/tmp/lanceur

```

Création de l'image :

```

# cd /mnt/cle/tmp/lanceur

# mkisofs -J -R -l -V "Lanceur" -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4  -c livecd -o /tmp/live.iso /mnt/cle/tmp/lanceur

```

3. Redémarrage :

Dans le boot si vous pouvez indiquer boot USB, redémarrez sur la clé sinon utilisez le lanceur.

Essayez  :Wink:  !!

JE pense avoir fait le tour si j'ai oublié quelque chose dite le moi.

4. Astuces :

4.1 Xorg

Si vous devez utiliser Xorg je vous conseille d'installer x11-misc/mkxf86config afin de générer un xorg.conf adapter à la machine sur laquelle vous allez travailler :

```

# chroot /mnt/cle

# env-update

# emerge x11-misc/mkxf86config

# rc-update add mkxf86config default

# exit

```

Vous pouvez personnaliser xorg en éditant /mnt/cle/etc/X11/xorg.in. Ajouter au moins le clavier français :

```

Option "XkbLayout" "fr"

```

4.2 Memtest

Si vous devez utiliser cette clé à des fin de maintenance ajouter memtest  :Wink: 

4.3 petit problème  :Wink: 

Si vous êtes en arch ~x86 éditer /etc/init.d/xdm afin d'ajouter à la variable need mkxf86config

```

need mkxf86config

```

Conclusion 

J'espère que cela est assez clair et vous serra utile.

----------

