当前位置: 首页>>技术教程>>正文


grub2 – 从另一台机器恢复后如何修复 Grub 中的 UUID?

,

问题描述

我想将 Ubuntu 12.04 的完整 tar 备份以及我的所有自定义、文档、安装的软件等恢复到另一台计算机。

我使用以下命令进行了备份:

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 /

正如预期的那样(参见 MikeWhatever 对这个问题的回答: Copy Ubuntu distro with all settings from one computer to a different one )这破坏了 grub。当我打开计算机时,出现错误:

error: no such device: ...

press any key to continue ...

我相信 Grub 损坏的原因是它在旧硬盘上寻找匹配的 UUID,而不是在计算机的 hard-drive 上。

如何修复 grub 以识别新的 hard-drive?我在网上寻求帮助“修复 GRUB UUID”,但这些步骤似乎已经过时或很复杂。我上面链接到的迈克的回复让我希望有一个相当简单的方法来修复这个问题。

最佳思路

要解决您当前的问题,您必须更改 “/etc/fstab” 和 “/boot/grub/grub.cfg” 中的 UUID(非常棘手)。

您可以使用Ubuntu安装CD通过gparted获取UUID(您只需右键单击要获取UUID的分区,然后单击”Information”,然后选择UUID并使用CTRL + C复制它)或命令行(sudo blkid)。

然后你必须使用 gedit、nano 或其他方式在正确的卷上编辑 “/etc/fstab”。

在终端中,输入:

gksudo gedit /etc/fstab

并用新的 UUID 替换旧的 UUID。

重要提示:当然,如果您使用启动 CD 来执行此操作,则必须在 “/etc/fstab” : “/media/xxxxx/etc/fstab” 之前添加 “/media/xxxxx”。您还可以使用 gksudo gedit 并打开文件自行编辑。

警告:修改 “/boot/grub/grub.cfg” 非常棘手。它通常应使用命令 sudo update-grub 生成。

在终端中输入以下内容,将 “/boot/grub/grub.cfg” 中的旧 UUID 替换为新 UUID:

gksudo gedit /boot/grub/grub.cfg

重要提示:当然,如果您使用启动 CD 来执行此操作,则必须在 “/boot/grub/grub.cfg” 之前添加 “/media/xxxxx”:“/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(然后以 root 身份运行 grub-install 以永久设置正确的配置)。

  2. 从 Ubuntu U 盘启动,挂载 ubuntu 磁盘分区,chroot 到其中,然后运行 ​​grub-install。

如果您只有 Ubuntu 并且只有一个硬盘,第一种情况应该更容易,在这种情况下选择 “Ubuntu recovery” 选项,然后按 “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” 行,并将 “linux” 行中的 “root=UUID=XXXXX” 替换为 “root=/dev/sda1″。尝试启动它,希望不久之后它会给你 Ubuntu 恢复菜单,其中应该有一个 grub 选项,正确的应该是 re-install grub。

否则,或者如果您不想直接使用 grub(它应该带有健康警告,请使用 https://help.ubuntu.com/community/Grub2/Installing#Reinstalling_GRUB_2 中记录的 CD/USB memory 棒)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14337.html,未经允许,请勿转载。