树莓派内核配置

一、原材料
https://github.com/raspberrypi/linux 内核源码
代码的编译需要一个提前编译好的内核,所以需要在电脑上将内核进行编译,而编译就需要配置,毕竟Linux支持多架构多平台,需要配置成合适的平台。
二、配置config
配置会生成 .config 文件,这个文件指导makefile把需要的部分组织起来,形成内核。
第一种方式:
cp 厂家.config .config
第二种方式:
make menuconfig 一项项配置,通常是基于厂家的config来配置
第三种方式:
完全自己来

采用第一种方式。
在目录下输入以下指令:

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig

ARCH=arm:指定arm架构
CROSS_COMPILE=arm-linux-gnueabihf-:指定编译工具
KERNEL=kernel7:树莓派厂家要求
make bcm2709_defconfig:核心指令

如果需要修改一些内容可用如下指令,这也就是第二种方式:

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

当然这个界面是ncurses的,所以可能需要安装
sudo apt-get install libncurses5-dev libncursesw5-dev
驱动两种加载方式:
* 编译进内核 zImage包含了驱动
M 模块方式生成驱动文件xxx.ko 系统启动后,通过命令insmod xxx.ko 加载
进入ncursec后按空格切换。

三、编译
安装必要的库:
sudo apt-get install bc
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
1.编译

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs 2>&1 | tee build.log

make -j4:指定使用多少资源 4 就是4线程
zImage: 生成zImage内核镜像
modules:config配置的驱动模块生成
dtbs:配置文件等
2>&1 | tee build.log:错误处理相关 可无

编译时间比较长,大约需要15-20分钟,如果编译了没多久就报错检查上面的步骤(步骤中没有写交叉编译工具的安装,这个是需要的,毕竟指定了交叉编译工具)

编译成功后会发现在源码树下出现vmlinux,失败则无(源码树就是那个解压出来的那个文件夹目录下面)
然后在/arch/arm/boot目录下有一个zImage

2.打包zImage成树莓派可用的xxx.img
直接用linux源码包里的工具:

./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

四、数据拷贝
把树莓派上的sd卡拔出来,插入读卡器,连接虚拟机。
输入dmesg查看信息
看sdb: sdb1 sdb2 有没有
树莓派的sd卡有两个分区:
一个fat分区,是boot相关的内容,kernel的img文件就放在这个分区里;
一个是ext4分区,也就是系统的根目录分区。
mkdir data1 data2

1.挂载U盘

	sudo mount /dev/sdb1 data1   //一个fat分区,是boot相关的内容,kernel的img
	sudo mount /dev/sdb2 data2   //一个是ext4分区,也就是系统的根目录分区。

现在就可以通过cd data1,cd data2 来操作这两个分区了

2.安装modules(设备驱动文件,没有的话wifi,io口等都无法使用)

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/xys/data2 modules_install

data2:对应ext4分区

3.安装更新 kernel.img 文件,注意镜像名字是kernel7.img
先备份

cd /home/xys/data1
cp kernel7.img kernel7Old.img

再把编译新生成的拷贝到data1,起名kernel7.img

cp kernel_new.img /home/xys/data1/kernel7.img

可以使用 md5sum kernel_new.img和md5sum /home/xys/data1/kernel7.img
检查拷贝过程中有无损坏

4.拷贝其他配置文件(就是前面那个dtb)

cp arch/arm/boot/dts/.*dtb* /home/xys/data1
cp arch/arm/boot/dts/overlays/.*dtb* /home/xys/data1/overlays/
cp arch/arm/boot/dts/overlays/README /home/xys/data1/overlays/

*:是通配符 代表 . XXXXXdtbXXXX 的全都要只要带 . 什么dtb什么 的都要

修改cmdline
https://blog.csdn.net/syjsxxjy/article/details/80774262

然后把sd卡插回树莓派 按照串口的方式连接secureCRT 波特率115200
进去之后使用uname -r
就可以发现内核版本与之前不同了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值