ubuntu20.04下内核源代码下载,配置编译环境
写在上面
我近来的科研工作须要使用到对ubuntu内核源代码进行编译,为此我下载了最新的常年支持版本的ubuntu20.04,为何使用最新版而不是16.04或则18.04呢?由于最新版本的内核支持最新的技术,更建立更好,而且20.04早已发布一年多,且是常年支持版本,兼容性和可靠性值得信赖。
当前时间最新版本是21.04,不太建议使用如此新的版本,一是可能没这么稳定,二是不是常年支持版本LST。
这些想要更改内核源代码或在读源码编译源码的人,都可以从本博客小学习到一点我总结的知识。我的信息都来自互联网,只不过是对前人工作的总结。
本文没有进行内核编译,只是下载源代码,查看剖析!
一、安装VMwareWorkstation和Ubuntu20.04
这个不是本博客的重点内容,详尽步骤请参考互联网。
我安装的过程没有参考什么文章,20.04安装十分简单,只须要输入用户名和密码就好了,基本的配置就会给默认弄好。
查看ubuntu版本信息
uname -a
二、修改apt源
Ubuntu安装包和依赖都须要apt工具,国外可以修改apt源为阿里云镜像或则北大镜像。
修改apt源为阿里云镜像。
首先备份原先的apt源文件
sudo cp -v /etc/apt/sources.list /etc/apt/sources.list.backup
修改sources.list文件内容为:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
须要注意的是,不同版本的源是不一样的,Ubuntu20.04版本名称为focal,假如使用了错误的版本,这么会导致apt好多下载无法使用。
sudo apt update
sudo apt upgrade
默认的Ubuntu20.04很多包都没有安装,包括vim,git等,可以依照自己的须要进行安装,这儿不再描述。
三、下载Linux内核源代码
使用前面的查看内核信息,可以看见内核版本号,我的版本是5.11.0
内核代码都放置在:
/usr/src
步入该目录,发觉并没有Linux内核源代码,只有四个头文件包header,由于默认安装的Ubuntu20.04没有将源文件保留,对于大多数用户,不须要源代码包。我们可以去网上下载linux 内核版本查看,我找到了一个下载速率比较快的网站:
Linux内核源代码下载
步入网页,往下拉,里面都是补丁内容,下边是内核源码,找一个5.10版本开头的,tar.gz结尾的,下载出来就好,速率很快的。
之后进行解压缩,步入压缩包的目录,输入下边的shell命令
tar -zxvf linux-5.10-37.tar.gz
cp linux-5.10.37 /usr/src
如今可以步入源代码目录下边,查看内容:
(我下载的版本是linux-5.10)
cd /usr/src
cd linux-5.10
ls
四、配置编译内核的依赖和环境
在目录/usr/src/linux-5.10下执行命令:
sudo make menuconfig
发觉是报错的,难以正常步入那种编译内核的界面。
须要安装一系列的包,中间我踩了好多坑,只须要照着做就行了,包是哪些linux虚拟主机,哪些功能如今也毋须晓得。
sudo apt install gcc
sudo apt install libc6-dev
sudo apt install libncurses-dev
sudo apt install flex
sudo apt install bison
安装好以后就可以成功步入那种配置界面了。
/usr/src/linux-5.10 sudo make menuconfig
五、查看内核关于网路的内容
sudo sysctl net.ipv4.tcp_availiable_congestion_control
编译进内核的tcp串扰控制算法只有reno(reno虽然就是newreno)和cubic,但是默认的串扰控制算法是cubic
我步入内核配置界面,发觉似乎是有好多串扰控制算法的,只是其他串扰控制算法编译为模块,不是编译进内核。
想要使用所有的串扰控制算法,来做科研测试等,须要安装模块,或则编译进内核。
sudo sysctl net.ipv4.tcp_congestion_control
值得我注意到是,我发觉新版本的内核早已支持了mptcp,在net包下有一个mptcp的目录,但是使用下边的指令,值为1,可以发觉启用了mptcp:
sudo sysctl net.mptcp.enabled
我很好奇内核代码的传输层合同为mptcp和tcp的性能差异linux 内核版本查看,因而我进行了简单的测试。
我是用mininet进行的网路测试,发觉多个端口情况下,mptcp和tcp的性能一样linux命令,普通情况下mptcp性能居然还要比tcp低一点。
代码和过程就不放了,如今我也不想研究mptcp,tcp就够我喝一壶了!
参考内容
[1]Ubuntu20.04更改国外源
[2]怎么下载linux内核源码?刘项