Raspberry 4B之编译内核

Raspberry 4B之编译内核

起因:因为官方镜像内核版本是5.x版本,比较高,需要使用4.x版本的内核做日常使用和学习用,遂进行此操作。
目标内核版本: 4.20.x

步骤:
1.下载内核:
官方内核地址(raspberry维护非linux组织)
https://github.com/raspberrypi/linux

sudo apt-get install git
git clone -b rpi-4.20.y --depth 1 https://github.com/raspberrypi/linux.git

2.安装编译交叉工具

sudo apt-get install  -y gcc-arm-linux-gnueabihf

3.使用的arm架构下的bcm2711_config,若要使用arm64位架构的默认配置文件,可自行更改

make -j8 0=build ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

4.自己再进行添加自己想要的配置(或减少)

make -j8 0=build ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

注:若命令有出错的地方,提示缺少哪些包,自行查找安装即可

apt-cache search "缺少的文件" #会查找出提供功能的包,然后安装即可
  1. 编译
make -j8 0=build ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bzImage modules #-j8参数是使用的线程数编译,比如-j4就是使用4线程编译

或者可以编译成deb包的形式,后面使用方便

make -j8 0=build ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- deb-pkg

注:上面两个方法在使用gcc >= 10版本时会出错:

multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here

需要手动注销scripts/dtc/dtc-lexer.l中对yylloc的声明,为什么改这个文件不改.c文件呢,主要原因是.c文件是这个文件生成的,在编译安装包的形式中体现的更加明显

vim scripts/dtc/dtc-lexer.l

如下图41行:

6.编译dtb

make -j8 0=build ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs 

7.进入目录将编译好的dtb打包

cd arch/arm/boot
tar cvf dtb.tar dts/b*.dtb dts/overlays/*.dtb 

8.接下来就很简单,只需要安装两个安装包,然后将dtb.tar解压,将里面的dtb文件copy到/boot下面,再将/boot下的内核文件进行改名操作

sudo dpkg -i linux-image-4.20.17-v7l+_4.20.17-v7l+-1_armhf.deb 
sudo dpkg -i linux-headers-4.20.17-v7l+_4.20.17-v7l+-1_armhf.deb 
tar xvf dtb.tar
cd dtc
sudo cp -rf * /boot
sudo mv vmlinuz-4.20.17-v7l+ kernel7l.img 

9.最后的处理工作。
只是这样的话,重启可能起不来,需要在/boot/config.txt中关闭"dtoverlay=vc4-fkms-v3d"选项。如下图61行所示:
在这里插入图片描述
然后大工搞成!
特此贴为记录,方便自己也方便他人。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值