>_下载4.1.4版本内核、
_>从这拉
全过程参考这个说明书:
https://www.raspberrypi.com/documentation/computers/linux_kernel.html
>_配置cross compile environment,需要apt 这些pkg-config、ncurses、flex、bison、...依赖
sudo apt install bc bison flex libssl-dev make libc6-dev libncurses5-dev
>_config源码
>_在源代码目录下输入这四个参数
源代码目录下有arch、lib、Makefile、firmware等等常见的文件夹
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
把厂商的配置搞进.config
>_make menuconfig现在先不搞,写好驱动搞、
>_build_image
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
取决于cpu是几核的,我的虚拟机只有2,在make后加-j2,要编译接近一个小时。rpi/出现vmlinux,/arch/arm/boot/出现zImage则OK,另外arm-linux-gnueabihf-可能需要在~/.bashrc设置地址,也得自己找。
>_打包工具mkknlimg需要clone 4.1.4版本source
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
>_tf卡、挂载
_>输入:
fdisk -l
<_显示出只有sdb的,那你需要先刷个官网树莓派img镜像。手里的tf卡是全新的话,用树莓派官网的imager软件,在官网搜,选择好3B+和32bit的系统。官网刷进去的应该是这样。
这会儿
fdisk -l
你有
sdb
sdb1
sdb2
_>挂载,mnt/boot这个位置可以放到~/下,我觉得方便
mkdir mnt
mkdir mnt/boot
mkdir mnt/root
sudo mount /dev/sdb1 mnt/boot
sudo mount /dev/sdb2 mnt/root
_>安装modules
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=roof区挂载位置 modules_install
_>最后一步、替换内核,
sudo cp mnt/boot/$KERNEL.img mnt/boot/$KERNEL-backup.img
sudo cp arch/arm/boot/zImage mnt/boot/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb mnt/boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/boot/overlays/
sudo umount mnt/boot
sudo umount mnt/root
上电后是这样,版本变化了。
这里有个rpi 3b+的问题,就是我发现编译替换kernel就不能用GitHub上最新的source build,已经折腾了很多天,boot出来都直接一个闪烁的下划线
_
原先6.1.21的版本是用官网imager自动下载刷的,我从GitHub clone到本地6以上版本无论如何编译成功再刷机都是blink underline问题。就只有降版本到4.1.4才能成功替换内核么。
求大佬解答。