编译内核
本文档中,不同操作系统下的操作若有不同,会进行说明区分,若未说明,则该操作在两个操作系统下一致。
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
- 获取内核配置文件。
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”确认。
- 获取Bcache补丁并替换源码。
- 下载补丁文件。
下载链接:https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/storage/Patch/
- 拷贝补丁包至“/home”目录并解压。
1 2 3
cd /home mkdir -p /home/bcache_patch tar -zxvf bcache_patch.tar.gz -C /home/bcache_patch
- 替换Bcache源码文件。
1
cp /home/bcache_patch/* /home/kernel-bcache/linux-4.14.0-115.10.1.el7a/drivers/md/bcache
- 下载补丁文件。
- 生成RPM包,执行如下指令将在/root/rpmbuild/RPMS/aarch64/路径下生成RPM包。
make binrpm-pkg -j48 make rpm-pkg -j
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
- 获取内核配置文件。
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
父主题: Bcache 用户指南