CentOS 7 下编译Linux kernel 内核
1. 准备编译环境
- yum groupinstall "Development Tools"
2. 下载内核文件
选择目标内核版本并下载: https://mirrors.edge.kernel.org/pub/linux/kernel/
(进入kernels常用存放目录)
- [root@linetwork ~]# cd /usr/src/kernels/
(以3.10.20为例,下载源文件)
- [root@linetwork kernels]# wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.20.tar.gz
(解压文件)
- [root@linetwork kernels]# tar zxvf linux-3.10.20.tar.gz
(得到解压后文件夹linux-3.10.20)
- [root@linetwork kernels]# ls
- linux-3.10.20 linux-3.10.20.tar.gz
3. 编译内核
目的: 将内核源码文件(如*.c)编译成可执行文件(如*.o)
(进入Kernel源码文件夹linux-3.10.20)
- [root@linetwork kernels]# cd linux-3.10.20/
(可选步骤A: 可直接通过menuconfig 增减内核模块或组件,选择后可查看.config参数文件的更新情况)
- [root@linetwork linux-3.10.20]# make menuconfig
- [root@linetwork linux-3.10.20]# cat .config
(可选步骤B: 也可通过现有内核参数去生成新的配置参数文件.config)
- [root@linetwork linux-3.10.20]# cp /boot/config-3.10.0-957.el7.x86_64 ./.config
- [root@linetwork linux-3.10.20]# make oldconfig
- [root@linetwork linux-3.10.20]# cat .config
(编译内核)
- [root@linetwork linux-3.10.20]# make -j16 all
all: 编译所有选择模块
-j16: 将使用16核CPU资源去编译内核
4. 安装Kernel Module
(将新内核中的可执行module,集中放于/lib/modules/ 下的新内核文件夹中)
- [root@linetwork linux-3.10.20]# make module_install
- [root@linetwork ~]# ls /lib/modules/ 3.10.0-1127.10.1.el7.x86_64 3.10.0-1127.el7.x86_64 3.10.20
5. 安装Kernel
(将Kernel注册到系统引导程序)
- [root@linetwork linux-3.10.20]# make install
- [root@linetwork linux-3.10.20]# ls /boot/
6. 设置开机默认从新kernel启动
sudo awk -F\\' \'$1=="menuentry " {print i++ " : " $2}\' /etc/grub2.cfg
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
7. 删除旧的kernel
yum install yum-utils
package-cleanup --oldkernels