Rate This Document
Findability
Accuracy
Completeness
Readability

Compiling and Installing the Kernel

Obtaining the Kernel Source Code

  1. Create a directory and go to the directory.
    1
    2
    mkdir -p /home/kernel-bcache
    cd /home/kernel-bcache
    
  2. Download the kernel source package to the /home/kernel-bcache directory.

    Download address: http://vault.centos.org/7.6.1810/updates/Source/SPackages/

  3. Decompress the source package.
    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
    
  4. Install the dependency.
    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
    

Replacing the Bcache Module

  1. Obtain the bcache source code and save it to /home.

    Download address: https://github.com/kunpengcompute/bcache/releases/tag/swc-v0.2.0

  2. Decompress the source package.
    1
    2
    cd /home
    unzip bcache-swc-v0.2.0.zip
    
  3. Replace the bcache.
    1
    cp -rf /home/bcache-swc-v0.2.0/drivers/md/bcache /home/kernel-bcache/linux-4.14.0-115.10.1.el7a/drivers/md/
    

Modifying the Kernel Configuration

  1. Obtain the kernel configuration file.
    1
    2
    cd /home/kernel-bcache/linux-4.14.0-115.10.1.el7a
    cp ../kernel-alt-4.14.0-aarch64.config .config
    
  2. Configure the bcache module.
    1
    make menuconfig
    
    1. Choose Device Drivers.

    2. Press Enter to access the next-level menu, and then choose Multiple device driver support (RAID and LVM).

    3. Press Enter to access the next-level menu, choose Block device as cache, and press M to select the configuration.

    4. Click Exit twice to return to the first-level menu.

  3. Change the kernel page size to 4 KB.
    1. Choose Kernel Features.

    2. Press Enter to access the next-level menu, and choose Page size (64 KB).

    3. Press Enter to access the next-level menu, and press Space to choose 4 KB.

    4. Click Exit twice to save the setting and exit.

  4. Modify the configuration file.
    1
    vi .config
    

    Add #aarm64 to the first line.

  5. Verify the configuration file.
    1. Ensure that the bcache module is enabled.

    2. Ensure that the page size is 4 KB.

  6. Overwrite the default configuration file.
    1
    cp .config ../kernel-alt-4.14.0-aarch64.config
    

    Type Y.

Creating a Kernel RPM Package

  1. Repack the kernel source code.
    1
    2
    3
    4
    cd /home/kernel-bcache
    tar -cvf linux-4.14.0-115.10.1.el7a.tar linux-4.14.0-115.10.1.el7a
    rm -f linux-4.14.0-115.10.1.el7a.tar.xz
    xz -z linux-4.14.0-115.10.1.el7a.tar
    
  2. Create an rpmbuild directory.
    1
    2
    3
    mkdir -p /home/rpmbuild
    cd /home/rpmbuild
    mkdir -p BUILD  RPMS  SOURCES  SPECS  SRPMS
    
  3. Change the default rpmbuild path.
    1
    vi /root/.rpmmacros
    

    Add the following information:

    1
    %_topdir /home/rpmbuild
    
  4. Copy the files to the rpmbuild directory.
    1
    2
    3
    cp -r /home/kernel-bcache/* SOURCES/
    cp /home/kernel-bcache/kernel-alt.spec SPECS/
    rm -rf SOURCES/linux-4.14.0-115.10.1.el7a
    
  5. Update the kernel patch.
    1
    rpmbuild -bp /home/rpmbuild/SPECS/kernel-alt.spec
    
  6. Compile and create a kernel RPM package.
    1
    rpmbuild -bb /home/rpmbuild/SPECS/kernel-alt.spec --with baseonly --without debug --without debuginfo
    
    Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/rpmbuild/BUILDROOT/kernel-alt-4.14.0-115.10.1.el7a.aarch64
    Wrote: /home/rpmbuild/RPMS/aarch64/kernel-4.14.0-115.10.1.el7a.aarch64.rpm
    Wrote: /home/rpmbuild/RPMS/aarch64/kernel-headers-4.14.0-115.10.1.el7a.aarch64.rpm
    Wrote: /home/rpmbuild/RPMS/aarch64/perf-4.14.0-115.10.1.el7a.aarch64.rpm
    Wrote: /home/rpmbuild/RPMS/aarch64/python-perf-4.14.0-115.10.1.el7a.aarch64.rpm
    Wrote: /home/rpmbuild/RPMS/aarch64/kernel-tools-4.14.0-115.10.1.el7a.aarch64.rpm
    Wrote: /home/rpmbuild/RPMS/aarch64/kernel-tools-libs-4.14.0-115.10.1.el7a.aarch64.rpm
    Wrote: /home/rpmbuild/RPMS/aarch64/kernel-tools-libs-devel-4.14.0-115.10.1.el7a.aarch64.rpm
    Wrote: /home/rpmbuild/RPMS/aarch64/kernel-devel-4.14.0-115.10.1.el7a.aarch64.rpm
    Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.4Lfz8M
    + umask 022
    + cd /home/rpmbuild/BUILD
    + cd kernel-alt-4.14.0-115.10.1.el7a
    + rm -rf /home/rpmbuild/BUILDROOT/kernel-alt-4.14.0-115.10.1.el7a.aarch64
    + exit 0
  7. View the generated kernel RPM package.
    ls /home/rpmbuild/RPMS/aarch64/

Installing the Kernel

  1. Upload the kernel RPM package generated in Creating a Kernel RPM Package to the /home/kernel-rpm directory of each server that requires the smart write cache service.
    1
    mkdir -p /home/kernel-rpm
    
  2. Install the kernel RPM package.
    1
    2
    cd /home/kernel-rpm
    yum -y install kernel-4.14.0-115.10.1.el7a.aarch64.rpm kernel-devel-4.14.0-115.10.1.el7a.aarch64.rpm kernel-headers-4.14.0-115.10.1.el7a.aarch64.rpm
    
  3. Check the default kernel startup items.
    1
    grub2-editenv list
    

    Check the default kernel version number.

    • If the default version is the newly installed kernel version, skip step 4.
    • Otherwise, go to step 4.
  4. Modify the default kernel startup items.
    1
    cat /etc/grub2-efi.cfg  | grep CentOS
    

    In the preceding information, CentOS Linux (4.14.0-115.10.1.el7a.aarch64) 7 (AltArch) indicates the newly installed kernel version.

    grub2-set-default "CentOS Linux (4.14.0-115.10.1.el7a.aarch64) 7 (AltArch)"
  5. Restart the system.
    1
    reboot