openeuler2403SP3编译最新版本kernel v7.0.9具体过程
一,系统环境
openneuler2403SP3这里已经安装好UKUI图形界面,这里再安装下编译依赖,可以根据需求安装
dnf groupinstall -y “Development Tools”
dnf install -y rpm-build openssl-devel bc rsync gcc gcc-c++ flex bison m4 elfutils-libelf-devel
dnf install -y ncurses-devel elfutils-libelf-devel bc openssl-devel bison flex
二,下载内核并编译安装
1,下载解压内核
cd /opt
wget https://mirrors.nju.edu.cn/kernel.org/linux/kernel/v7.x/linux-7.0.9.tar.gz
tar -zxvf linux-7.0.9.tar.gz
2,进下内核目录
cd linux-7.0.9
3,配置内核选项
通过复用现有配置并微调,可以确保新内核包含当前系统的驱动和功能,简化定制流程。
复用当前配置:将系统当前运行内核的配置文件复制到源码目录,作为基础配置。
cp /boot/config-$(uname -r) .config
sed -i ‘s|CONFIG_SYSTEM_TRUSTED_KEYS=.*|CONFIG_SYSTEM_TRUSTED_KEYS=“”|’ .config
sed -i ‘s|CONFIG_SYSTEM_EXTRA_CERTIFICATE=.*|CONFIG_SYSTEM_EXTRA_CERTIFICATE=“”|’ .config
make olddefconfig
以上命令修改内核配置,不然编译会有报错。
4,. 编译内核
配置完成后,即可开始编译。-j$(nproc)参数会利用所有CPU核心并行编译,加速过程。
make -j$(nproc)
注意:编译过程耗时较长(半小时至数小时不等),如果在过程中遇到错误,可以尝试去掉-j参数,以便清晰地定位错误信息。
5, 安装内核与模块
编译成功后,需要将内核镜像、模块等文件安装到系统指定位置。
安装内核模块到 /lib/modules/ 目录下
sudo make modules_install
安装内核文件(vmlinuz, System.map等)到 /boot 目录,并自动更新GRUB配置
sudo make install
cp .config /boot/config-7.0.9
执行sudo make install后,它会自动复制内核到/boot,生成对应的initramfs,并将新内核条目添加到GRUB的启动菜单中。
6,更新引导与重启验证
手动更新GRUB以确保配置生效,并重启系统以加载新内核。
sudo grubby --set-default-index=0
更新GRUB配置:
对于使用UEFI引导的系统,GRUB配置文件路径通常是/boot/efi/EFI/openEuler/grub.cfg。如果不确定,可检查/boot/efi/EFI/下的具体目录名。
请将路径替换为你的实际GRUB配置文件路径
sudo grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
如果你使用的是传统的BIOS引导,命令通常是:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重启系统:
sudo reboot
系统重启时,在GRUB启动菜单中选择你刚编译的 7.0.9 内核启动。
登录验证:
成功登录后,执行以下命令,如果终端输出7.0.9,则代表新内核已成功运行。
uname -r
在 openEuler 中,要将系统默认启动项改为新编译的内核,核心思路就是让 GRUB2 引导器知道新内核的存在,并将其设为默认项。
这里有三种不同复杂度的方法,你可以根据自己的情况选择。
方法一:使用 grubby 命令(最简单高效)
这个方法直接、安全,推荐的默认方式。它会直接修改 GRUB 配置,无需你关心内核的具体文件名。
-
确认新内核已在列表中:
新内核安装后,首先查看它在 GRUB 菜单中的索引号。这个索引号从0开始计数。bash
grubby --info=ALL | grep -E "^index|^title"输出会清晰列出每个启动项的索引和对应的内核版本。
-
设置新内核为默认项:
找到新内核的索引(比如是0),运行以下命令将其设为默认启动项:bash
sudo grubby --set-default-index=0 -
验证并重启:
检查默认项是否设置成功,然后重启系统即可。bash
grubby --default-index sudo reboot