雙系統(tǒng)的日子結(jié)束了:Windows和Linux將合二為一
很長一段時間以來,雙系統(tǒng)是我唯一的解決方案。
我一直在用的是一臺蘋果筆記本,它幾乎可以做任何事:開發(fā)、寫提案、創(chuàng)作音樂等。但它也不是十全十美的,我很害怕供應(yīng)商被鎖定,也擔(dān)心自己過于依賴蘋果的奇思妙想,因此我也在尋求新的解決方案。
筆者著手搭建了一個機器學(xué)習(xí)工作站;出色的CPU、大量的RAM和性能優(yōu)秀的GPU等等。除了要用Microsoft Office寫提案,我選擇用的操作系統(tǒng)幾乎都是Ubuntu。
Office online還沒有面市,而LibreOffice很糟糕。因此,我的解決方案是安裝Ubuntu和Windows 10雙系統(tǒng)。從蘋果系統(tǒng)切換到Ubuntu非常自由,而且選擇構(gòu)建個人PC幾乎沒有界限。
在無數(shù)次系統(tǒng)切換之后,WSL出現(xiàn)了。筆者開始將工作流程的一部分移到Windows,但還是有很多功能缺失。然而,WSL 2似乎改變了游戲規(guī)則。本文將為你展示這些奇妙的改變。
什么是WSL 2
WSL 2是WSL中體系結(jié)構(gòu)的新版本,它更改了 Linux 與 Windows 進行交互的方式。
該版本提高了文件系統(tǒng)性能,增加了完全的系統(tǒng)調(diào)用兼容性。當(dāng)然,Linux 分發(fā)版可以作為 WSL 1或 WSL 2運行,你可以自行選擇,并且可以隨時在它們之間進行切換。
WSL 2 是對基礎(chǔ)體系結(jié)構(gòu)的一次重大改造,它使用虛擬化技術(shù)和 Linux 內(nèi)核來實現(xiàn)其新功能。微軟處理了瑣碎的細(xì)節(jié),這樣你就可以專注于重要的事情了。
安裝
微軟承諾將在不久的將來會為WSL 2提供流暢的安裝體驗,并且能夠通過Windows更新來更新Linux內(nèi)核。但目前的安裝過程有點復(fù)雜,但也不必太過憂慮。
示例中將在Windows 10上安裝Ubuntu20.04,但其實對于微軟商店中的任何分發(fā)版來說,安裝過程都是一樣的。首先,啟用“適用于 Linux 的 Windows 子系統(tǒng)”可選功能。以管理員身份打開PowerShell并運行:
- dism.exe /online /enable-feature/featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
接下來,將系統(tǒng)更新到WSL 2,必須滿足以下條件:Windows 10已更新到版本2004;在BIOS設(shè)置中啟用Intel的“虛擬機平臺”。然后,以管理員身份啟動PowerShell并運行:
- dism.exe /online /enable-feature/featurename:VirtualMachinePlatform /all /norestart
接著重新啟動計算機,以完成 WSL安裝并更新到 WSL 2。然后,在安裝新發(fā)行版時,將WSL 2設(shè)置為默認(rèn)版本。以管理員身份打開PowerShell 并運行以下命令,以將 WSL 2設(shè)置為默認(rèn)版本:
- wsl --set-default-version 2
運行該命令后可能會看到以下命令:
- WSL 2 requires anupdate to its kernel component. For information please visithttps://aka.ms/wsl2kernel.
按照鏈接從該頁安裝,在計算機上安裝一個Linux內(nèi)核,供WSL 2使用。安裝內(nèi)核后,再次運行該命令,該命令成功完成。

