- 写在前面
- 一、安装VMware Workstation和Ubuntu20.04
- 二、修改apt源
- 三、下载Linux内核源代码
- 四、配置编译内核的依赖和环境
- 五、查看内核关于网络的内容
- 参考内容
我最近的科研工作需要使用到对ubuntu内核源代码进行编译,因此我下载了最新的长期支持版本的ubuntu20.04,为什么使用最新版而不是16.04或者18.04呢?因为最新版本的内核支持最新的技术,更完善更好,并且20.04已经发布一年多,且是长期支持版本,兼容性和可靠性值得信赖。
当前时间最新版本是21.04,不太建议使用这么新的版本,一是可能没那么稳定,二是不是长期支持版本LST。
那些想要修改内核源代码或在读源码编译源码的人,都可以从本博客中学习到一点我总结的知识。我的信息都来自互联网,只不过是对前人工作的总结。
本文没有进行内核编译,只是下载源代码,查看分析!
这个不是本博客的重点内容,详细步骤请参考互联网。
我安装的过程没有参考哪些文章,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内核源代码下载
进入网页,往下拉,上面都是补丁内容,下面是内核源码,找一个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
发现是报错的,无法正常进入那个编译内核的界面。
需要安装一系列的包,中间我踩了很多坑,只需要照着做就行了,包是什么,什么功能现在也不必知道。
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其实就是new reno)和cubic,并且默认的拥塞控制算法是cubic
我进入内核配置界面,发现其实是有很多拥塞控制算法的,只是其他拥塞控制算法编译为模块,不是编译进内核。
想要使用所有的拥塞控制算法,来做科研测试等,需要安装模块,或者编译进内核。
sudo sysctl net.ipv4.tcp_congestion_control
值得我注意到是,我发现新版本的内核已经支持了mptcp,在net包下有一个mptcp的目录,并且使用下面的指令,值为1,可以发现启用了mptcp:
sudo sysctl net.mptcp.enabled
我很好奇内核代码的传输层协议为mptcp和tcp的性能差别,因此我进行了简单的测试。
我是用mininet进行的网络测试,发现多个端口情况下,mptcp和tcp的性能一样,普通情况下mptcp性能竟然还要比tcp低一点。
代码和过程就不放了,现在我也不想研究mptcp,tcp就够我喝一壶了!
[1] Ubuntu20.04修改国内源
[2] 如何下载linux内核源码? 刘项
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)