这里的“拷贝”通常有两种理解:

- 拷贝 GRUB 的配置文件:这是最常见的操作,用于备份或迁移
/boot/grub/grub.cfg文件。 - 拷贝 GRUB 的核心模块和二进制文件:这通常用于安装或修复 GRUB,比如在新的硬盘上安装 GRUB,或者从 Live USB 修复系统。
下面我将针对这两种情况,提供详细的命令和说明。
拷贝 GRUB 的配置文件 (grub.cfg)
这个文件是 GRUB 的“菜单”,告诉它有哪些操作系统可以启动,备份它是一个非常好的习惯。
在当前系统中拷贝
假设你想把当前的 grub.cfg 备份到一个名为 grub.cfg.bak 的文件中。
使用 cp 命令:

sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak
命令解释:
sudo: 因为/boot/grub/目录下的文件通常需要 root 权限才能修改。cp: 拷贝命令。/boot/grub/grub.cfg: 源文件,即当前的 GRUB 配置文件。/boot/grub/grub.cfg.bak: 目标文件,即备份文件。
从一个系统拷贝到另一个系统(或另一个硬盘)
假设你的旧硬盘挂载在 /mnt/old_disk,新硬盘挂载在 /mnt/new_disk,你想把旧硬盘的 GRUB 配置复制到新硬盘。
使用 cp 命令:
# 确保旧硬盘的/boot分区已挂载到正确位置 sudo cp /mnt/old_disk/boot/grub/grub.cfg /mnt/new_disk/boot/grub/grub.cfg
重要提示:
仅仅拷贝 grub.cfg 文件通常不足以让 GRUB 在新硬盘上正常工作。grub.cfg 文件中包含的路径(如 root 和 linux 行中的路径)是针对旧硬盘的,你需要在新系统上重新生成 grub.cfg 文件,或者手动编辑它以匹配新硬盘的分区结构,更可靠的方法是使用下面的 grub-install 和 update-grub 命令。
拷贝/安装 GRUB 的核心文件
这个操作更接近于“安装”或“部署” GRUB,它会将 GRUB 的核心模块、二进制文件(如 grubx86_64.efi 或 core.img)以及必要的配置文件结构拷贝到目标位置。
在当前系统上重新安装/拷贝 GRUB
如果你因为某些原因(如升级系统、文件损坏)需要重新安装 GRUB,可以使用以下命令,这会把 GRUB 的所有必要文件拷贝到它应该在的位置(通常是 /boot/grub/ 和 ESP 分区)。
对于 BIOS/ Legacy 启动系统:
# 1. 确定你的根分区 (/) 是哪个设备,/dev/sda1 sudo fdisk -l # 2. 重新安装 GRUB 到 MBR sudo grub-install /dev/sda
对于 UEFI 启动系统:
# 1. 确定你的 EFI 系统分区 (ESP) 是哪个设备,/dev/sda1 sudo lsblk -f # 查看 FSTYPE 为 vfat 的分区 # 2. 重新安装 GRUB 到 ESP 分区 sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
grub-install 命令做了什么?
这个命令会:
- 将 GRUB 的核心模块拷贝到
/boot/grub/x86_64-efi/(UEFI) 或/boot/grub/i386-pc/(BIOS)。 - 生成一个启动加载器文件(如
grubx64.efi)并放到 ESP 分区的正确目录下(如/EFI/ubuntu/)。 - 将启动器写入到设备的引导记录(MBR/GPT)或 NVRAM 中。
从 Live USB/系统拷贝 GRUB 来修复另一个系统
这是最常见“拷贝”GRUB 的场景,即用 Live USB 来修复一个无法启动的系统的 GRUB。
步骤概览:
-
启动 Live USB:进入 "Try Ubuntu" 或其他 "Live" 模式。
-
挂载问题系统的分区:
# 假设你的根分区是 /dev/sda2,挂载到 /mnt sudo mount /dev/sda2 /mnt # 如果你有单独的 /boot 分区,也挂载上 # sudo mount /dev/sda1 /mnt/boot # 如果是 UEFI 系统,挂载 ESP 分区 # sudo mount /dev/sda1 /mnt/boot/efi
-
进入 Chroot 环境:这是关键一步,让你在问题系统的环境中执行命令。
sudo chroot /mnt
-
在 Chroot 环境内安装 GRUB:
- 对于 BIOS 系统:
# 安装到 MBR 所在的磁盘,/dev/sda grub-install /dev/sda
- 对于 UEFI 系统:
# 确保ESP分区已挂载,通常在 /boot/efi # 安装到ESP grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
- 对于 BIOS 系统:
-
更新 GRUB 配置文件:安装完成后,必须重新生成
grub.cfg,它会根据当前系统自动生成正确的启动菜单和路径。update-grub
-
退出并重启:
# 退出 chroot exit # 卸载分区 sudo umount -R /mnt # 重启电脑,并拔掉 Live USB reboot
| 场景 | 命令 | 说明 |
|---|---|---|
| 备份配置文件 | sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak |
简单的文件拷贝,用于备份。 |
| 拷贝配置文件到新系统 | sudo cp /path/to/source/grub.cfg /path/to/destination/ |
仅拷贝文件,路径可能需要手动修正。 |
| 重新安装 GRUB (当前系统) | sudo grub-install /dev/sdX |
拷贝所有核心文件到正确位置,并写入引导记录。 |
| 修复 GRUB (Live USB) | sudo chroot /mnt && grub-install /dev/sdX && update-grub |
从外部环境修复 GRUB,是功能最强大的“拷贝”操作。 |
核心要点:
grub.cfg是配置文件,内容是文本,可以手动编辑。- GRUB 的核心文件(
.efi,core.img等)是二进制文件,通常由grub-install命令负责拷贝和放置。 - 当遇到 GRUB 启动问题时,最可靠的解决方案通常是使用
grub-install和update-grub命令来重新部署和配置它。
