找回密码
 立即注册
Qt开源社区 门户 查看内容

Ubuntu on Windows 10 玩起来:部署详解及应用

2019-7-19 21:48| 发布者: admin| 查看: 619| 评论: 0

摘要: Ubuntu on Windows 10已经来了!准备好把它请回家了吗?https://msdn.microsoft.com/en-us/commandline/wsl/install_guide部署方法简单描述:首先升级到Windows 10版本14316(这是必须的),加入微软的 Windows Insi ...


Ubuntu on Windows 10已经来了!准备好把它请回家了吗?https://msdn.microsoft.com/en-us/commandline/wsl/install_guide

部署方法

简单描述:首先升级到Windows 10版本14316(这是必须的),加入微软的 Windows Insider Program,会员级别改为“快”(Fast Ring)。

升级完成后,查看自己是否满足要求,如下图:



启用“开发人员模式”,如下图:



安装 Windows Subsystem for Linux,如下图:



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



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

简单分析

Ubuntu 远在天边近在眼前,现在可以在里面跑大量的命令和工具了!



安装好以后,C盘根目录会自动挂载到 Ubuntu 的文件系统里。Windows 分区挂载的目录位于以下路径,可以在 Bash 下列 Windows 分区的目录
%userprofile%\AppData\Local\lxss\mnt\c



在以下路径我们可以看到 Ubuntu 用户模式映像的文件系统:
%userprofile%\AppData\Local\lxss\rootfs



可以在 Bash 里用 apt-get 安装软件,甚至部署 redis 等,方便用 Windows 10 开发 Linux 应用。
在 Bash 窗口里随便运行一些命令,用 Process Monitor 抓包,会发现有以下一些奇怪的进程,进程名称是空的。



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



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



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



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





历史渊源

早在 Windows NT/Windows 2000 年代,就有 Posix 子系统的概念,可以用来跑一些 UNIX 命令,方便 UNIX 代码的编写。除了 Posix 子系统外,还有 Win32 子系统、OS/2 子系统。



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



可以运行Korn Shell。



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



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




如果您喜欢这篇文章,请记得点赞哦




----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:51CTO技术栈,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了