逆天的Ubuntu on Windows 10

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

wKiom1cHJsuSOSxEAABp2KWmV3g491.jpg


Ubuntu on Windows 10已經出來了!


可以參考以下文檔,瞭解如何把這個逆天的玩意請回家!

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


部署方法


以下簡單描述一下辦法,首先我們必須升級到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並沒有這樣的註冊表鍵值。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章