定制化重新编译CentOS的内核

编译环境

$ sudo yum groupinstall "Development Tools"

下载源代码

查看当前内核版本

$ cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
$ uname -r
3.10.0-1127.18.2.el7.x86_64

安装依赖

$ sudo yum install wget gcc gc bc gd make perl ncurses-devel xz rpm-build xmlto asciidoc hmaccalc python-devel newt-devel pesign binutils-devel audit-libs-devel numactl-devel pciutils-devel perl-ExtUtils-Embed
$ sudo yum install elfutils-libelf-devel elfutils-devel java-devel python-docutils

下载源码包

http://vault.centos.org

$ wget https://archive.kernel.org/centos-vault/7.8.2003/os/Source/SPackages/kernel-3.10.0-1127.el7.src.rpm

解包

$ sudo useradd mockbuild
$ rpm -ivh kernel-3.10.0-1127.el7.src.rpm
$ ll rpmbuild/
总用量 4
drwxr-xr-x. 2 wii wii 4096 8月   2 19:40 SOURCES
-rw-rw-r--. 1 wii wii      879 8月   7 2019 centos-ca-secureboot.der
-rw-rw-r--. 1 wii wii     1063 8月   7 2019 centos-kpatch.x509
-rw-rw-r--. 1 wii wii     1070 8月   7 2019 centos-ldup.x509
-rw-rw-r--. 1 wii wii     4408 4月   1 04:02 centossecureboot001.crt
-rwxrwxr-x. 1 wii wii     3118 11月 28 2019 check-kabi
-rw-rw-r--. 1 wii wii      150 11月 28 2019 cpupower.config
-rw-rw-r--. 1 wii wii      294 11月 28 2019 cpupower.service
-rw-rw-r--. 1 wii wii      368 11月 28 2019 debrand-rh-i686-cpu.patch
-rw-rw-r--. 1 wii wii      891 11月 28 2019 debrand-rh_taint.patch
-rw-rw-r--. 1 wii wii      967 4月   1 04:02 debrand-single-cpu.patch
-rw-rw-r--. 1 wii wii        0 11月 28 2019 extra_certificates
-rwxrwxr-x. 1 wii wii    16842 11月 28 2019 find-debuginfo.sh
-rw-rw-r--. 1 wii wii   130336 3月  31 20:14 kernel-3.10.0-ppc64.config
-rw-rw-r--. 1 wii wii   130641 3月  31 20:14 kernel-3.10.0-ppc64-debug.config
-rw-rw-r--. 1 wii wii   130340 3月  31 20:14 kernel-3.10.0-ppc64le.config
-rw-rw-r--. 1 wii wii   130656 3月  31 20:14 kernel-3.10.0-ppc64le-debug.config
-rw-rw-r--. 1 wii wii    68313 3月  31 20:14 kernel-3.10.0-s390x.config
-rw-rw-r--. 1 wii wii    67937 3月  31 20:14 kernel-3.10.0-s390x-debug.config
-rw-rw-r--. 1 wii wii    33507 3月  31 20:14 kernel-3.10.0-s390x-kdump.config
-rw-rw-r--. 1 wii wii   153555 3月  31 20:14 kernel-3.10.0-x86_64.config
-rw-rw-r--. 1 wii wii   153786 3月  31 20:14 kernel-3.10.0-x86_64-debug.config
-rw-rw-r--. 1 wii wii    12459 4月   1 04:03 kernel-abi-whitelists-1127.tar.bz2
-rw-rw-r--. 1 wii wii    52686 4月   1 04:03 kernel-kabi-dw-1127.tar.bz2
-rw-rw-r--. 1 wii wii 93464248 4月   1 04:03 linux-3.10.0-1127.el7.tar.xz
-rw-rw-r--. 1 wii wii        0 11月 28 2019 linux-kernel-test.patch
-rw-rw-r--. 1 wii wii     1869 3月  31 20:14 Makefile.common
-rw-rw-r--. 1 wii wii      215 11月 28 2019 modprobe-dccp-blacklist.conf
-rw-rw-r--. 1 wii wii        0 11月 28 2019 Module.kabi_dup_ppc64
-rw-rw-r--. 1 wii wii        0 11月 28 2019 Module.kabi_dup_ppc64le
-rw-rw-r--. 1 wii wii        0 11月 28 2019 Module.kabi_dup_s390x
-rw-rw-r--. 1 wii wii        0 11月 28 2019 Module.kabi_dup_x86_64
-rw-rw-r--. 1 wii wii    42128 3月  31 20:14 Module.kabi_ppc64
-rw-rw-r--. 1 wii wii    42128 3月  31 20:14 Module.kabi_ppc64le
-rw-rw-r--. 1 wii wii    39071 3月  31 20:14 Module.kabi_s390x
-rw-rw-r--. 1 wii wii    45442 3月  31 20:14 Module.kabi_x86_64
-rwxrwxr-x. 1 wii wii      643 12月  3 2019 sign-modules
-rw-rw-r--. 1 wii wii      348 11月 28 2019 x509.genkey
drwxr-xr-x. 2 wii wii   25 8月   2 19:40 SPECS
-rw-rw-r--. 1 wii wii 8398323 4月   1 04:02 kernel.spec

修改

如果我只想修改内核配置文件(.config -> kernel-3.10.0-x86_64.config)

$ cd rpmbuild/SOURCES
$ makdir tmp
$ tar -xvf linux-3.10.0-1127.el7.tar.xz
$ cd tmp/linux-3.10.0-1127.el7
$ cp ../../kernel-3.10.0-x86_64.config .config
$ make menuconfig
$ vi .config
+# x86_64
$ cp .config ../../kernel-3.10.0-x86_64.config

编译rpm包

[rpmbuild]$ rpmbuild -bb --target=$(uname -m) SPECS/kernel.spec