本文最初發表於華來四公衆號,請掃描如下二維碼關注。給盆盆發微信(微信號:markpah),便可要求加入Windows Docker微信羣、或者微軟混合雲微信羣。您還能夠加入華來四QQ羣(423730487),以參加在線視頻講座。redis
Ubuntu on Windows 10已經出來了!緩存
能夠參考如下文檔,瞭解如何把這個逆天的玩意請回家!微信
https://msdn.microsoft.com/en-us/commandline/wsl/install_guide架構
部署方法xss
如下簡單描述一下辦法,首先咱們必須升級到Windows 10版本14316,可能須要加入微軟的Windows Insider Program,而且把會員級別改成「快」(Fast Ring)。ide
升級完成後,能夠查看本身是否知足要求,如附圖所示。工具
而後啓用「開發人員模式」,如附圖所示。ui
而後安裝Windows Subsystem for Linux,如附圖所示。spa
這裏有一個小問題,很多用戶是用Microsoft Account登陸Windows 10的,若是帳號暱稱是中文名字(例如盆盆),則用戶配置文件夾路徑中包含中文,會致使Ubuntu on Windows的用戶模式映像文件沒法解壓縮。因此推薦建立一個英文的用戶帳戶。3d
提示 可能須要清空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並無這樣的註冊表鍵值。