HOWTO Créer un stage4 de Gentoo personnalisé
Un article de Gentoo Linux Wiki.
| Méthodes d'installation • CD Live • Noyau et matériel • Portables et Notebooks • Portage • Système • Réseaux et Services • Serveur X • Logiciels fréquemment utilisés • Autres |
Sommaire |
[modifier] Introduction
Nous allons présenter dans ce HOWTO les bases pour la création d'une archive de type stage4 personnalisé. Un stage4 est simplement une image de votre partition racine. Pourquoi faire un stage4 ? Pour pouvoir avoir un système de sauvegarde qui, en cas de problème de disque dur, permettrait de revenir rapidement à un état avancé du système. C'est en fait un stage3 sur lequel vous pouvez modifier les CFLAGS et choisir ou non les logiciels qui seront installés. Vous pouvez adapter la méthode présente à vos besoins bien sûr.
Si vous voulez crer un stage4 un peu plus générique que vous pourriez installer sur plusieurs systèmes, utilisez genkernel pour crer un noyau qui fonctionnera de la mme manière que celui du LiveCD. Vous pourrez également vouloir utiliser des CFLAGS moins restrictifs (mcpu au lieu de march). Vous pouvez encore vouloir pouvoir modifier votre /etc/fstab et vos paramètres USE après avoir extrait votre stage4, pour les adapter à votre hôte.
[modifier] étape 1
[modifier] étape 2
Configurer tous les pilotes (son, vidéo, USB, etc.) et installez tous les logiciels que vous voulez inclure dans votre stage4, comme par exemple le serveur X, Xfce4, CVS, Emacs, mozilla, ...
[modifier] étape 3
Faites une copie de votre partition de démarrage /boot :
mount /boot cp -R /boot /bootcpy umount /boot
Sinon, vous pouvez aussi monter /boot avant de créer votre archive tar de l'ensemble. Il peut y avoir des problèmes si vous faites cela, dans le cas où vous utiliseriez ce stage4 sur des machines dont la configuration matérielle est hétérogène.
[modifier] étape 4
Vider vos répertoires de fichier temporaires /usr/portage/distfiles et /var/tmp pour économiser de la place.
[modifier] étape 5
Maintenant que vous avez le système que vous souhaitez retrouver dans votre système "stage4", nous allons créer l'archive :
tar -cjpf /repertoire/de/sauvegarde/stage4.tar.bz2 / --exclude=stage4.tar.bz2 --exclude=/proc
Options utiliss pour tar ici :
- c - créer une archive
- j - utiliser une compression de type bzip2
- p - préserver les attributs des fichiers (obligatoire)
- f - spécifier le fichier d'archive
Pour plus d'informations, référez vous à la page de manuel (man tar).
Cela prendra probablement pas mal de temps de créer l'archive, selon la quantité de fichiers à archiver. Nous pouvons par exemple mettre notre archive sur le disque qui supporte en général les sauvegardes de sécurité. Vous pouvez aussi la graver sur CD ou DVD. Si l'archive est trop grosse, il vous faudra alors la diviser en plusieurs morceaux. split vous permettra de faire cette opération. cat vous permettra de concaténer les divisions (lire les pages de manuel de ces deux commandes pour plus d'information).
fdavid suggre :
- Les grosses archives peuvent être découpées avec la commande split. Ces morceaux peuvent être regroupés avec cat.
- L'option qui permet d'exclure un répertoire entier d'une archive doit être utilise le plus possible, car un certain nombre de répertoires doivent être exclus lors de l'archivage de la partition racine. Par exemple on peut exclure /usr/portage si on veut obtenir une archive plus petite.
Voici une liste des répertoires que vous devriez pouvoir exclure sans trop de remords :
- /mnt
- /proc
- /sys
- /tmp
- + plus tous les répertoires déja archivés ailleurs.
- Un script simple, que l'on peut utiliser pour archiver /home par exemple, peut être repris. Dans ce script, /dev/hdX correspond au répertoire /mnt/archivetar de /mnt/fstab.
| Fichier : archiveHome.sh |
#! /bin/bash
# Backup script for Gentoo Linux
# Author: fdavid
# Date: 2003.11.29.
# Making backup of home partition to cds
# options for the archive
tarOptions="--create --absolute-names --preserve-permissions --gzip --file"
# name of the archive
archive=/mnt/archivetar/$(date +%Y%m%d)home.tar.gz
# mount the backup partition
mount /dev/hdaX
sleep 5
# create the archive
tar ${tarOptions} ${archive} /home/;
echo archive is done
# split the archive to cd size (use: "cat ${archive}.* >> ${archive}" to join the parts)
split --bytes=700000000 ${archive} ${archive}.
echo splitting is done
# unmount
sleep 5
umount /dev/hdaX
|
- Voici un script qui vous permettra de crer un stage4 automatiquement.
| Fichier : mkstage4.sh |
#! /bin/bash
# script d'archive pour Gentoo Linux
# Auteur : nianderson
# Date: 2004.09.15.
# traduction des commentaires : http://fr.gentoo-wiki.com
# Adapt de archiveHome.sh cr par fdavid
# Script qui vous permettra de créer une archive stage4 (archive complète) que l'on
# pourra réutiliser pour faire des installations plus personnalises.
# On démarre sur le nouveau système aprs l'avoir construit, et on lance ce script. Donc
# ce script a été adapté pour fonctionner dans le cas où vous démarreriez sur le système
# archivé ou pour être lancé en chroot sur celui-ci.
#merci d'ajuster les options vos besoins spécifiques.
#O on mettra notre stage4
stage4Location=/
echo Configuration :
echo Sauvegarde du stage4 dans $stage4Location
echo
echo
# options pour l'archive
tarOptions="--exclude=$(hostname)-stage4.tar.bz2 --exclude=/dev/* --exclude=/proc/* \
--exclude=/sys/* --exclude=/tmp/* --exclude=/usr/portage/* --exclude=/mnt/* --create \
--absolute-names --preserve-permissions --bzip2 --file"
echo Options de tar : $tarOptions
# nom de l'archive
archive=$stage4Location/$(hostname)-stage4.tar.bz2
echo Nom du stage 4 : $archive
echo
# monter la partition de démarrage /boot
echo montage de /boot
mount /boot
sleep 5
echo
#Créer une copie de la partition /boot (simplement faire une copie vers /bootcpy
echo Copie /boot to /bootcpy pour ne pas avoir de problèmes plus tard
cp -R /boot /bootcpy
echo Dmonter /boot
umount /boot
sleep 5
echo
echo Cration de l'archive tar
echo
# Créer l'archive
echo tar ${tarOptions} ${archive} /
tar ${tarOptions} ${archive} /;
echo archive finie
# Décommentez cette ligne si vous voulez découper votre archive tar en morceaux de la
# taille d'un CD
# Découpe l'archive tar en morceaux de la taille d'un CD (utiliser :
# "cat ${archive}.* >> ${archive}" pour rejoindre les morceaux entre eux)
#split --bytes=700000000 ${archive} ${archive}.
#echo découpage fini
echo
echo Enjoy your stage4
|
Voilà un petit script pour installer un système en partant d'un stage4 créé par le script donné plus haut. (ce script n'a pas été testé, si vous le faites, merci de bien vouloir faire remonter l'expèrience acquise). Cela dit, cela devrait marcher. Pour tous commentaires ou suggestions, vous pouvez contacter l'auteur : nianderson et faire remonter les informations sur ce document.
| Fichier : installstage4.sh |
#! /bin/bash
# Script de sauvegarde pour Gentoo Linux
# Auteur: nianderson
# Traduction : http://fr.gentoo-wiki.com
# Date: 2004.09.15.
#
#A utiliser pour installer un stage4 créé avec mkstage4.sh
#on suppose que vous avez déja partitionné et formaté votre disque dur
#et que vous avez démarré sur votre LiveCD de Gentoo
#Définir les données du disque
#si votre disque est un disque IDE, mettre hdaX, si c'est un SCSI, mettre sdaX
rootPartition=/dev/sda3
bootPartition=/dev/sda1
#emplacement où monter les partitions du disque
mntRootPartition=/mnt/gentoo
mntBootPartition=/mnt/gentoo/boot
#URL du stage4
#Ici on a mis une copie de l'archive sur un serveur web
#pour pouvoir faire une réinstallation facile si besoin
urlToStage4=http://domain.com/
stage4=hostname-stage4.tar.bz2
#monter la partition root
echo montage de la partition root de $rootPartition vers $mntRootPartition
mount $rootPartition $mntRootPartition
sleep 5
echo
#Cette partie est à vérifier
#télecharger avec wget le stage4 et le mettre dans la partition root
cd $mntRootPartition
echo wget $urlToStage4$stage4 vers $mntRootPartition
wget $urlToStage4$stage4
sleep 5
#désarchiver le stage4
echo désarchivage du stage4
tar -xjpf $stage4
sleep 5
echo
#monter la partition de démarrage /boot
echo montage de $bootPartition vers $mntBootPartition
mkdir $mntbootPartition
mount $bootPartition $mntBootPartition
sleep 5
echo
#copier la copie de boot vers... boot
echo copier /bootcpy vers /boot
cp -R $mntRootPartition/bootcpy $mntBootPartition
sleep 5
#enlever le fichier stage4
rm -rf $mntRootPartition/$stage4
echo Vous devrez éditer votre fstab ainsi qu'installer lilo ou grub.
echo Aprés, tout devrait marcher correctement.
echo enlever bootcpy
rm -rf /bootcpy
echo
echo Enjoy
|
Et puis un autre script:
For explanation and further infos refer to the Gentoo Post. A howto (Wiki) of the script can be found here.
| File: mkstage4.sh |
#!/bin/bash # Backup script for Gentoo Linux # Author: Reto Glauser aka blinkeye # Homepage: http://blinkeye.ch # Mailto: stage4 at blinkeye dot ch # Date: 23.03.2005 # If you need further infos check out this post: http://forums.gentoo.org/viewtopic.php?p=1751698#1751698 version=v1.2 # these are the commands we actually need for the backup command_list="echo tar hostname date split" # verify that each command we use exists for command in $command_list; do path=`which $command | grep "no $command in"` if [ ! -x `which $command` -a "$path" ]; then echo -e "\n\nERROR: $command not found! Check your commands and/or your \$PATH" exit -1 fi done # options for the tar command tarOptions="--create --absolute-names --preserve-permissions --totals --bzip2 --ignore-failed-read --verbose --file" # where to put the stage4 stage4Location=/mnt/backups/stage4 # name prefix stage4prefix=$(hostname)-stage4-`date +\%d.\%m.\%Y` # these files/directories are always excluded default_exclude_list=" --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/lost+found/* --exclude=/dev/* --exclude=/proc/* --exclude=/mnt/* --exclude=/sys/* --exclude=/usr/portage/* --exclude=/var/log/* --exclude=$stage4Location" # depending on your choice these files or directories will additionally be excluded custom_exclude_list=" --exclude=/usr/src/* --exclude=/opt/mathematica --exclude=/usr/share/smssend --exclude=/home/*" # check the folder/files stored in $default_exclude_list exist for exclude in $default_exclude_list; do if [ ! -e "`echo "$exclude" | cut -d'=' -f2 | cut -d'*' -f1`" ]; then echo -e "\n\nERROR: `echo "$exclude" | cut -d'=' -f2` not found! Check your \$default_exclude_list" fi done # check the folder/files stored in $custom_exclude_list exist for exclude in $custom_exclude_list; do if [ ! -e "`echo "$exclude" | cut -d'=' -f2 | cut -d'*' -f1`" ]; then echo -e "\n\nERROR: `echo "$exclude" | cut -d'=' -f2` not found! Check your \$custom_exclude_list" fi done # print out the version echo -e "\nBackup script $version" echo -e "===================" # how do you want to backup? echo -e "\nWhat do you want to do? (Use CONTROL-C to abort)\n (1) Minimal backup (2) Interactive backup" while [ "$option" != '1' -a "$option" != '2' ]; do echo -en "\nPlease enter your option: " read option done case $option in 1) stage4Name=$stage4Location/$stage4prefix-minimal final_command="tar $default_exclude_list $custom_exclude_list $tarOptions $stage4Name.tar.bz2 / /var/log/emerge.log" ;; 2) for folder in $custom_exclude_list; do echo -en "Do you want to backup" `echo "$folder" | cut -d'=' -f2`"? (y/n) " read answer while [ "$answer" != 'y' -a "$answer" != 'n' ]; do echo "please enter y or n" read answer done if [ "$answer" == 'n' ]; then default_exclude_list="$default_exclude_list $folder" fi done stage4Name=$stage4Location/$stage4prefix-custom final_command="tar $default_exclude_list $tarOptions $stage4Name.tar.bz2 / /var/log/emerge.log" ;; esac # show what will be done echo -e "\n* creating the stage4 at $stage4Location with the following options:\n\n"$final_command # everything is set, are you sure to continue? echo -ne "\nDo you want to continue? (y/n) " read answer while [ "$answer" != 'y' ] && [ "$answer" != 'n' ]; do echo "please enter y or n" read answer done if [ "$answer" == 'y' ]; then # mount boot echo -e "\n* mount boot" mount /boot >/dev/null 2>&1 # if necessary, create the stage4Location if [ ! -d "$stage4Location" ] ; then echo "* creating directory $stage4Location" mkdir -p $stage4Location fi # check whether the file already exists if [ -a "$stage4Name.tar.bz2" ]; then echo -en "\nDo you want to overwrite $stage4Name.tar.bz2? (y/n) " read answer while [ "$answer" != 'y' ] && [ "$answer" != 'n' ]; do echo "please enter y or n" read answer done if [ "$answer" == 'n' ]; then echo -e "\n* There's nothing to do ... Exiting" exit 0; fi fi # do the backup time $final_command # copy the current world file to the stage4 location echo -e "\n* creating stage4 overview $stage4Name.txt" cp /var/lib/portage/world $stage4Name.txt >/dev/null 2>&1 # we finished, clean up echo "* stage4 is done" echo "* umounting boot" umount /boot else echo -e "\n* There's nothing to do ... Exiting" fi #Uncomment the following command if you want to split the archive in cd size chunks: #split --suffix-length=1 --bytes=670m $stage4Name.tar.bz2 "$stage4Name".tar.bz2_ && echo "* splitting is done" |
[modifier] Installation depuis un stage4
Démarrez le LiveCD, et avec celui-ci, faites le partitionnement de votre disque dur, et montez vos systèmes de fichiers. Vous arrivez donc à l'étape suivante :
cd /mnt/gentoo
copiez votre archive stage4 sur le disque (si l'archive est sur un autre CD, tapez gentoo cdcache à l'invite de démarrage. Puis vous pourrez monter/démonter d'autres CDs que le LiveCD).
tar xvjpf stage4.tar.bz2 cp -R bootcpy /mnt/gentoo/boot
Vérifiez bien le répertoire /boot aprés la copie, que vous avez bien ce que vous souhaitez.
rm -rf bootcpy
Puis configurez votre fichier fstab et votre gestionnaire de démarrage (grub ou lilo).
Voilà, c'est tout, vous avez fini l'installation !
[modifier] Crédits
- Original Forum Post by allucid
- Traduit de en:HOWTO Custom Stage4
