昨天,我在Windows電腦上安裝了兩個Linux發行版。不是虛擬機,也不是雙系統,不需要查找下載頁面和解壓縮安裝程序文件的路徑。 相反,我去了Windows Store,搜索了Linux,選了我想要的發行版,然後點擊了安裝。 一旦下載完畢,我需要做的就是打開終端窗口並添加用戶名和密碼。曾經的不可思議,現在一切都是可能的。
因為我正在運行即將推出的Windows 10 Fall Creators Update的最新預覽版本,它為Windows子系統Linux(WSL)添加了新功能。 在Windows 10周年紀念版更新版本(1609版)中推出,並在最近發布的Windows 10創作者更新(版本1703)中進行了顯著更新,WSL是微軟對“如何讓程序員再次使用Windows”的回答。
微軟如何讓程序員選擇Windows?
“如何讓程序員再次使用Windows?”的答案很簡單:站到程序員的位置上。
但是讓Windows實現答案並不簡單。程序員在MacOS和Linux上,使用命令行工具在雲中的Linux服務器上工作。他們已經擁有與Docker,GitHub,Jenkins,Ansible,Chef和TravisCI等服務合作的工具鏈,應用程序和腳本。那麼如何將這些程序員帶到Windows上呢?
第一步是以無縫的方式將Unix帶到熟悉的Windows桌面。MacOS具有Unix用戶的內在優勢,因為它基於BSD Unix的微內核實現,通過每個Mac上的終端應用程序訪問。
但是,Windows本身是NT內核,也不必要必須構建熟悉的工具的新版本,然後重新編譯成Windows可運行的版本,為什麼不直接在Windows上運行Linux二進制文件呢?使用Project Astoria,為Windows Phone和Windows 10提供已取消的Android兼容性層,Microsoft可以提供一個新的子操作系統,將Linux系統調用轉換為Windows,允許代碼運行而無需任何更改。
與Ubuntu合作的初始版本提供了一個運行在Windows熟悉的終端中的Bash shell(由cmd和PowerShell使用)。為Windows內部人員構建的第一個測試,毫不奇怪,還很有限,但隨著Windows 10周年更新接近發布,他們進行了快速改進,允許復雜的控制台應用程序運行,支持Ubuntu的apt-get安裝程序,以快速訪問工具庫和服務。通過創作者更新,Microsoft和Canonical能夠將WSL移動到Ubuntu最新的16.04長期支持版本。
WSL:Linux控制台中的Linux二進制文件
從技術上講,WSL僅適用於控制台應用程序,可為開發人員提供外殼支持,並遠程訪問在內部和公共雲中運行的Linux服務器。用戶已經安裝並運行基於X的GUI應用程序,使用Windows X服務器為WSL帶來完整的Linux桌面體驗。
使用任何WSL就像使用本機Linux。你可以訪問一個shell,並通過命令行,安裝應用程序就像使用Ubuntu上的apt-get或Suse上的yast andzypper一樣簡單。當Fedora進入Windows時,程序員將使用yum。
早期的WSL構建在運行某些應用程序時遇到問題,因為不支持密鑰依賴關系。但是從Windows 10周年紀念更新版本開始,它已經很簡單了,現在甚至支持像Docker這樣復雜的軟件包安裝和運行。
程序員可通過WSL獲得需要的工具,在PC上進行跨平台開發和管理。
今年晚些時候,隨著本地Linux容器來到Windows Server,WSL將成為企業系統工具集的關鍵組件之一。(Windows Server上的WSL將不支持大型Linux工作負載或服務器,但它將為程序員提供托管的Linux容器的直接管理連接,支持現有的管理腳本和工具。)
如何整合Linux和Windows工具鏈?
程序員可以使用WSL默認用戶從Windows命令行調用Linux二進制文件,可以從Bash調用Windows二進制文件(並且可以從Visual Studio代碼中的終端訪問Bash,程序員可測試Unix代碼,而不用離開開發工具,不用離開Windows)。
提示:WSL將Windows目錄視為掛載文件系統,因此可能需要將鏈接設置為常用文件或將Windows程序文件目錄添加到Bash路徑。
程序員應該都很高興看到Visual Studio code支持WSL的工具。如果微軟要將其平台帶入到程序員中,其工具就需要將Windows和Linux的最佳方式融合在一起。很容易想象將來發布的完整的Visual Studio托管Linux終端,並呼吁在WSL中運行的服務上的webhooks和其他API。
WSL正在擴展Windows運行Linux發行版
現有的Ubuntu版本:OpenSuse和Suse Enterprise Server。這兩個Suse版本都在Windows Store中,可供內部人員使用。
隨著Suse,Fedora加入WSL,程序員可以使用Linux工具、服務和熟悉的工作方式,將腳本和二進制文件從現有工具鏈轉移到Windows PC。WSL甚至可以同時托管幾個Linux任務,每個都在一個單獨的終端中。
支持許多不同的Linux發行版很有意義。在過去幾年中,不同的供應商和團隊專注於不同的用例,從同一虛擬套件中構建不同的平台。像Fedora和Ubuntu這樣的舊版本是非常通用的操作系統,從開發人員的角度來看,使用它們是有意義的。
程序員不妨盡情想象,如果將來WSL支持更專門的版本,就像容器集中的CoreOS,豈不是很有趣?