WSLG是Linux GUI的Windows子系統的縮寫,該項目的目的是在完全集成的桌面體驗中支持Windows在Windows上運行Linux GUI應用程序(X11和Wayland)的支持。
WSLG為開發人員,科學家或愛好者提供了一種集成的體驗,這些體驗更喜歡或需要在其PC上運行Windows,但還需要能夠運行在Linux環境中運行最佳或專門工作的工具或應用程序。雖然用戶今天可以使用多個系統設置來完成此操作,但單個PC專用於Windows和Linux,託管Windows或Linux的虛擬機,或在Windows上運行並投影到WSL上的XServer,WSLG提供了一個更加集成,用戶友好和富有成效的,選擇。
WSLG致力於使Linux GUI應用在窗戶上使用本地和自然。從集成到開始菜單的啟動到出現在任務欄中,alt-tab體驗都可以在Windows和Linux應用程序中進行剪切/粘貼,WSLG啟用了無縫的桌面體驗以及Windows和Linux應用程序的工作流程。
Windows 11和Windows 10都支持WSLG。Windows 10用戶必須通過訪問Windows更新並安裝所有可用更新,確保其Windows 10安裝完全最新。
WSLG可以作為Windows 11 WSL收件箱支持的一部分以及通過Microsoft Store的Linux的Windows子系統提供的一部分。強烈建議使用Microsoft Store版本的WSL,該版本支持Windows 10和Windows 11,並包含WSL和WSLG的最新版本。
確保將您的圖形驅動程序更新為GPU製造商網站可用的最新驅動程序,以便在WSL環境中受益於GPU加速。
從具有管理員特權的命令提示符中,運行命令wsl --install -d Ubuntu
,然後重新啟動(如果提示)。
重新啟動後,安裝將繼續。您將被要求輸入用戶名和密碼。這些將是您的Linux憑據,它們可以是您想要的任何東西,而不必匹配您的Windows憑據。
瞧! WSL和WSLG已安裝並準備好使用!
如果您沒有WSLG的現有WSL安裝,並且想更新到包括WSLG在內的最新版本的WSL,請從高架命令提示符中運行命令wsl --update
。
請注意,WSLG僅與WSL 2兼容,並且對在WSL 1模式下工作的WSL分佈不起作用。驗證您的Linux發行版是否配置為在WSL 2模式下運行,如果不切換到WSL 2。雖然您可以在安裝WSLG之後繼續在WSL 1模式下運行Linux Diveslo,但如果您願意,則可以在WSL 1模式下配置以在WSL 1模式下運行。將無法與WSLG通信,也無法運行GUI應用程序。
您可以列出當前安裝的發行版,以及它們配置的WSL版本,用於使用高架命令提示符中的以下命令。
wsl -- list - v
如果在版本1模式下運行,請切換到版本2。這可能需要一段時間。
wsl -- set-version _distro_name_ 2
通過從高架命令提示符運行此命令,重新啟動WSL,請確保首先保存所有待處理的工作:
wsl -- shutdown
要更新到最新版本的WSL和WSLG發布的預覽,只需從高架命令提示符或PowerShell運行wsl --update
更新即可。
您需要重新啟動WSL才能生效。您可以通過從高架命令提示符中運行wsl --shutdown
來重新啟動WSL。如果WSL當前正在運行,它將關閉,請確保首先保存任何正在進行的工作!下次您啟動WSL應用程序或終端時,WSL將自動重新啟動。
如果您根據以下說明安裝了Ubuntu
Linux發行版,則在開始菜單中找到一個Ubuntu
圖標,請啟動它。這將啟動WSL 2 VM,在該VM中啟動Ubuntu WSL發行版,並為您提供與之互動的終端。瞧!您正在Windows上運行Linux!
如果您想探索為WSL構建的其他Linux發行版,則可以使用高架命令提示符中的wsl --list --online
命令來列舉系統的可用發行版列表。您可以在WSL中安裝多個Linux發行版,它們會愉快地並存,因此不要害怕嘗試並嘗試一下。
恭喜您完成了,準備使用GUI應用程序!
如果您想開始使用一些GUI應用程序,則可以從Linux終端運行以下命令以下載並安裝一些流行的應用程序。如果您使用的分佈與Ubuntu不同,則可能使用其他包裝管理器。
# # Update list of available packages
sudo apt update
# # Gedit
sudo apt install gedit - y
# # GIMP
sudo apt install gimp - y
# # Nautilus
sudo apt install nautilus - y
# # VLC
sudo apt install vlc - y
# # X11 apps
sudo apt install x11 - apps - y
# # Google Chrome
cd / tmp
sudo wget https: // dl.google.com / linux / direct / google - chrome - stable_current_amd64.deb
sudo dpkg - i google - chrome - stable_current_amd64.deb
sudo apt install -- fix - broken - y
sudo dpkg - i google - chrome - stable_current_amd64.deb
# # Microsoft Teams
cd / tmp
sudo curl - L - o " ./teams.deb " " https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb "
sudo apt install . / teams.deb - y
# # Microsoft Edge Dev Browser
sudo curl https: // packages.microsoft.com / repos / edge / pool / main / m / microsoft - edge - dev / microsoft - edge - dev_118. 0.2060 . 1 - 1_amd64.deb - o / tmp / edge.deb
sudo apt install / tmp / edge.deb - y
安裝了這些應用程序後,您將在“發行版”名稱的開始菜單中找到它們。例如Ubuntu -> Microsoft Edge
。您還可以使用命令從終端窗口啟動這些:
xcalc
, xclock
, xeyes
gimp
gedit ~/.bashrc
nautilus
vlc
google-chrome
teams
microsoft-edge
用戶發行版本質上是您用於Linux工作的WSL分發。您可以使用高架Windows命令提示符中的命令wsl --list --online
列出系統上可用的WSL分佈。您可以並排運行多個用戶發行版,他們將和平並存,因此不要害怕嘗試新的發行版。每個用戶發行版將與系統發行版的唯一實例配對,但是您仍然可以通過在不同的用戶發行中的GUI應用程序進行互動,例如它們之間的剪切/粘貼。各種用戶空間的基礎容器化應該對您不可見。
特定Windows用戶的所有用戶和系統發行版都在同一WSL虛擬機中運行,以與Linux內核的單個實例一起運行。 PC上的不同Windows用戶具有自己的VM和WSL實例。您的Linux環境可以始終是您自己的,並且不會與同一PC上的其他Windows用戶共享。
系統發行版是所有魔術發生的地方。系統發行版是一個容器化的Linux環境,WSLG XServer,Wayland Server和Pulse Audio Server正在運行。這些服務器中的每個服務器的通信插座都被投影到用戶發行版中,以便客戶端應用程序可以連接到它們。我們預先配置了用戶發行式環境變量顯示,wayland_display和pulse_server默認將這些服務器引用這些服務器,因此WSLG從開箱即用。
想要使用與WSLG提供的服務器不同的服務器可以更改這些環境變量。用戶還可以選擇通過在其.wslconfig
文件中添加以下條目(位於c:usersMyUser.wslconfig
)來完全關閉系統發行版。這將關閉WSL中GUI應用程序的支持。
[wsl2]
guiApplications=false
系統發行版基於Microsoft CBL-Mariner Linux。這是一個最小的Linux環境,足以運行各種WSLG。有關如何構建和部署私人系統發行版的詳細信息,請參閱我們的構建說明。
每個WSL 2用戶發行版都與自己的系統發行版配對。系統發行版以與用戶發行的ns/pid/uts名稱空間相比,部分與用戶發行版進行了部分隔離,但共享其他名稱空間(例如IPC),以允許在整個邊界上進行共享內存優化。
雖然用戶可以將終端輸入系統發行版,但係統發行版本並非用戶直接使用。系統發行版的每個實例都是從其備份VHD中讀取的。當WSL重新啟動時,有效地丟棄了針對系統發行版的內存實例(例如安裝新軟件包或創建新文件)的任何修改。我們這樣做的原因是為系統發行版啟用一個維修模型,在該模型中,我們將舊的模型替換為新舊模型,而不必擔心遷移其中包含的任何用戶數據。我們使用僅閱讀映射,使用戶在任何更改上都會獲得眾所周知的丟棄行為,每次重新啟動WSL時,就不會在維修WSL時會感到驚訝。
儘管Microsoft以僅閱讀的方式發布了WSLG系統發行版,但我們確實希望鼓勵人們修改它和實驗。儘管我們希望很少有人真正需要或想要這樣做,但是我們在貢獻頁面上分享了有關如何構建和部署系統發行版的私人版本的詳細說明。大多數只想在WSL中使用GUI應用程序的用戶不必擔心這些細節。
WSLGD是初始化後啟動的第一個過程。 WSLGD啟動了Weston (與Xwayland), Pulseaudio ,並通過在靜音模式下在主機上啟動MSTSC.EXE來建立RDP連接。 RDP連接將保持活動狀態,並準備顯示新的GUI應用程序正在暫時發行,而無需任何連接延遲。然後, WSLGD會監視這些過程,如果它們通過錯誤退出(例如崩潰),則會自動重新啟動它們。
韋斯頓(Weston)是Wayland Project Reference Compositor,也是WSLG的心臟。對於WSLG,我們擴展了Libweston現有的RDP後端,以教給它如何遠程應用程序而不是監視/桌面。我們還為其添加了各種功能,例如對多監測器,剪切/粘貼,音頻入口的支持,等等...
應用程序集成是通過稱為Rail(本地遠程應用程序)和VAIL(本地集成的虛擬化應用程序)來實現的。鐵路和Vail之間的主要區別是如何從RDP服務器向RDP客戶端運輸像素。在鐵路中,假定服務器和客戶端正在通過網絡通信的不同物理系統運行,因此需要在RDP傳輸上複製像素。在Vail中,可以理解,服務器和客戶端在同一物理系統上,並且可以在訪客/主機VM邊界上共享內存。我們已經在Libweston RDP後端增加了對鐵路和Vail的支持,儘管對於WSLG,只有Vail支持才能有效使用。在構建WSLG時,我們首先實施了軌道,同時可以並聯開發向Vail開關的必要部件。我們決定保留該支持,因為它可以在WSLG之外的其他有趣場景中重複使用,例如,用於從運行Linux的PI遠程應用程序。為了在Linux Guest和Windows主機之間共享內存,我們使用Virtio-fs。
韋斯頓(Weston)是模塊化的,如今有各種外殼,例如桌面外殼,全屏外殼(又稱售貨亭)和自動殼。對於WSLG,我們引入了一個名為Rail Shell的新外殼。軌道外殼的目的是幫助將單個窗戶從Linux到Windows遠程遠程,因此外殼非常簡單,並且不涉及任何實際的小部件或外殼擁有的像素。
Weston利用FreerDP實施其後端RDP服務器。 FREERDP用於編碼從RDP服務器(韋斯頓)到RDP客戶端(Windows上的MSTSC)的所有通信,根據RDP協議規範。它還用於將RDP客戶端的所有流量解碼為RDP服務器。
對於(麥克風)和out(揚聲器/耳機)WSLG的音頻,運行pulseaudio服務器。 WSLG使用一個接收器插件進行音頻,以及用於音頻的源插件。這些插件有效地將音頻樣本傳輸到PulsEserver和Weston RDP服務器之間。音頻流由Weston RDP服務器合併到RDP傳輸上,有效地在所有方案(包括WSLG)(包括WSLG)的所有方案(桌面/Rail/Vail Style eroting)中有效地啟用了Weston RDP後端的音頻。
WSLG利用Weston RDP服務器和在Windows主機上運行的MSTSC RDP客戶端之間的自定義RDP虛擬通道。 Weston使用此通道來枚舉所有Linux GUI應用程序(即具有GUI類型的桌面文件條目)以及其啟動命令行和圖標。開源WSLDVCPLUGIN處理通過此頻道發送的Linux GUI應用程序列表,並在Windows Start菜單中為其創建鏈接。
雖然WSLG在有或沒有虛擬GPU支持的情況下使用,但如果您打算運行圖形密集型應用程序(例如Blender或Gazebo),則最好在具有GPU和可以支持WSL的GPU和驅動程序的系統上運行。我們的VGPU體系結構的概述以及Linux應用程序如何使WSL中的GPU訪問GPU成為可能。
通過我們的D3D團隊與Collabora和Mesa社區創建D3D12炮驅動器所做的工作,可以使OpenGL加速渲染的支持成為可能。
對Linux的支持,包括對WSLG的支持,一直是Mesa 21.0版本的上游和一部分。為了利用此加速度,您需要更新用戶發行版中安裝的檯面版本。它還要求您的發行版供應商選擇將新的D3D12炮驅動器構建並發佈到其包裝存儲庫中。我們正在與各種WSL發行商合作,以告知他們這些更改。
請注意,對於WSLG的首次發布,VGPU通過系統內存與Weston Compositor交流。如果在離散的GPU上運行,則有效地意味著在將WSLG中的Compositor提交給Compositor之前,將渲染的數據從VRAM複製到系統內存,並再次上傳到Windows側的GPU。結果,績效處罰與表現率成正比。在離散GPU上的600fps等幀速率下,開銷的高度可能高達50%。在較低的幀速率或集成的GPU上,可以根據工作量來實現更接近本地的性能。儘管使用了V1限制,但使用VGPU仍然提供了使用軟件渲染器的非常重要的性能和經驗改進。
WSLG建立在Linux社區的出色工作基礎上,並利用大量開源項目。大多數組件都是從上游版本中使用的,並且不需要任何更改才能在WSLG中點亮。 WSLG中心的某些組件,尤其是Weston,FreerDP和Pulseaudio,需要更改以實現豐富的WSLG集成。這些變化尚未上游。 Microsoft正在與社區合作,將這些貢獻與每個項目分享,以便隨著時間的推移,可以直接從上游組件構建WSLG,而無需任何WSLG特定的修改。
所有這些機上貢獻都保留在Microsoft Mirror Repos中。我們將這些鏡子保持在上游版本的最新狀態,並在這些存儲庫中進行WSLG的變化。 WSLG作為內部人士WSLG預覽版本的一部分,從這些鏡像存儲庫中拉出並構建代碼。這些鏡子是公開的,每個人都可以使用。奇怪的開發人員可以通過查看這些鏡子中的代碼在我們的貢獻的早期階段進行窺視,請記住,一旦貢獻達到上游項目,代碼的最終版本可能會有所不同,並根據反饋收到的適用各種項目所有者。我們所有的鏡子都遵循相同的型號。有一個主分支,對應於我們上一個同步點的上游分支。我們會不時更新主要分支,以從上游項目中選擇更新。還有一個工作分支,其中包含我們所有飛行的變化。 WSLG是使用每個鏡像項目的工作分支建造的。
WSLG維護鏡子的項目隨著飛行的貢獻的發展而隨著時間的流逝而變化。一旦某些貢獻在上游,可能不再需要維護鏡子,此時將被刪除,WSLG將開始直接利用組件的上游版本。當我們在WSLG中點亮新功能時,可能會引入新的鏡子以對新組件的階段貢獻。因此,期望鏡子列表會更改加班。
在此時間點,我們為當前機上貢獻提供了以下項目鏡子。
專案 | 上游回購 | WSLG鏡子 |
---|---|---|
韋斯頓 | https://github.com/wayland-project/weston | https://github.com/microsoft/weston-mirror |
freerdp | https://github.com/freerdp/freerdp | https://github.com/microsoft/freerdp-mirror |
脈衝 | https://github.com/pulseaudio/pulseaudio | https://github.com/microsoft/pulseaudio-mirror |
以下是對這些鏡子中包含的每個項目的當前機上貢獻的高級概述。
WSLG利用Weston作為Wayland Compositor使用RDP技術橋接Linux和Windows Worlds,以遠程應用程序內容。韋斯頓已經有了RDP後端,但僅限於單人監測到遠程。我們已經大大提高了RDP後端,包括高級功能,例如多監視器支持,用於復制/粘貼的剪貼板集成以及In/Out In/Out。我們啟用了稱為Rail(本地集成的遠程應用程序)和Vail(本地集成的虛擬應用程序)的新的遠程模式,在此,遠離單個應用程序而不是台式機/監視器。這些變化不是WSLG的特定。它們為現有的RDP後端增加了功能,並且在其他方案中也可以重複使用(即使用新的Weston RDP後端到Raspberry Pi上運行的遠程應用程序到運行RDP客戶端的另一個設備)。
為了啟用WSLG中豐富的集成,我們還為WSLG的RDP後端添加了一個小插件。在韋斯頓,該插件負責連接到用戶發行版並蒐索已安裝的應用程序(又稱桌面文件)。該插件向Windows主機發送了所有應用程序及其啟動命令和圖標的列表。在Windows主機上,WSLG項目的開源MSTSC插件部分使用該信息為Windows Start菜單創建這些Linux應用程序的快捷方式。
我們還修復了影響各種應用程序的幾個錯誤。通常,這些問題在所有模式下都影響了韋斯頓,並且並非特定於WSLG。
Weston目前使用FreerDP進行RDP後端。 WSLG繼續利用FreerDP,我們為新的RDP協議/渠道提供了支持,以啟用Vail優化的方案以及對WSLG插件的支持。我們還修復了影響與MSTSC交易的各種錯誤或導致不穩定性。
對於Pulseaudio,我們的貢獻集中在水槽和源插件上,該插件將pulseaudio和Weston RDP後端之間的音頻數據調整,以便可以將音頻數據集成到RDP連接到主機上。在添加這些新插件之外,Pulseaudio的核心沒有變化。
如果您想修改或為WSLG貢獻或貢獻WSLG,請參閱我們的貢獻頁面以獲取詳細信息,包括如何構建和運行私人版本的WSLG版本。
對於非安全性相關的問題,例如報告錯誤或為新功能提出建議,請使用此項目的問題跟踪器。
要報告WSLG或任何其他Microsoft產品的安全問題,請按照此處詳細介紹的說明。
該項目可能包含用於項目,產品或服務的商標或徽標。 Microsoft商標或徽標的授權使用受到了Microsoft的商標和品牌準則的約束。在此項目的修改版本中使用Microsoft商標或徽標不得引起混亂或暗示Microsoft贊助。任何使用第三方商標或徽標都遵守這些第三方政策。