如何为 Raspberry Pi 编译自定义内核

如何为 Raspberry Pi 编译自定义内核

我正在尝试运行Ubuntu 14 Raspberry Pi ARM 映像在 QEMU 中,为此我需要与映像中使用的版本相匹配的内核。

如果我安装映像并运行,file vmlinuz我会看到:

vmlinuz: symbolic link to `boot/vmlinuz-3.18.0-20-rpi2'

所以我将其解释为图像使用内核版本 3.18.0。

使用本指南,我尝试编译这个版本的内核,我正在使用它:

TOOLCHAIN=arm-linux-gnueabihf

sudo apt-get update && sudo apt-get install git libncurses5-dev gcc-arm-linux-gnueabihf
git clone https://github.com/raspberrypi/linux.git
cd linux
# checking out 3.18.0+ branch - change it if you want to change kernel version
# for kernel specific hash, have a looks at : https://github.com/raspberrypi/linux/commits/rpi-3.18.y
# git checkout 1bb18c8f721ef674a447f3622273f2e2de7a205c
make ARCH=arm versatile_defconfig
cat >> .config << EOF
CONFIG_CROSS_COMPILE="$TOOLCHAIN"
CONFIG_CPU_V6=y
CONFIG_ARM_ERRATA_411920=y
CONFIG_ARM_ERRATA_364296=y
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y
CONFIG_PCI=y
CONFIG_SCSI=y
CONFIG_SCSI_SYM53C8XX_2=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_TMPFS=y
CONFIG_INPUT_EVDEV=y
CONFIG_EXT3_FS=y
CONFIG_EXT4_FS=y
CONFIG_VFAT_FS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_VFP=y
CONFIG_CGROUPS=y
CONFIG_MMC_BCM2835=y
CONFIG_MMC_BCM2835_DMA=y
CONFIG_DMADEVICES=y
CONFIG_DMA_BCM2708=y
EOF

make savedefconfig
#make -j 4 -k ARCH=arm CROSS_COMPILE=${TOOLCHAIN}- menuconfig
make -j 4 -k ARCH=arm CROSS_COMPILE=${TOOLCHAIN}- bzImage
cd ..
cp linux/arch/arm/boot/zImage kernel-qemu-3.18

但是,当我使用 qemu-system-arm 运行该内核时,出现错误:

Error: unrecognized/unsupported processor variant (0x410fb767).

另外,我注意到 make 命令删除了我对.config文件的更改。

我该如何修复这个错误?

我可以使用映像中的 vmlinuz 文件而不是从头开始编译自己的文件吗?

相关内容