开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

内核编译与安装

获取内核源码

  1. 创建目录并进入该目录。
    1
    2
    mkdir -p /home/kernel-bcache
    cd /home/kernel-bcache
    
  2. 下载内核源码包至“/home/kernel-bcache”目录。

    下载路径:http://vault.centos.org/7.6.1810/updates/Source/SPackages/

  3. 解压源码包。
    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. 安装依赖。
    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. 获取Bcache源码放到“/home”。

    下载链接:https://github.com/kunpengcompute/bcache/releases/tag/swc-v0.2.0

  2. 解压源码。
    1
    2
    cd /home
    unzip bcache-swc-v0.2.0.zip
    
  3. 替换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/
    

修改内核配置

  1. 获取内核配置文件。
    1
    2
    cd /home/kernel-bcache/linux-4.14.0-115.10.1.el7a
    cp ../kernel-alt-4.14.0-aarch64.config .config
    
  2. 配置Bcache模块。
    1
    make menuconfig
    
    1. 选择“Device Drivers ”。

    2. 按“Enter”键进入下一级菜单,选择“Multiple device driver support (RAID and LVM )”。

    3. 按“Enter”键进入下一级菜单,选中“Block device as cache”,键盘输入“M”选中该配置。

    4. 按两次“exit”返回至第一层。

  3. 修改内核PAGESIZE大小为4K。
    1. 选择“Kernel Features”。

    2. 按“Enter”键进入下一级菜单,选择“Page size(64KB)”。

    3. 按“Enter”键进入选择,按“Space”键选择4KB。

    4. 按两次“exit”保存并退出。

  4. 修改配置文件。
    1
    vi .config
    

    手动在第一行添加“#aarm64”。

  5. 确认配置文件。
    1. 确认Bcache模块打开。

    2. 确认PAGESIZE为4k。

  6. 覆盖默认配置文件。
    1
    cp .config ../kernel-alt-4.14.0-aarch64.config
    

    输入y确认。

生成内核RPM包

  1. 内核源码重新打包。
    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. 生成“rpmbuild”目录。
    1
    2
    3
    mkdir -p /home/rpmbuild
    cd /home/rpmbuild
    mkdir -p BUILD  RPMS  SOURCES  SPECS  SRPMS
    
  3. 修改默认“rpmbuild”路径。
    1
    vi /root/.rpmmacros
    

    增加如下内容:

    1
    %_topdir /home/rpmbuild
    
  4. 拷贝文件至“rpmbuild”目录。
    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. 更新内核补丁。
    1
    rpmbuild -bp /home/rpmbuild/SPECS/kernel-alt.spec
    
  6. 编译生成内核RPM包。
    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. 查看生成的内核RPM包。
    ls /home/rpmbuild/RPMS/aarch64/

安装内核

  1. 将生成内核RPM包中生成的内核RPM包上传至所有需要使用智能写Cache的服务器的“/home/kernel-rpm”目录。
    1
    mkdir -p /home/kernel-rpm
    
  2. 安装内核RPM包。
    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. 查看默认内核启动项。
    1
    grub2-editenv list
    

    查看其中的默认内核版本号。

    • 如果默认版本是新安装的内核版本,则跳过4。
    • 如果默认版本不是新安装的内核版本,则执行4。
  4. 修改默认内核启动项。
    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)"
  5. 重启系统。
    1
    reboot