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

22

Я хочу восстановить полную резервную копию 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», но шаги казались либо устаревшими, либо сложными. Ответ Майка, на который я ссылался выше, вселяет надежду, что существует довольно простой способ исправить это.

snowguy
источник
1
Почему бы вам не использовать clonezilla (clonezilla.org), чтобы сделать снимок старого компьютера и восстановить его на новом? Я думаю, что было бы действительно легче, потому что вы, кажется, хотите оставить абсолютно все как есть. В противном случае создание резервной копии (/ home, / etc, / usr / local, / var) и восстановление ваших данных и настроек, кроме программного обеспечения, также очень просты ... Чтобы решить текущую проблему, вам придется изменить UUID (s) в / etc / fstab и /boot/grub/menu.lst. Вы можете использовать установочный компакт-диск Ubuntu, чтобы получить UUID (ы) [gparted или командную строку] и внести изменения.
Голбот

Ответы:

19

Чтобы решить вашу текущую проблему, вам нужно изменить 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 для копирования старого компьютера на новый, как указано в моем комментарии.

Golboth
источник
Спасибо, Голбот. Я закончил тем, что использовал ваше предложение использовать диск восстановления загрузчика, и это сработало.
снежный человек
пожалуйста, обратите внимание, что clonezilla может на самом деле не исправить это. я просто скопировал весь жесткий диск (через clonezilla) на SSD и имел точно такой же UUID для жесткого диска и SSD, в итоге вручную изменив uuid на ssd, а затем в вышеупомянутых файлах на ssd, чтобы все еще иметь резервный жесткий диск как возможна загрузка ОС
Деннис Нольте
3

Предположительно это означает, что 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/Install#Reinstall_GRUB_2

chronitis
источник
К вашему сведению, когда я начинал, я не видел опцию запуска grub (возможно, потому что он просто загружался прямо в Ubuntu, так как это была единственная ОС). В любом случае я ценю вашу помощь. Я закончил тем, что создал диск восстановления загрузчика.
снежный человек
Большое спасибо! Ваш ответ спас меня от плохого конца, когда я по глупости изменил UUID моего fstab, и Ubuntu больше не мог запускаться!
reexmonkey
0

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

Tavo
источник
Программа называется update-grubи нет grub-update. Это не совсем очевидно, так как большинство команд grub начинаются с grub-....
Fa11enAngel
0

Что я сделал вместо редактирования 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 с одного хоста на другой хост.

Роберто Димас
источник