- 主题:如何生成/boot/efi/EFI/opensuse/grub.cfg
最近安装了opensuse15.4,选择加密硬盘,安装程序自动分两个区,efi分区和luks加密分区,/boot直接放在luks分区。
这和以前的不一样,以前是生成efi分区,boot分区,luks加密分区,启动的时候efi从efi分区读到文件后就寻找/boot分区的/boot/grub2/grub.cfg文件。
现在opensuse是启动的时候首先从EFI分区读取/EFI/opensuse/grub.cfg文件,然后提示输入密码打开luks分区,输入密码后grub打开luks分区,加载/boot里的grub,才开始正常启动。
EFI分区的/EFI/opensuse文件夹曾经被我删过,用rescue的方法进去grub2-install /dev/sda和grub2-mkconfig > /boot/grub2/grub.cfg都无法生成EFI/opensuse/grub.cfg文件。搜了一圈都是用grub2-mkconfig生成/boot/grub2下的grub.cfg而没有生成EFI/opensuse/grub.cfg文件。
请问各位大拿们如何才能生成EFI/opensuse/grub.cfg文件。
PS:我从其它地方拷贝了EFI/opensuse/grub.cfg,这个文件的内容如下
cryptomount -u 72a1f8f38ebf46fc85cd96e87cad50ce
search --fs-uuid --set=root 1406e59c-ca35-409e-b89a-b887ffdea341
set prefix=(${root})/boot/grub2
source "${prefix}/grub.cfg"
--
FROM 59.40.9.*
编辑容易,就是想弄清楚最开始怎么生成的。这样以后可以移植到其它发行版本上。
【 在 yangtou 的大作中提到: 】
: 自己编辑下就行了,就是set root fsfind然后configfile
--
FROM 59.40.9.*
你说的grub.cfg文件是引导进入操作系统配置文件。如果把/boot分区放到加密分区里,grub是找不到这个/boot/grub2/grub.cfg文件的。
grub在某个版本之后支持直接打开加密分区,然后读取加密分区里的/boot/grub2/grub.cfg文件,再进入操作系统。但是grub启动的时候需要知道打开哪个加密分区,所以就有了efi文件夹下的grub.cfg。
我说的就是efi文件夹里的grub.cfg,grub启动时,先读这个efi文件夹下的grub.cfg引导,找到对应的加密分区,然后提示输入密码把加密解开,再找到/boot/grub2/grub.cfg文件,再从这个文件引导。
【 在 adoal 的大作中提到: 】
: grub-mkconfig会根据当前硬件和文件系统情况生成一个初始版本
:
--
FROM 59.40.9.*
生成/boot/efi/EFI/opensuse/grub.cfg 的命令找到了,是在yast的log里找到的:
/usr/sbin/shim-install --config-file\=/boot/grub2/grub.cfg
--
FROM 59.40.9.*
这个运行了,是不会产生的efi目录下的grub.cfg的。
最近发现运行这条命令后,没有efi的grub.cfg好像也能自己找到对应系统的grub
运行grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch --recheck后,只生成grubx64.efi文件,但是实际能找到对应系统的grub(我的是多系统)
【 在 yangtou 的大作中提到: 】
: 安装efi grub的时候生成的
: grub-install --target=x86_64-efi --efi-path=/path-to-efi-dir --boot-dir=/path-to-grub-dir
: 默认自动引用/boot/grub下的grub.cfg,这个用update-grub更新
: ...................
--
FROM 59.40.9.*
efi-directory没挂载错,我系统里只有一个EF00,挂载的就是这个,挂在/boot/efi下。
grub版本是也查了版本号2.06。
【 在 yangtou 的大作中提到: 】
: 怀疑你的结果
: 我测试了下,Ubuntu上grub-install是会生成grub.cfg的。
: efi-directory指定efi分区的挂载目录,这样会在efi分区的/EFI/Ubuntu/下生成grub.efi和grub.cfg。这个目录在Ubuntu上默认是/boot/efi。
: ...................
--
FROM 120.229.69.*
这个也可以破案了,需要在bios中打开secure boot,Debian就会生成efi文件夹中的grub.cfg,而opensuse直接用我5楼提到的命令就可以生成efi文件夹中的grub.cfg。
--
FROM 59.40.10.*