Linux内核5.0-rc1已经于前几天发布了,终于要迎来5.X时代了。。。
不过除了版本号刷的比较新以外,其实也没多大具体的改动或者说新功能。。。
安装开发工具包,这里面包含了编译所需的GCC/MAKE之类的包,算是个全家桶吧:
yum -y groupinstall "Development Tools"
安装其他所需的依赖,因为我打算把它打包成RPM包,所以这里额外装一个rpmbuild:
yum -y install bc rpm-build ncurses-devel openssl-devel elfutils-libelf-devel
然后就是下载解压内核源码了:
wget https://git.kernel.org/torvalds/t/linux-5.0-rc1.tar.gz tar -xzvf linux-5.0-rc1.tar.gz cd linux-5.0-rc1
装了ncurses-devel,所以这里我们用图形化界面来配置内核参数:
make menuconfig
初始界面:
先要了解这个界面怎么操作,上下键用来操作竖向功能,左右键用来操作横向功能,譬如Select/Exit/Help/Save/Load这些。空格选择功能是否启用,*代表把功能直接编译到内核,M代表把功能编译成模块,留空为不启用。
首先我们来开启BBR,先在初始界面选择Networking support,然后再选择Networking options:
在里面找到TCP:advanced congestion control回车进入:
往下翻你就可以看到BBR TCP这一选项了,按空格设置成M(编译成模块):
BBR的设置就完成了,接下来我们要关闭debug信息,不然编译出来的内核可能体积特别大,先选择Kernel hacking:
在里面选择Compile-time checks and compiler options:
按空格取消Compile the kernel with debug info:
使用键盘左右键切到SAVE保存,你将看到这个界面,回车:
再回车一次退出:
然后你可以看到它默认是直接使用我们系统原先自带的config再加上我们刚在界面上设置的功能来进行编译:
现在就可以开始编译并打包成RPM包了,我在一台4核8线程的机器上编译,所以我指定了-j8,然后我是打包成二进制的RPM包,这样RPM包体积会比较小,最后我为了防止编译过程中可能会出现错误,我将日志输出到build-err.log:
make -j8 binrpm-pkg 2> build-err.log
我这台机器编译完成大概10分钟多一点的样子,如果一切正常,你可以看到类似如下图的输出:
然后我们进入这个目录:
cd /root/rpmbuild/RPMS/x86_64
使用yum安装:
yum -y localinstall *.rpm
设置默认启动的内核为我们刚编译的5.0-rc1:
grub2-set-default 0
重启:
reboot
开启BBR:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p
查看BBR状态:
lsmod | grep bbr
OK,一切正常:
这个方法搞出来的内核感觉还是只能自己玩玩,我这样子打包出来的RPM包体积还是过大,有200多MB。。。正常情况下应该50MB左右才对,我再看看是哪里有问题。。。
另外我看了下Ubuntu的PPA里面已经有这个5.0-rc1的内核了,如果你有吃灰VPS的话,重装成Ubuntu然后用包管理器应该就能换这个内核。
LALA,我要怎么做才能像你这么优秀?同九年,汝何秀?