逆天的Ubuntu on Windows 10

简介:

部署方法


以下简单描述一下办法,首先我们必须升级到Windows 10版本14316,可能需要加入微软的Windows Insider Program,并且把会员级别改为“快”(Fast Ring)。


升级完成后,可以查看自己是否满足要求,如附图所示。

wKiom1cG83_DeQRBAAKAzer1EW8204.jpg


然后启用“开发人员模式”,如附图所示。

wKiom1cG8nLSWyzJAAIvMEds2Do350.jpg


然后安装Windows Subsystem for Linux,如附图所示。

wKiom1cG852gayY8AAHolZv_Eq4252.jpg


这里有一个小问题,不少用户是用Microsoft Account登录Windows 10的,如果账号昵称是中文名字(例如盆盆),则用户配置文件夹路径中包含中文,会导致Ubuntu on Windows的用户模式映像文件无法解压缩。所以推荐创建一个英文的用户账户

wKioL1cG9f7AhpZ3AAD1OPEScJg419.jpg


提示 可能需要清空IE缓存(映像包文件会缓存在IE Cache中),然后重新运行Bash以触发下载和解压流程。


简单分析


很快,Ubuntu就出现在我们眼前,可以在里面跑大量的命令和工具!

wKiom1cG9Qqi_QGCAAT5nmXDGJg069.jpg


安装好以后,C盘根目录会自动挂载到Ubuntu的文件系统里。


Windows分区挂载的目录位于以下路径,可以在Bash下列Windows分区的目录

%userprofile%\AppData\Local\lxss\mnt\c

wKiom1cG9cmR91BUAAN0Nsa_W6o598.jpg


在以下路径我们可以看到Ubuntu用户模式映像的文件系统:

%userprofile%\AppData\Local\lxss\rootfs

wKiom1cG9erhStVlAAFTgITFAvw577.jpg


可以在Bash里用apt-get安装软件,甚至部署redis等,方便用Windows 10开发Linux应用。


在Bash窗口里随便运行一些命令,用Process Monitor抓包,会发现有以下一些奇怪的进程,进程名称是空的。

wKioL1cG9sbyHFCbAAI-0qN5LEk162.jpg


可以看到这些奇怪的"进程"都在访问Ubuntu的映像文件夹。

wKioL1cG9ufwqSusAAtyPOggLiA674.jpg


查看堆栈信息,发现都是内核模式的调用,可以看到基本都是Lxcore.sys和Windows内核(ntoskrnl.exe)之间的交互。

wKioL1cG9yvzSgmgAARAovzcUN8271.jpg在网上查到Ubuntu on Windows 10的核心驱动有两个,一个就是上述的Lxcore.sys,还一个就是Lxss.sys。其关系可以用Dependency Walker检查,如附图所示。

wKiom1cHGBDj1gKpAAFR8O7L3fw481.jpg


以下是在官网上的视频截图,描述Bash on Ubuntu on Windows 10的系统架构。可以看到用户模式的Linux组件是由Ubuntu官方提供的,所以和我们平时用的Ubuntu完全一样。而到了内核模式,系统会将Linux的Syscall通过上述的Lxcore.sys转成Windows内核的Syscall。

wKiom1cHGEqTuqtYAAKF4favD4o727.jpg


历史渊源


其实早在Windows NT/Windows 2000年代,就有Posix子系统的概念,可以用来跑一些UNIX命令,方便开发人员编写UNIX代码。除了Posix子系统外,还有我们熟悉的Win32子系统,还有一个我们似曾相识的OS/2子系统。

wKioL1cHHf2jJ4acAAE5hR4nv0c280.jpg


到了Windows 7/Windows Server 2008 R2时代,这个Posix子系统变成了Subsystem for Unix-based Application(SUA)。


这是Windows 2008 R2里安装的SUA。

wKiom1cHJYKieLWHAAIf9uk68aM293.jpg


可以运行Korn Shell。

wKiom1cHJZ3RtwWtAAJHSV9E0YA883.jpg

安装好SUA以后,查看以下的注册表键值,看到Posix子系统为可选的子系统,该子系统为psxss.exe。

wKiom1cHJc-xzrSiAAMqjuAkxVY201.jpg


不过Ubuntu on Windows 10并没有这样的注册表键值。





本文转自 ahpeng 51CTO博客,原文链接:http://blog.51cto.com/markwin/1761675,如需转载请自行联系原作者
相关文章
|
8月前
|
Ubuntu Unix Linux
在Windows上轻松安装和使用Ubuntu的方法详解
继续点击“Continue”按钮以继续安装流程,随后选择清理磁盘并安装操作系统的选项。 接下来,在安装过程中,你需要选择时区。为了与你的地理位置相匹配,请选择中国上海作为你的时区设置。 在安装过程中,你还需要设置计算机的名称以及账号密码。请务必牢记这些信息,因为它们将作为你登录系统的凭证。
|
6月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
266 11
|
8月前
|
Ubuntu Windows
双系统必备:Ubuntu自动挂载Windows分区
在双系统环境下,手动挂载Windows硬盘十分繁琐。本文介绍如何配置Ubuntu开机自动挂载Windows硬盘,包括硬盘识别、挂载点创建、fstab配置及验证步骤,帮助您节省时间,实现高效操作。
736 1
|
10月前
|
Ubuntu Linux 数据安全/隐私保护
Windows中安装WSL 2和Ubuntu系统的教程
回看这一路,有趣吧?你已经跨界成为了一个Windows和Linux的桥梁。期待在代码的世界里,把一切玩得风生水起!
537 13
|
8月前
|
Ubuntu Linux Windows
windows11系统安装ubuntu系统详细步骤
安装后,您可以直接从商店启动应用程序来源
1538 0
|
8月前
|
Ubuntu Linux Windows
如何在Ubuntu系统中安装Wine,借此来运行Windows程序
熟悉的登录画面出现,在Ubuntu系统中扫描登录微信程序。
|
8月前
|
Ubuntu Linux Shell
手把手教你安装适用于Linux的Windows子系统——Ubuntu
重启完成,你看看重新打开Ubuntu是不是发生了变化,等待几分钟,系统配置完成,根据提示设置用户名和密码即可
|
8月前
|
Ubuntu Linux 数据安全/隐私保护
Windows上快速安装Linux子系统Ubuntu
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x800701bcError: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernelPress any key to continue... 原因是 wsl1 升级到 wsl2 之后,内核却没有升级。 解决:下载最新的wsl安装包(wsl安装包)
|
11月前
|
Ubuntu 虚拟化 Windows
无影云电脑选择哪个操作系统Windows server 2019还是Ubuntu?
在选择阿里云无影云电脑的操作系统时,Windows Server 2019 和 Ubuntu 各有优势。Windows适合依赖微软生态的企业级应用,提供图形化界面和高安全性;Ubuntu则轻量、经济,适合开源工具链和容器化部署。根据应用场景、资源占用、安全性、开发效率及成本考量,选择最适合的系统。条件允许下,可采用混合方案满足多样化需求。