1.从GitHub上下载树莓派Linux内核,通过Vmware共享文件上传到Ubuntu中,用unzip解压。
GitHub - raspberrypi/linux at rpi-4.14.y
2.内核配置:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
(此命令功能是获取bcm2709_defconfig的配置到 .config里。我们可以直接用工程里的配置,但这样的话可能会丢失原来使用的树莓派的配置,这里提供一个方法可以获取当前正在使用的树莓派的config。)
3.编译
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
j4:指定用多少电脑资源进行编译
zImage:zImage生成内核镜像
modules:modules要生成驱动模块
dtbs:dtbs生成配置文件
等待20分钟左右,编译成功后,看到源码树目录多了vmlinux,失败则无此文件成功后,目标zImage镜像arch/arm/boot底下
编译完成后就需要放到树莓派上运行,运行之前还需做一些额外的配置。
4.打包zImage成树莓派可用的xxx.img.
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
5.挂载树莓派sd卡
- mkdir data1
- mkdir data2
- sudo mount /dev/sdb1 data1
- sudo mount /dev/sdb2 data2
一个fat分区,是boot相关的内容,kernel的img。
一个是ext4分区,也就是系统的根目录分区。
5.安装modules, 设备驱动文件: hdmi ,usb ,wifi, io …
安装更新 kernel.img 文件,注意镜像名字是kernel7.img,
先备份:
cp kernel7.img kernel7OLD.img
再把编译新生成的拷贝到data1,起名kernel7.img:
cp kernel_new.img /home/chenlc/data1/kernel7.img
拷贝配置文件:
- cp arch/arm/boot/dts/.*dtb* /home/chenlc/data1
- cp arch/arm/boot/dts/overlays/.*dtb* /home/liujiaxin/data1
- cp arch/arm/boot/dts/overlays/README /home/liujiaxin/data1
6.把SD卡插回树莓派,通过串口登录即可看到已启动新内核或者输入uname -r查看内核版本号。