菜鸟科技网

grub拷贝命令如何正确使用?

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

grub拷贝命令如何正确使用?-图1
(图片来源网络,侵删)
  1. 拷贝 GRUB 的配置文件:这是最常见的操作,用于备份或迁移 /boot/grub/grub.cfg 文件。
  2. 拷贝 GRUB 的核心模块和二进制文件:这通常用于安装或修复 GRUB,比如在新的硬盘上安装 GRUB,或者从 Live USB 修复系统。

下面我将针对这两种情况,提供详细的命令和说明。


拷贝 GRUB 的配置文件 (grub.cfg)

这个文件是 GRUB 的“菜单”,告诉它有哪些操作系统可以启动,备份它是一个非常好的习惯。

在当前系统中拷贝

假设你想把当前的 grub.cfg 备份到一个名为 grub.cfg.bak 的文件中。

使用 cp 命令:

grub拷贝命令如何正确使用?-图2
(图片来源网络,侵删)
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 文件中包含的路径(如 rootlinux 行中的路径)是针对旧硬盘的,你需要在新系统上重新生成 grub.cfg 文件,或者手动编辑它以匹配新硬盘的分区结构,更可靠的方法是使用下面的 grub-installupdate-grub 命令。


拷贝/安装 GRUB 的核心文件

这个操作更接近于“安装”或“部署” GRUB,它会将 GRUB 的核心模块、二进制文件(如 grubx86_64.eficore.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。

步骤概览:

  1. 启动 Live USB:进入 "Try Ubuntu" 或其他 "Live" 模式。

  2. 挂载问题系统的分区

    # 假设你的根分区是 /dev/sda2,挂载到 /mnt
    sudo mount /dev/sda2 /mnt
    # 如果你有单独的 /boot 分区,也挂载上
    # sudo mount /dev/sda1 /mnt/boot
    # 如果是 UEFI 系统,挂载 ESP 分区
    # sudo mount /dev/sda1 /mnt/boot/efi
  3. 进入 Chroot 环境:这是关键一步,让你在问题系统的环境中执行命令。

    sudo chroot /mnt
  4. 在 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
  5. 更新 GRUB 配置文件:安装完成后,必须重新生成 grub.cfg,它会根据当前系统自动生成正确的启动菜单和路径。

    update-grub
  6. 退出并重启

    # 退出 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-installupdate-grub 命令来重新部署和配置它。
分享:
扫描分享到社交APP
上一篇
下一篇