为你的WSL 2编译一个最新的Linux内核吧!
前言
本文原载于我的博客,地址: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内核吧!相关推荐
- centos7是linux内核,在CentOS 7上用源代码编译最新的Linux内核
翻译转载自:https://linuxhint.com/compile-linux-kernel-centos7/ 关键字:centos7 kernel 编译 内核 这文章是转载自国外博客的,因为这个 ...
- linux如何编译wine,利用winelib编译一个可在linux下运行的程序
利用winelib编译一个可在linux下运行的程序 只是想既可以使用linux的api,又可以使用windows的api #include #include #include #include in ...
- linux内核源代码_如何从源代码构建和安装最新的Linux内核
linux内核源代码 by Sreehari 通过Sreehari 如何从源代码构建和安装最新的Linux内核 (How to build and install the latest Linux k ...
- windows linux内核版本,微软决定在Windows10中发布一个完整的Linux内核
原标题:微软决定在Windows10中发布一个完整的Linux内核 近年来,微软让Linux开发者社区的许多人都感到惊喜,包括在Windows中加入了Bash shell,在Win10中加入了本地Op ...
- linux内核编译最详细,Linux内核编译详细教程,linux内核编译
Linux内核编译详细教程,linux内核编译 尝试编译下Linux-kernel 4.14.14,使用Ubuntu 16.04 64位 系统. kernel-4.14.14 内核文件约96MB,解压 ...
- Open vSwitch(OVS)源码编译Ubuntu16.04,Linux内核版本4.15
Open vSwitch(OVS)源码编译Ubuntu16.04,Linux内核版本4.15 关于Open vSwitch(OVS)版本与Linux内核的关系,参考这篇文章:Open vSwitch( ...
- 修改linux编译配置文件,Porting:linux内核编译、配置、修改配置文件、添加.c文件到内核...
一.linux内核 $:'uname -a $:'uanme -r // 查看linux内核版本,开发板上进入linux后是一样的命令. 早起常常使用的版本:linux 2.6.x 开发板上使用的版本 ...
- 编译3.0的linux内核,Ubuntu 编译 Linux 3.0-rc4 内核
Linux 内核经过漫长的 2.6 版本之后终于主版本+1了,现在已放出 3.0 RC4 版,最近又有消息称 3.0 会比 2.6.39 快,喜欢折腾的你又不介意当小白鼠的话不妨试试下载 Linux ...
- (编译适用于ARM的linux内核并进行QEMU仿真)Compile Linux kernel 3.2 for ARM and emulate with QEMU
译者序 作为第一篇翻译文档,一方面对于翻译经验不足.措辞不当,另一方面对于linux我也是初学者,很多东西尚处于待学阶段,而翻译此文的动机就是我要学习如何跨平台进行文件系统的编译,所以翻译的结果肯定有 ...
最新文章
- 插件、页面-在csdn写markdown,基于chrome插件-by小雨
- 8 行 Node.js 代码实现代理服务器
- Jerry Wang的CRM中间件培训 Middleware
- 有向无环图DAG 拓扑排序 代码解释
- 看看我们的程序猿寻常都爱看些什么好书?
- python turtle画熊猫人_Python 使用turtle插件,画小猪佩奇
- java 虚拟机常用启动参数
- 3d slicer matlab,基于3D+slicer的医学影像分割算法及其应用研究.pdf
- xfce 安装文泉驿字体
- mysql 报表工具_Navicat功能:报表创建工具
- android youtube免谷歌,youtube免谷歌框架
- 用c语言找最大素数,C语言实现寻找大素数
- Windows10使用diskpart分区
- QualDash: Adaptable Generation of Visualisation Dashboards for Healthcare Quality Improvement
- 网络入门—家庭组网介绍基本网络知识
- Ibeacon一维小项目
- 删除OneDrive for Bussiness导航栏快捷方式
- 大学物理 狭义相对论 思维导图总结
- sklearn中FastICA接口的使用方法
- PCL——超体素(SuperVoxel)、超体聚类分割