如何将 GRUB 配置从一个 SSD 复制到另一个 SSD 以制作备份 OS 磁盘后进行理想调整

如何将 GRUB 配置从一个 SSD 复制到另一个 SSD 以制作备份 OS 磁盘后进行理想调整

我想使用Clonezilla 的 dd 模式,使用“e2、j2、icds 和 iefi”的高级选项,这些选项在 Clonezilla 的高级菜单中有描述,该链接中引用

  1. “e2”:sfdisk 使用来自 EDD 的硬盘 CHS(用于非 GRUB 引导加载程序)CHS 是柱面、磁头和磁扇区EDD(假设现有磁盘驱动器)。
  2. “j2”:克隆 MBR 和第一个分区之间的隐藏数据
  3. “icds”:在创建分区表之前跳过检查目标磁盘大小“
  4. iefi”:克隆后跳过更新 NVI 启动 RAM 中的条目

从 Clonezilla 完成磁盘到磁盘克隆后,仍然存在 GRUB UUID 不正确的问题,因为 GRUB 仍然具有所复制驱动器的配置。

来自 Stack Exchange Ask Ubuntu 问题,“如何更改 /boot/grub/grub.cfg 中的 UUID”,有许多有趣的方法。

例如,那个链接来自“Pierre ALBARÈDE”:

/boot/grub/grub.cfg您可以像之前一样 直接在 中更改 UUID 。/boot/grub/grub.cfg不会自动更新。但是,如果您想保留可启动性,您还需要在其他地方相应地更改 UUID,例如,在 EFI/UEFI 启动中、在 /boot/efi/EFI/ubuntu/grub.cfg和 中/etc/fstab

此外,“Vojtech Trefny”在回答以下问题时记录了如何从计算机的 BIOS 启动菜单启动到 GRUB,“如何在启动时进入 GRUB 菜单?

如果您使用 BIOS 启动,在加载 Grub 期间按住 ,则会出现菜单Shift。当您的系统使用 UEFI 启动时,请按 Esc

为了永久改变你需要编辑你的/etc/default/grub 文件:

#在行首放置一个符号GRUB_HIDDEN_TIMEOUT=0来注释掉该行。如果该行不存在,那么您可以改为注释掉此行:# GRUB_TIMEOUT_STYLE=hidden,然后更改 GRUB_TIMEOUT=0GRUB_TIMEOUT=5,例如,在 grub 菜单自动登录之前为其设置 5 秒超时。

保存更改并运行sudo update-grub以应用更改。

文档:https://help.ubuntu.com/community/Grub2

这个问题的答案是“如何更改 /boot/grub/grub.cfg 中的 UUID“由“Pierre ALBARÈDE”给出的最佳方法是什么?那篇文章中有很多选择,我仍然有点困惑,不知道从那里或从其他地方得到的最佳方法是什么。不过,当我发出命令“sudo blkid”来获取系统上所有磁盘的 UUID 时,我得到了 EFI(启动)分区 sdc5 的条目,如下所示:

命令 blkid

/dev/sdc5:UUID="1887-E4A1" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="d05239a5-e32f-4d3c-bc80-76bca4afb0b8"

有 UUID,也有部分 UUID。哪个 UUID 需要添加到 GRUB 菜单?(我想我可以检查我正在复制的源磁盘的菜单来弄清楚这一点,但我希望问题的这一部分也可以在答案中得到解决。)

  1. 可以修改 etc/defualt/grub 文件以允许选择启动选项,并且可以使用“e”从磁盘成功启动到 Ubuntu:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

#enable OS PROBER
GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

在此之后,问题的答案是“如何更改 /boot/grub/grub.cfg 中的 UUID“Pierre ALBARÈDE” 给出的“可用于更新中的 UUID:直接更改中的 UUID/boot/grub/grub.cfg(自从/boot/grub/grub.cfg不会自动更新),并且/boot/efi/EFI/ubuntu/grub.cfg并且还 /etc/fstab.然后运行sudo 更新 grub

我是否遗漏了更新文件所需的步骤sudo 更新 grub不更新然后运行sudo 更新 grub一旦启动到新磁盘。

最好的方法是什么,以便新的克隆磁盘可以像旧磁盘一样启动,并在每个相应的配置文件中使用正确的 UUID?

相关内容