我正在尝试编译内核(更改版本的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?由于
答案 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它很简单,但如果你使用的是磁盘映像,你需要:
要在带有磁盘的qemu中启动,您需要正确的驱动程序(SYM53C8XX SCSI)。多功能的defconfig不会选择那些。