编译安装内核
- 本文档中,不同操作系统下的操作若有不同,会进行说明区分,若未说明,则该操作在两个操作系统下一致。
- 编译安装内核与编译安装Bcache是作用相同,是并列关系,按需选择其中一个执行即可。
CentOS 7.6
- 创建目录并进入该目录。
1 2
mkdir -p /home/kernel-bcache cd /home/kernel-bcache
- 获取内核源码。
- 查看系统内核版本。
1 2 3
uname -a 查询到如下版本内核 Linux ceph3 4.14.0-115.el7a.0.1.aarch64 #1 SMP Sun Nov 25 20:54:21 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
- 下载对应版本内核源码包至“/home/kernel-bcache”目录。
下载路径:http://vault.centos.org/7.6.1810/updates/Source/SPackages/
- 解压源码包。
1 2
rpm2cpio kernel-alt-4.14.0-115.10.1.el7a.src.rpm | cpio -divm tar -xvf linux-4.14.0-115.10.1.el7a.tar.xz
- 查看系统内核版本。
- 安装依赖。
1
yum -y install rpm-build m4 gcc xmlto asciidoc openssl-devel hmaccalc python-devel newt-devel perl-ExtUtils-Embed elfutils-devel zlib-devel binutils-devel bison audit-libs-devel java-devel numactl-devel pciutils-devel ncurses-devel createrepo genisoimage net-tools git bc
- 替换Bcache模块。
- 获取内核配置文件。
1 2
cd /home/kernel-bcache/linux-4.14.0-115.10.1.el7a cp ../kernel-alt-4.14.0-aarch64.config .config
- 配置Bcache模块。
1
make menuconfig
- 选择
- 按“Enter”键进入下一级菜单,选择 。
- 按“Enter”键进入下一级菜单,选中 ,键盘输入“M”选中该配置。
- 选择两次“Exit”返回至第一层。
- 选择
- 修改内核PageSize大小为4KB。
- 选择
- 按“Enter”键进入下一级菜单,选择 。
- 按“Enter”键进入选择,按“Space”键选择4KB。
- 选择两次“Exit”保存并退出。
- 选择
- 修改配置文件。
- 覆盖默认配置文件。
1
cp .config ../kernel-alt-4.14.0-aarch64.config
输入“y”确认。
- 生成RPM包,执行结束后将在如下路径生成RPM包,/root/rpmbuild/RPMS/aarch64/
1 2
make binrpm-pkg -j48 make rpm-pkg -j
- 将10中生成的内核RPM包上传至所有需要使用智能写Cache的服务器的“/home/kernel-rpm”目录。
1 2
mkdir -p /home/kernel-rpm cp /root/rpmbuild/RPMS/aarch64/* /home/kernel-rpm
- 安装内核RPM包,安装生成的3个RPM包。
1
cd /home/kernel-rpm
yum -y install kernel-4.14.0-1.aarch64.rpm kernel-devel-4.14.0-1.aarch64.rpm kernel-headers-4.14.0-1.aarch64.rpm
- 查看默认内核启动项。
1
grub2-editenv list
查看其中的默认内核版本号。
- 修改默认内核启动项。
1
cat /etc/grub2-efi.cfg | grep CentOS
其中“CentOS Linux (4.14.0-115.10.1.el7a.aarch64) 7 (AltArch)”为新装内核版本。
grub2-set-default "CentOS Linux (4.14.0-115.10.1.el7a.aarch64) 7 (AltArch)"
- 重启系统。
1
reboot
openEuler 20.03
- 创建目录并进入该目录。
1 2
mkdir -p /home/kernel-bcache cd /home/kernel-bcache
- 获取内核源码。
- 查看系统内核版本。
1 2 3
uname -a 查询到如下版本内核 Linux localhost.localdomain 4.19.90-2109.1.0.0108.oe1.aarch64 #1 SMP Mon Sep 6 03:51:48 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
- 下载对应版本内核源码包至“/home/kernel-bcache”目录。
下载路径:
https://mirrors.tools.huawei.com/openeuler/openEuler-20.03-LTS-SP1/source/Packages/
- 解压源码包。
1 2
rpm2cpio kernel-4.19.90-2109.1.0.0108.oe1.src.rpm | cpio -divm tar -zxvf kernel.tar.gz
- 查看系统内核版本。
- 配置镜像源。
- 将OS对应的everything镜像源文件上传到服务器。
通过SFTP工具将“openEuler-***-everything-aarch64-dvd.iso”上传到服务器上“/root”目录下。
- 创建一个本地文件夹用于挂载本地镜像。
1
mkdir -p /iso
此处以在根目录下创建iso文件夹为例。
- 将iso文件挂载到本地文件夹。
1
mount /root/openEuler-***-everything-aarch64-dvd.iso /iso
- 创建并配置镜像Yum源。
- 创建repo文件。
1
vi /etc/yum.repos.d/openEuler.repo
- 按“i”键进入编辑模式,在文件中加入以下内容,配置挂载镜像Yum源。
1 2 3 4 5 6
[Base] name=Base baseurl=file:///iso enabled=1 gpgcheck=0 priority=1
- 添加以下内容,配置openEuler网络源。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
[openEuler-source] name=openEuler-source baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/source/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler [openEuler-os] name=openEuler-os baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/ enabled=0 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/RPM-GPG-KEY-openEuler [openEuler-everything] name=openEuler-everything baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/ enabled=0 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/RPM-GPG-KEY-openEuler [openEuler-EPOL] name=openEuler-epol baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/ enabled=1 gpgcheck=0 [openEuler-update] name=openEuler-update baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/aarch64/ enabled=1 gpgcheck=0
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 创建repo文件。
- 将OS对应的everything镜像源文件上传到服务器。
- 安装依赖。
1
dnf -y install ncurses-devel bison m4 flex rpm-build rpmdevtools asciidoc audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel gtk2-devel java-1.8.0-openjdk-devel xz-devel libbabeltrace-devel libunwind-devel newt-devel numactl-devel openssl-devel pciutils-devel perl-generators python3-devel python3-docutils xmlto zlib-devel mkeuleros createrepo genisoimage
- 替换Bcache模块。
- 获取内核配置文件。
1 2
cd /home/kernel-bcache/kernel cp arch/arm64/configs/openeuler_defconfig .config
- 配置Bcache模块。
1
make menuconfig
- 选择
- 按“Enter”键进入下一级菜单,选择 。
- 按“Enter”键进入下一级菜单,选中 ,键盘输入“M”选中该配置。
- 选择两次“Exit”返回至第一层。
- 选择
- 修改内核PageSize大小为4KB。
- 选择
- 按“Enter”键进入下一级菜单,选择 。
- 按“Enter”键进入选择,按“Space”键选择4KB。
- 选择两次“Exit”保存并退出。
- 选择
- 确认配置文件。
- 覆盖默认配置文件。
1
cp .config arch/arm64/configs/openeuler_defconfig
输入“y”确认。
- 生成RPM包,执行如下指令将在/root/rpmbuild/RPMS/aarch64/路径下生成RPM包。
make binrpm-pkg -j48 make rpm-pkg -j
- 将11中生成的内核RPM包上传至所有需要使用智能写Cache的服务器的“/home/kernel-rpm”目录。
1 2
mkdir -p /home/kernel-rpm cp /root/rpmbuild/RPMS/aarch64/* /home/kernel-rpm
- 安装内核RPM包(安装RPM包的版本需根据生成的包做相应的变化)。
1 2
cd /home/kernel-rpm dnf -y install install kernel-4.14.0-1.aarch64.rpm kernel-devel-4.14.0-1.aarch64.rpm kernel-headers-4.14.0-1.aarch64.rpm
- 查看默认内核启动项。
1
grub2-editenv list
查看其中的默认内核版本号。
- 修改默认内核启动项。
1
cat /etc/grub2-efi.cfg | grep openEuler
其中“openEuler (4.19.90-2109.1.0.0108.oe1.aarch64) 20.03 (LTS-SP1)”为新安装内核版本。
grub2-set-default "openEuler (4.19.90-2109.1.0.0108.oe1.aarch64) 20.03 (LTS-SP1)"
- 重启系统。
1
reboot
父主题: 安装Bcache