linux内核开发如何上手

linux内核

linux内核开发听起来就很高大上,给人的感觉也很难上手,实际上只要找对了资源,是一件很简单那的事情。这篇博文将大致的让读者了解到linux内核开发的几个基础步骤

需要准备的资源

linux内核源码

这里是下载地址
第一步、点击进入linux
在这里插入图片描述
第二步、在树莓派上通过uname -r查看内核的版本,并且根据版本选择不同的源码、作者这里是4.14所以下载了4.14的内核源码
在这里插入图片描述
第三步、放到pc机的linux系统里面并且使用tar或者unzip进行解压
在这里插入图片描述

这样我们就得到了一个linux内核源码。

交叉编译工具

具体操作方法参考这篇博文
博文链接

配置linux内核

一般的内核开发就是 配置内核,也就是操作./config文件。
这个文件会知道Makefile将配置了的部分组织成内核。

第一种方式
使用内核源码自带的./config文件
在内核源码文件夹下运行命令

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

此命令功能是获取bcm2709_defconfig的配置到 .config里。

第二种方法
获取现在正在使用的内核的./config文件
在树莓派上

sudo modprobe configs

将下面的文件复制到pc机上,解压为./config文件,这个就是正在使用的内核的./config文件

/proc/config.gz

第三种方法
自己配置(裁剪)内核,一般是基于厂家的./config

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

运行之后就会见到一个如下的页面

这里面的
[ ] 表示不加入到内核里面
[*] 表示将驱动编译到内核里面,zImage文件包含驱动
[M] 表示将驱动编译为一个模块,需要用到的时候在去安装开启

sudo insmod ***.ko//这个就是安装驱动模块的指令

以上基本就是内核配置的内容了。

编译内核

一、安装必要的库:

sudo apt-get install bc
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g
sudo apt-get install libc6

二、编译内核

在源码目录下运行这一行命令

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

j4:指定4个线程进行编译
zImage:指定镜像文件名
modules:生成驱动模块
dtbs:生成配置文件

三、挂载sd卡

把树莓派的sd卡插入ubuntu系统电脑,树莓派的sd卡有两个分区:
一个fat分区,是boot相关的内容,kernel的img文件就放在这个分区里;
一个是ext4分区,也就是系统的根目录分区。

我们生成的文件涉及到这两个分区的内容,一般插入ubuntu后会自动挂载,fat分区可以不用root权限操作,ext4分区需要root权限操作。
两个分区具体挂载在什么地方可以自己决定,以下用[fat]表示boot挂载的路径,[ext4]表示ext4挂载的路径。

1、安装modules
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=[ext4] modules_install
操作ext4分区,需要root权限。

2、更新 kernel.img 文件
前面已经用 mkknlimg 工具打包了kernel_new.img文件了,把它复制到boot分区并配置使用即可:
cp kernel_new.img [fat]/
编辑 [fat]/config.txt 文件,在最后加入一行:
kernel=kernel_new.img

3、复制其他相关文件
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信息已经改变。

更加详细的内容可以去查看这位大神的博文,我的这篇博文只是总结,方便自己使用
博文地址

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值