Analysis of Xiaomi Kernel(Updating)

分析小米内核Github链接

Analysis of alioth-r-oss

该版本对应的链接
在这里插入图片描述
通过前面的学习我们知道,当为一个特定的平台构建Linux内核时,通常是以一个特定的defconfig为基础来进行内核配置。该平台的defconfig包含了为该平台正确配置内核的所有Linux kconfig设置(功能、默认系统参数等)。Defconfig文件通常存储在内核树中的arch/*/configs/
进入alioth-r-oss,有很多文件夹这些文件夹分别是什么意思呢?通过调研我们知道了:
arch:不同平台体系相关代码
block:块设备驱动
certs:与认证和签名相关代码
crypto:内核常用加密、压缩算法等代码
documentation:描述模块功能和协议规范
drivers:驱动程序(USB总线、PCI总线、显卡驱动等)
firmware:二进制固件
fs:虚拟文件系统代码
include:内核代码依赖的绝大部分头文件
init:内核初始化代码,联系到内存各组件入口
ipc:进程间通信实现,比如共享内存、信号量、匿名管道等
kernel:内核核心代码,包括进程管理、IRQ、时间等
lib:C标准库的子集
mm:内存管理相关实现
net:网络协议代码,比如TCP、IPv6、WiFi、以太网实现等
samples:内核示例代码
scripts:编译和配置内核所需脚本;perl/bash
security:内核安全模型相关代码,如selinux
sound:声卡驱动代码
tools:与内核交互/开发工具
usr:用户打包和压缩内核的实现代码
virt:/kvm虚拟化目录相关支持实现

首先进入相应的文件夹

arch/*/
在这里插入图片描述
在这里插入图片描述
deconfigs存储在arch/*/configs中,这里的*是通配符,那么arch文件夹下的所有内容应该都是包含/configs/deconfig

Analysis of arm64

在这里插入图片描述
果然,在这里存在一个名为deconfig的文件。该文件列出了内核配置要求。
在这里插入图片描述
多打开几个文件可以发现,凡是带有deconfig字样的文件,内容都是一些内核配置信息。

Analysis of cappu-n-oss

该版本对应链接
在这里插入图片描述
进入该版本文件夹后,会发现Pad内核文件比手机的内核文件多了一个文件夹Android/configs
在这里插入图片描述
通过查看安卓官网我们知道:
在这里插入图片描述
这个目录中的文件是用来作为Android内核配置的基础的。内核配置的基础。所有设备都应该启用android-base.cfg中的选项。虽然不是强制性的,但android-recommended.cfg中的选项可以启用高级的安卓功能。

假设你的设备已经有了一个简约的defconfig,一个可能的方法是启用这些选项的方法是。(根据官网的说法,该脚本语句正是生成内核配置的语句)

 ARCH=<arch> scripts/kconfig/merge_config.sh <path_to>/<device>_defconfig android/configs/android-base.cfg android/configs/android-recommended.cfg

这将产生一个.config,然后可以用来保存一个新的defconfig或编译一个启用了Android功能的新内核。

因为没有一个工具可以一致地生成这些配置片段。让我们把它们按字母排序,而不是随机的。
在这里插入图片描述

提取内核配置

通过查阅资料,我发现了两种提取内核配置的方法。这两种方法都利用了extract-ikconfig脚本。

第一种

利用bzImage

./scripts/extract-ikconfig /path/bzImage > /path/config
第二种

利用vmlinux

./scripts/extract-ikconfig /path/vmlinux
报错

在使用这两种方法时,我们要确保内核配置文件CONFIG_IKCONFIG=y,不然就会出现下图中的错误。
在这里插入图片描述

CONFIG_IKCONFIG 在何处

进入到 .config文件中

在这里插入图片描述
只有该配置选项打开,我们才能提取内核配置文件。
先手动添加试试
在这里插入图片描述
我使用语句 make menuconfig arch=arm64 加载了arm64的config,现在开始执行编译安装:

make -j8
make modules_install
make install

又是漫长的2个小时
完成上面步骤后我们可以执行命令./scripts/extract-ikconfig /path/vmlinux > config_test成功获取了内核配置。
在这里插入图片描述
在这里插入图片描述

由于我自行修改了linux-5.0.5目录下的.config,并且使用了arm64下的配置文件,现在还不能确定自行修改.config有没有作用,因为我没有修改Makefile嘛

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值