编译EulerOS/openEuler 内核方法,以修改pagesize 64K为例
步骤说明:
Pagesize是内核参数,需要修改内核重新编译,然后运行新内核即可。
利用getconf PAGESIZE可以查看当前系统页大小,4096为4K,65536为64K。华为鲲鹏云虚拟机用的是EulerOS,默认页大小是4K,其他操作系统有可能默认就是64K,修改之前要确认好。
[root@test ~]#getconf PAGESIZE
4096
(1) 修改内核参数编译内核
1. 这里采用Euler编译环境方式,先下载Euler_compile_env.tar.gz。外部联系华为技术支持提供。内部推荐在CMC上对应版本下载,wget会很慢。
这里以EulerOS Server V200R008C00B380 版本为例:
https://cmc-szv.clouddragon.huawei.com/cmcversion/index/componentVersionView?deltaId=14525855
同时下载kernel源码包kernel-source-4.19.36-vhulk1907.1.0.h434.eulerosv2r8.aarch64.rpm,里面是发布的内核源码。
2. 解压编译环境
tar -xzvf Euler_compile_env.tar.gz
解压完成以后,进入Euler_compile_env目录,新建myComp目录。将内核源码包kernel-source-4.19.36-vhulk1907.1.0.h434.eulerosv2r8.aarch64.rpm放到此目录解压。
[root@test ~]#cd Euler_compile_env
[root@test ~]#mkdir myComp
[root@test ~]#cp your/rpm/path/kernel-source-4.19.36-vhulk1907.1.0.h434.eulerosv2r8.aarch64.rpm myComp
[root@test ~]#cd myComp
[root@test ~]#rpm2cpio kernel-source-4.19.36-vhulk1907.1.0.h434.eulerosv2r8.aarch64.rpm | cpio –divm
3. 进入chroot环境(必须使用root账户)
[root@test ~]# cd Euler_compile_env/
[root@test Euler_compile_env]# sh chroot.sh
4. 进入内核源码树
test:/ # cd myComp/usr/src/kernels/linux-4.19.36-vhulk1907.1.0.h434.eulerosv2r8.aarch64/
5. 拷贝配置文件
cp /lib/modules/4.19.36-vhulk1907.1.0.h430.eulerosv2r8.aarch64/build/Makefile .
cp /lib/modules/4.19.36-vhulk1907.1.0.h430.eulerosv2r8.aarch64/build/.config .
6. 修改.config
修改.config文件的CONFIG_MODULE_SIG_KEY选项为:CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
7. 修改pagesize为64K,执行make menuconfig,弹出图形化面板,选择Kernel Features-->Page size(64KB)设置为64K。
8. 并发编译内核rpm, 并发线程数可根据环境的cpu核数指定
make rpm-pkg –j8
9. 编译成功,在编译环境目录搜索rpm即可找到新编译的内核。
10. 如果获取不到配套的内核编译环境,使用一个最近的编译环境也是可以的,将内核补丁仓下载到编译环境中直接编译pkg即可。
(2) 设置新内核启动
1. 安装上面编译的内核rpm包,命令:rpm -ivh XXXX.rpm
2. 修改启动项选项
vi /boot/efi/EFI/euleros/grub.cfg
要检查刚安装的内核是不是系统优先启动的,如果不是要设置成优先启动。一般来说是默认启动,新安装的内核信息会放在第一个:
可以强行启动内核的序号,如修改:set default=“0”【注意:测试完成要改回原样】
3. 重新OS,注意时间可能有点长,内核需要重新分配页,第二次就好了。
4. 系统启动后,检查getconf PAGESIZE,如果是65536表示修改OK。
- 点赞
- 收藏
- 关注作者
评论(0)