我正在尝试编译一个内核(修改后的2.6.32.9版本,在这里可以找到https://github.com/rabeeh/linux-2.6.32.9)。我正在模拟ARM系统(qemu)上进行编译(是的,我可能应该交叉编译,但这是一个不同的主题),运行Ubuntu (https://wiki.ubuntu.com/Core)和从Ubuntu11.04(从http://ports.ubuntu.com/ubuntu-ports/dists/natty/main/installer-armel/current/images/versatile/netboot/vmlinuz下载)的内核(vmlinuz)。
运行make bzImage后,我查看arch/arm/boot文件夹,只找到一个名为zImage的文件。我尝试使用这个zImage而不是qemu中从ubuntu.com下载的vmlinuz,但这不起作用,只是显示了一个黑屏。我想zImage和bzImage不一样,我认为vmlinuz (从互联网上的不同文章判断)就是这样。
所以,有几个问题:
为什么bzImage/vmlinuz?
上有很多指南
谢谢
发布于 2012-03-03 17:20:29
我通过要求qemu模拟与arm926ej-s不同的cpu,得到了您描述的结果。但是,使用默认的cpu引导多功能轻量级程序是可行的。我已经交叉编译了我的内核,并且编译了所有的驱动程序(所以我不使用initrd)。
只要从http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/下载100 it的arm-eabi工具链(它是免费的,但是他们想要你的电子邮件,就像x86英特尔编译器一样)。它有一个安装程序,只需说“下一步”,直到它完成,就像在Windows上一样。然后将bin目录添加到路径中:
export PATH=~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/:$PATH然后返回到内核源代码dir并执行
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根,这是很简单的,但是如果您使用的是磁盘映像,则需要这样做:
。
要使用磁盘在qemu中引导,您需要正确的驱动程序(SYM53C8XX SCSI)。通用的defconfig不选择这些。
发布于 2012-03-01 10:19:44
bzImage文件名和make目标最初是x86特定的(大zImage)。许多在架构上的引导加载器并不等同于裸金属x86 (SPARC、PPC、IA64等,以及Xen on *)直接采用vmlinux (或其压缩形式之一,例如vmlinux.gz,又名zImage)。我想有些维护人员只是添加了bzImage作为make目标名,因为他们也想让x86变得疯狂。
https://stackoverflow.com/questions/9512669
复制相似问题