Je ne suis pas un expert grub2 (désolé) mais essayez d'ajouter --skip-fs-probe
à votre ligne grub-install, j'ai trouvé que cela empêchait la création de /boot/grub/device.map
ce qui peut provoquer le démarrage à une invite grub. Je pense que sans ce paramètre, grub-install, au lieu de faire ce que vous lui dites, pense qu'il est plus intelligent que vous, et peut faire quelque chose de différent.
Une autre chose est d'être sûr que vous utilisez la bonne installation grub (c'est-à-dire pour grub2 et non pour grub d'origine). Ce n'est pas un problème si vous êtes à l'intérieur de Centos mais avec SystemRecoveryCD les deux versions sont disponibles et vous devez donc utiliser grub2-install
. J'ai appris à la dure...
Et comme @wurtel l'a souligné (bravo), vous devez spécifier un lecteur et non une partition. Grub2 s'installe dans le secteur 0 de l'ensemble du lecteur de disque, et ce "stub" est ce qui s'exécute au démarrage, mais il doit savoir où se trouve sur le disque, il doit installer les fichiers pour la prochaine étape du démarrage - c'est ce que le --root-directory
le paramètre est pour. (Je pense.)
Lire man grub-install
et en cherchant sur Google, je vois que --root-directory
n'est pas vraiment destiné à être utilisé pour les versions 1.99++ de grub2, bien que cela fonctionne d'après mon expérience. Vous êtes censé utiliser --boot-directory
et faites référence au répertoire de démarrage réel, donc cela vous donnerait :
grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot
Voici comment j'ai déplacé une installation Debian composée d'une partition de démarrage /boot
et une partition racine /
sur un nouveau lecteur et l'a rendu amorçable à l'aide de GNU GRUB :
Cloner des partitions
- À l'aide du live CD GParted, créez les partitions de démarrage et racine sur le nouveau lecteur.
- À l'aide d'une console racine dans GParted, montez l'ancienne partition de démarrage (disons qu'il s'agit de
/dev/sda1
) et la nouvelle partition (/dev/sdb1
) :mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
- Copiez les données de l'ancienne partition de démarrage vers la nouvelle :
cp -afv /mnt/oldBoot /mnt/newBoot
. Explication decp -afv
:a
signifie "archive" ce qui signifie :- ne déréférencez pas les liens
- copie récursive (comme
-R
) - préserver tous les attributs (horodatage, propriétaire, autorisation)
f
:force, si un fichier de destination existant ne peut pas être ouvert, supprimez-le et réessayezv
:verbeux, expliquez ce qui est fait
- Cela générera une sortie sur votre console indiquant quel fichier est actuellement copié et si
cp
progresse - Montez et copiez les fichiers de votre ancienne partition racine vers la nouvelle :
- Pour la sécurité :
umount /mnt/oldBoot && umount /mnt/newBoot
- Montez l'ancienne et la nouvelle partition racine (en supposant qu'il s'agit de
/dev/sda2
et/dev/sdb2
) :mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
- Copiez les données de l'ancienne partition racine vers la nouvelle partition racine :
cp -afv /mnt/oldRoot /mnt/newRoot
- Pour la sécurité :
- Modifiez la table du système de fichiers qui définit quelles partitions sont montées au démarrage (j'utiliserai Vim pour cela) :
-
vi /etc/fstab
-
Vous remarquerez que vos anciennes partitions sont référencées ici. Utilisez plutôt les UUID des nouvelles partitions
-
Vous pouvez insérer temporairement tous les UUID dans fstab pour faciliter le copier-coller avec
:r !blkid
-
Utilisez les UUID de vos nouvelles partitions pour modifier les entrées dans fstab. Ils devraient ressembler à ceci :
`# <file system> <mount point> <type> <options> <dump> <pass> # Root partition UUID=76fd1ffd-fb96-4ab4-be1a-42f8e9223983 / ext4 errors=remount-ro 0 1 # Boot partition UUID=e560e29e-8752-4b83-b1ee-4b86c0009f0b /boot ext2 defaults 0 2`
- Supprimer la sortie de
blkid
de fstab que vous avez inséré précédemment avec:r !blkid
- Supprimer la sortie de
-
Installer GRUB
-
Montez les systèmes de fichiers virtuels du live CD GParted :
mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys
-
Rendez les utilitaires GRUB du live CD GParted disponibles pour la partition racine :
mount --bind /usr/ /mnt/newRoot/usr
-
Montez la partition de démarrage sur la partition racine puisque GRUB stockera sa configuration dans
/boot
:mount /dev/sdb1 /mnt/newRoot/boot
-
Utilisez
chroot /mnt/newRoot
pour faire de la nouvelle partition racine temporairement la racine du système de fichiers -
Créez un fichier de configuration GRUB à
/boot/grub/grub.cfg
en utilisantupdate-grub2
-
Installez GRUB sur le nouveau lecteur :
grub-install /dev/sdb
. Vous ne devez pas spécifier de numéro de partition ici -
Retournez au système de fichiers du live CD GParted :
exit
-
Démonter les partitions :
umount /mnt/newRoot/*
-
Machine d'arrêt
-
Si vous avez plusieurs disques connectés, assurez-vous que le disque le plus récent vient en premier dans l'ordre de démarrage
-
Démarrer la machine
Ces instructions sont inspirées de celles de oaktreepeak.com.
Alternativement, vous pouvez essayer Clonezilla pour obtenir le même résultat.