openeuler内核编译

总结步骤应该是:

  1. 准备环境:安装依赖,配置源(如果需要的话)

  2. 下载内核源码(使用yum或手动下载)

  3. 配置内核(menuconfig)

  4. 编译(make -j)

  5. 安装模块和内核

  6. 更新引导配置

  7. 重启并验证


一、准备工作

1. 安装依赖工具

sudo dnf groupinstall "Development Tools" # 安装开发工具组

sudo dnf install rpm-build redhat-rpm-config unifdef # RPM 构建工具

sudo dnf install ncurses-devel elfutils-libelf-devel bc # 内核编译依赖

2. 配置 openEuler 源(可选)

如果需要获取最新源码或特定版本,可配置国内镜像加速:


# 以阿里云镜像为例

sudo sed -i 's|http://repo.openeuler.org|https://mirrors.aliyun.com/openeuler|g' /etc/yum.repos.d/openeuler.repo

sudo dnf clean all && sudo dnf makecache


二、下载内核源码

方法1:通过包管理器安装(推荐)

# 安装与当前内核匹配的源码包(自动匹配版本)

sudo dnf install kernel-source.`uname -m` # 根据架构选择(如 aarch64/x86_64)

安装完成后,源码位于:


/usr/src/linux-<版本号>.<架构>/

方法2:手动下载特定版本

# 从 openEuler 官方仓库下载 SRPM 包(以 22.03 LTS-SP1 为例)

wget https://repo.openeuler.org/openEuler-22.03-LTS-SP1/update/aarch64/Packages/kernel-source-5.10.0-136.12.0.rt62.59.oe2203sp1.aarch64.rpm

# 解压 SRPM 获取源码

rpm2cpio kernel-source-*.rpm | cpio -idmv

tar -xvf kernel.tar.gz # 解压后得到内核源码目录


三、配置内核(make menuconfig

  1. 进入源码目录

    
    cd /usr/src/linux-<版本号>.<架构>/
    
    
  2. 生成配置文件(可选,保留当前配置):

    
    cp /boot/config-$(uname -r) .config
    
    
  3. 修改内核配置

    
    make menuconfig # 使用文本界面配置工具
    
    
    • 示例修改项(根据需求调整):

      • 修改 PAGESIZE:进入 Kernel FeaturesPage size → 选择 4KB

      • 启用调试选项:Kernel hackingCompile-time checks and compiler optionsCompile the kernel with debug info

      • 禁用地址随机化:Kernel hardeningAddress Space Layout Randomization (ASLR) → 取消勾选。

  4. 保存配置并退出。


四、编译内核


make -j $(nproc) # 根据 CPU 核心数并行编译(如 -j64)

  • 常见问题

    • 若编译失败(如缺少头文件),尝试:

      
      sudo dnf install kernel-devel-$(uname -r)
      
      sudo dnf builddep kernel # 自动安装依赖
      
      

五、安装内核模块和镜像


sudo make modules_install # 安装内核模块

sudo make install # 安装内核镜像和配置到 /boot/


六、更新引导配置(GRUB)


sudo grub2-mkconfig -o /boot/efi/EFI/openeuler/grub.cfg # aarch64/x86_64

# 或

sudo grub2-mkconfig -o /boot/grub2/grub.cfg # 部分版本路径不同

设置默认启动项(可选)

# 查看可用内核版本

cat /etc/grub2-efi.cfg | grep openEuler

# 设置默认启动项(如新编译的内核)

sudo grub2-set-default "openEuler (5.10.0) 22.03 (LTS-SP1)"


七、重启系统并验证


sudo reboot

重启后执行:


uname -r # 查看内核版本

getconf PAGESIZE # 验证修改的 PAGESIZE(如 4096)


八、常见问题处理

  1. 依赖缺失

    
    sudo dnf install <缺失包名> # 根据错误信息安装
    
    
  2. 编译失败

    • 检查日志中的错误信息,常见问题包括:

      • 内存不足:增加交换空间或减少 -j 参数。

      • 配置冲突:删除 .config 文件后重新配置。

  3. 无法启动新内核

    • 确保 make install 正确生成 /boot/vmlinuz-<版本>/boot/initramfs-<版本>.img

    • 检查 GRUB 配置是否包含新内核条目。


附录:交叉编译(如 Atlas 200I A2 设备)

如果在 x86 服务器上为 ARM 设备编译内核:

  1. 安装交叉编译工具链(如 aarch64-linux-gnu-gcc)。

  2. 指定架构编译

    
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
    
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j64
    
    

总结步骤

  1. 安装依赖 → 2. 下载源码 → 3. 配置 → 4. 编译 → 5. 安装 → 6. 更新 GRUB → 7. 重启验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值