移动硬盘GPT模式安装linux系统支持legacy和uefi双启动

之前做过一个测试,就是将fedora-v33安装在移动硬盘上,GPT硬盘模式,thinkpadx230,启动模式为BOTH,UEFI first结果安装成了legacy模式,并不是纯GPT+UEFI的方式,让我很为难。因为有个想法,想让这个系统在legacy和UEFI模式下都能运行,手动建立EFI分区,再手动添加启动。现在暂时能实现,弄了许久网上少有相关资料,参见过votry,其是先用mbr分区安装,然后建立EFI分区,实现的是不同ISO光盘文件的启动。
我的做法如下:先将硬盘转换成GPT模式,用disgenius分出一个512M的UEFI分区(一定要FAT32,这个试了许久,联想的UEFI模式对FAT16支持不是很好),将笔记本的BIOS改为legacy first /legacy only 或BOTH都行,按照常规安装linux(我试过fedorav33和kali2020.4),使用剩余磁盘空间安装即可!(注:fedora-v33默认使用btrfs,方法A中如没有此驱动模块,启动会有些问题)。
解决方法:
A,使用uefi for windows生成的全能grubx86.efi,改名为bootx86.efi复制到/EFI/boot/下。
Uefi only启动后,
1、启动后报错提示grub rescue>
2、输入ls命令查看分区信息;
会出现(hd0,gpt0)…这样的信息
3、输入set查看当前的配置;
一般显示如下信息,无法引导启动一般是prefix指定的分区不对:
cmdpath=(hd0,gtp1)/EFI/Manjaro
prefix=(hd0,gpt1)/boot/grub
root=hd0,gpt1
4、输入ls prefix的值的格式,如 ls (hd0,gpt3)/boot/grub,如果提示filesystem unmount,就把gpt3换成别的数字,逐个尝试ls显示的分区,直到出现 ./ …/ x86_64-efi/ grubenv locale/ themes/这样的提示;
5、找到正确的grub分区后,比如是gpt3,就使用set prefix=(hd0,gpt3)/boot/grub设置grub路径
6、再设置root分区 set root=hd0,gpt3
7、再执行如下命令,正常就可以进入系统了;
insmod normal
normal
正常启动,分析是由于我们没有正常安装grubefi,所以在/EFI/grub/grub.cfg中需增加特殊环境变量:
Set prefix=(hd0,gpt3)/boot/grub
Set root=hd0,gpt3
由于软件打包时是默认prefix路径,所以得手动更改环境变量启动。自己可以在用软件打包时更改那个.BAT或.bash的批处理脚本,将-p 后改为自己的移动系统的实际路径。由于各个机器的认盘顺序不同,我就没有改,用时自己改就行启动了,只不过麻烦一些。
  当然也可以做个菜单,将其放到esp分区的/boot/grub/grub.cfg中,更简便。

B,使用linuxt重新生成的/efi/kali2020-mob/grubx86.efi,改名为bootx86.efi复制到/EFI/boot/下。
#yum install grub2-efi-x64-modules /#apt-get install grub2-efi-x64-modules
#mkdir /media/efi
#mount /dev/sda1 /media/efi
#grub-install --target=x86_64-efi --efi-directory=/media/efi --bootloader-id=kali2020-mob
可能会报错,但已生成/efi/kali2020-mob/grubx86.efi
使用linuxt重新生成的/efi/kali2020-mob/grubx86.efi,改名为bootx86.efi复制到/EFI/boot/下。
Uefi only启动后,正常启动。

猜你喜欢

转载自blog.csdn.net/seaship/article/details/111428690