在 Windows 上跑 Linux ?這其實不是新鮮事,20 年前,就有駭客這麼做過,不過大概都是虛擬機的做法,速度慢,能跑的 Linux 應用程式也少。 [Youtube]MrZolfGm8Zk[/Youtube]
三十年河東,三十年河西。微軟的開發者部落格剛剛公布,下一個 Windows 10 版本,不僅自帶 Linux 核心,而且還會透過 Windows Update 安裝方式更新,簡單得就像安裝驅動程式一樣。
這個大絕招叫做 WSL,全稱是「適用於 Linux 的 Windows 子系統」(Windows Subsystem for Linux),它其實也不是一夜之間冒出來的,只是一直默默無聞。
最早它起源於一個叫 Astoria 的計畫,目的是為了讓一些 Android A.pp 在 Windows 10 行動版上執行。但它的目標並不是硬體仿真或者虛擬化這樣的計畫,或者像 Cygwin 這樣的第三方 Linux 環境。
它的設計目標是一個完整的 Linux 子系統,可以直接使用主機的文件系統,比如允許用戶在同一組文件上使用 Windows 應用程式和 Linux 工具;也可以調用硬體的某些部分,這是微軟官方提供的在 Windows 環境下執行 Linux 軟體的最直接方式。
比如直接使用 GNU Linux 的命令列工具,各種編程語言諸如 Python、Ruby 的直譯器,甚至像 XWindow 這樣的圖形應用程式。
當然,微軟指出 WSL 主要是面向應用程式的開發者,而不是日常的桌面環境。對於主力開發環境是 Windows、但時不時需要用到 Linux 的開發者、老師或學生來說,堪稱提高效率的開源神器。
4 月就可能發表這個要推出的 Windows 10 版本號是 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。
(Source:微軟,以下同)
如果是第一次安裝 WSL ,就會在安裝過程中檢查更新並為您安裝 Linux 核心。當然,你也可以在命令列裡操作,直接下載軟體包。
在 Github 上,你可以看到完整的原始碼:WSL2-Linux-Kernel。它基於 Linux 修改而來的,採取 Linux 核心的 GPLv2 開源許可證協議。
(Source:Github)
對於開發者來說,安裝了 Linux 核心之後,不僅是使用 Linux 命令列工具,而是可以執行其上的 GNU / Linux,這意味著你可以選擇不同的 Linux 發行版,比如 Ubuntu、Debian、SUSE 等,這些發行版透過 Microsoft 商店就可以安裝。
開源的微軟,開源的社群微軟對開源的支援今非昔比了。隨著 WSL 的發表,開發者已經形成了一個熱烈的開源社群,甚至還辦起了開發者大會 WSLCONF,今年的 WSLCONF 就是 3 月3 日,不過由於疫情原因,變成了一次線上活動。
開發者大會還是 Ubuntu 贊助的,圍繞 WSL主題進行各個方面的討論,其中社群的頭號人物就是 WSL 的微軟計畫經理克雷格‧羅文(Craig Loewen)。 克雷格非常年輕,2018 年剛從加拿大滑鐵盧大學機電工程畢業,在校時實習經驗豐富,不僅做過微軟的實習生,還做過 FIRST 機器人大賽的評審。
(Source:Craig Loewen)
身為微軟官方的 WSL 計畫經理,克雷格在微軟開發者部落格上也發表了他面對開發者的最新概述影片《在 WSL2 上如何更快的開發程式》。
曾幾何年,微軟和 Linux 是作業系統領域最大的對手,為什麼現在後者反而成了前者座上賓?
Engadget 的評論認為,微軟現在越來越不依賴於 Windows 的銷售,而是更多依賴 Azure 這樣的雲端服務。而在伺服器端和開發者端,支援 Linux 更多,就能更好的打造生態。 |