Windows使用Linux 4.19 內(nèi)核

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

因此針對6月份Windows Insiders將可以使用的下一個版本,微軟正轉(zhuǎn)向在Windows中運行正宗的Linux 4.19內(nèi)核以支持Linux二進(jìn)制代碼。

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

Windows開發(fā)者平臺的企業(yè)副總裁Kevin Gallo對IT外媒The New Stack說:“WSL是許多Web開發(fā)人員在Windows中用時頗多的組件?,F(xiàn)在我們擁有了純粹的Linux內(nèi)核,因此你獲得的兼容性高得多。”

Gallo說:“文件性能向來是開發(fā)人員抱怨的一大問題,我們在解決這個問題。我們正在對Windows上的Linux容器(LCOW)進(jìn)行重大改進(jìn),性能和兼容性均有明顯提升。你不需要虛擬機就能運行Linux版本的Docker,因而可以減少占用的內(nèi)存,提高執(zhí)行速度,并縮短啟動時間。LCOW過去有點笨拙,但一旦我們得到原生的Docker支持,它運行起來就變得很順暢。作為開發(fā)人員,你可以盡可能接近生產(chǎn)環(huán)境,在WSL上運行Docker,并直接在上面進(jìn)行調(diào)試?!?/p>

WSL 2是如何工作的?

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

“WSL將Linux系統(tǒng)調(diào)用轉(zhuǎn)換成相應(yīng)的Windows API,而WSL 2運行非常輕量級的Hyper-V VM(與我們用于Hyper-V隔離容器的是同一種類型),它有正宗的Linux內(nèi)核,因此不必進(jìn)行系統(tǒng)調(diào)用轉(zhuǎn)換。它解決了許多頂級功能請求(文件系統(tǒng)性能和ABI兼容性),并使我們踏上一條便于以后解決更多請求的架構(gòu)路徑。”

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

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

性能將優(yōu)于WSL,對文件而言更是如此?!癓inux的IO模式與Windows完全不同,NTFS是針對Windows優(yōu)化的;NTFS在大文件IO方面非常出色,因此適合數(shù)據(jù)庫,而ETX4適合較小的IO。在WSL 2中,Linux文件系統(tǒng)現(xiàn)在只是直接在虛擬pmem設(shè)備上使用EXT4,因此我們在Linux端獲得Linux原生文件系統(tǒng)性能,在Windows端獲得Windows原生文件系統(tǒng)性能(集兩者之眾長)。通過9P橋,我們可以將兩者連接起來,獲得出色的集成體驗?!?/p>

使用WSL 2

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

計劃任務(wù)(cron job)和持久性守護(hù)進(jìn)程的工作方式將與目前的WSL一樣,但網(wǎng)絡(luò)套接字會有一些變化,這方面仍處于開發(fā)之中。“由于我們使用虛擬機,現(xiàn)在WSL 2中有NIC(網(wǎng)卡)。我們使用NAT網(wǎng)絡(luò)模式,以便NIC由主機全面管理和協(xié)調(diào),但它確實有自己的IP地址。我們現(xiàn)正在致力于自動映射套接字,以便體驗與WSL一樣;但我們認(rèn)為,就預(yù)覽版而言,目前的體驗在情理之中,給了我們非常寶貴的反饋意見?!?/p>

image

WSL 2使Windows全面兼容Linux,至少在內(nèi)核ABI層是這樣,不過微軟將目光投向開發(fā)者社區(qū),搞清楚WSL中應(yīng)包含哪些內(nèi)核模塊。Brown解釋道:“在WSL中用不了的iSCSI目標(biāo)(target)在WSL 2中用得了,但需要添加適當(dāng)?shù)哪K。”

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

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

Visual Studio Code和WSL 2

Docker等工具將能夠增強WSL 2。Brown說:“今天,Docker Desktop創(chuàng)建并管理自己的Linux虛擬機;由于這種體驗,它們將能夠直接使用WSL 2,以提升性能和可靠性。”

借助面向WSL和Docker容器的Visual Studio Code,原生Docker支持還將簡化遠(yuǎn)程調(diào)試。新的遠(yuǎn)程開發(fā)擴展包(RDEP)將在Visual Studio Code可以連接的目標(biāo)環(huán)境中運行一套開發(fā)服務(wù),那些服務(wù)負(fù)責(zé)安裝在遠(yuǎn)程環(huán)境而不是在本地Windows環(huán)境中運行的工作區(qū)擴展,因此它們可以檢測什么語言和運行時環(huán)境可以使用,在IDE中提供適當(dāng)?shù)拇a完成和代碼檢查(linting)。

Gallo解釋道:“Visual Studio Code遠(yuǎn)程調(diào)試讓你可以直接連接到現(xiàn)有容器,而今天Windows上的Visual Studio Code可以在Windows中針對node.js來運行,但不是針對WSL來運行。如果你在Linux環(huán)境中啟動Visual Studio Code,它將調(diào)試Linux環(huán)境;在啟動虛擬機之前,它現(xiàn)在直接連接到啟動它的環(huán)境?!盫isual Studio Code命令和擴展直接在啟動它的Linux發(fā)行版中運行,因此開發(fā)人員不必?fù)?dān)心路徑問題,你在WSL和已掛載的對象中都可以編輯文件。

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

Windows桌面上的Linux

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

“我們在系統(tǒng)調(diào)用轉(zhuǎn)換方法方面遇到的問題之一是,要始終關(guān)注Linux內(nèi)核來創(chuàng)建新的轉(zhuǎn)換機制;更具體地說,一些系統(tǒng)調(diào)用很難搞對,將來會出現(xiàn)不可能搞對的系統(tǒng)調(diào)用。由于我們現(xiàn)在直接運行Linux內(nèi)核,這種架構(gòu)不用擔(dān)心這個問題,但我們運用了當(dāng)初為Hyper-V隔離容器采取的大量創(chuàng)新后才真正實現(xiàn)了這個概念。”

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

實際上,Gallo認(rèn)為WSL 2將為開發(fā)人員提供比在Mac上更好的Docker支持,因為他們不需要考慮親自運行Linux虛擬機。他表示,WSL 2有望使Windows成為開發(fā)人員為需要構(gòu)建的任何云工作負(fù)載而積極采用的操作系統(tǒng),而不僅僅是針對Windows平臺編程時所使用的操作系統(tǒng)。

“除了新終端中的所有改進(jìn)以及在新的Edge瀏覽器中開發(fā)基于Chromium的網(wǎng)站從而支持前端企業(yè)開發(fā)外,我們認(rèn)為相比其他任何環(huán)境,端到端體驗對于開發(fā)人員來說將是最高效的環(huán)境。”

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容