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添加至系统启动选项中。
浙公网安备 33010602011771号