Linux内核驱动入门-编译树莓派内核

内核驱动跟内核版本号之间是强相关的,因为编译内核模块的时候,需要基于内核源码来编译

假设我们自己编译一个属于自己的树莓派内核,根据官方的内核来进行更改。

将官方的内核解压到虚拟机上,最好放在根目录的work下,要不然会空间不足

//安装工具
sudo apt-get install git bison flex libssl-dev
//安装配置内核menuconfig的辅助工具
sudo apt-get install libncurses5-dev

//配置内核
cd linux//解压后的linux文件
KERNEL=kernel17
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
//ARCH=arm,架构是ARM架构,就是armCPU
//CROSS_COMPILE,指定交叉编译工具
//bcm2709_defconfig,树莓派默认的内核编译配置

//编译内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j2
//-j2 电脑内核大小
//替换img中的内核
//挂载img
//查看img信息
fdisk -l xxxxxxxxxxxxxx.img//xxxxxxxxxx.img 树莓派系统镜像

Linux内核驱动入门-编译树莓派内核_第1张图片
创建一个新的文件,在里面创建mnt文件,在mnt文件里面分别创建linux文件和boot文件

//挂载分区
//两个分区 boot 启动分区 ;linux linux系统分区
//创建挂载点
mkdir mnt
mkdir mnt/boot
mkdir mnt/linux

//挂载boot
sudo mount -o loop,offset=$((512 * 8192)),sizelimit=$((512 * 524289)) 2019-07-10-raspbian-buster-lite.img mnt/boot

//挂载linux
sudo mount -o loop,offset=$((540672* 512)) 2019-07-10-raspbian-buster-lite.img  mnt/ linux

//安装内核模块到mnt/linux
//注:要将交叉编译器放进路径
su root //修改root密码:sudo passwd root
vim ~/.bashrc

//末尾添加
export PATH=$PATH:交叉编译器路径
source  ~/.bashrc
arm-linux-gnueabihf-gcc//测试是否生效

//进入linux内核目录 就是linux系统解压后的文件
cd linux
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/v/work/raspbian/mnt/linux modules_install
exit//退出root用户

//安装内核到mnt/boot
KERNEL=kernel7
//定义一个局部变量,KERNEL的值为kernel7

sudo cp /home/v/work/raspbian/mnt/boot/$KERNEL.img /work/raspbian/mnt/boot/$KERNEL-backup.img
//备份旧内核

sudo cp arch/arm/boot/zImage /home/v/work/raspbian/mnt/boot/$KERNEL.img
//拷贝zImage
sudo cp arch/arm/boot/dts/*.dtb /home/v/work/raspbian/mnt/boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /home/v/work/raspbian/mnt/boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /home/v/work/raspbian/mnt/boot/overlays/
//卸载分区
sudo umount /home/v/work/raspbian/mnt/boot
sudo umount /home/v/work/raspbian/mnt/linux

mv 2019-07-10-raspbian-buster-lite.img k2-2019-07-10-raspbian-buster-lite.img
//重命名已经替换好内核的镜像文件

//查看内核版本
uname -a

你可能感兴趣的:(嵌入式)