本文为笔者学习过程中的笔记,开发平台为树莓派3B。若有错误之处,欢迎指出。
sudo apt-get install bc sudo apt-get install libncurses5-dev libncursesw5-dev sudo apt-get install zlib1g:i386 sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig //指定ARM架构 指定编译器 树莓派 主要核心指令
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig
出现以下画面:
一般就选择exit退出就可以了,证明.config文件没问题了,然后检查.config文件是否存在问题,一般能顺利进入界面然后退出就可以了。注:记得把Enable loadable module support选上,以后编译内核需要本地模块支持。
编译:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
指令说明:
注意:只要跑起来一分钟内没有出错,就说明前面配置没有出错。
等待大约20分钟左右,就编译完成了。
编译成功后,看到源码树目录多了 vmlinux,失败则无此文件
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
注意:这里打包有时候会失败,具体啥原因我也没有找到。如果失败,就乖乖的再编译一次内核
cd /home/cjh mkdir data1 data2
sudo mount /dev/sdb1 data1 //一个fat分区,是boot相关的内容,kernel的img sudo mount /dev/sdb2 data2 //一个是ext4分区,也就是系统的根目录分区
cd /SYSTEM/linux-rpi-4.14.y sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/cjh/data2 modules_install
cd /home/cjh/data1 cp kernel7.img kernel7OLD.img
cp kernel_new.img /home/cjh/data1/kernel7.img
cp arch/arm/boot/dts/.*dtb* /home/cjh/data1 cp arch/arm/boot/dts/overlays/.*dtb* /home/cjh/data1/overlays/ cp arch/arm/boot/dts/overlays/README /home/cjh/data1/overlays/ //没啥用可以不拷贝
sudo umount /dev/sdb1 sudo umount /dev/sdb2
将SD卡插入到树莓派中,上电,查看。
ok ,大功告成。