逆天的Ubuntu on Windows 10

本文最初發表於華來四公衆號,請掃描如下二維碼關注。給盆盆發微信(微信號:markpah),便可要求加入Windows Docker微信羣、或者微軟混合雲微信羣。您還能夠加入華來四QQ羣(423730487),以參加在線視頻講座。redis

wKiom1cHJsuSOSxEAABp2KWmV3g491.jpg


Ubuntu on Windows 10已經出來了!緩存


能夠參考如下文檔,瞭解如何把這個逆天的玩意請回家!微信

https://msdn.microsoft.com/en-us/commandline/wsl/install_guide架構


部署方法xss


如下簡單描述一下辦法,首先咱們必須升級到Windows 10版本14316,可能須要加入微軟的Windows Insider Program,而且把會員級別改成「快」(Fast Ring)。ide


升級完成後,能夠查看本身是否知足要求,如附圖所示。工具

wKiom1cG83_DeQRBAAKAzer1EW8204.jpg


而後啓用「開發人員模式」,如附圖所示。ui

wKiom1cG8nLSWyzJAAIvMEds2Do350.jpg


而後安裝Windows Subsystem for Linux,如附圖所示。spa

wKiom1cG852gayY8AAHolZv_Eq4252.jpg


這裏有一個小問題,很多用戶是用Microsoft Account登陸Windows 10的,若是帳號暱稱是中文名字(例如盆盆),則用戶配置文件夾路徑中包含中文,會致使Ubuntu on Windows的用戶模式映像文件沒法解壓縮。因此推薦建立一個英文的用戶帳戶3d

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並無這樣的註冊表鍵值。

相關文章
相關標籤/搜索