當前位置:
首頁 > 科技 > Windows 將成為 Linux 最好的發行版?使用其 4.19 內核

Windows 將成為 Linux 最好的發行版?使用其 4.19 內核

一段時間以來,微軟一直試圖將全棧開發人員吸引到Windows。直接在Windows上運行Linux二進位代碼的Windows Subsystem for Linux(WSL)可以說開了個好頭,頗受歡迎。350萬活躍的開發人員在使用WSL,它因每六個月更新一次的Windows 10而得到改進,比如能夠同時安裝和使用多個Linux發行版,能夠從Windows編輯Linux文件而不損壞文件。但這還不足以提供全面兼容性。

因此針對6月份Windows Insiders將可以使用的下一個版本,微軟正轉向在Windows中運行正宗的Linux 4.19內核以支持Linux二進位代碼。

WSL 2承諾對文件IO性能進行亟需的改進,另外增添對Docker的原生支持,以簡化Linux容器的使用。但它也可以在Windows上實現全面的Linux兼容性,因此成為Windows所能實現的重大轉變。

Windows開發者平台的企業副總裁Kevin Gallo對IT外媒The New Stack說:「WSL是許多Web開發人員在Windows中用時頗多的組件。現在我們擁有了純粹的Linux內核,因此你獲得的兼容性高得多。」

Gallo說:「文件性能向來是開發人員抱怨的一大問題,我們在解決這個問題。我們正在對Windows上的Linux容器(LCOW)進行重大改進,性能和兼容性均有明顯提升。你不需要虛擬機就能運行Linux版本的Docker,因而可以減少佔用的內存,提高執行速度,並縮短啟動時間。LCOW過去有點笨拙,但一旦我們得到原生的Docker支持,它運行起來就變得很順暢。作為開發人員,你可以儘可能接近生產環境,在WSL上運行Docker,並直接在上面進行調試。」

WSL 2是如何工作的?

Windows容器和虛擬化的首席項目經理Taylor Brown向The New Stack解釋道:「從體驗和用戶的角度來看,顧名思義,WSL 2隻是更好的WSL,」但它的工作方式截然不同。

「WSL將Linux系統調用轉換成相應的Windows API,而WSL 2運行非常輕量級的Hyper-V VM(與我們用於Hyper-V隔離容器的是同一種類型),它有正宗的Linux內核,因此不必進行系統調用轉換。它解決了許多頂級功能請求(文件系統性能和ABI兼容性),並使我們踏上一條便於以後解決更多請求的架構路徑。」

WSL 2有賴於微軟為了使Windows上的Linux容器(常常名為LCOW)在Azure上順暢運行而做的工作。「輕量級Hyper-V VM、9P文件系統橋甚至內核都是從我們與Azure中的LCOW一起使用的內核中大量借用過來的。9P是一種為Plan 9分散式操作系統開發的協議,用於為WSL橋接Windows文件系統和Linux文件系統。

如果你與WSL一起使用多個Linux發行版,每個發行版將在各自的虛擬機中運行。Brown說:「然而,這些虛擬機使用虛擬分配的內存,啟動不到一秒,而停止的速度更快,因此體驗和開銷是WSL級的(或甚至更好)。」

性能將優於WSL,對文件而言更是如此。「Linux的IO模式與Windows完全不同,NTFS是針對Windows優化的;NTFS在大文件IO方面非常出色,因此適合資料庫,而ETX4適合較小的IO。在WSL 2中,Linux文件系統現在只是直接在虛擬pmem設備上使用EXT4,因此我們在Linux端獲得Linux原生文件系統性能,在Windows端獲得Windows原生文件系統性能(集兩者之眾長)。通過9P橋,我們可以將兩者連接起來,獲得出色的集成體驗。」

使用WSL 2

儘管有這些變化,對於使用和bash及其他Linux工具的開發人員來說,體驗與今天的WSL一樣。Brown證實:「開發人員喜歡從WSL獲得的功能(比如共享文件/文件夾)通過使用9P協議的文件系統橋得到全面維護,因此WSL 2可以看到你的所有Windows文件和文件夾,你也可以從Windows看到Linux掛載的對象。」

