【问题标题】:What is the file type of a kernel (Linux kernel for example)?内核的文件类型是什么(例如 Linux 内核)?
【发布时间】:2015-06-22 13:25:21
【问题描述】:

总的来说,我对 Linux 内核和操作系统非常感兴趣。 我想知道的是,内核的文件类型或扩展名是什么? 它显然没有 .exe 或 .out 扩展名,因为它们用于安装在操作系统上的应用程序。

内核只是二进制文件吗?

奖金问题: 我知道 Linux Kernel 源代码分为许多 .c 文件,但我想知道在编译时是否将所有这些文件编译成单个二进制文件或外部链接?

(我希望我的问题不要含糊)

【问题讨论】:

  • 要回答你的额外问题,编译一个内核,你会看到(这个过程足够冗长,你可以告诉你发生了什么,但没有那么冗长,以至于用 gcc 输出淹没你)。至于你帖子的其余部分,内核是一个二进制文件,通常没有扩展名。
  • 在内核可执行文件上尝试file 命令。 (对不起,我不知道完整路径,我现在不在Linux机器上)file知道的不仅仅是文件扩展名,还有架构等细节.

标签: linux linux-kernel


【解决方案1】:

Linux 内核(或任何其他操作系统内核)只是一个二进制映像,其中包含目标架构的机器代码。它有点像一个静态链接的可执行文件,因为在运行之前没有操作系统来链接任何依赖项,因此一旦加载到主内存中,它就可以在没有任何其他帮助程序的情况下执行。这并不意味着它不能动态加载任何其他模块。在 Linux 中,当您从用户空间加载模块时,很容易看到这种行为(这与加载 .so 文件的过程不同)。

该图像可能会在存储到文件系统之前被压缩,这就是为什么您可能会从“文件”中得到类似这样的输出:

文件 /boot/vmlinuz-2.6.39-400.215.7.el6uek.x86_64

/boot/vmlinuz-2.6.39-400.215.7.el6uek.x86_64:Linux 内核 x86 启动可执行文件 bzImage,版本 2.6.39-400.215.7.el6uek.x86_64,RO-rootFS , swap_dev 0x3, 普通 VGA

【讨论】:

    【解决方案2】:

    内核可能包含也可能不包含单个文件。当您在某个 USB 或驱动器上刻录 OS 映像时,它会更改该 USB 或驱动器的文件系统,并且操作系统可以轻松搜索 .bin 文件,因此完成此链接。是的,内核可以是 exe 文件。我刚刚创建了一个只有一个 exe 文件的小内核。

    可以制作独立于操作系统的 exe 文件。 check here 看到只有一个exe文件的内核。还有check this 看看如何链接多个二进制文件。

    【讨论】:

      猜你喜欢
      • 2017-04-08
      • 2014-11-13
      • 2013-08-31
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2019-07-28
      • 2016-05-30
      • 2014-05-07
      相关资源
      最近更新 更多