最后,安裝所選Linux分發(fā)版。打開微軟商店,搜索Ubuntu 20.04LTS。安裝完成后,在開始菜單上找到一個新的Ubuntu應(yīng)用,啟動并按照說明完成安裝。
檢查所選Linux分發(fā)版是否設(shè)置為WSL 2,請運行wsl --list –verbose。若所選Linux分發(fā)版受WSL 1支持,請運行wsl --set-version
完成啦!這樣就可以有一個完整的Ubuntu分發(fā)版在Windows 10中運行了。
開發(fā)人員工作站
Ubuntu已經(jīng)準(zhǔn)備好,現(xiàn)在你可以安裝任何所需程序了。如果你是數(shù)據(jù)科學(xué)家,可以安裝比較新的Anaconda發(fā)行版;如果你是前端工程師,則可以安裝angular和npm等。
有兩個工具筆者想重點講一下:Visual Studio Code和Docker + Kubernetes。
VisualStudio Code
Visual Studio Code是許多開發(fā)人員選擇的集成開發(fā)環(huán)境(IDE),現(xiàn)在已啟用WSL 2,VS Code的遠(yuǎn)程開發(fā)擴展包(Remote Development)絕對必不可少。
此插件支持WSL 2、容器映像甚至通過SSH的遠(yuǎn)程VM上的源代碼進行遠(yuǎn)程開發(fā)。因此,現(xiàn)在可以在受WSL 2支持的Linux分發(fā)版中創(chuàng)建項目文件夾,并使用安裝在Windows 10上的Visual Studio Code編輯器作為IDE。
它的功能包括:全語言支持IntelliSense,git集成, Visual Studio Code擴展,調(diào)試器和終端。
Docker +Kubernetes
Docker for Windows很出色,但它缺少一樣筆者最想要的東西,因此每當(dāng)需要為代碼構(gòu)建docker映像時,我就得在Windows和Ubuntu之間切換。但WSL 2完全支持docker,這甚至比純粹的Linux體驗更好。
若要啟動,請點擊Docker Desktop設(shè)置,勾選啟用基于WSL 2的引擎復(fù)選框 Use the WSL 2 basedengine 。

啟動Dockerfor WSL 2
此外,可以通過點擊設(shè)置中的Kubernetes按鈕,勾選Restart Kubernetes Cluster復(fù)選框,來運行本地Kubernetes集群。

啟用Kuberneteson WSL 2
現(xiàn)在,可以切換回WSL 2中的Ubuntu,運行docker version或kubectl version ,并確認(rèn)這兩個版本已經(jīng)啟動并運行。

Docker和Kubernetes在WSL 2中運行
福利:The new Windows Terminal
應(yīng)用商店將新的Windows Terminal定義為一個現(xiàn)代化、快速、高效、強大、高產(chǎn)的終端工具,供命令行工具和shell(如命令提示符,PowerShell和WSL)的用戶使用,主要功能包括多Tab支持、窗格、Unicode和UTF-8字符支持、基于 GPU 運算的文本渲染引擎,以及自定義主題、樣式和配置。
此外,它非常美觀,可以通過它的可訪問設(shè)置(僅僅是一個JSON文件)隨心所欲地設(shè)置樣式。
產(chǎn)品路線圖
雖然現(xiàn)在仍然缺少一些功能,但WSL 2運行已經(jīng)暢通無阻了。在接下來的幾個月里,我們還可以用一個命令安裝WSL。打開一個Windows Terminal并輸入 wsl.exe --install。此外,在首次進行安裝時,WSL 2將成為默認(rèn)版本。
開發(fā)者最期待的功能有兩個:GPU支持和GUI應(yīng)用支持。自從WSL 1發(fā)布以來,向 WSL 添加 CUDA 和/或 GPU Compute 支持一直占據(jù)很高的呼聲。過去幾年中,WSL、Virtualization、DirectX、Windows Driver 團隊,以及他們的芯片合作伙伴一直在致力于提供此功能。

在WSL 2上訓(xùn)練深度學(xué)習(xí)模型(啟用CUDA)
此外,Linux還將支持GUI應(yīng)用程序。例如,可以在已安裝的Linux環(huán)境中運行首選的Linux GUI文本編輯器或IDE,甚至可以在Windows機器上開發(fā)Linux GUI應(yīng)用程序!

WSL2支持Linux GUI
WSL 2完全有能力將Windows PC變成運行Linux分發(fā)版的開發(fā)人員工作站,它速度在線,功能在線,未來還有更多值得探索的東西。雙系統(tǒng)的日子就要結(jié)束了,更極致的體驗已然到來。