Windows和Linux將合二為一
我一直在用的是一臺(tái)蘋果筆記本,它幾乎可以做任何事:開發(fā)、寫提案、創(chuàng)作音樂等。但它也不是十全十美的,我很害怕供應(yīng)商被鎖定,也擔(dān)心自己過于依賴蘋果的奇思妙想,因此我也在尋求新的解決方案。
筆者著手搭建了一個(gè)機(jī)器學(xué)習(xí)工作站;出色的CPU、大量的RAM和性能極佳的GPU等等。除了要用Microsoft Office寫提案,我選擇用的操作系統(tǒng)幾乎都是Ubuntu。
Office online還沒有面市,而LibreOffice很糟糕。因此,我的解決方案是安裝Ubuntu和Windows 10雙系統(tǒng)。從蘋果系統(tǒng)切換到Ubuntu非常自由,而且選擇構(gòu)建個(gè)人PC幾乎沒有界限。
在無(wú)數(shù)次系統(tǒng)切換之后,WSL出現(xiàn)了。筆者開始將工作流程的一部分移到Windows,但還是有很多功能缺失。然而,WSL 2似乎改變了游戲規(guī)則。本文將為你展示這些奇妙的改變。
什么是WSL 2
WSL 2是WSL中體系結(jié)構(gòu)的新版本,它更改了 Linux 與 Windows 進(jìn)行交互的方式。
該版本提高了文件系統(tǒng)性能,增加了完全的系統(tǒng)調(diào)用兼容性。當(dāng)然,Linux 分發(fā)版可以作為 WSL 1或 WSL 2運(yùn)行,你可以自行選擇,并且可以隨時(shí)在它們之間進(jìn)行切換。
WSL 2 是對(duì)基礎(chǔ)體系結(jié)構(gòu)的一次重大改造,它使用虛擬化技術(shù)和 Linux 內(nèi)核來(lái)實(shí)現(xiàn)其新功能。微軟處理了瑣碎的細(xì)節(jié),這樣你就可以專注于重要的事情了。
安裝
微軟承諾將在不久的將來(lái)會(huì)為WSL 2提供流暢的安裝體驗(yàn),并且能夠通過Windows更新來(lái)更新Linux內(nèi)核。但目前的安裝過程有點(diǎn)復(fù)雜,但也不必太過憂慮。
示例中將在Windows 10上安裝Ubuntu20.04,但其實(shí)對(duì)于微軟商店中的任何分發(fā)版來(lái)說(shuō),安裝過程都是一樣的。首先,啟用“適用于 Linux 的 Windows 子系統(tǒng)”可選功能。以管理員身份打開PowerShell并運(yùn)行:
dism.exe /online /enable-feature/featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
接下來(lái),將系統(tǒng)更新到WSL 2,必須滿足以下條件:Windows 10已更新到版本2004;在BIOS設(shè)置中啟用Intel的“虛擬機(jī)平臺(tái)”。然后,以管理員身份啟動(dòng)PowerShell并運(yùn)行:
dism.exe /online /enable-feature/featurename:VirtualMachinePlatform /all /norestart
接著重新啟動(dòng)計(jì)算機(jī),以完成 WSL安裝并更新到 WSL 2。然后,在安裝新發(fā)行版時(shí),將WSL 2設(shè)置為默認(rèn)版本。以管理員身份打開PowerShell 并運(yùn)行以下命令,以將 WSL 2設(shè)置為默認(rèn)版本:
wsl --set-default-version 2
運(yùn)行該命令后可能會(huì)看到以下命令:
WSL 2 requires anupdate to its kernel component. For information please visithttps://aka.ms/wsl2kernel.
按照鏈接從該頁(yè)安裝,在計(jì)算機(jī)上安裝一個(gè)Linux內(nèi)核,供WSL 2使用。安裝內(nèi)核后,再次運(yùn)行該命令,該命令成功完成。
最后,安裝所選Linux分發(fā)版。打開微軟商店,搜索Ubuntu 20.04LTS。安裝完成后,在開始菜單上找到一個(gè)新的Ubuntu應(yīng)用,啟動(dòng)并按照說(shuō)明完成安裝。
檢查所選Linux分發(fā)版是否設(shè)置為WSL 2,請(qǐng)運(yùn)行wsl --list –verbose。若所選Linux分發(fā)版受WSL 1支持,請(qǐng)運(yùn)行wsl --set-version。
完成啦!這樣就可以有一個(gè)完整的Ubuntu分發(fā)版在Windows 10中運(yùn)行了。
開發(fā)人員工作站
Ubuntu已經(jīng)準(zhǔn)備好,現(xiàn)在你可以安裝任何所需程序了。如果你是數(shù)據(jù)科學(xué)家,可以安裝最新的Anaconda發(fā)行版;如果你是前端工程師,則可以安裝angular和npm等。
有兩個(gè)工具筆者想重點(diǎn)講一下:Visual Studio Code和Docker + Kubernetes。
VisualStudio Code
Visual Studio Code是許多開發(fā)人員選擇的集成開發(fā)環(huán)境(IDE),現(xiàn)在已啟用WSL 2,VS Code的遠(yuǎn)程開發(fā)擴(kuò)展包(Remote Development)絕對(duì)必不可少。
此插件支持WSL 2、容器映像甚至通過SSH的遠(yuǎn)程VM上的源代碼進(jìn)行遠(yuǎn)程開發(fā)。因此,現(xiàn)在可以在受WSL 2支持的Linux分發(fā)版中創(chuàng)建項(xiàng)目文件夾,并使用安裝在Windows 10上的Visual Studio Code編輯器作為IDE。
它的功能包括:全語(yǔ)言支持IntelliSense,git集成, Visual Studio Code擴(kuò)展,調(diào)試器和終端。
Docker +Kubernetes
Docker for Windows很出色,但它缺少一樣筆者最想要的東西,因此每當(dāng)需要為代碼構(gòu)建docker映像時(shí),我就得在Windows和Ubuntu之間切換。但WSL 2完全支持docker,這甚至比純粹的Linux體驗(yàn)更好。
若要啟動(dòng),請(qǐng)點(diǎn)擊Docker Desktop設(shè)置,勾選啟用基于WSL 2的引擎復(fù)選框 Use the WSL 2 basedengine 。
啟動(dòng)Dockerfor WSL 2
此外,可以通過點(diǎn)擊設(shè)置中的Kubernetes按鈕,勾選Restart Kubernetes Cluster復(fù)選框,來(lái)運(yùn)行本地Kubernetes集群。
啟用Kuberneteson WSL 2
現(xiàn)在,可以切換回WSL 2中的Ubuntu,運(yùn)行docker version或kubectl version ,并確認(rèn)這兩個(gè)版本已經(jīng)啟動(dòng)并運(yùn)行。
Docker和Kubernetes在WSL 2中運(yùn)行
福利:The new Windows Terminal
應(yīng)用商店將新的Windows Terminal定義為一個(gè)現(xiàn)代化、快速、高效、強(qiáng)大、高產(chǎn)的終端工具,供命令行工具和shell(如命令提示符,PowerShell和WSL)的用戶使用,主要功能包括多Tab支持、窗格、Unicode和UTF-8字符支持、基于 GPU 運(yùn)算的文本渲染引擎,以及自定義主題、樣式和配置。
此外,它非常美觀,可以通過它的可訪問設(shè)置(僅僅是一個(gè)JSON文件)隨心所欲地設(shè)置樣式。
雖然現(xiàn)在仍然缺少一些功能,但WSL 2運(yùn)行已經(jīng)暢通無(wú)阻了。在接下來(lái)的幾個(gè)月里,我們還可以用一個(gè)命令安裝WSL。打開一個(gè)Windows Terminal并輸入 wsl.exe --install。此外,在首次進(jìn)行安裝時(shí),WSL 2將成為默認(rèn)版本。
開發(fā)者最期待的功能有兩個(gè):GPU支持和GUI應(yīng)用支持。自從WSL 1發(fā)布以來(lái),向 WSL 添加 CUDA 和/或 GPU Compute 支持一直占據(jù)很高的呼聲。過去幾年中,WSL、Virtualization、DirectX、Windows Driver 團(tuán)隊(duì),以及他們的芯片合作伙伴一直在致力于提供此功能。
在WSL 2上訓(xùn)練深度學(xué)習(xí)模型(啟用CUDA)
此外,Linux還將支持GUI應(yīng)用程序。例如,可以在已安裝的Linux環(huán)境中運(yùn)行首選的Linux GUI文本編輯器或IDE,甚至可以在Windows機(jī)器上開發(fā)Linux GUI應(yīng)用程序!
WSL2支持Linux GUI
WSL 2完全有能力將Windows PC變成運(yùn)行Linux分發(fā)版的開發(fā)人員工作站,它速度在線,功能在線,未來(lái)還有更多值得探索的東西。雙系統(tǒng)的日子就要結(jié)束了,更極致的體驗(yàn)已然到來(lái)。