前言

本文原载于我的博客,地址:https://blog.guoziyang.top/archives/54/

随着Win 10 2004版本的正式推送,很多人也都用上了最新的WSL 2,这使得Win 10成了最好的Linux发行版(雾)。WSL 2相比WSL 1,最大的改变就是使用了真正的Linux内核,而不仅仅是一个适配层。我们可以通过命令uname -r查看这个内核的版本,通过正式推送获得的WSL 2的内核版本应当是4.19.84。这本没有什么问题,可是我在最近的操作系统实验过程中注意到,Microsoft可能对这个内核动过什么手脚,导致该内核无法支持minix文件系统(Bochs虚拟机挂载的虚拟硬盘就是该文件系统),而Linux内核的官方文档表示,Linux内核是原生支持该文件系统的……估计是微软在编译内核的时候把这个功能去掉了吧。或者,即使你不使用minix文件系统,仅仅是想体验最新版的内核,也可以尝试一下。

本次我们编译https://www.kernel.org/上面最新的5.7版本的内核。

前置工作

首先,我们需要一个可用的Linux环境,Ubuntu就很不错,我使用的是刚刚发布的20.04,作为内核编译的平台。

我们需要安装编译内核所必要的依赖:

sudo apt install g++ make flex bison libssl-dev libelf-dev bc

接着我们需要将内核源码下载下来,直接去https://www.kernel.org/上下载即可,我下载的是5.7.0版本,地址如下:

https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.tar.xz

接着我们使用如下的命令解压该压缩文件:

tar xvf linux-5.7.tar.xz
cd linux-5.7

接着,我们需要配置文件,否则在编译是就需要填写大量的选项,麻烦又无聊。我们可以使用微软官方的配置文件,但是官方配置比较老(4.19.84)。好在,有叶欣仁为我们整理了适合Linux 5.7的WSL 2的配置文件,文件在下方:

https://github.com/xieyubo/WSL2-Linux-Kernel/blob/wsl-xyb-port-5.7.y/Microsoft/config-wsl

下载该文件后,在linux-5.7文件夹下新建一个叫Microsoft的文件夹,将配置文件改名为config-wsl放入其中即可。

当然,由于是微软的配置文件,我们需要做一些修改,我主要就做了两处修改。

其一,由于我需要minix文件系统支持,就打开了CONFIG_MINIX_FS,即:

CONFIG_MINIX_FS=y

其二,是一个可有可无的选项:CONFIG_LOCALVERSION字段,你可以在这个字段下写一些个性化的东西,例如自己的名字,这样在新系统中使用uname -r查看内核版本时就会出现自己的名字。

开始编译

编译内核是在linux-5.7文件夹下进行的,在该文件夹下执行命令:

make KCONFIG_CONFIG=Microsoft/config-wsl

就开始了内核的编译工作,如果想要发挥多核心处理器的优势,可以命令后面加上-j n的参数,即可使用n个核心进行编译。

我使用四核心进行编译大概需要十分钟。

编译完成后的内核镜像存放为arch/x86/boot/bzImage文件,将其重命名为kernel,并拷贝到win 10中。

替换WSL内核

在替换内核之前,首先需要关闭正在运行的WSL实例,在CMD中使用如下命令即可:

wsl --shutdown

接着进入Win 10中的C:\Windows\System32\lxss\tools文件夹下,将kernel文件替换为刚刚编译的那个即可(当然最好把旧的那个备份下)。重启Windows 10。

再次进入WSL 2后,使用uname -r命令,就可以看到内核已经变成5.7版本的内核了,如果编译时加上了个性化信息的话,也会出现在内核版本的后面。

Done!

