Fedora 19编译内核(打BFS+BFQ+UKSM补丁)简易指南

编程入门 行业动态 更新时间:2024-10-07 16:21:43

Fedora 19编译<a href=https://www.elefans.com/category/jswz/34/1769575.html style=内核(打BFS+BFQ+UKSM补丁)简易指南"/>

Fedora 19编译内核(打BFS+BFQ+UKSM补丁)简易指南

2019独角兽企业重金招聘Python工程师标准>>>

自定义内核显然就是开源的好处之一,不过内核编译属于高级用户(Advanced Users)的范畴,newbies慎入。下面以Fedora 19为例(Fedora 14及更高版本都是通用的内核编译方法,以后如果有变动了我会更新)。

准备工作

终端运行,

1 su-c'yum install rpmdevtools yum-utils ncurses-devel'

我的系统装在SSD上,比较小,所以我把RPM的编译主目录放在移动硬盘(/media/c/rpmbuild)上。编辑~/.rpmmacros,修改第一行为:

1 %_topdir /media/c/rpmbuild

保存退出,然后终端下运行rpmdev-setuptree,这个时候/media/c/rpmbuild会自动生成,且下面会有RPM、BUILD、BUILDROOT等文件夹。下载Fedora所用的内核源代码(不要去下kernel上的源码,Fedora用的内核打了大量的补丁,下载原版内核编译可能会出现问题)。

1 2 3 yumdownloader --sourcekernel --enablerepo=updates-testing su-c'yum-builddep kernel-<version>.src.rpm' rpm -Uvh kernel-<version>.src.rpm

是下载的内核SRPM的版本号,请相应替换之。第三条指令rpm -Uvh可能会出现一堆警告,可以忽视。
现在可以准备内核源代码了,终端下继续执行:

1 2 cd/media/c/rpmbuild/SPECS rpmbuild -bp --target=$(uname-m) kernel.spec

下载好想要打的补丁,比如CK补丁集(BFS)、BFQ IO调度器、UKSM内存整理补丁等,基本都用下面这条指令打上这些补丁。

1 2 cd/media/c/rpmbuild/BUILD/kernel-<version>/linux-<version>/ patch -p1 </PATH_TO_PATCHES/patch-3.10-ck1

编译内核

这个时候,继续留在内核源码目录(/media/c/rpmbuild/BUILD/kernel-/linux-/),打开Makefile文件进行编辑,把”EXTRAVERSION =”这一行改一下,以便和Fedora仓库里的官方内核进行区分,比如”EXTRAVERSION = -librehat”,然后执行下面的指令。

1 2 3 cpconfigs/kernel-<version>-x86_64.config .config makeoldconfig makemenuconfig

第一条指令是把默认的配置复制过来(x86_64是64位PC机的配置文件),第二条make oldconfig执行后会有少数几个选项,按照自己需要选好,然后make menuconfig后就开始对内核配置进行大刀阔斧的改动吧,这里要提醒一下,一定要关掉Kernel hacking–>Kernel debugging,不然modules文件夹会超级大(默认配置下编译高达1.7G!)。此外control groups(cgroups)一定要打开,不然Fedora所用的systemd会不能工作。剩下的就是精简内核模块、缩小内核体积!编辑完毕记得Save然后Exit.

和wiki上说的不一样,毕竟咱不是内核开发者不去fedora提交rpm的补丁,不要重新去改SPECS然后rpm -bb什么的了,直接终端下运行

1 makerpm

稍等(视机器水平,大概几分钟到几十分钟)完毕后,在/media/c/rpmbuild/RPMS/x86_64(假设你也是64位机器)下会有kernel和kernel-headers的rpm包生成。用rpm指令安装之:

1 rpm -ivh <new-kernel-rpm>

准备新内核启动

反正我安装后没有给我生成initramfs镜像,也没更新GRUB2的grub.cfg文件。所以我终端下执行下面这个指令来生成initramfs镜像:

1 2 cd/boot su-c'dracut initramfs-3.10.10-librehat.img 3.10.10-librehat'

其中3.10.10-librehat是内核的名字(/boot/vmlinuz-3.10.10-librehat),然后更新grub.cfg文件:

1 su-c'grub2-mkconfig > /boot/grub2/grub.cfg'

确保输出中新内核的vmlinuz和initramfs都找到了。现在可以重启试试新编译的内核什么效果了!!!我精简后/lib/modules/3.10.10-librehat只有30+MB(最骨感的能到20+MB)。

一切顺利,而且你打算让yum不再插手内核的升级,今后内核的升级就包在自己手动优化地编译了!那么编辑/etc/yum.conf,在exclude里加上kernel*(如果没有exclude就手动加一行),如:

1 exclude=kernel*

如此,yum update或者yum upgrade就会跳过kernel相关的rpm包了!

转载于:

更多推荐

Fedora 19编译内核(打BFS+BFQ+UKSM补丁)简易指南

本文发布于:2024-03-23 19:44:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742078.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内核   简易   补丁   指南   Fedora

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!