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

内核编译与安装

获取内核源码

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

    下载路径:https://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/Packages/

  3. 解压源码包。
    1
    2
    rpm2cpio kernel-4.19.90-2012.4.0.0053.oe1.src.rpm | cpio -divm
    tar -zxvf kernel.tar.gz
    
  4. 配置镜像源。
    1. 通过SFTP工具将“openEuler-***-everything-aarch64-dvd.iso”上传到服务器上“/root”目录下。
    2. 创建一个本地文件夹用于挂载本地镜像。
      1
      mkdir -p /iso
      
    3. 将iso文件挂载到本地文件夹。
      1
      mount /root/openEuler-***-everything-aarch64-dvd.iso /iso
      
    4. 创建镜像yum源。
      1
      vi /etc/yum.repos.d/openEuler.repo
      
      在文件中加入以下内容:
       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
      33
      34
      35
      36
      37
      38
      39
      [Base]
      name=Base
      baseurl=file:///iso
      enabled=1
      gpgcheck=0
      priority=1
      
      [openEuler-source]
      name=openEuler-source
      baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/
      enabled=1
      gpgcheck=1
      gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/RPM-GPG-KEY-openEuler
      
      [openEuler-os]
      name=openEuler-os
      baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/aarch64/
      enabled=0
      gpgcheck=1
      gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/aarch64/RPM-GPG-KEY-openEuler
      
      [openEuler-everything]
      name=openEuler-everything
      baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/aarch64/
      enabled=0
      gpgcheck=1
      gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/aarch64/RPM-GPG-KEY-openEuler
      
      [openEuler-EPOL]
      name=openEuler-epol
      baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/EPOL/aarch64/
      enabled=1
      gpgcheck=0
      
      [openEuler-update]
      name=openEuler-update
      baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/update/aarch64/
      enabled=1
      gpgcheck=0
      
  5. 安装依赖。
    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. 获取Bcache源码放到“/home”。

    下载链接:https://gitee.com/openeuler/kernel/tree/openEuler-1.0-LTS/kernel

  2. 解压源码。
    unzip openeuler-kernel-openEuler-1.0-LTS.zip
  3. 替换Bcache。
    1
    cp -rf /home/kernel/drivers/md/bcache /home/kernel-bcache/kernel/drivers/md/
    

修改内核配置

  1. 获取内核配置文件。
    1
    2
    cd /home/kernel-bcache/kernel
    cp arch/arm64/configs/openeuler_defconfig .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. 确认Bcache模块打开。

    2. 确认PAGESIZE为4K。

  5. 覆盖默认配置文件。
    1
    cp .config arch/arm64/configs/openeuler_defconfig
    

    输入y确认。

生成内核RPM包

  1. 内核源码重新打包。
    1
    2
    cd /home/kernel-bcache
    tar -zcvf kernel.tar.gz kernel
    
  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.spec SPECS/
    rm -rf SOURCES/kernel
    
  5. 编译生成内核RPM包。
    1
    vi /usr/lib/rpm/macros
    

    修改“%_unpackaged_files_terminate_build 1”为“%_unpackaged_files_terminate_build 0”。

    1
    rpmbuild -bb /home/rpmbuild/SPECS/kernel.spec --with baseonly --without debug --without debuginfo
    
  6. 查看生成的内核RPM包。
    ls /home/rpmbuild/RPMS/aarch64/

安装内核

  1. 将生成内核RPM包中生成的内核RPM包上传至“/home/kernel-rpm”目录。
    1
    mkdir -p /home/kernel-rpm
    
  2. 安装内核RPM包。
    1
    2
    cd /home/kernel-rpm
    dnf -y install kernel-4.19.90-2012.4.0.0053.aarch64.rpm kernel-devel-4.19.90-2012.4.0.0053.aarch64.rpm
    
  3. 查看默认内核启动项。
    1
    grub2-editenv list
    

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

    • 如果默认版本是新安装的内核版本,则跳过4。
    • 如果默认版本不是新安装的内核版本,则执行4。
  4. 修改默认内核启动项。
    1
    cat /etc/grub2-efi.cfg  | grep openEuler
    

    其中“openEuler (4.19.90-2012.4.0.0053.aarch64) 20.03 (LTS-SP1)”为新安装内核版本。

    grub2-set-default "openEuler (4.19.90-2012.4.0.0053.aarch64) 20.03 (LTS-SP1)"
  5. 重启系统。
    1
    reboot