为你的WSL 2编译一个最新的Linux内核吧!相关推荐

  1. centos7是linux内核,在CentOS 7上用源代码编译最新的Linux内核

    翻译转载自:https://linuxhint.com/compile-linux-kernel-centos7/ 关键字:centos7 kernel 编译 内核 这文章是转载自国外博客的,因为这个 ...

  2. linux如何编译wine,利用winelib编译一个可在linux下运行的程序

    利用winelib编译一个可在linux下运行的程序 只是想既可以使用linux的api,又可以使用windows的api #include #include #include #include in ...

  3. linux内核源代码_如何从源代码构建和安装最新的Linux内核

    linux内核源代码 by Sreehari 通过Sreehari 如何从源代码构建和安装最新的Linux内核 (How to build and install the latest Linux k ...

  4. windows linux内核版本,微软决定在Windows10中发布一个完整的Linux内核

    原标题:微软决定在Windows10中发布一个完整的Linux内核 近年来,微软让Linux开发者社区的许多人都感到惊喜,包括在Windows中加入了Bash shell,在Win10中加入了本地Op ...

  5. linux内核编译最详细,Linux内核编译详细教程,linux内核编译

    Linux内核编译详细教程,linux内核编译 尝试编译下Linux-kernel 4.14.14,使用Ubuntu 16.04 64位 系统. kernel-4.14.14 内核文件约96MB,解压 ...

  6. Open vSwitch(OVS)源码编译Ubuntu16.04,Linux内核版本4.15

    Open vSwitch(OVS)源码编译Ubuntu16.04,Linux内核版本4.15 关于Open vSwitch(OVS)版本与Linux内核的关系,参考这篇文章:Open vSwitch( ...

  7. 修改linux编译配置文件,Porting:linux内核编译、配置、修改配置文件、添加.c文件到内核...

    一.linux内核 $:'uname -a $:'uanme -r // 查看linux内核版本,开发板上进入linux后是一样的命令. 早起常常使用的版本:linux 2.6.x 开发板上使用的版本 ...

  8. 编译3.0的linux内核,Ubuntu 编译 Linux 3.0-rc4 内核

    Linux 内核经过漫长的 2.6 版本之后终于主版本+1了,现在已放出 3.0 RC4 版,最近又有消息称 3.0 会比 2.6.39 快,喜欢折腾的你又不介意当小白鼠的话不妨试试下载 Linux ...

  9. (编译适用于ARM的linux内核并进行QEMU仿真)Compile Linux kernel 3.2 for ARM and emulate with QEMU

    译者序 作为第一篇翻译文档,一方面对于翻译经验不足.措辞不当,另一方面对于linux我也是初学者,很多东西尚处于待学阶段,而翻译此文的动机就是我要学习如何跨平台进行文件系统的编译,所以翻译的结果肯定有 ...

最新文章

  1. 插件、页面-在csdn写markdown,基于chrome插件-by小雨
  2. 8 行 Node.js 代码实现代理服务器
  3. Jerry Wang的CRM中间件培训 Middleware
  4. 有向无环图DAG 拓扑排序 代码解释
  5. 看看我们的程序猿寻常都爱看些什么好书?
  6. python turtle画熊猫人_Python 使用turtle插件,画小猪佩奇
  7. java 虚拟机常用启动参数
  8. 3d slicer matlab,基于3D+slicer的医学影像分割算法及其应用研究.pdf
  9. xfce 安装文泉驿字体
  10. mysql 报表工具_Navicat功能:报表创建工具
  11. android youtube免谷歌,youtube免谷歌框架
  12. 用c语言找最大素数,C语言实现寻找大素数
  13. Windows10使用diskpart分区
  14. QualDash: Adaptable Generation of Visualisation Dashboards for Healthcare Quality Improvement
  15. 网络入门—家庭组网介绍基本网络知识
  16. Ibeacon一维小项目
  17. 删除OneDrive for Bussiness导航栏快捷方式
  18. 大学物理 狭义相对论 思维导图总结
  19. sklearn中FastICA接口的使用方法
  20. PCL——超体素(SuperVoxel)、超体聚类分割

热门文章

  1. Oracle 10g R2 Student PPTs
  2. Linux内核 之 IPC概述
  3. 函数式编程——python为例
  4. 【MATLAB教程案例86】通过matlab实现lorenz混沌系统
  5. 学红外雨量IFR202型传感器应用于智慧灌溉自动门窗地质灾害
  6. 网红模块ESP8266与墨水屏e-Paper 的结合,实现网络刷新内容。
  7. PDF文件在线预览之pdf.js
  8. 脑波设备mindwave介绍
  9. android 展示虚拟键盘,在android TabLayout中显示虚拟键盘
  10. URP Lit Shader解析(2)—LitInput.hlsl