You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

64位UEFI Ubuntu环境下Linux内核入口点相关技术问询

Linux内核引导相关问题解答

问题1:Linux内核的入口点在哪里?

针对x86_64架构的Linux内核,入口点分两种场景:

  • 传统BIOS引导:压缩内核的入口是arch/x86/boot/compressed/head_64.S里的startup_32,引导加载器会以32位保护模式启动内核,之后内核自行切换到64位模式并完成自身解压。
  • 64位UEFI引导:内核支持直接以64位模式启动,入口是arch/x86/boot/compressed/head_64.S里的startup_64,此时引导加载器会在64位UEFI模式下直接调用这个入口。

问题2:/arch/x86/boot/compressed/head_64.S中的startup_32是否为正确的入口点?

startup_32是压缩内核的32位入口点,但并非所有场景的正确入口:

  • 在传统BIOS引导环境下,GRUB等引导加载器会以32位模式加载内核,此时startup_32就是入口,它负责初始化32位环境、切换到64位长模式、解压内核镜像。
  • 但在64位UEFI引导环境下,引导加载器会直接调用startup_64,startup_32不会作为入口被执行。

问题3:若内核设置为64位,是否意味着其在grub2中以32位模式运行?

不一定,完全取决于引导环境:

  • 传统BIOS环境:GRUB2是32位的(因BIOS本身为16位/32位),它会以32位模式加载64位内核,之后内核自行完成从32位到64位的模式切换。
  • 64位UEFI环境:GRUB2是64位的,它会直接在64位模式下加载并启动64位内核,全程不会进入32位模式。

问题4:是否存在以startup_64作为入口点的引导加载程序?

当然存在。最典型的就是64位UEFI环境下的GRUB2,它会直接调用arch/x86/boot/compressed/head_64.S里的startup_64作为内核入口。此外,其他符合64位UEFI规范的引导加载器(比如systemd-boot)也支持直接以startup_64为入口启动64位Linux内核。


内容的提问来源于stack exchange,提问作者城山流二

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:59:51