如何启动新的克隆 SSD 而不是旧的源 HDD

如何启动新的克隆 SSD 而不是旧的源 HDD

我最近买了一个新的 SSD,并将我的旧 HDD 克隆到我的新 SSD 中。

克隆过程完成后,我可以启动 Ubuntu 16.04 LTS,但是当我将旧硬盘放回计算机时,计算机使用旧硬盘启动,而不是像应有的那样使用新的固态硬盘启动。

我使用启动修复并选择我的 SSD 作为“默认启动操作系统”,它修复了 grub。现在,当我在更新的 grub 菜单中选中 SSD 时,它会从 HDD 启动。

我该如何解决?

笔记:

  • 我认为这可能与 UUID 有关。
  • 我的旧硬盘位于 /dev/sda2。
  • 我目前已安装 Windows 7,并且可以使用 grub 菜单从新的 SSD 正确启动,并且 Windows 没有任何问题。

答案1

您可能是对的...重复的 UUID。

您需要更改 HDD 或 SSD 上的 UUID,然后编辑您的/etc/fstab

  • 断开硬盘
  • 启动至 SSD

terminal...

  • sudo blkid# 确定 Ubuntu 分区的 /dev/sdaN 和旧 UUID
  • sudo cp /etc/fstab /etc/fstab.bck# 备份此文件
  • sudo pico /etc/fstab# 编辑 fstab 文件
  • 更改UUID=the_old_UUID为读取/dev/sdaN,其中 N 是 Ubuntu 分区的编号,用于启动驱动器挂载
    • control+ o# 保存编辑
    • return# 确认文件名
    • control+ x# 退出编辑器
  • reboot# 确保它仍然正常启动

启动至 Ubuntu Live DVD...

terminal...

  • sudo blkid# 确定 Ubuntu 分区的 /dev/sdaN 和旧 UUID
  • sudo uuidgen -t# 生成新的基于时间的 UUID(记下这个新的UUID)
  • sudo tune2fs -U new_UUID /dev/sdaN# 使用您自己的新 UUID 和 /dev/sdaN 编号
  • reboot# 重新启动 SSD 并确认操作

更新#1:由于 UUID 的变化,Ubuntu 有可能无法在这里启动,所以您可能需要编辑一次 GRUB 启动命令。

如果是的话,在 GRUB 菜单中...

  • 突出显示适当的 Ubuntu 启动选择
  • 按下e键来编辑 GRUB 命令行
  • 使用箭头键移动到包含“splash quiet”的行
  • 手动将旧 UUID 更改为之前记下的新 UUID
  • control+x继续启动

重新启动 SSD...

terminal...

  • sudo blkid# 获取新的 UUID
  • sudo pico /etc/fstab# 编辑文件
  • /dev/sdaN(其中 N 是 Ubuntu 分区的编号)改回UUID=the_new_UUID,用于启动驱动器挂载
    • control+ o# 保存编辑
    • return# 确认文件名
    • control+ x# 退出编辑器
  • sudo update-grub# 更新 grub
  • reboot# 确保它仍然正常启动

如果需要,重新安装 HDD。

答案2

如果您使用 GRUB 2 作为引导加载程序,则可以使用 GRUB 的命令行来选择从哪个分区引导以及以 root 身份挂载哪个分区。

我假设您的最终目标是重新格式化旧驱动器,最好不使用实时媒体。如果您尝试在克隆磁盘之间设置多重启动系统,这将允许您启动其中一个,但我不建议将其作为永久解决方案。

1. 启动时显示 GRUB 菜单

如果您的系统未设置执行此操作,您可以按以下方式进行:

  • 通过 BIOS 启动时按住Shift,或
  • Esc通过 UEFI 启动时按下

2.打开 GRUB 命令提示符

GRUB 菜单出现后,按c。这将带您进入 GRUB 命令行。我还发现,在不断按 的过程中Esc,您可能最终还是会进入 GRUB 命令行。您应该会看到类似以下内容:

Minimal BASH-like line editing is supported. For the first word, 
TAB lists possible command completions. Anywhere else TAB lists 
possible device or file completions. ESC at any time exits.

grub> _

3. 在新 SSD 上找到根目录

用于ls列出驱动器和分区:

grub> ls

(proc) (hd0) (hd0,gpt2) (hd0,gpt1) (hd1) (hd1,gpt2) (hd1,gpt2)

这大致相当于 BASH 命令的输出lsblk,其中(hd0)将是/dev/sda(hd0,gpt1)将是/dev/sda1,等等。

然后,您可以使用该ls命令在新 SSD 上找到您的根目录。请务必包含结尾/,否则该命令将仅显示有关分区的一些信息,而不是其中包含的文件。

grub> ls (hd0,gpt2)/
lost+found/ boot/ dev/ proc/ run/ sys/ bin lib lib32 lib64 libx32 sbin etc/
home/ media/ mnt/ opt/ root/ snap/ srv/ tmp/ usr/ var/

4.设置根目录

一旦找到根目录,就可以设置它:

grub> set root=(hd0,gpt2)

其中(hd0,gpt2)是根目录的绝对路径。

5. 获取内核和 initrd 映像

这些文件通常位于您的启动目录中。下一步您将需要文件名(包括内核版本)。

grub> ls /boot/
efi/ initrd.img initrd.img.old vmlinuz vmlinuz.old grub/
config-5.13.0-27-generic vmlinuz-5.13.0-27-generic memtest86+.bin
memtest86+.elf memtest86+_multiboot.bin System.map-5.13.0-27-generic
initrd.img-5.13.0-27-generic

在这种情况下,我使用的文件是vmlinuz-5.13.0-27-genericinitrd.img-5.13.0-27-generic。您可能也可以使用 vmlinuzinitrd.img,但我尚未测试过。

6. 引导

使用以下命令,使用新的 SSD 启动系统:

grub> linux /boot/vmlinuz-X.XX.X-XX-generic root=/dev/sd##
grub> initrd /boot/initrd.img-X.XX.X-XX-generic
grub> boot

其中vmlinuz-X.XX.X-XX-genericinitrd.img-X.XX.X-XX-generic是您在上一步中找到的内核版本,##是新 SSD 上根目录所在分区的字母和数字组合。我根据(hd0,gpt2)大致等于来确定这一点/dev/sda2

此时,您应该已启动到新 SSD。就我而言,我想擦除旧驱动器以将其用作存储,因此我能够从新 SSD 重新格式化它。

来源

相关内容