浅尝辄止51-编译树莓派内核

最近入手了树莓派,鉴于目前从事的工作,不摆弄一下它的内核是说不过去的。

官方资源

github的树莓派官方
树莓派官方内核
编译内核官方文档

编译

按照官方文档,我的部分编译步骤如下。

cd linux
KERNEL=kernel7
make bcm2709_defconfig
make -j4 zImage modules dtbs
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
sudo reboot

Troubleshooting

我遇到编译错误是,arch/arm/boot/dts/arch/arm/boot/dts/overlays/下面的文件都找不到include/dt-bindings/下面的一些头文件,实际上是找不到dt-bindings目录。单独执行make dtbs就可以很清楚地看到错误。
解决错误的方法就是像下面这样,在编译时把include的据对路径加到DTC_INCLUDE里面。

make DTC_INCLUDE+="/home/pi/linux/include" dtbs

验证

为了验证内核是否成功替换,我们不妨改一下代码,编译和替换内核之后,再看一下打印。
我加在了我熟悉的文件里面,在fs/fat/namei_vfat.cinit_vfat_fs函数里面加一些打印,修改结果如下。

static int __init init_vfat_fs(void)
{
    printk("************\n");
    printk("hello world!\n");
    printk("************\n");
    return register_filesystem(&vfat_fs_type);
}

输出

重启之后,键入dmesg就可以看到内核的开机打印,其中就可以找到如下打印。

[    0.170461] ************
[    0.170466] hello world!
[    0.170470] ************

你可能感兴趣的:(浅尝辄止51-编译树莓派内核)