微軟在開源道路上不斷前進,甚至在Windows10中開放名為 WSL 的 Linux 子係統,讓開發者可以直觀操作 Linux。本文作者作為 WSL團隊的一員,將詳細給我們講述開發 Windows 的 Linux子係統的那些事兒。

作者 | Tara Raj
譯者 | 風車雲馬,責編 | 伍杏玲
以下為譯文:
2016年8月,我從弗吉尼亞大學計算機科學與技術專業畢業後加入微軟,在微軟的整個職業生涯都在為Linux開發工具。其實我上大學時幾乎隻使用Linux操作係統,大部分編程都是用C++編寫的。
當時我的學習經曆似乎不太適合微軟,但趕上微軟正在做企業改革,所有操作係統都很重要,包括Linux。
到微軟的第一份工作是加入Linux的SQL數據庫開發團隊,該團隊特別邀請我把以往的Linux經驗發揮出來。我剛剛畢業,一聽到自己的開發經驗能為團隊帶來價值時,我真感到受寵若驚。
幾年前,微軟想在Linux上開發SQL Server隻是一個玩笑,然而到2016年,這個想法卻變成了現實。在他們發布第一個版本後不久,我就加入了這個團隊,並致力於改進用於SQL Server的管理工具——特別是管理Linux服務器和應用程序。要在Linux上正常運行SQL Server,需要以Linux操作係統的工作方式來設計命令行工具。
我有幸為Linux的SQL Server設計第一個版本的GUI工具,剛開始采用了Visual Studio代碼(現在叫Azure Data Studio代碼),它不受操作係統的限製,可用於所有類型的SQL Server開發。
在微軟的第一年我學到了很多,包括項目管理的流程和方法,如何將技術實踐和商業思維結合起來。

2017年8月,我加入了Windows 的Linux子係統(Windows Subsystem for Linux,簡稱WSL)研發團隊,並擔任項目經理。我第一次聽說WSL是在2016年的微軟Build大會上,當時它被宣布為“Bash on Ubuntu on Windows”。
當時Channel9一經發布就迅速走紅,淹沒了Build網站上的其他許多報道。《華爾街日報》記者凱文·加洛(Kevin Gallo)對Build大會做了一個簡短的視頻介紹,雖然隻占用了整個主題演講的兩分鍾,但觀眾和媒體都非常激動。Channel9團隊曾一度擔心WSL視頻的巨大點擊量是不是DDoS攻擊。微軟在Windows係統內運行Ubuntu引起了巨大的轟動。
Windows Console團隊是第一個確定客戶對WSL有需求的團隊。當他們深入客戶調研時,一次又一次地聽到人們希望在Windows上有類似Bash的東西。最終團隊意識到:既然可以讓Bash本身在Windows上運行,為什麼還要開發類似Bash的東西呢?
其實為Linux創建Windows子係統並不容易做到。團隊需要對Windows內核有深入的了解,還要研究一項微軟名為Pico process的技術。恰好有趣的是,Pico process也是在Linux上實現SQL Server的技術。簡單的說,WSL使Linux編譯的二進製文件在Windows NT內核上運行成為可能,而無需重新編譯應用程序或使用虛擬機。
Ubuntu是WSL中第一個可用的Linux版本。開始我們聯係了Canonical公司的開發人員,看看他們是否願意提供幫助。他們對這個WSL想法很有熱情,後來Ubuntu可以在Windows商店(Windows Store)中使用。在Windows商店中存在多種Linux版本的應用(至少有六種),是不是覺得很有趣,你見過多少自家的應用商店有其他操作係統?

我們編寫的代碼是兼容Linux的內核係統調用(syscall),將Linux進程與底層Windows內核連接起來。Linux中大約有340個係統調用,問題是先實現哪個係統調用?與所有操作係統版本一樣,新的係統調用會與新的操作係統版本一起添加,但是為了保持向後兼容性,不會刪除舊的調用。當初湧現了一波syscall浪潮,WSL團隊也開始深入理解syscall用戶需要什麼。
要實現什麼樣的syscalls,首先要了解哪些人會使用它。Build公告的主要目的是希望人們使用WSL並提供反饋。任何人都可以通過Windows內部程序獲得WSL。也許你認為隻有Windows愛好者才會對內部程序感興趣,但現在有超過1000萬的訂閱者,他們對各種各樣的東西都感興趣,比如遊戲、藍牙和WSL。
對Windows中運行Bash感興趣的還有Web開發人員,他們試圖構建運行在Linux服務器上的Web應用程序,可采用一係列Bash命令。此外,如果您查找構建Web應用程序的幫助,比如Stack Overflow,其大多數示例代碼隻運行在Linux上——而你正在Windows機器上進行開發,這讓人感到很無奈。對於Web開發人員來說,隻好遷移到Mac和macOS上,在那裏運行代碼。
在WSL進入Windows的初期,一位積極的WSL用戶設法讓XEyes作為GUI應用程序運行在WSL和X11上。XEyes所做的就是在屏幕上畫一對卡通眼睛,跟著鼠標指針轉。在成功演示時,所有的社交媒體都沸騰了!

