在QEMU和OVMF中启动Linux内核时为何出现“Command Error Status: Unsupported”错误?
解决OVMF EFI shell启动内核提示"Command Error Status: Unsupported"的问题
问题原因
QEMU的-kernel选项是通过自身内置加载器启动内核,不要求内核具备EFI可执行能力;但在OVMF的EFI shell中直接执行内核文件,必须要求内核编译时启用EFI stub支持,生成符合EFI规范的可执行镜像。你的内核能通过-kernel启动,说明内核功能正常,但缺少EFI stub支持,导致EFI shell无法识别执行。
修复步骤
重新配置内核,开启EFI stub相关选项
进入内核配置界面(如make menuconfig),确保以下选项启用:CONFIG_EFI=y(启用EFI系统支持)CONFIG_EFI_STUB=y(启用EFI stub,让内核成为EFI可执行文件)CONFIG_CMDLINE_BOOL=y并设置CONFIG_CMDLINE="root=/dev/sda1 rw console=ttyS0"(根据实际根分区和控制台参数调整,可选但建议设置,避免启动后无输出)- 可选开启
CONFIG_RELOCATABLE=y,提升EFI环境下内核重定位的兼容性
重新编译并安装内核
执行编译命令:make && make modules_install编译完成后,用
file vmlinuz-6.2.1验证镜像格式,输出应包含EFI application字样,说明内核已具备EFI执行能力。替换镜像并验证启动
将新生成的vmlinuz-6.2.1复制到OVMF识别的FAT格式EFI分区(即之前的fs0:对应的分区),在EFI shell中执行:fs0:\vmlinuz-6.2.1若需要指定启动参数,可追加参数,例如:
fs0:\vmlinuz-6.2.1 root=/dev/sda1 rw console=ttyS0
内容的提问来源于stack exchange,提问作者Kuraga
相关产品推荐
相关产品推荐

