誤區澄清
在展開今天的内容之前,我們先要為大家澄清兩個誤區:
微軟支援是的 ubuntu on windows,而非 linux on windows。
ubuntu 母公司 canonical 此次與微軟的合作是要直接支援 windows 原生庫和程式:windows 子系統 for linux(wsl),而不是通過容器技術或虛拟機運作 ubuntu。
ubuntu on windows 10工作方式
其實 wsl 相關代碼早在 2016 年 1 月下旬便被微軟悄悄内置進了 windows 10 build 14251 預覽版中,此後微軟的開發人員制訂了 lxcore.sys 與 lxss.sys 這兩個新的子系統檔案,讓其成為 windows 程式員開發 linux 應用程式的橋梁。
wsl 的首要工作是支援 ubuntu 使用者态映像,微軟發言人解釋說:「我們為 windows 建立了新的基礎架構,wsl 讓 ubuntu 的締造者 canonical 公司可以實作運作 ubuntu 使用者模式映像。基于此,使用者就可以在 ubuntu on windows 10 中直接運作原生 bash。」
canonical ubuntu 産品和戰略執行團隊的 kirkland 提到:「我們此次是将 ubuntu elf 二進制檔案與 windows 進行 bit 到 bit 的校驗和直接對接。」
為實時将 linux 系統調用轉換成 windows 系統調用(wsl,目前尚未開源),一個做事非常犀利的 ubuntu 開發團隊一直在努力配合和适應微軟的研發技術,以期盡快實作對接。(說以此,想必很多 linux 愛好者應該已經聯想到 wine,這款可在 windows 中原生運作 linux 二進制檔案的工具。)
目前從微軟内部的壓力測試工具和實驗資料來看,ubuntu on windows 10 應用與 windows 10 應用幾乎可以獲得同等的 cpu、記憶體和 i/o 性能結果。
對 windows 工作原理和發展曆史非常了解的使用者應該知道,微軟此次與 canonical 的合作似乎顯得有些姗姗來遲。其實從 windows nt 開始就内置了 posix 子系統,它就是專門為 windows 提供原生 unix-linux 支援而開發的。
為什麼變革
很多人在考慮微軟此次為什麼要做出如此大的變革?其實不難看出,從 satya nadella 上台微軟 ceo 寶座之後,一直在緻力于推廣「移動為先,雲為先」的理念,microsoft azure 雲平台也在不斷擁抱開源(一個隻支援微軟産品的平台,還能叫公有雲?)。從使用者的角度來看,除了桌面端的 windows、mac 和 linux 外,很多使用者同時擁有并管理多套異構平台,就經常需要在 windwos 中折騰占資源的異構虛拟機、ssh 和 cygwin 等。在有了 ubuntu on windows 後隻需點選幾下,便可以通路一個功能豐富的 ubuntu shell,而無需再在本地虛拟化或重新編譯。
而對于 canonical 來說,其 ubuntu 是 microsoft azure 和其它雲平台中最流行的 linux 發行版,也是普及率非常高的 linux 桌面端。将 ubuntu shell 内置進 windows 桌面,可以幫助使用者和開發人員更容易地使用 visual studio、vim 或 emacs 編輯代碼、更簡便地使用 git、scp 或 rsync 向雲執行個體推送資料。
小結
很顯然,不論對微軟、canonical、還是最終使用者,此次幾方史無前例、似乎有些違背慣例的合作對各方都非常有好處,希望微軟在這個方向上的探索會有一個三赢的結果。
如果你對 ubuntu on windows 有興趣,ubuntu 14.04 lts for windows 10 的首個映像将很快會釋出,ubuntu 16.04 lts 映像會在 4 月 21 日正式釋出之後不久取代 ubuntu 14.04 lts 上線到 windows store。不過由于所有 ubuntu on windows 的映像都基于 redstone 代碼,是以最快需要等到今年夏天 windows 10 redstone 正式釋出最終使用者才能正式用上。
====================================分割線================================