我正在尝试编译内核(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(从互联网上的不同文章判断) .
那么,有几个问题:
-
为什么
make bzImage
没有产生bzImage / vmlinuz? -
我可以使用例如mkimage将vmlinux转换为vmlinuz(对面有很多指南......)?
谢谢
2 回答
我通过要求qemu模拟与arm926ej-s不同的cpu来获得您描述的结果 . 但是启动versatilepb与默认的cpu工作 . 我已经交叉编译了我的内核,并将所有驱动程序编译进去(因此我不使用initrd) .
只需从http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/下载100MB arm-eabi工具链(在Windows上完成_3038657已完成 . 然后将bin目录添加到您的路径:
然后回到你的内核源码目录并做
你可以做
如果您可以从主机访问您的ARM文件系统 . 如果你使用NFS root它很简单,但是如果你使用的是磁盘映像,你需要:
使用原始磁盘映像和kpartx(取决于具有dm-multipath的主机内核)或
qemu-nbd支持qcow(并且依赖于具有网络块设备支持的主机内核)
要使用磁盘在qemu中启动,您需要正确的驱动程序(SYM53C8XX SCSI) . 多功能defconfig不会选择那些 .
bzImage
filename和make target最初是x86特有的(大zImage) . 架构上许多不等于baremetal-x86(SPARC,PPC,IA64等以及Xen on *)的引导加载程序直接采用vmlinux
(或其压缩形式之一,例如vmlinux.gz
,又名zImage) . 我想一些维护者只是将bzImage添加为make目标名称,因为他们想要在他们的拱门上也有x86疯狂 .