Win11安裝基于WSL2的Ubuntu
1. 概述
趁著還沒有完全忘記,詳細記錄一下在Win11下安裝基于WSL2的Ubuntu的詳細過程。不得不說WSL2現在被微軟開發的比較強大了,還是很值得安裝和使用的,筆者就通過WSL2安裝的Ubuntu成功搭建了ROS環境。
2. 詳論
2.1 子系統安裝
在Win11搜索欄中搜索“啟用或關閉Windows功能”,在彈出的“Windows功能”對話框中,勾選擇 “適用于Linux的Windows子系統”和“虛擬機平臺”,如下圖1所示:

點擊“確定”按鈕,等待Windows更改完成。在選擇“立即重新啟動”,重新進入Win11系統之后,啟動Windows PowerShell。注意,為了避免權限問題,后續所有啟動Windows PowerShell的方式都可以以管理員身份運行。筆者也不太清楚哪些要管理員權限,哪些不要,干脆就統一以管理員身份運行好了。
在Windows PowerShell中輸入如下命令:
wsl --update
之后就會更新wsl,如下圖2所示:

注意,如果你是用的比較新的Win11版本,那么應該就會默認安裝到WSL2,所以不用進行切換WSL版本。如果安裝的還是WSL1,那么就要升級到WSL2,因為WSL1和WSL2的特性是不太一樣的。
接下來通過Microsoft Store安裝Ubuntu發行版,可以直接在Microsoft Store中搜索Ubuntu,筆者這里安裝的是Ubuntu 20.04.6 LTS版本,如下圖3所示:

現在Microsoft Store的網絡連接應該比較穩定了,下載安裝過程還是比較順利的。安裝完成之后,就可以在系統搜索欄搜索到“Ubuntu 20.04.6 LTS”并啟動,如下圖4所示:

第一次啟動Ubuntu終端的時候會讓你創建用戶名和密碼,按照提示進行設置即可。不過筆者在這一步的時候不小心關閉終端了,后果就是每次啟動Ubuntu終端的賬戶的時候都是root賬戶。
應該來說整個系統的安裝過程還是很順利的,并沒有遇到諸如需要切換版本、下載其它終端、遷移地址等問題。
2.2 資源管理
按照慣例,安裝好Ubuntu第一件事就是更新和升級包管理器,這是安裝依賴庫或者軟件必須。在終端輸入如下指令:
apt-get update
apt-get upgrade
經過筆者的測試,上述指令現在沒有遇到網絡問題了,不知道是不是因為是WSL的原因。如果無法更新的話,有兩種解決方式,一種是設置代理,還有一種是換源,這里就不多作論述了。
使用WSL的Ubuntu的好處就是方便資源管理,比如前面提到的要給包管理器換源,就要編輯/etc/apt/sources.list這個文件。但是這時是沒有GUI界面的,只有使用像Vim和nano這樣基于終端的文本編輯器,筆者反正是不太想使用的。但是在WSL下,如果你按照之前的步驟順利安裝完成,就可以直接通過Win11自帶的文件資源管理器訪問到Ubuntu下所有的文件,如下圖5所示:

文件資源能訪問到當然就可以通過Win11的文本編輯器打開并編輯(需要注意Windows和Ubuntu文本文件的換行問題)。不僅是文本文件,任何文件資源的拷貝和移動都很方便,可以實現常規的復制粘貼操作。其實文件資源不拷貝也行,兩個系統之間的文件本身就可以互相訪問,當然可能需要解決一些權限問題。
2.3 GUI界面
2.3.1 WSLg
既然都用上Ubuntu了,當然還是想給它裝上GUI界面。其實目前最新的WSL2已經集成了WSLg技術,也就是可以支持GUI程序,只需要安裝GUI程序,然后運行就可以了。在Ubuntu終端中輸入指令:
xeyes
就可以在Win11系統中看到xeyes應用程序窗口,如下圖6所示:

如果沒有出現xeyes窗口,那么可能是Win11版本、WSL版本太低或者GPU驅動的問題,都進行更新一下即可。如果順利出現,就說明可以直接打開Ubuntu的GUI程序。例如,可以打開Ubuntu的文件資源管理器:
thunar
如果提示不識別,就安裝一下:
sudo apt-get update
sudo apt-get install thunar
啟動窗口如下圖7所示:

應該來說,雙系統資源互通加上這個文件資源管理器,應該能方便解決很多問題了。
2.3.2 VcXsrv
如果還是想獲得沉浸式的桌面體驗,那么就需要安裝桌面環境了。不過這種方案不是安裝了包就行了,更類似于遠程桌面連接,需要在Win11端安裝X服務器VcXsrv,可以在其官方網站上下載。
下載安裝完成后會在桌面上生成一個XLaunch的快捷方式。為了以防外一,還是以管理員方式啟動XLaunch,首先配置展示設置,如下圖8所示:

展示配置用于設置Ubuntu桌面以及GUI程序的窗口方式,其實四種方式其實都可以,這里就以Multiple windows為例。點擊下一步,配置如何啟動客戶端,如下圖9所示:

這里保持默認配置就行。繼續下一步,進行額外配置,如下圖10所示:

注意這里的Disable access control是一定要勾選的,否則可能無法啟動GUI桌面。繼續下一步,點擊“Save configuration”可以將配置保存,便于下一次啟動。點擊“完成”,VcXsrv就會正式啟動,如下圖11所示:

一定要注意,通過Multiple windows方式啟動的VcXsrv是看不到窗口的,它是在后臺啟動的,可以在任務管理器中看到。如果因為各種原因需要重啟,就在任務管理器中關掉,確保只有一個VcXsrv程序。
以上是在win11端中的操作,接下來就是在Ubuntu終端的操作。同樣的,為了避免問題以管理員方式啟動Ubuntu終端,并且使用root權限賬號。使用如下指令安裝xfce4桌面環境:
sudo apt install xfce4
配置遠端的展示地址,指令如下:
export DISPLAY=192.168.31.168:0
注意這里使用的192.168.31.168要換成你Win11端的IP地址,localhost或者127.0.0.1是不行的,因為對Ubuntu來說,Win11端其實是遠端,一定要用Win11端的IP地址。這一步在每次啟動桌面環境的時候都要設置,如果對Ubuntu環境比較熟的話可以配置到.bashrc文件中,可以避免每次都執行這個操作。
通過sudo startxfce4啟動xfce4桌面環境,效果如下圖12所示:

2.3.3 問題
如果是使用WSLg還是VcXsrv連接的方式,都還是有一些問題的。WSLg的問題是啟動GUI程序是不支持高分屏的,這樣GUI上的文字特別小,看起來非常傷眼睛。VcXsrv的問題是只有以Multiple windows方式啟動的桌面環境才能支持GPU/OpenGL,但是這種方式啟動的桌面環境中打開的GUI程序有點問題,具體表現為點擊標題欄的關閉按鈕無法生效,或者無法通過標題欄拖動窗口的位置。圖8所示的其他方式如Fullscreen、One large window等就沒這個問題,但是又不支持GPU/OpenGL。
不過話說回來,對使用GPU的GUI程序來說,基于WSL的Ubuntu確實不是最優解,筆者這里使用glxinfo | grep "OpenGL"顯示的OpenGL只能支持到OpenGL 3.1,更不談其他顯卡的驅動了。以后有機會的話還是試試雙系統的Ubuntu,體驗一下滿血Ubuntu的感覺。

浙公網安備 33010602011771號