编译内核 - 没有生成bzImage / vmlinuz

时间:2012-03-01 08:11:42

标签: linux linux-kernel kernel arm qemu

我正在尝试编译内核(更改版本的2.6.32.9,在此处找到https://github.com/rabeeh/linux-2.6.32.9)。我在模拟ARM系统(qemu)上进行编译(是的,我应该交叉编译,但这是一个不同的主题)运行Ubuntu Core(https://wiki.ubuntu.com/Core)和内核(vmlinuz) )来自Ubuntu 11.04(从http://ports.ubuntu.com/ubuntu-ports/dists/natty/main/installer-armel/current/images/versatile/netboot/vmlinuz下载)。

运行make bzImage后,我查看arch/arm/boot文件夹,找到一个名为zImage的文件。我尝试使用这个zImage而不是我在qemu从ubuntu.com下载的vmlinuz,但这不​​起作用,只是显示黑屏。我猜zImage与bzImage不一样,这就是我认为vmlinuz(从互联网上的不同文章来看)。

所以,有几个问题:

  1. 为什么make bzImage没有产生bzImage / vmlinuz?
  2. 我可以使用例如mkimage将vmlinux转换为vmlinuz(对面有很多指南......)?
  3. 由于

2 个答案:

答案 0 :(得分:4)

bzImage文件名和make目标最初是x86特定的(大zImage)。架构中许多不等于baremetal-x86(SPARC,PPC,IA64等以及Xen on *)的引导加载程序直接使用vmlinux(或其中一种压缩格式,例如{{1} },又名zImage)。我想一些维护者只是将bzImage添加为make目标名称,因为他们也希望在他们的拱门上有x86疯狂。

答案 1 :(得分:0)

我通过要求qemu模拟与arm926ej-s不同的cpu来获得您描述的结果。但是启动versatilepb与默认的cpu工作。我已经交叉编译了我的内核,并将所有驱动程序编译进去(所以我不使用initrd)。

只需从http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/下载100MB arm-eabi工具链(它是免费的,但是他们想要你的电子邮件,比如x86英特尔编译器)。它有一个安装程序,只需说“下一步”,直到完成,就像在Windows上一样。然后将bin目录添加到路径中:

export PATH=~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/:$PATH

然后返回你的内核源代码并执行

make ARCH=arm CROSS_COMPILE=arm-none-eabi- menuconfig
make ARCH=arm CROSS_COMPILE=arm-none-eabi- zImage modules

你可以做到

sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- INSTALL_MOD_PATH=path_to_arm_root modules_install

如果您可以从主机访问您的ARM文件系统。如果你使用NFS root它很简单,但如果你使用的是磁盘映像,你需要:

  • 使用原始磁盘映像和kpartx(取决于具有dm-multipath的主机内核)或
  • 支持qcow的qemu-nbd(并且依赖于具有网络块设备支持的主机内核)

要在带有磁盘的qemu中启动,您需要正确的驱动程序(SYM53C8XX SCSI)。多功能的defconfig不会选择那些。