Windows 10 變身開發者利器:內置Linux 內核像安裝驅動一樣方便
在Windows 上運行Linux ?這其實不是新鮮事,20 年前,就有黑客這麼幹過。不過大體都是虛擬機的做法,速度慢,能跑的Linux 應用也少。三十年河東,三十年河西。微軟的開發者博客剛剛公佈,下一個Windows10 版本,不僅自帶Linux 內核,而且還會通過Windows Update 安裝方式更新,簡單得就像安裝驅動程序一樣。
大殺器
這個大殺器叫做WSL ,全稱是“適用於Linux的Windows子系統”(Windows Subsystem for Linux),它其實也不是一夜間冒出來的,只是一直默默無聞。
最早它起源於一個叫Astoria 的項目,目的是為了讓一些安卓APP 運行在Windows 10 移動版上。
但它的目標並不是硬件仿真或者虛擬化這樣的項目,或者像流行的Cygwin 這樣的第三方Linux 環境。
它的設計目標是一個完整的Linux 子系統,可以直接使用主機的文件系統,比如允許用戶在同一組文件上使用Windows 應用程序和Linux 工具;也可以調用硬件的某些部分,這是微軟官方提供的在Windows 環境下運行Linux 軟件的最直接方式。
比如直接使用GNU Linux 的命令行工具,各種編程語言諸如Python、Ruby 的解釋器,甚至像XWindow 這樣的圖形應用程序。
當然,微軟指出WSL 主要是面向應用程序的開發者,而不是日常的桌面環境。對於主力開發環境是Windows ,但時不時需要用到Linux 的開發者、老師或學生來說,堪稱提高效率的開源神器。
下個月就可能發布
這個要推出的Windows10 版本號是2004,根據YYMM 格式的命名規則,2004 就是2020 年4 月,當然5 月發布也不奇怪,Windows Insider 裡則可以先行體驗。
這次更新的其實是WSL 第二個版本(WSL2) ,它比上一個版本WSL1 要強大得多,它打包了真正的Linux 內核,推進到了普遍可用(GA,Generally Available)的狀態。
特別是它大幅度提高了文件系統I/O 性能,可以在Windows 上直接運行Linux 二進製文件。WSL1 是通過轉換層,對系統調用還要做翻譯;而WSL2 則包含自己的Linux內核,具有完整的系統調用兼容性,比如像Linux 版本的Docker 這樣的開源程序,就可以直接調用。
WSL2 是在2019 年6 月的微軟Build 大會上宣布的,到這次即將要達到的人人可用的狀態,花了接近一年的時間。
如何安裝使用
這次WSL2 最值得稱道的,就是它簡便的安裝和使用方式,說白了就像安裝驅動程序或者打一個補丁那麼簡單。具體而言就是使用Windows Update 進行更新,這樣可以獲得最新的內核版本,而無需更新整個Windows 映像。
如果是第一次安裝WSL ,就會在安裝過程中檢查更新並為您安裝Linux 內核。
當然,你也可以在命令行里操作,直接下載軟件包。
在Github 上,你可以看到完整的源代碼:WSL2-Linux-Kernel [2]。它基於Linux 修改而來的,採取Linux 內核的GPLv2 開源許可證協議。
對於開發者來說,安裝了Linux 內核之後,不僅僅是使用Linux 命令行工具,而是可以運行其上的GNU/Linux,這意味著你可以選擇不同的Linux 發行版,比如Ubuntu、Debian、SUSE等等,這些發行版通過Microsoft 商店就可以安裝。
開源的微軟,開源的社區
微軟對開源的支持今非昔比了。隨著WSL 的發布,開發者已經形成了一個熱烈的開源社區,甚至還辦起了開發者大會WSLCONF [3] ,今年的WSLCONF 就是3 月3 日,當然由於疫情原因,變成了一次線上活動。
開發者大會還是Ubuntu 贊助的,圍繞WSL主題進行各個方面的討論,其中社區的頭號人物就是WSL的微軟項目經理克雷格·羅文(Craig Loewen)[4] 。
克雷格非常年輕,2018年剛從加拿大滑鐵盧大學機電工程畢業,在校時實習經驗豐富,不僅做過微軟的實習生,還做過FIRST 機器人大賽的評委。
作為微軟官方的WSL 項目經理,克雷格在微軟開發者博客上也發布了他面對開發者的最新概述視頻《在WSL2 上如何更快的開發程序》。
曾幾何年,微軟和Linux 是操作系統領域最大的對手,為什麼現在後者反而成了前者座上賓了?
Engadget 的評論認為,微軟現在越來越不依賴於Windows 的銷售,而是更多依賴Azure 這樣的雲服務。而在服務器端和開發者端,更多的支持Linux,就是更好的打造生態。