kernel的make使用方法

首先可以先参考这三篇文章:

https://www.cnblogs.com/xingboy/p/14977729.html

https://www.cnblogs.com/xingboy/p/14898899.html

https://www.cnblogs.com/xingboy/p/14858853.html

然后介绍编译make的使用:

make mrproper

清理源代码树,包括过去曾经配置的内核配置文件".config"都将被清除。即进行新的编译工作时将原来老的配置文件给删除到,以免影响新的内核编译。

make xxx_defconfig
在arch/arm/configs/中保存的默认xxx_defconfig文件并不是一个完整的.config文件.执行过make xxx_defconfig后产生的.config会比原来的多近2000行配置。这些配置在执行make xxx_defconfig自动添加进去的。

make savedefconfig
怎样剔出掉这些在.config通用的内容?内核中提供了make savedefconfig这个命令。它会生成defconfig文件。

因此,cp .config arch/arm/configs/xxx_defconfig其实是一个错误的方法。
make savedefconfig && mv defconfig arch/arm/configs/xxx_defconfig才是一个正统的方式。对比差异的时候也好对比一些。

如果是 ARM32 的CPU ,就在 Kernel 目录执行 make savedefconfig ARCH=arm。
如果是 ARM64 的CPU ,就在 Kernel目录执行 make savedefconfig ARCH=arm64。

make config

纯文本界面配置。

make oldconfig

读取系统当前内核的config(一般在/boot/下),对于新版本内核新增的内核选项,会注意提问,用户需回答y,m,n。如果嫌这样繁琐,可以使用make olddefconfig。
make olddefconfig
基本同make oldconfig,唯一不同的是,对于新特性它不再提问,而是使用默认选项。

make menuconfig
如果没有.config的话,会使用系统自带的/boot/config-***作为模板,在当前目录下生成.config
如果是ARM32的CPU, make menuconfig ARCH=arm
如果是ARM64的CPU, make menuconfig ARCH=arm64

make xconfig

make gconfig

一个使用qt图形化配置config,一个使用gtk图形化配置config

make allyesconfig

make allmodconfig

这些命令都可以用来配置内核,它们的配置方式各不相同,不过我们比较常用的还是“make oldconfig”和“make menuconfig”。

make dep

如果内核从未编译过,此步可跳过

根据配置结果,建立文件依赖关系。

该命令将会修改linux中每个子目录下的.depend文件,该文件包含了该目录下每个目标文件所需要的头文件(绝对路径的方式列举)。

安装内核和模块

1 make modules_install

编译成功后,系统会在/lib/modules目录下生成一个3.17.0子目录,里面存放着新内核的所有可加载模块(即将编译好的modules拷贝到/lib/modules下)。

2 make install

执行该命令后,/boot 文件夹下会增加一下内容:

cp .config /boot/config-3.17.0

cp System.map /boot/System.map-3.17.0

cp /arch/i386/boot/bzImage /boot/vmlinuz-3.17.0

3 mkinitramfs

敲入命令生成内核版本相对应的img 文件:

mkinitramfs 3.17.0 –o /boot/initrd.img-3.17.0

至此,更换内核所需的所有文件config、System.map、vmlinuz、initrd.img 都已经完成了。

4 update-grub2

更新启动文件grub.cfg,将3.17.0添加至系统启动选项中。

参考:https://www.cnblogs.com/liuyawei/p/4024614.html

posted @ 2025-03-26 21:03  老禾的账本  阅读(187)  评论(1)    收藏  举报