Non sono un esperto di grub2 (mi dispiace) ma prova ad aggiungere --skip-fs-probe
alla tua linea grub-install, ho scoperto che questo impedisce la creazione di /boot/grub/device.map
che può causare l'avvio a un prompt di grub. Penso che senza questo parametro grub-install, invece di fare quello che gli dici, pensi che sia più intelligente di te e potrebbe fare qualcosa di diverso.
Un'altra cosa è assicurarsi di utilizzare l'installazione di grub corretta (ovvero per grub2 e non per grub originale). Questo non è un problema se sei dentro Centos ma con SystemRecoveryCD sono disponibili entrambe le versioni e quindi devi usare grub2-install
. Ho imparato a mie spese...
E come ha sottolineato @wurtel (complimenti), dovresti specificare un'unità e non una partizione. Grub2 si installa nel settore 0 dell'intero disco, e questo 'stub' è ciò che viene eseguito all'avvio, ma ha bisogno di sapere dove si trova sul disco dovrebbe installare i file per la fase successiva dell'avvio - questo è ciò che il --root-directory
parametro è per. (Penso.)
Leggendo man grub-install
e cercando su Google vedo che --root-directory
non è realmente pensato per essere utilizzato per grub2 versioni 1.99++, sebbene funzioni nella mia esperienza. Dovresti usare --boot-directory
e fai riferimento alla directory di avvio effettiva, quindi questo ti darebbe:
grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot
Ecco come ho spostato un'installazione Debian composta da una partizione di avvio /boot
e una partizione root /
su una nuova unità e reso avviabile utilizzando GNU GRUB:
Clona partizioni
- Utilizzando il live CD di GParted, crea la partizione di avvio e root sulla nuova unità.
- Utilizzando una console di root in GParted, monta la vecchia partizione di avvio (diciamo che è
/dev/sda1
) e la nuova partizione (/dev/sdb1
):mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
- Copia i dati dalla vecchia partizione di avvio a quella nuova:
cp -afv /mnt/oldBoot /mnt/newBoot
. Spiegazione dicp -afv
:a
sta per "archivio" che significa:- non dereferenziare i collegamenti
- copia in modo ricorsivo (come
-R
) - preservare tutti gli attributi (timestamp, proprietario, autorizzazione)
f
:force, se non è possibile aprire un file di destinazione esistente, rimuoverlo e riprovarev
:prolisso, spiega cosa si sta facendo
- Questo genererà un output sulla tua console che mostra quale file è attualmente copiato e se
cp
fa progressi - Monta e copia i file dalla tua vecchia partizione root a quella nuova:
- Per sicurezza:
umount /mnt/oldBoot && umount /mnt/newBoot
- Monta la vecchia e la nuova partizione root (supponendo che sia
/dev/sda2
e/dev/sdb2
):mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
- Copia i dati della vecchia partizione root nella nuova partizione root:
cp -afv /mnt/oldRoot /mnt/newRoot
- Per sicurezza:
- Modifica la tabella del filesystem che definisce quali partizioni sono montate all'avvio (per questo userò Vim):
-
vi /etc/fstab
-
Noterai che le tue vecchie partizioni sono referenziate qui. Usa invece gli UUID delle nuove partizioni
-
Puoi inserire temporaneamente tutti gli UUID in fstab per copiare e incollare più facilmente con
:r !blkid
-
Usa gli UUID delle tue nuove partizioni per modificare le voci in fstab. Dovrebbero assomigliare a questo:
`# <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`
- Rimuovi l'output di
blkid
da fstab che hai inserito in precedenza con:r !blkid
- Rimuovi l'output di
-
Installa GRUB
-
Monta i filesystem virtuali del live CD GParted:
mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys
-
Rendi disponibili le utilità GRUB del live CD GParted alla partizione root:
mount --bind /usr/ /mnt/newRoot/usr
-
Monta la partizione di boot sulla partizione root poiché GRUB memorizzerà la sua configurazione in
/boot
:mount /dev/sdb1 /mnt/newRoot/boot
-
Usa
chroot /mnt/newRoot
per rendere la nuova partizione root temporaneamente la root del filesystem -
Crea un file di configurazione GRUB in
/boot/grub/grub.cfg
utilizzandoupdate-grub2
-
Installa GRUB sulla nuova unità:
grub-install /dev/sdb
. Non devi specificare un numero di partizione qui -
Ritorna al filesystem del live CD di GParted:
exit
-
Smonta partizioni:
umount /mnt/newRoot/*
-
Spegni la macchina
-
Se hai più unità collegate, assicurati che l'unità più recente sia la prima nell'ordine di avvio
-
Avvia la macchina
Queste istruzioni sono ispirate a quelle di oaktreepeak.com.
In alternativa, puoi provare Clonezilla per ottenere lo stesso risultato.