Как я могу исправить неправильный UUID в grub.cfg?

Я запускаю Debian Wheezy самостоятельно на своем ПК и недавно скопировал корневой раздел на другой с помощью rsync, поскольку обнаружил, что он работает хорошо (я также знаю о dd и ddrescue, но они оставляют неиспользуемое пространство в новом разделе). Я сгенерировал новый случайный UUID для нового раздела с помощью sudo tune2fs -U random /dev/hda9, а также обновил записи fstab / и / home.

Тогда, поскольку я так мало знаю о GRUB, я использовал графический интерфейс пользователя (GRUB Customizer) для поиска новой ОС и добавления записи в GRUB, а MBR -it делает запись /etc/grub.d, затем обновляет GRUB.

При запуске список GRUB содержит новую ОС (на sda9), но он загружает первую ОС (которую я скопировал из -sda5).

/boot/grub/grub.cfg содержит новую ОС Debian, но выглядит это так

set root='(hd0,msdos9)'  
search --no-floppy --fs-uuid --set=root 64662470-0e58-4dfd-90ac-43227d773556  
linux /boot/vmlinuz-3.2.0-2-amd64 root=UUID=cc3bca0d-aee4-4b9c-95c2-57212cc36d4d ro quiet  
initrd /boot/initrd.img-3.2.0-2-amd64

1-й UUID sda9, но 2-й UUID sda5. Я могу изменить 2-й uuid при запуске (с E), и он загружает sda9.
Итак, как я могу исправить grub.cfg, чтобы запись sda9 GRUB постоянно загружалась из sda9?

3 ответа

Решение

Просто отредактируйте /boot/grub/grub.cfg/ и замените UDA UID в sda5 на sda9:

search --no-floppy --fs-uuid --set=root 64662470-0e58-4dfd-90ac-43227d773556  
linux /boot/vmlinuz-3.2.0-2-amd64 root=UUID=64662470-0e58-4dfd-90ac-43227d773556 

Чтобы избежать этого типа ошибки в будущем запустить update-grub из системы, которую вы хотите использовать. Если вы запустите его из старой ОС, он подберет текущий корневой раздел и установит grub.cfg для загрузки с него.

Когда ты бежишь update-grub от sda5 это читает /boot/grub/grub.cfg от sda9 который был скопирован с sda5, Первая загрузка в sda5 какая ваша основная ОС. Затем используйте эти команды для исправления:

SourceUUID=cc3bca0d-aee4-4b9c-95c2-57212cc36d4d
TargetUUID=64662470-0e58-4dfd-90ac-43227d773556
sudo mkdir /mnt/clone
sudo mount -t auto -v /dev/sda9 /mnt/clone
sudo sed -i "s/$SourceUUID/$TargetUUID/g" /mnt/clone/boot/grub/grub.cfg
sudo update-grub
sudo umount /mnt/clone -l

Я основал этот ответ на клоне Ubuntu 16.04 LTS для нового скрипта раздела.

Мне пришлось удалить /boot/grub/menu.lst (сначала нужно сделать резервную копию), а затем update-grub сказать "да" для создания нового. Затем он обнаружил правильный UUID раздела для загрузки.

Другие вопросы по тегам