Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/04/2013, à 13:27

Antoine P

Script de clonage - Problème de GRUB

J'ai crée un script qui à pour but de supprimer toutes les données sur un disque (/dev/sdX), de créer deux partitions :

[*]/dev/sdX1 : Une SWAP qui fait 1× la RAM si celle ci est supérieure à 1Go sinon elle fait 2× la RAM[/*]
[*]/dev/sdX2 : Une partition ext4 montée en / faisant le reste du disque dur[/*]

De restaurer une image Partclone dans la partition /dev/sdX2

Et installer le GRUB sur /dev/sdX.

Le script est le suivant :

#!/bin/bash
# --- SCRIPT DE CLONAGE DISQUE ---
echo -e "\n\n --- SCRIPT DE CLONAGE DE DISQUE ---"
echo -e "\n# Etape 1 : Sélection du disque de destination."
# CHOIX DU DISQUE
parted -l | grep /dev/sd
echo -n "Entrez l'adresse du lecteur à formater : "
read disk
echo -e "\n# Etape 2 : Création des partitions"
swapact=`swapon -s | grep $disk | cut -d" " -f1`			# Désactivation de la SWAP
swapoff $swapact
parted ${disk} mklabel msdos								# Création d'une nouvelle table de partitions
tailledd=`fdisk -l | grep $disk: | cut -d" " -f5`
tailledd=$(( $tailledd/1000000 ))
tailleram=`free | grep Mem | tr -s ' ' | cut -d" " -f2`
tailleram=$(( $tailleram/1000 ))
if [ $tailleram -le 1000 ]									# La SWAP est 2× la RAM si cette dernière est inférieure à 1 Go sinon 1× la RAM
then
  tailleswap=$(( $tailleram * 2 ))
else
  tailleswap=$tailleram
fi
parted ${disk} mkpart primary $(( $tailledd - $tailleswap )) $tailledd		# Création d'une partition /dev/sdX1 en SWAP
mkswap ${disk}1
echo "Partition d'échange crée."
parted ${disk} mkpart primary 1 $(( $tailledd - $tailleswap - 1 ))			# Création d'une partition ext4 montée en / sur /dev/sdX2
mke2fs -t ext4 ${disk}2
e2fsck -f ${disk}2
echo "Partition de données crée."

echo -e "\n# Etape 3 : Clonage"
heured=`date | cut -d" " -f5 | cut -d":" -f1`
mind=`date | cut -d" " -f5 | cut -d":" -f2`
secd=`date | cut -d" " -f5 | cut -d":" -f3`
echo "Début de l'opération : $heured:$mind:$secd"
echo "Clonage en cours, veuillez patientez. Ceci peut prendre plusieurs dizaines de minutes …"
#dd if=/media/Images/Image-partition.ssimg of=${disk}2 ibs=4096
partclone.extfs -r -s "/media/Images/Image-disque.ssimg" -o ${disk}2		# Copie des données sur /dev/sdX2 depuis une image Partclone préalablement crée
e2fsck -f -y -v ${disk}2
resize2fs  ${disk}2
parted ${disk} set 2 boot on												# Définition du drapeau 'boot' sur /dev/sdX2
uuid=`uuidgen -r`
tune2fs -U $uuid ${disk}2
heuref=`date | cut -d" " -f5 | cut -d":" -f1`
minf=`date | cut -d" " -f5 | cut -d":" -f2`
secf=`date | cut -d" " -f5 | cut -d":" -f3`
echo "Fin de l'opération : $heuref:$minf:$secf"
echo "Clonage terminé."

echo -e "\n# Etape 3 : Installation du GRUB"
mkdir /media/mp
mount ${disk}2 /media/mp													# Montage de la partition /dev/sdX2
os-prober
grub-install --root-directory=/media/mp ${disk}								# Installation du GRUB
# Le problème : Le script déclare que l'installation s'est effectuée avec succès et lorsque je redémarre, le disque n'amorce pas.
umount /media/mp
echo -e "\n >>> LE CLONAGE EST TERMINÉ. Vous pouvez redémarrer l'ordinateur."

Le problème est le suivant : le script m'indique que l'installation du GRUB s'est bien déroulée mais lorsque je redémarre, cela ne marche pas.


Antoine P - Utilisateur d'Ubuntu depuis la 8.04, très satisfait.
Kubuntu 12.04 - Intel Pentium 4 3.20 GHz - RAM 1Go SDRAM - DD 330 Go - GPU : NVIDIA GeForce FX 5600 XT

Hors ligne

#2 Le 17/04/2013, à 19:07

jamesbad000

Re : Script de clonage - Problème de GRUB

cela ne marche pas.

Mériterait d'être précisé.

Ensuite, je vois plusieurs sources de problème :

1 - tu génère une nouvelle uuid, ce qui nécessiste de remettre à jour le menu grub (sudo update-grub à faire en chroot, ou directement dans le fichier grub.cfg avec sed...)
accessoirement, ton fstab aussi devra tenir compte du changement d'UUID

2-le répertoire root-dir de grub-install doit correspondre à l'emplacement ou se trouvent les images de kernel (répertoire boot en principe)

3- Si tu utilise grub-install sans passer par un chroot, tu va installer la version de grub de l'OS actif et non celle de l'os cloné. Si les versions sont différentes, il peut y avoir des incompatibilitées avec le fichier grub.cfg de l'os cloné...

pour info, le flag boot ne sert à rien avec grub.


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne