首页 文章

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

提问于
浏览
1

我正在尝试编译内核(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 回答

  • 4

    我通过要求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目录添加到您的路径:

    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的主机内核)或

    • qemu-nbd支持qcow(并且依赖于具有网络块设备支持的主机内核)

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

  • 0

    bzImage filename和make target最初是x86特有的(大zImage) . 架构上许多不等于baremetal-x86(SPARC,PPC,IA64等以及Xen on *)的引导加载程序直接采用 vmlinux (或其压缩形式之一,例如 vmlinux.gz ,又名zImage) . 我想一些维护者只是将bzImage添加为make目标名称,因为他们想要在他们的拱门上也有x86疯狂 .

相关问题