---
title: 编译内核
description: "1. 创建目录并进入该目录。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/storage/cacheAccel/kunpengbcache_06_0003.html
sourcePath: /source/zh/kunpengaccel/storage/cacheAccel/kunpengbcache_06_0003.html
indexId: 4f149351152afd1c8930a105dbd663721f084443e8aba74345d0a369794af08169
---
# 编译内核

#### CentOS 7.6

1. 创建目录并进入该目录。
  1 2 mkdir -p /home/kernel-bcache cd /home/kernel-bcache

2. 获取内核源码。

  a. 查看系统内核版本。
    1 uname -a

    查询到如下版本内核。

    1 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

  b. 下载对应版本    内核源码包(http://vault.centos.org/7.6.1810/updates/Source/SPackages/)
至“/home/kernel-bcache”目录。
  c. 解压源码包。
    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

3. 安装依赖。
  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

4. 获取内核配置文件。
  1 2 cd /home/kernel-bcache/linux-4.14.0-115.10.1.el7a cp ../kernel-alt-4.14.0-aarch64.config .config

5. 配置Bcache模块。
```
make menuconfig
```


  a. 选择“Device Drivers ”。
  b. 按“Enter”键进入下一级菜单，选择“Multiple device driver support (RAID and LVM )”。
  c. 按“Enter”键进入下一级菜单，选中“Block device as cache”，键盘输入“M”选中该配置。
  d. 选择两次“Exit”返回至第一层。
6. 修改内核PageSize大小为4KB。

  a. 选择“Kernel Features”。
  b. 按“Enter”键进入下一级菜单，选择“Page size（64KB）”。
  c. 按“Enter”键进入选择，按“Space”键选择4KB。
  d. 选择两次“Exit”保存并退出。
7. 修改配置文件。

  a. 打开文件。
    1 vi .config

  b. 按“i”进入编辑模式，在文件第一行添加“#aarm64”。
  c. 按“Esc”键退出编辑模式。
  d. 确认Bcache模块已打开。
  e. 确认PageSize为4K。
  f. 输入:wq!并按“Enter”键保存退出文件。
8. 覆盖默认配置文件。
  1 cp .config ../kernel-alt-4.14.0-aarch64.config

9. 输入“y”确认。
10. 获取Bcache补丁并替换源码。

  a. 下载    Bcache补丁文件(https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/storage/Patch/)
。
  b. 拷贝补丁包至“/home”目录并解压。
    1 2 3 cd /home mkdir -p /home/bcache_patch tar -zxvf bcache_patch.tar.gz -C /home/bcache_patch

  c. 替换Bcache源码文件。
    1 cp /home/bcache_patch/* /home/kernel-bcache/linux-4.14.0-115.10.1.el7a/drivers/md/bcache

11. 生成RPM包，执行如下指令将在“/root/rpmbuild/RPMS/aarch64/”路径下生成RPM包。
  1 2 make binrpm-pkg -j48 make rpm-pkg -j


#### openEuler 20.03

1. 创建目录并进入该目录。
  1 2 mkdir -p /home/kernel-bcache cd /home/kernel-bcache

2. 获取内核源码。

  a. 查看系统内核版本。
    1 uname -a

    查询到如下版本内核。

    1 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

  b. 下载对应版本    内核源码包(https://mirrors.tools.huawei.com/openeuler/openEuler-20.03-LTS-SP1/source/Packages/)
至“/home/kernel-bcache”目录。
  c. 解压源码包。
    1 2 rpm2cpio kernel-4.19.90-2109.1.0.0108.oe1.src.rpm | cpio -divm tar -zxvf kernel.tar.gz

3. 配置镜像源。

  a. 将OS对应的everything镜像源文件上传到服务器。
    通过SFTP工具将“openEuler-***-everything-aarch64-dvd.iso”上传到服务器上“/root”目录下。

  b. 创建一个本地文件夹用于挂载本地镜像。
    1 mkdir -p /iso

    此处以在根目录下创建iso文件夹为例。

  c. 将iso文件挂载到本地文件夹。
    1 mount /root/openEuler-***-everything-aarch64-dvd.iso /iso

  d. 创建并配置镜像Yum源。

    1. 创建repo文件。
      1 vi /etc/yum.repos.d/openEuler.repo

    2. 按“i”键进入编辑模式，在文件中加入以下内容，配置挂载镜像Yum源。
      1 2 3 4 5 6 [Base] name=Base baseurl=file:///iso enabled=1 gpgcheck=0 priority=1

    3. 添加以下内容，配置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

    4. 按“Esc”键退出编辑模式，输入:wq!并按“Enter”键保存退出文件。
4. 安装依赖。
  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

5. 获取内核配置文件。
  1 2 cd /home/kernel-bcache/kernel cp arch/arm64/configs/openeuler_defconfig .config

6. 配置Bcache模块。
```
make menuconfig
```


  a. 选择“Device Drivers ”。
  b. 按“Enter”键进入下一级菜单，选择“Multiple device driver support (RAID and LVM )”。
  c. 按“Enter”键进入下一级菜单，选中“Block device as cache”，键盘输入“M”选中该配置。
  d. 选择两次“Exit”返回至第一层。
7. 修改内核PageSize大小为4KB。

  a. 选择“Kernel Features”。
  b. 按“Enter”键进入下一级菜单，选择“Page size（64KB）”。
  c. 按“Enter”键进入选择，按“Space”键选择4KB。
  d. 选择两次“Exit”保存并退出。
8. 确认配置文件。

  a. 打开文件。
    1 vi .config

  b. 确认Bcache模块打开。
  c. 确认PageSize为4K。
  d. 输入:q!并按“Enter”键退出文件。
9. 覆盖默认配置文件。
  1 cp .config arch/arm64/configs/openeuler_defconfig

10. 输入“y”确认。
11. 生成RPM包，执行如下指令将在“/root/rpmbuild/RPMS/aarch64/”路径下生成RPM包。
  1 2 make binrpm-pkg -j48 make rpm-pkg -j
