前阵子换了个新电脑,重装是不可能的,于是拷一份老机的数据到新机,具体过程不表,基本就是 #32 说的那套。
搞完发现系统么发启动,具体报错忘了,大概就是找不到启动配置的意思,这种一般就是grub的问题,于是进/boot/efi
瞧一瞧:
|
|
好家伙,这里把grub入口写死了,我旧盘root在gpt5,但新盘是gpt2,咋玩呢?一种方法是搞个Manjaro的rescure镜像,从镜像chroot进去给重装一下grub,见:https://wiki.manjaro.org/index.php/UEFI_-_Install_Guide
鉴于对这种写死做法的鄙夷,我决定换一种优雅的解决办法:
随便找了个 Ubuntu 的 Server 镜像,从里面把 /efi/{Boot,ubuntu} 一起拷贝出来
把 /boot/efi/EFI/Boot/bootx64.efi 用 Ubuntu 的替换掉
其实完全可以用grub-mkimage
这个工具来自定义生成一个个性的efi文件:
|
|
把 /boot/efi/EFI/ubuntu 复制过去,修改一下 grub.cfg 里面的 uuid 指向新盘 root 分区的 uuid 即可
|
|
可以看一下 Ubuntu 这个 grubx64.efi 的部分内容 strings grubx64.efi | grep cfg
|
|
引导路径是这样的:EFI -> Boot -> bootx64.efi -> grubx64.efi -> grub.cfg -> rootfs/grub.cfg -> boot,比 Manjaro 多了按配置查找 grub.cfg 的这一步,我觉得很赞。
当然这个方式有个小瑕疵:如果你用类似 refind 这种 boot manager 的话,会发现启动 Manjaro 的启动图标变成了 Ubuntu,明显这玩意是靠 /boot/efi/EFI/xxx 来判断目标OS的,对于我这种 N 久不关机的人来说,可以忽略不计。
强迫症患者可以在正常进入 Manjaro 以后自行重装 grub,然后删除 /boot/efi/EFI/ubuntu 即可。
# NOTE: I am not responsible for any expired content.
create@2023-01-24T00:57:55+08:00
update@2023-02-09T15:16:17+08:00
comment@https://github.com/ferstar/blog/issues/68