逆天的Ubuntu on Windows 10

本文最初发表于华来四公众号。

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并没有这样的注册表键值。

时间: 2024-07-28 23:09:28

逆天的Ubuntu on Windows 10的相关文章

easybcd 支持 windows 10 和 ubuntu 14.04 双系统启动

家里计算机系统 windows 10 全新安装. 原本是双系统的,还有一个ubuntu. windows 10 安装以后,恢复ubuntu就是问题了. 最初的方法是利用easybcd修改bcd记录.操作是成功的,但系统重新启动后,经常黑屏无法继续. 经过尝试,新的图形界面没有正常显示.鼠标或键盘如果尝试按,可以进入系统的.当然这并不方便. 这是最初图形界面,每次不一定出来. 现在我们开始修改. 1 以管理员模式运行控制台. 2 备份bcd记录. bcdedit /export save_path

ubuntu和windows双系统,启动时优先进入windows系统

如果在windows系统的基础上再安装ubuntu,系统启动时会默认进入ubuntu系统,当然在选择界面可以手工选择进入windows系统; 1 备选启动项列表 通常有ubuntu/ubuntu高级选项/.../windows 10若干个选项,选项的序号从0开始 2 进入ubuntu系统,并打开终端窗口,输入命令“cd /etc/default/”并按回车键确认 3 输入命令“sudo sudo nano grub”并按回车键确认 4 根据弹出的命令提示输入当前管理员帐号密码 5 密码验证通过后

如何在Raspberry Pi 3B中安装Windows 10 IoT Core

Windows 10 IoT Core简介 Windows 10 IoT是微软专门为物联网生态打造的操作系统,Windows 10 IoT Core则是Windows 10 IoT 操作系统的核心版本,功能相对精简.使用Windows 10 IoT可以打造属于自己的物联网生态系统. Windows 10 IoT的版本介绍 Windows 10 IoT 企业版 Windows 10 IoT 企业版将 Windows 10 企业版功能广泛应用于零售.制造.医疗.金融和其他行业的设备上.Windows

Windows 10上快速尝鲜bash on Ubuntu

今年微软Build 2016大会最让开发人员兴奋的消息之一,就是在Windows上可以原生运行Linux bash,对于非开发人员来讲,可能不知道这意味着什么,而对于开发人员来说,意味着Windows弥补了相比于MAC OS的终端的短板,你可以运行你熟悉的Linux bash,python,perl,使用一些Linux下的library……而不需要再安装一个Cygwin或者,安装一个虚拟机来跑Linux了. 具体新闻请参考: http://www.cnbeta.com/articles/4880

Windows 10+Ubuntu 16.0在MBR分区上安装双系统之后没有Windows 10的启动菜单解决方法

背景: 硬盘分区方式:MBR 硬盘容量256,Windows 100,Ubuntu 156,其中主分区安装的时Windows,Ubuntu安装在逻辑分区上,文件系统为Ext4,整个Ubuntu就挂载在根目录/下,没有交换分区. 安装好之后没有Windows的启动菜单.默认进去Ubuntu. 解决方法: 1.打开grub.cfg文件 sudo gedit /boot/grub/grub.cfg 在打开的文件的最后面写入下面的内容 menuentry 'Windows 10' { set root=

Windows 10运行Ubuntu子系统

Bash 是 Linux/Unix 上非常流行的命令行 Shell,它是 Ubuntu.RHEL 等 Linux 发行版以及苹果 OS X 操作系统默认的命令行 Shell. Bash on Ubuntu on Windows 是通过 Windows Subsystem for Linux(WSL)这一 Windows 10 的最新特性实现的,使用此功能,你可以在 Windows 中原生运行 Linux 的大多数命令行程序. 启用 WSL 功能之后,如果使用 Bash,则 Windows 10

如何重启 Windows 10 子系统(WSL) ubuntu

如何重启 Windows 10 子系统(WSL) ubuntu WSL 子系统是基于 LxssManager 服务运行的. 只需要将 LxssManager 重启即可. 可以做成一个 bat 文件. net stop LxssManager net start LxssManager 原文地址:https://www.cnblogs.com/F4NNIU/p/10015183.html

Windows 10 子系统 Ubuntu 中安装 FastAdmin

Windows 10 子系统 Ubuntu 中安装 FastAdmin 打开 Windows 10 子系统 安装 Ubuntu 修改安装源为阿里的 %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\etc\apt deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe mult

ubuntu 16.04 和 windows 10系统安装mysql 允许远程访问 | mysql user guide on ubuntu 16.04 and windows 10

本文首发于个人博客https://kezunlin.me/post/36e618e7/,欢迎阅读! mysql user guide on ubuntu 16.04 and windows 10 Part-1: Ubuntu install sudo apt-get install mysql-server # root,123456 mysql -uroot -p123456 allow remote access change bind-address cd /etc/mysql grep