树莓派源码内核配置(二)

再多嘴一句:树莓派LINUX源码配置,是为了驱动代码的编写,驱动代码编译需要一个提前编译好的内核,编译内核就必须配置,配置的最终目标是形成.config文件,该文件知道makefile去把有用的东西组织成 内核。

getconf LONG_BIT命令查看是几位的操作系统

64位系统参考此链接:https://mp.weixin.qq.com/s/05Hr5Z9hyTkAVekDvG6yeQ

 接上节:

 inux源码中有很多工程:
树莓派1的工程是bcmrpi_defconfig;
树莓派2、3的工程是bcm2709_defconfig。

树莓派4是 bcm2711_defconfig 且内核是kernel7l

我们可以在传过去的Linux解压出来的工程文件夹下执行:find . -name *._defconfig .找到这些工程

以下环节都在解压出来的文件价下执行

1.执行内核配置命令:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig


  如果是pi4运行如下命令:
   KERNEL=kernel7l
  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

  或者 make  KERNEL=kernel7l ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

  有报错根据报错安装必要的库:

  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

  有的还需要:

  flex和bison库

如图:

 

 之后继续执行以上命令。

2。接下来编译:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs 一般编译过程需要20分钟左右。如果提前结束报错。

(如果是pi4就是kernel7l)

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7l make -j4 zImage modules dtbs 

  可能早安装以下依赖库:

  sudo apt install openssl

  sudo apt install libssl-dev

  再编译即可正常编译,判断编译有没有成功,就在此文件夹下看有没有生成vmlinux这个文件

 

 

3.然后再进到这个文件夹下,这个zInamge就是我们想要的东西

 

 接下来打包(亲测pi4 5.10系统版本ubuntu18-04跳过此打包步骤),将zImage打包成树莓派可用的xxx.img:

  在Linux-rpi。。。文件夹下运行./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img 使用源码包自带的工具打包,这个我们kernel_new.img我们等下就要放到树莓派sd卡中

这里我们5.10版本太高会提示找不到mkknlimg。是因为这个打包工具淘汰了。我的解决办法是去github在这4.几版本的linux源码,解压在scripts文件夹下找到这个工具拷贝过去。再运行

4.镜像拷贝:

  插入sd卡到电脑,连接都虚拟机,可用dmesg命令查看连接情况

  挂载树莓派SD卡,桌面目录下(方便),mkdir data1 data2。

  挂载U盘: sudo mount /dev/sdb1 data1 一个是fat分区,是boot相关的内容,kernel的img

      sudo mount /dev/sdb2 data2 一个是ext4分区,也就是系统的根目录

  安装modules,设备驱动文件(这条指令要在Linux解压出来的文件夹下运行):sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7(同理如果是pi4这里是kernel7l) make INSTALL_MOD_PATH=[ext4] modules_install  这个wxit对应data2根目录绝对路径

  pi4:

     sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7l make INSTALL_MOD_PATH=/home/ht/data2 modules_install 

  备份:卡里原本的镜像文件:

  cd /home/chenlc/data1 

  cp kernel7.img kernel7OLD.img

再把编译生成的拷贝到data1,起名kernel7l.imgcp kernel_new.img  /home...../kernel7l.img  或者编辑 [fat]/config.txt 文件,在最后加入一行:kernel=kernel_new.img(pi4亲测可行)

5、复制其他相关文件 注意fat分区对应我们自己的data1分区绝对路径
cp arch/arm/boot/dts/.*dtb* [fat]/
cp arch/arm/boot/dts/overlays/.*dtb* [fat]/overlays/
cp arch/arm/boot/dts/overlays/README [fat]/overlays/ 

更新完成后插回树莓派即可开机,开机后可以用 uname -a 命令查看kernel信息已经改变。

 

 

posted @ 2023-02-24 19:41  HxxxTENCTION  阅读(318)  评论(0编辑  收藏  举报