【树莓派4B】linux内核配置+编译+挂载

linux源码配置

实现声明:树莓派4b以下步骤指定的内核文件均是kernel7l,树莓派3b是kernel7
驱动代码的编写需要一个提前编译好的内核,所以烧入树莓派的linux内核需要提前配置。

内核源码获取

链接1中选取自己需要的内核源码,下载后将压缩包传入ubuntu虚拟机中进行配置、编译

解压.tar.gz的压缩包:

sudo xz -d 文件路径
sudo tar -xvf 文件路径

#或者:
sudo tar xf ./linux-rpi-5.15.y.tar.gz

第一种方式

复制厂家配的linux内核源码,如树莓派的厂家就配置好的工程信号:
树莓派2/3:bcm2907_defconfig
树莓派4:bcm2911_defconfig

然后将这个源码复制入我们需要用的.config文件

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

第二种方式

一项项配置源码(基于我们需要挂载的芯片厂家的操作手册)
由于要进入图形页面交互所以,需要我们下载ncurses
下载地址:https://ftp.gnu.org/pub/gnu/ncurses/

tar -zxvf ncurses-6.2.tar.gz
cd ncurses-6.2
./configure
make
make install
ls /usr/lib/libnc*
/usr/lib/libncurses.a  /usr/lib/libncurses_g.a

如果make错误,就加个超级权限试试看
然后输入指令交互编辑内核源码:

 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7l make menuconfig

在这里插入图片描述
每个选项前面可以显示我们需不需要这个内核驱动,左右键切换
Y为表示该驱动需要编辑进内核
M为表示以模块生成驱动文件,系统启动后通过命令inmosd xxx.ko加载
空为不需要

内核编译

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

可能会出现编译错误是工具不行要安装最新工具

sudo apt install libssl-dev

安装成功后能在==./arch/boot/目录底下看到文件:zImage==,和==./vmlinux==

内核移植内核安装到TF卡

将TF卡接到Linux交叉编译主机上(如果是VMwar虚拟机,则需要将"设置->硬件->USB控制机->USB兼容性©”调成“USB 1.1”)

运行lsblk命令查看识别到的TF卡设备节点,如下:

linux@ubuntu:~/linux$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part /
sdb 8:16 1 14.6G 0 disk
├─sdb1 8:17 1 256M 0 part /media/linux/boot
└─sdb2 8:18 1 3.3G 0 part /media/linux/rootfs

正常TF卡设备会自动挂载到/media/${当前用户目录}/下的boot和rootfs目录下,如果没有自动挂载,则根据识别到实际TF卡的设备节点,将设备挂载到主机上,如下:

#创建新文件夹
sudo mkdir /media/linux/rootfs -p
sudo mkdir /media/linux/boot -p

#挂载在sd卡的两个分区上
sudo mount /dev/sdb1 /media/linux/boot
sudo mount /dev/sdb2 /media/linux/rootfs

然后将内核模块安装到SD中:

sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/media/linux/rootfs modules_install

最后备份原理SD卡中的旧内核, 并将新内核和设备树配置文件到SD卡中:

#将旧的内核文件备份为KERNEL-backup.img
cp /home/pi/Desktop/data-fat/kernel7l.img kernel7lBak.img

#将我们刚刚编译好的内核文件移植入tf卡中
sudo cp arch/arm/boot/zImage /media/linux/boot/kernel7l.img

#将需要的一些文件也复制入tf卡中
sudo cp arch/arm/boot/dts/*.dtb /media/linux/boot
sudo cp arch/arm/boot/dts/overlays/*.dtb* /media/linux/boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /media/linux/boot/overlays/

#断开tf卡的两个分区的连接
sudo umount /media/linux/boot
sudo umount /media/linux/rootfs

当然,你也可以不备份旧的内核,而是通过重命令编译出来的内核名称,如将编译出来的img改为kernel-new.img,然后修改config.txt的配置文件种的kernel字段,如下:

kernel=kernel-new.img
这么做的好处是保证原有的内核不被破坏,如果新的内核无法启动,只需要将config.txt的kernel字段改回来即可。

使用md5sum /文件路径/
可以查看复制前后两个文件的文件路径的代号吧(具体是什么不太清楚),可以判别文件复制过程有没有损坏

最后,将TF卡插回Pi上,然后启动Pi即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值