我們想了很多收集用戶反饋的方法。曾為WSL建立了一個UserVoice站點,上麵已經收集了數百個想法和數千次投票。考慮到WSL的首批受眾是Web開發人員,所以覺得GitHub很有作用。但是WSL並不是一個開源項目——在開源的GitHub上放置一個非開源項目似乎很奇怪。最後我們決定在GitHub上創建一個專門反饋和討論相關問題的論壇,至今我們已經收到了關於WSL的數千個問題。
在 WSL GitHub repo 上會提交成千上萬的問題,而WSL團隊會審查每一個問題,通過分析和評估,然後決定要做什麼。如果需要編寫新代碼來實現某個特性或修複某個問題,那麼會將任務添加到WSL項目計劃中,開發周期可以短至幾周。
這樣,人們所希望的WSL功能或遇到的問題通過UserVoice或GitHub得到了有效快速的解決,構建WSL社群也是整個項目創建過程的關鍵部分。
當我作為WSL的項目經理時,我的目標是讓WSL超越beta版。人們抱怨最多的是兼容性和性能。在我看來這些問題提得很好,這恰恰說明他們在認真使用我們的產品,因為在產品初期我們可能隻關心係統一些大的方麵。所以,為了讓人們用WSL做得更多、更快,我們還有很多工作要做。
隨著WSL功能的擴展和完善,我們將WSL帶向其他開發係統及其開發人員——而不僅局限於Microsoft生態係統的開發。當我們參加PyCon和OSCON這樣的活動時,那裏的開發人員看到微軟員工時都很驚訝。當我們告訴他們在微軟開發工具上運行Linux時,他們都表示懷疑。然後我當場演示了SQL Server、WSL和Visual Studio代碼。

為了打消他們的疑慮,我讓他們自己試一試。當這些開發人員開始運行他們自己的命令、腳本和代碼時,總是反應激動:“等等,這實際上是Linux。你是怎麼做到的?我怎麼會不知道呢? 這很酷。”
針對有關WSL兼容性和性能的抱怨,我們已經在一個新版本中解決了這個問題——WSL 2。它在Windows中提供了Linux內核並將性能提升了20x。今天,WSL已經經過了beta測試並升級到了版本2。你可以在公告博客上了解更多。
我還與微軟的其他團隊合作,希望WSL能與其他產品很好的結合。例如Visual Studio Code,它是Java和Node.js中最流行的文本編輯器。使用Visual Studio代碼的開發人員可以從WSL中獲益良多。主要的優勢在於使運行在WSL中的Node.js代碼調試變得更容易。開發人員可以在運行WSL的Windows計算機上編寫Linux版本的Node.js並進行調試。

當我們為Node.js提供這樣的功能時,C++、Python和其他語言也有類似的需求。我開始對這種集成非常著迷,這為Linux開發帶來了全新的體驗。我現在著手c++代碼的Visual Studio遠程開發,我們會在今年的PyCon上線WSL的c++擴展功能。
盡管我在微軟工作的時間不長,但我為Linux開發工具感到興奮——從數據庫到操作係統再到 IDES。我願意繼續傳播對Linux的熱愛,並創建讓全世界的開發人員都感到滿意的工具。
原文:https://medium.com/microsoft-open-source-stories/when-linux-came-to-windows-204cf9abb3d6
相關資訊
最新熱門應用
coin100交易所鏈接
其它軟件159.09M
下載
歐意交易平台官網蘋果版
其它軟件397.1MB
下載
歐意交易平台app蘋果官網
其它軟件397.1MB
下載
歐意交易所app官方安卓手機版網易郵箱
其它軟件397.1MB
下載
熱幣網交易所app官網版蘋果手機
其它軟件50.42MB
下載
深幣交易所蘋果app
其它軟件223.89MB
下載
中幣交易所官網最新版安卓
其它軟件288.1 MB
下載
交易所appbcone
其它軟件225.08MB
下載
pkex交易所軟件官方app2024安卓版
其它軟件273.24MB
下載
bafeex交易所最新版
其它軟件28.5MB
下載