Ripristinare l’avvio con GRUB2 dopo la sostituzione di un hard disk
Cambiando un hard disk (ad esempio passando da un disco normale ad un ssd) anche se si clona con strumenti tipo Acronis i sistemi linux basati su UUID per il riconoscimento dei dischi non partono più.
Occorre quindi partire con una LiveCD o una LiveUSB per eseguirne il ripristino.
Da dentro la live per prima cosa si identifica la partizione:
1 |
sudo fdisk -l |
Ad esempio potrebbe essere la /dev/sda1, e se ne esegue il mount:
1 |
sudo mount /dev/sda1 /mnt |
Si linkano quindi le directory usate da grub:
1 2 3 4 |
sudo mount --bind /dev /mnt/dev sudo mount --bind /dev/pts /mnt/dev/pts sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys |
Oppure:
1 |
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done |
Si usa l’opzione –bind in quanto si vuole montare un pezzo di filesystem in un altro punto.
Si esegue il chroot sulla partizione reale:
1 |
sudo chroot /mnt |
Se eseguendo il chroot si ottiene l’errore “formato eseguibile non valido” molto probabilmente si sta utilizzando una versione del LiveCD diverso di architettura (ad esempio LiveCD 32bit con sistema a 64bit), quindi basta utilizzare la versione giusta e ripetere le operazioni.
Si rigenera grub:
1 2 3 |
sudo grub-install /dev/sda sudo grub-install --recheck /dev/sda sudo update-grub |
Si smonta tutto e si riavvia il pc:
1 2 3 4 5 6 7 |
exit sudo umount /mnt/sys sudo umount /mnt/proc sudo umount /mnt/dev/pts sudo umount /mnt/dev sudo umount /mnt sudo reboot |
Oppure:
1 |
for i in /mnt/sys /mnt/proc /mnt/run /mnt/dev /mnt; do sudo ummount "$i"; done |
Ora si dovrebbe avere nuovamente grub2 funzionante.