准备工作:
- 准备好开发环境
- 获取目标主机上硬件设备相关信息
- 获取目标主机系统功能的相关信息
- 获取内核源代码
www.kernel.org
开发环境准备
包组(Centos 7):Development Tools
yum grouplist 查看包组信息
目标主机硬件设备相关信息:
CPU: cat /proc/cpuinfo
lscpu
PCI设备:
lspci (-v|-vv)
lsusb (-v|-vv)
lsblk 块设备
由于是在虚拟环境下进行,我们可以将cpu设置成最大使用核心数,已到达加速编译的目的
步骤如下:
1、下载源码文件:linux-4.12.tat;并解压缩至当/root下或/usr/src
[root@CentOS7 ~]#tar xvf linux-4.12.tar
2、安装对应开发包组
[root@CentOS7 ~]#yum groupinstall “Development Tools”
3、准备编译内核配置文件,将系统现有的config配置文件复制并命名为.config
cp /boot/config-$(uname -r) ./.config
4、配置内核选项,基于curses的文本窗口界面来定义内核参数
注意:运行 #make menucofig命令过程中,可能会提示缺少相应的依赖包组。只需将对应缺少的包组依次安装即可
上图中”[ ]“ 里 * 表示打到核心里,M 是以模块方式打到核心里,空白就表示不设置
上图中选中General setup ,回车展开如下图:
在下图中输入内核的版本,以及编译者信息,可以自己随便设定:
设置完内核选项后,按TAB建切换<Save> 保存然后退出
设置好的内核选项,可以查看已经设置的内容
5、开始编译,操作如下图:
通过lscpu 命令看到有4个CPU,内核编译支持多线程编译,这里编写for循环,编译结束提示声音。
make -j 4 && for i in {1..10} ;do echo -e “\a”;sleep 1 ;done
注意:编译过程中,可能会提示缺少相应的依赖包组。只需将对应缺少的包组依次安装即可
由于编译过程比较长,此时我们可以打开多一个终端窗口,实时观察编译大小
[root@CentOS7 ~/linux-4.12.10]#watch -n 5 du -sh linux-4.12.10
6、编译完成后,执行如下操作:
[root@CentOS7 ~/linux-4.12.10]#make modules_install
安装模块,生成到/lib/modules目下
8、重启选择linux-4.12的内核启动加载。
至此编译内核安装结束
编译后续管理:
在已经执行过编译操作后可对编译后遗留的文件进行选择性清理
- make clean :清理大多数编译生成的文件,但会保留
config 文件等 - make mrproper: 清理所有编译生成的文件、config 及某
些备份文件 - make distclean :mrproper 、patches 以及编辑器备份
文件
如果编译后有错误,或不需要使用当前编译好后的内核的话,也可进行删除内核操作,只需将上述编译生成的文件目录删除即可
- rm -rf /lib/modules/VERSIONS-NAME/
- rm -rf /boot/4.12
- 删除/boot/grub2/grub.conf文件下生成的配置文件