迁移Ubuntu启动文件到另一块硬盘
问题描述
我的电脑有两块硬盘,并安装了双系统,其中win11系统位于第一块硬盘,ubuntu20.04系统位于第二块硬盘。
但安装ubuntu20.04时,启动项即使设置为第二块硬盘的efi分区,引导文件依旧安装在了第一块硬盘的efi分区。
现在ubuntu20.04的启动文件位于nvme0n1p1,其中还包含了win11的启动文件。
但win11的efi分区太小,担心后期windows更新时会存在问题,此外将启动文件迁移,后期将硬盘插到其他电脑上也可以启动,所以我想把ubuntu20.04的启动文件迁移到nvme1n1p1。
查看文件分区及类型
lsblk -f
谨慎迁移,提前备份重要数据
迁移方法
- 安装 efibootmgr
sudo apt update
sudo apt install efibootmgr
- 挂载目标分区
sudo mkdir /mnt/efi
sudo mount /dev/nvme1n1p1 /mnt/efi
- 复制启动文件
sudo cp -r /boot/efi/EFI/ubuntu /mnt/efi/EFI/
- 更新启动配置
sudo efibootmgr
执行此命令,将显示当前启动项(BootCurrent),启动项顺序(BootOrder)以及各启动项,如下所示:
zb@zb-pc:~$ sudo efibootmgr
BootCurrent: 0005
Timeout: 0 seconds
BootOrder: 0005,0004,0000,2001,2002,2003
Boot0000* EFI Hard Drive (ZHITAI Ti600 1TB)
Boot0001* EFI PXE 0 for IPv4 (40-C2-BA-98-73-49)
Boot0002* EFI PXE 0 for IPv6 (40-C2-BA-98-73-49)
Boot0004* Windows Boot Manager
Boot0005* ubuntu
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network
现在我需要将ubuntu的启动项由 Boot0005 改为 Boot0001,步骤3已经将启动文件复制到了 Boot0000 所在位置。接下来,需要删除 Boot0005,并指引到 Boot0000 即可。
sudo efibootmgr -b 0005 -B
sudo efibootmgr -c -d /dev/nvme1 -p 1 -l \\EFI\\ubuntu\\shimx64.efi -L "Ubuntu"
- -b 0005 -B:删除当前的 Ubuntu 启动项
- -c:创建新的启动项
- -d /dev/nvme1 -p 1:指定目标硬盘和分区
- -l \EFI\ubuntu\shimx64.efi:指定启动文件路径
- -L “Ubuntu”:指定启动项名称
- 验证启动项
sudo efibootmgr
以下内容我是通过BIOS操作(更改启动项顺序) 以及 windows端的DiskGenius软件(清理旧的启动文件)完成,并非命令行,请谨慎操作。
- 更改启动项顺序,例如:
sudo efibootmgr -o 0000,0004,0001,0002,2001,2002,2003
- 重启测试
重启电脑,进入 BIOS 设置,检查启动顺序。重启 Ubuntu,确保一切正常。
- 清理旧的启动文件
sudo rm -rf /boot/efi/EFI/ubuntu
- 重启测试