EVD*_*KSP 1 linux linux-kernel
总的来说,我对 Linux 内核和操作系统非常感兴趣。我想知道的是,内核具有的文件类型或扩展名是什么?它显然没有 .exe 或 .out 扩展名,因为它们用于安装在操作系统上的应用程序。
内核只是一个二进制文件吗?
额外问题:我知道 Linux 内核源代码分为许多 .c 文件,但我想知道,在编译时,所有这些文件是编译成一个二进制文件还是外部链接?
(我希望我的问题不要含糊不清)
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 kernel x86 boot executable bzImage , version 2.6.39-400.215.7.el6uek.x86_64, RO-rootFS, swap_dev 0x3, Normal VGA