ubuntu20.04下内核源码下载分析

写在前面

我最近的科研工作需要使用到对ubuntu内核源代码进行编译,因此我下载了最新的长期支持版本的ubuntu20.04,为什么使用最新版而不是16.04或者18.04呢?因为最新版本的内核支持最新的技术,更完善更好,并且20.04已经发布一年多,且是长期支持版本,兼容性和可靠性值得信赖。
当前时间最新版本是21.04,不太建议使用这么新的版本,一是可能没那么稳定,二是不是长期支持版本LST。
那些想要修改内核源代码或在读源码编译源码的人,都可以从本博客中学习到一点我总结的知识。我的信息都来自互联网,只不过是对前人工作的总结。
本文没有进行内核编译,只是下载源代码,查看分析!

一、安装VMware Workstation和Ubuntu20.04

这个不是本博客的重点内容,详细步骤请参考互联网。
我安装的过程没有参考哪些文章,20.04安装非常简单,只需要输入用户名和密码就好了,基本的配置都会给默认弄好。
查看ubuntu版本信息

uname -a

图1

二、修改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

图2

四、配置编译内核的依赖和环境

在目录/usr/src/linux-5.10下执行命令:

sudo make menuconfig

发现是报错的,无法正常进入那个编译内核的界面。
图3

需要安装一系列的包,中间我踩了很多坑,只需要照着做就行了,包是什么,什么功能现在也不必知道。

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内核源码? 刘项

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 20.04系统中更换内核通常是为了获得更好的性能、安全性更新或者兼容特定硬件。以下是一般的步骤: 1. **安装新内核**: - 首先,你需要访问Ubuntu的官方软件仓库,可能需要添加额外的PPA(Personal Package Archive)来获取非默认内核。例如,如果你想要安装`Linux Kernel Mainline`,你可以访问https://wiki.ubuntu.com/Kernel/MainlineBuilds 并按照说明操作。 - 使用`sudo apt-add-repository`命令添加PPA,然后使用`sudo apt update`和`sudo apt upgrade`来获取和安装新内核。 2. **选择内核版本**: - 在`apt`库中查看可用的内核版本,确认你想安装的具体版本号,比如`linux-generic focal (4.15.0-96-generic)` 或 `linux-generic-focal`. 3. **安装或切换到新内核**: - 使用`sudo apt install linux-generic-focal`或`sudo apt install linux-{version}`替换`focal`和`{version}`为所选内核版本。 - 注意,在执行此操作前,可能需要备份当前正在使用的内核,以防需要恢复。 4. **重启并检查新内核**: - 安装完成后,重启电脑 (`sudo reboot`),并在启动过程中检查是否加载了新的内核。可以查看GRUB菜单,或者在启动时按`Ctrl + Alt + F1`进入单用户模式,查看`uname -a`命令输出。 5. **配置启动选项**: - 可能需要在GRUB引导菜单中设置默认加载新内核。可以在GRUB提示符下使用`update-grub`命令,然后手动选择启动项。 **相关问题--:** 1. Ubuntu 20.04默认支持哪些内核版本? 2. 如何查看当前系统的默认内核? 3. 更换内核后,旧内核文件会自动删除吗?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值