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

本文介绍了在Ubuntu20.04上下载、配置和编译Linux内核源代码的步骤,包括修改apt源、安装依赖、下载源代码及配置编译环境。主要涉及内容包括查看内核信息、安装必要的软件包以避免编译错误,并探讨了内核中的网络相关设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

我最近的科研工作需要使用到对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内核源码? 刘项

<think>好的,用户的问题是在Windows环境下下载Ubuntu 20.04并更新其内核,特别是通过WSL或其他方式。首先,我需要确认用户的需求是安装Ubuntu 20.04的镜像,并且希望更新Linux内核。用户可能已经了解WSL,但不确定具体步骤,或者可能对镜像下载和内核升级的具体操作不太熟悉。 首先,下载Ubuntu 20.04镜像。根据引用[1]和[2],用户可以通过Microsoft Store安装Ubuntu 20.04.6 LTS,这是通过WSL安装的标准方法。另一种方式是手动下载ISO文件,例如引用[3]中使用qemu启动虚拟机时使用的ISO,用户可能需要从Ubuntu官网下载。这里需要分步骤说明这两种方法,并指出通过Microsoft Store安装更简单,适合普通用户,而手动下载ISO适合需要虚拟机的场景。 接下来是安装部分。如果用户选择WSL,需要确保Windows版本支持WSL 2,并启用相关功能。步骤包括启用虚拟机平台和WSL功能,然后通过PowerShell命令安装Ubuntu。如果用户选择虚拟机方式,需要指导他们使用VirtualBox或VMware加载ISO文件进行安装。 然后是更新软件源和软件包,这一步对于后续的内核更新很重要。引用[2]提到修改Ubuntu软件源,可能需要替换为国内镜像源,比如阿里云或清华源,以加快下载速度。需要提供具体的命令,如备份sources.list文件,替换源,然后运行更新。 接下来是内核升级。WSL 2的情况比较特殊,因为它的内核由Microsoft提供,用户无法直接升级。需要解释WSL 2的内核更新方式,即通过Windows更新来获取。如果用户需要自定义内核,可能需要使用虚拟机方式安装Ubuntu,然后通过官方仓库或手动编译来升级内核。对于虚拟机中的Ubuntu,可以使用apt命令安装linux-generic-hwe-20.04来获取最新的HWE内核。 还需要注意用户可能的误区,比如在WSL中升级内核的限制,以及虚拟机环境中更灵活的升级方式。同时,提醒用户在操作前备份重要数据,避免意外情况。 最后,生成相关问题需要考虑用户可能的后续疑问,比如验证内核版本、WSL和虚拟机的区别、手动编译内核的步骤,以及软件源替换的必要性。</think>### 分步指南:在Windows中下载Ubuntu 20.04并更新内核 #### 一、下载Ubuntu 20.04镜像 1. **通过WSL安装(推荐)** - 打开 **Microsoft Store**,搜索 "Ubuntu 20.04 LTS" - 选择 **Ubuntu 20.04.6 LTS**[^1],点击“获取”完成安装 - 安装后从开始菜单启动Ubuntu,按提示设置用户名和密码 2. **手动下载ISO镜像(虚拟机使用)** - 访问 [Ubuntu官网](https://releases.ubuntu.com/20.04/) 下载 `ubuntu-20.04.6-desktop-amd64.iso`[^3] - 若需通过命令行验证完整性,可对比SHA256校验码 #### 二、配置WSL或虚拟机环境 1. **WSL 2环境要求** - Windows 10版本2004或更高/Windows 11 - 启用功能: ```powershell dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` - 设置WSL 2为默认版本: ```powershell wsl --set-default-version 2 ``` 2. **虚拟机安装(可选)** - 使用VirtualBox/VMware加载ISO文件 - 执行安装流程时选择“安装第三方驱动及更新”[^3] #### 三、更新软件源与内核 1. **替换软件源加速更新** ```bash sudo sed -i "s@http://archive.ubuntu.com@https://mirrors.aliyun.com@g" /etc/apt/sources.list sudo apt update && sudo apt upgrade -y ``` *注:也可选择清华源(`mirrors.tuna.tsinghua.edu.cn`)[^2]* 2. **内核升级操作** - **WSL 2用户**: WSL内核由Microsoft维护,需通过Windows更新获取新版本: ```powershell wsl --update ``` - **物理机/虚拟机用户**: ```bash sudo apt install --install-recommends linux-generic-hwe-20.04 sudo reboot ``` 升级后验证: ```bash uname -r # 应显示5.x.x-x-generic ``` ### 关键区别说明 | 环境 | 内核更新方式 | 自定义能力 | |-------------|-------------------------------|------------------| | WSL 2 | 依赖Windows更新 | 受限,不可修改 | | 物理机/虚拟机 | 通过apt或手动编译内核 | 完全可控 | ### 注意事项 1. WSL 2不支持直接修改内核模块 2. 生产环境建议优先使用LTS内核分支(如`linux-generic-hwe-20.04`) 3. 内核编译需安装`build-essential`和内核源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值