建立内核后找不到vmlinuz和initrd?


9

在使用make配置和构建内核之后,为什么我没有vmlinuz-<version>-default.imgand initrd-<version>.img,却只有一个巨大的vmlinux二进制文件(〜150MB)?


4
你忘了跑步make bzImage吗?另外,您是否制作了单片内核?您是否正在运行类似Debian的操作系统?如果是这样,并且您没有交叉编译,则有更简单的方法来构建内核。
Alexios

我在OpenSUSE中对其进行了编译(但是,我从下载了最新的源代码kernel.org)。之后make menuconfig,我输入make并让它完成工作。
2012年

1
您需要make bzImage生成bzImage内核。说make help看一些简短的说明。查看Linux Kernel Howto以获取详细说明。如果您make menuconfigY(而不是M)回答了每个问题,则尝试将每个驱动程序都包含在内核中。这是一个非常非常糟糕的主意,并且由于内核太大而无法启动。该initrd图像由其他工具生成。
Alexios,2012年

我刚刚再次检查了配置。似乎我尚未启用可加载内核模块支持。我认为这是默认设置。我将尝试再次编译,并在完成时通知。
Amumu

上面的很多评论对我来说都是不错的答案。
James Youngman

Answers:


9

压缩的图像在下方arch/xxx/boot/xxx是拱。例如,对于x86amd64,我有在压缩图像/usr/src/linux/arch/x86/boot/bzImage,沿/usr/src/linux/vmlinux

如果仍然没有该映像,请检查是否bzip2已安装并且可以正常工作(但是我想这是否是问题所在,您会收到描述性错误消息,例如“未找到bzip2”)。

另外,内核配置允许您选择压缩方法,因此,如果更改了该内核设置,则实际文件名和压缩算法可能会有所不同。

正如其他人已经提到的那样,initrds 不是由linux编译过程生成的,而是由其他工具生成的。请注意,除非出于某种原因需要外部文件(例如,需要模块或udev来标识或挂载/),否则不需要initrd来启动。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.