計劃任務(cron job)和持久性守護進程的工作方式將與目前的WSL一樣,但網路套接字會有一些變化,這方面仍處於開發之中。「由於我們使用虛擬機,現在WSL 2中有NIC(網卡)。我們使用NAT網路模式,以便NIC由主機全面管理和協調,但它確實有自己的IP地址。我們現正在致力於自動映射套接字,以便體驗與WSL一樣;但我們認為,就預覽版而言,目前的體驗在情理之中,給了我們非常寶貴的反饋意見。」

WSL 2使Windows全面兼容Linux,至少在內核ABI層是這樣,不過微軟將目光投向開發者社區,搞清楚WSL中應包含哪些內核模塊。Brown解釋道:「在WSL中用不了的iSCSI目標(target)在WSL 2中用得了,但需要添加適當的模塊。」

WSL 2最初通過Insider體驗計劃適用於Windows 10,因此開發人員可以嘗試一下,就內核模塊等功能方面給予反饋。Brown特別指出,準備推出正式版之前,除了網路套接字的自動映射外,9P性能方面還有一些工作要做。

計劃是及時將WSL 2引入到Windows Server,這兩種操作系統上的Linux內核將像其他Windows組件一樣自動更新和維護。由於Hyper-V的嵌套虛擬化技術,你能夠在Azure上的虛擬機中使用WSL 2;雖然WSL 2本身基於為Azure所做的LCOW工作,但無法被Azure平台使用。

Visual Studio Code和WSL 2

Docker等工具將能夠增強WSL 2。Brown說:「今天,Docker Desktop創建並管理自己的Linux虛擬機;由於這種體驗,它們將能夠直接使用WSL 2,以提升性能和可靠性。」

藉助面向WSL和Docker容器的Visual Studio Code,原生Docker支持還將簡化遠程調試。新的遠程開發擴展包(RDEP)將在Visual Studio Code可以連接的目標環境中運行一套開發服務,那些服務負責安裝在遠程環境而不是在本地Windows環境中運行的工作區擴展,因此它們可以檢測什麼語言和運行時環境可以使用,在IDE中提供適當的代碼完成和代碼檢查(linting)。

Gallo解釋道:「Visual Studio Code遠程調試讓你可以直接連接到現有容器,而今天Windows上的Visual Studio Code可以在Windows中針對node.js來運行,但不是針對WSL來運行。如果你在Linux環境中啟動Visual Studio Code,它將調試Linux環境;在啟動虛擬機之前,它現在直接連接到啟動它的環境。」Visual Studio Code命令和擴展直接在啟動它的Linux發行版中運行,因此開發人員不必擔心路徑問題,你在WSL和已掛載的對象中都可以編輯文件。

這是Visual Studio Code用戶一直要求的功能;Visual Studio Code存儲庫中評論第三多的問題是支持在WSL中從bash啟動IDE,它與目前版本的WSL和WSL 2兼容。

Windows桌面上的Linux

微軟最初想把Linux二進位支持功能引入到Windows時,WSL 2依賴的容器支持功能還沒有出現,因此團隊不得不先將Linux系統調用支持添加到面向WSL的Windows內核。Brown特別指出,這種方法始終存在一些缺點。

「我們在系統調用轉換方法方面遇到的問題之一是,要始終關注Linux內核來創建新的轉換機制;更具體地說,一些系統調用很難搞對,將來會出現不可能搞對的系統調用。由於我們現在直接運行Linux內核,這種架構不用擔心這個問題,但我們運用了當初為Hyper-V隔離容器採取的大量創新後才真正實現了這個概念。」

如果WSL 2的新方法提供了微軟承諾的全面兼容性和顯著的性能改進,它將使Windows成為對任何開發人員而言極具吸引力的平台,無論他們在何種平台上從事開發。

實際上,Gallo認為WSL 2將為開發人員提供比在Mac上更好的Docker支持,因為他們不需要考慮親自運行Linux虛擬機。他表示,WSL 2有望使Windows成為開發人員為需要構建的任何雲工作負載而積極採用的操作系統,而不僅僅是針對Windows平台編程時所使用的操作系統。

「除了新終端中的所有改進以及在新的Edge瀏覽器中開發基於Chromium的網站從而支持前端企業開發外,我們認為相比其他任何環境,端到端體驗對於開發人員來說將是最高效的環境。」


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

微軟Windows更新與殺毒軟體打架:導致用戶電腦死機
Mitel和Avaya 或合併:交易金額超過 20 億美元

TAG:雲頭條 |