为你的WSL2编译属于自己的6.x内核并且开启BBR加速

这两天在玩windows自带的wsl2,但是作为有强迫症的我看到内核不是最新的就感觉不舒服,偏偏微软还就不更新,于是我就萌生了一个自己编译一个内核的想法,下面就是我编译的步骤:

我是从microsoft store下载的Ubuntu,所以本教程基于Ubuntu20.04所写,而且本教程默认基于root用户,免去权限烦恼。

首先安装一些需要用到的软件:

apt update
apt upgrade
apt install build-essential flex bison dwarves libssl-dev libelf-dev -y

安装好需要使用的软件以后进入kernel.org,找到最新的内核源码,现在写这篇文章时是6.10.1。

下载源码并且解压:

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.7.3.tar.xz
tar -xvJf linux*.tar.xz
cd linux-6.10.1

我们还需要进入WSL的官方github获取编译配置文件:

mkdir Microsoft
wget -O Microsoft/config-wsl https://raw.githubusercontent.com/microsoft/WSL2-Linux-Kernel/linux-msft-wsl-6.6.y/arch/x86/configs/config-wsl

接下来编辑配置文件:

vim Makefile

把我选择的那一行后面修改一下,可以添加你个人的信息等等。

vim Microsoft/config-wsl

这里可以在末行模式开启行数显示,方便你快速定位。

:set nu

我光标那里的值可以随便替换,当然不替换也行,看你心情。接下来就是开启bbr,需要使用vim的查找功能,在末行模式下输入”/你想查找的内容”具体不明白可以自行google。

以下这些值需要替换或者修改。

CONFIG_X86_INTEL_TSX_MODE_OFF=y
# CONFIG_X86_INTEL_TSX_MODE_ON is not set
# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
CONFIG_TCP_CONG_ADVANCED=y
# CONFIG_TCP_CONG_BIC is not set
CONFIG_TCP_CONG_CUBIC=y
# CONFIG_TCP_CONG_WESTWOOD is not set
# CONFIG_TCP_CONG_HTCP is not set
# CONFIG_TCP_CONG_HSTCP is not set
# CONFIG_TCP_CONG_HYBLA is not set
# CONFIG_TCP_CONG_VEGAS is not set
# CONFIG_TCP_CONG_NV is not set
# CONFIG_TCP_CONG_SCALABLE is not set
# CONFIG_TCP_CONG_LP is not set
# CONFIG_TCP_CONG_VENO is not set
# CONFIG_TCP_CONG_YEAH is not set
# CONFIG_TCP_CONG_ILLINOIS is not set
# CONFIG_TCP_CONG_DCTCP is not set
# CONFIG_TCP_CONG_CDG is not set
CONFIG_TCP_CONG_BBR=y
CONFIG_DEFAULT_TCP_CONG="bbr"
# CONFIG_DEFAULT_CUBIC is not set
CONFIG_DEFAULT_BBR=y
# CONFIG_DEFAULT_RENO is not set

修改完成以后保存并且退出。

接下来就是开始编译了,一般几分钟至十几分钟就可以完成,具体看你的电脑性能:

make -j$(nproc) KCONFIG_CONFIG=Microsoft/config-wsl

输入这行命令以后就会开始编译,不过由于我们的内核是自己下载的最新稳定版本,所以会有很多配置不同,接下来会有很多询问,一直回车选择默认就好。

编译完成以后就会提示:

Kernel: arch/x86/boot/bzImage is ready

这时我们就可以打开我们windows的资源管理器,网络位置处选择linux,再选择ubuntu,进入你刚才编译的那个文件夹,可以在ubuntu中使用pwd命令查询文件夹位置,我的就是/home/moyuwuhen/linux-6.7.3,在资源管理器中进入这个位置,然后再进入arch/x86/boot/,找到bzImage,这个就是你编译完成的内核了,把他移动到windows的文件夹里,我的位置就是C:\WSL-kernel,这个位置随意,你记住就行。接下来修改一下wsl的默认配置来使用这个内核,需要我们进入windows用户文件夹下创建或者修改.wslconfig文件,记得把显示隐藏文件的选项打开要不然看不见,在.wslconfig文件中输入以下内容:

[wsl2]
kernel=C:\\WSL-kernel\\bzImage
#上面就是两个斜杠,不要修改成一个斜杠
#接下来是代理设置,如果你想让你的wsl自动配置你windows下的代理就加上去,这样wsl中就可以不需要开启代理了。如果你不需要wsl走代理就不用加
[experimental]
autoMemoryReclaim=gradual  # gradual  | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

完成以后保存,在windows终端输入wsl –shutdown来关闭wsl,后面再打开就是你的新内核了。

本篇文章参考:
wsl编译linux6.x内核:https://enita.cn/2023/0731/bcd47a5aace1
wsl内核开启bbr:https://ch010060.medium.com/%E5%9C%A8wsl2%E4%B8%AD%E5%95%9F%E7%94%A8bbr-51516f906c72

评论

  1. 匿名
    Windows Chrome 126.0.0.0
    2 月前
    2024-7-25 14:38:19

    非常感谢,有用的教程

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