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

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

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

sudo sucd /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, чтобы он распознал новый жесткий диск? Я поискал в Интернете справку "Исправить UUID GRUB", но шаги казались либо устаревшими, либо сложными. Ответ Майка, на который я ссылался выше, дает мне надежду, что есть довольно простой способ исправить это.

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

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

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

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

gksudo gedit /etc/fstab

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

ВАЖНО: Конечно, если вы используете для этого загрузочный компакт-диск, вам придется добавить "/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

ВАЖНО: Конечно, если вы используете для этого загрузочный компакт-диск, вам придется добавить "/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 gzioinsmod part_msdosinsmod ext2set root=('hd0,msdos0')search --no-floppy --fs-uuid --set=root XXXXXXlinux /boot/vmlinuz-YYYYY root=UUID=XXXXXX ro recovery nomodesetinitrd /boot/initrd.img-YYYYY

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

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

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

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