首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vmlinuz.efi是什么?

vmlinuz.efi是什么?
EN

Ask Ubuntu用户
提问于 2013-08-09 10:58:46
回答 1查看 11.3K关注 0票数 6

是的,我知道这是一个内核;)

当我浏览13.04的64位ISO时,我看到了这个文件.我正在把它们重新混合到我的闪存盘上。然而,我希望我的混音与CD相比有一个更新的内核。这意味着我必须做一个vmlinux.efi。

当然,能做一个意味着我必须知道它是什么。

它仅仅是一个普通的64位内核吗?可能是EFI启动存根吗?

引导存根方面没有意义,因为它是从EFI中的GRUB加载的,甚至不在EFI/BOOT中。如果是EFI引导存根,也许只是未来的防伪?我在社区wiki上发现的一篇文章说了一些类似于“it it vmlinuz.efi”的内容,因为它是64位的。这看起来也有点奇怪。我的意思是,它有助于区分,但如果它不是EFI可引导的,那么可以选择一个更好的名称。

有一件事我觉得奇怪,那就是Isolinux和GRUB都以同样的方式加载它,就好像它只是一个内核.所以它的实际用途有点神秘。EFI引导存根也可以作为普通内核加载吗?

事实上,我找不到关于为什么选择这个文件名以及它到底是什么的讨论。所以,这里希望有人知道这是什么以及它是如何工作的。

编辑:

Ubuntu、Kubuntu、Xubuntu和Lubuntu CD的所有内核的Info/MD5's:

代码语言:javascript
复制
DISTRO: lubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: kubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: xubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: ubuntu
vmlinuz.efi: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
1919b5acd184538ecb978f6361f98bf1  vmlinuz.efi

来自Ubuntu的一个显然是不同的。我开始觉得那一定是个EFI启动存根内核..。但仍然没有找到任何可以证实或否认的东西。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2013-08-09 15:17:54

EFI存根加载器是内核的一个组件,而不是单独的程序。当EFI存根加载器包含在内核中时,该内核文件看起来就像EFI中的普通EFI程序,但它仍然是一个普通的内核,可以由通常的Linux引导加载程序加载-- GRUB、LILO、ELILO、SYSLINUX等等。EFI存根自内核3.3.0和AFAIK (自那时以来构建的所有Ubuntu )都包含了这个特性以来就已经可用了。

没有法律规定使用EFI存根加载器的内核必须有以.efi结尾的文件名。实际上,安装到硬盘上的内核缺少.efi文件扩展名;这似乎是安装盘上的内核所独有的,至少在Ubuntu中是如此。不过,除非有.efi扩展,否则EFI不会运行程序。因此,给出文件名的内核为高级用户提供了一种恢复和测试的方法,而这些高级用户本来是不可用的--即从EFI shell手动启动内核。我不能肯定,但我怀疑Ubuntu开发人员现在以这种方式命名他们的内核,以提供启动内核的备份手段,或者仅仅是为了表明它确实包含EFI存根支持。OTOH,32位Ubuntu安装光盘的内核没有.efi扩展,但它确实包括EFI存根支持。我怀疑Ubuntu开发人员只是没有始终如一地命名他们的内核。

可以从磁盘上的任何位置启动EFI应用程序(例如具有EFI存根支持的Linux内核)。"casper“子目录不是引导加载程序通常驻留的位置,但是可以从那里启动EFI程序。

不管你读到什么消息,它都说64位内核有一个.efi扩展,因为它是64位内核,是错误的。在实践中,32位版本的Ubuntu有一个缺少这个扩展的内核,所以在Ubuntu世界中是有关联的,但是没有因果关系。在Linux中,.efi扩展并不表示64位内核--有很多64位内核没有这个扩展,在基于32位UEFI的计算机上命名一个32位内核可能是可取的(尽管Ubuntu不这样做)。该文件名扩展只是标识一个EFI应用程序,它可以是32位(x86/IA-32),64位(x86-64/ an 64),或者其他架构(ARM或Itanium)。

票数 6
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/330541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档