Как исправить UUID в Grub после восстановления с другой машины?

Я хочу восстановить полную резервную копию tar Ubuntu 12.04 со всеми настройками, документами, установленным программным обеспечением и т. Д. На другом компьютере.

Я сделал резервную копию с помощью следующих команд:

sudo su
cd /
tar cvpzf ububackup.tgz --exclude=/ububackup.tgz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/tmp --exclude=/media /

На новом компьютере я сделал новую установку Ubuntu 12.04, переместил в нее файл резервной копии, а затем восстановил его с помощью следующего файла:

tar xvpfz backup.tgz -C /

Как и ожидалось (см. Ответ Майка Уизерса на этот вопрос: скопировать дистрибутив Ubuntu со всеми настройками с одного компьютера на другой), это не помогло. Когда я включаю компьютер, я получаю сообщение об ошибке:

error: no such device: ...

press any key to continue ...

Я полагаю, что причина того, что Grub не работает, состоит в том, что UUID, который он ищет, соответствует на старом жестком диске, а не на жестком диске для компьютера.

Как я могу исправить мой Grub, чтобы распознать новый жесткий диск? Я искал в интернете справку "Fix GRUB UUID", но шаги казались либо устаревшими, либо сложными. Ответ Майка, на который я ссылался выше, вселяет надежду, что существует довольно простой способ исправить это.

4 ответа

Решение

Чтобы решить вашу текущую проблему, вам нужно изменить UUID в "/ etc / fstab" и "/boot/grub/grub.cfg" (очень сложно).

Вы можете использовать установочный компакт-диск Ubuntu, чтобы получить UUID с gparted (вам просто нужно щелкнуть правой кнопкой мыши по разделу, для которого вы хотите получить UUID, и нажать "Информация", затем выбрать UUID и скопировать его с помощью CTRL + В) или командная строка (sudo blkid).

Затем вы должны отредактировать "/ etc / fstab" на нужном томе с помощью gedit, nano или другого.

В терминале введите:

gksudo gedit /etc/fstab

и замените старые UUID новыми.

ВАЖНО: Конечно, если вы используете загрузочный CD для этого, вам нужно добавить "/ media / xxxxx" перед "/etc/fstab": "/media/xxxxx/etc/fstab". Вы также можете использовать gksudo gedit и откройте файл для редактирования самостоятельно.

ВНИМАНИЕ: Изменить /boot/grub/grub.cfg очень сложно. Обычно он должен быть сгенерирован командой sudo update-grub,

Замените старые идентификаторы UUID новыми на "/boot/grub/grub.cfg", введя в терминале следующее:

gksudo gedit /boot/grub/grub.cfg

ВАЖНО: Конечно, если вы используете загрузочный CD для этого, вам нужно добавить "/ media / xxxxx" перед "/boot/grub/grub.cfg": "/ media / xxxxx / boot / grub / grub. CFG". Вы также можете использовать gksudo gedit и откройте файл для редактирования самостоятельно.

Если вы используете хитрое решение, я рекомендую вам запустить sudo update-grub как только вы успешно загрузили систему.

Более простой, но простой способ правильно перенастроить grub - использовать диск для восстановления загрузки, такой как "Boot-Repair-Disk": http://sourceforge.net/p/boot-repair-cd/home/Home/

Я надеюсь, что это поможет вам решить вашу проблему.

Однако вы можете рассмотреть возможность использования Clonezilla для копирования старого компьютера на новый, как указано в моем комментарии.

Предположительно это означает, что grub запускается и отображает опцию загрузки в Ubuntu, но когда вы выбираете, что он не загружается?

Думаю, есть два варианта:

  1. Используйте редактор строк GRUB, чтобы изменить параметр загрузки linux для правильной загрузки linux (а затем запустите grub-install от имени пользователя root, чтобы навсегда установить правильную конфигурацию).
  2. Загрузитесь с USB-накопителя Ubuntu, смонтируйте раздел диска ubuntu, выполните в нем chroot, а затем запустите grub-install.

Первый случай должен быть проще, если у вас есть только Ubuntu и только один жесткий диск, в этом случае выберите опцию "Восстановление Ubuntu" и нажмите "e" для редактирования:

Запись должна выглядеть примерно так:

insmod gzio
insmod part_msdos
insmod ext2
set root=('hd0,msdos0')
search --no-floppy --fs-uuid --set=root XXXXXX
linux /boot/vmlinuz-YYYYY root=UUID=XXXXXX ro recovery nomodeset
initrd /boot/initrd.img-YYYYY

Удалите строку "search" и замените "root=UUID=XXXXX" в строке "linux" на "root=/dev/sda1". Попробуйте выполнить загрузку, и, надеюсь, через короткое время появится меню восстановления Ubuntu, в котором должна быть опция grub, которая должна правильно переустановить grub.

В противном случае, или если вы не хотите напрямую возиться с grub (который должен содержать предупреждение о вреде для здоровья, используйте диск CD/USB, как описано в https://help.ubuntu.com/community/Grub2/Installing

Что я сделал вместо редактирования fstab и grub:

  1. Я сделал резервную копию этих файлов на новой установке Ubuntu (tar -cvf /somedir/boot.tar /etc/fstab /boot/grub/grub.cfg)
  2. Восстановлен из бэкапа (tar -xvpf /mnt/remotebk/full.tar)
  3. скопировать восстановленный файл fstab (cp /etc/fstab /somedir/fstab.restored)
  4. восстановить мои свежие установочные загрузочные файлы (tar -xvpf /somedir/boot.tar -C /)
  5. Перезагрузился и все заработало.

Я использую виртуальные машины VMware, я сделал этот процесс для перемещения одного сервера Linux с одного хоста на другой хост.

В моем случае UUID, который установил grub, отличался от моего нынешнего UUID (sudo blkid) для моего раздела Windows (подтверждено в grub.cfg). Я пробовал разные методы безуспешно. Наконец я смонтировал раздел Windows с файловым менеджером и запустил update-grub снова и UUID был успешно обновлен в grub.cfg.

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