Windows下使用WSL2創建Ubuntu子系統(更改安裝位置與啟動圖形桌面)
本文介紹如何使用WSL2創建Ubuntu子系統,并更改安裝位置到其他磁盤,并啟動圖形桌面Xfce4。
WSL 版本: 2.5.7.0
系統版本: Windows11 23H2
相關工具:MobaXterm 25.1
首次編輯:2025年6月19日
- 一、打開Windows的三個虛擬化基礎功能
- 二、安裝WSL2和Ubuntu
- 1. 安裝WSL2
- 2. 安裝Ubuntu
- 三、更改Ubuntu安裝位置
- 四、配置圖形桌面
- 方案1:使用Ubuntu-desktop(失敗)
- 方案2:使用xUbuntu-desktop(xfce4)
- 五、配置Xfce4桌面
- 1.設置中文
- 2.設置中文輸入法
- 一些問題
- 一鍵部署腳本(未經驗證,謹慎使用)
- 1. Windows端操作
- 2. Ubuntu端操作
- 其他相關參考
一、打開Windows的三個虛擬化基礎功能
控制面板-程序和功能-啟動或關閉Windows功能,勾選Hyper-v、適用于Linux的Windows子系統、虛擬機平臺完成后等待啟動后根據提示重啟電腦。
二、安裝WSL2和Ubuntu
1. 安裝WSL2
- 打開PowerShell輸入
wsl --install
,完成后顯示適用于 Linux 的 Windows 子系統已安裝。
,其他錯誤信息可以忽略。 - 輸入
wsl.exe --update
,進度條完成后即可。
wsl --install
wsl.exe --update
可以直接下載wsl的離線安裝包,地址如下https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
2. 安裝Ubuntu
- 打開Microsoft Store搜索Ubuntu,選擇合適的版本獲取并安裝。我這里安裝的是Ubuntu 22.04 LTS
2. 安裝完成后可以在開始菜單打開Ubuntu,會彈出下列終端界面以及wsl的幫助界面
- 第一次啟動Ubuntu會提示輸入用戶名和密碼,輸入后顯示下列界面,此時即可通過終端進行操作。
三、更改Ubuntu安裝位置
1. 關閉Ubuntu系統
運行PowerShell,輸入wsl --shutdown
。再輸入wsl -l -v
查看Ubuntu-22.04
的運行狀態,STATE
為Stopped
即說明已關閉。
wsl --shutdown
wsl -l -v
2. 創建目錄。
在合適的磁盤上創建一個目錄,例如E盤的E:\Ubuntu2204
。
3. 導出鏡像。
在PowerShell中輸入下列命令,將Ubuntu導出到指定目錄,并等待操作完成。
wsl --export Ubuntu-22.04 E:\Ubuntu2204.tar
4. 注銷原系統。
在wsl中注銷原有的Ubuntu系統,powershell中輸入wsl --unregister Ubuntu-22.04
。完成后輸入wsl -l -v
查看,提示適用于 Linux 的 Windows 子系統沒有已安裝的分發。
即為卸載成功。
wsl --unregister Ubuntu-22.04
wsl -l -v
5. 導入鏡像。
在powershell中輸入wsl --import Ubuntu-22.04 E:\Ubuntu2204 E:\Ubuntu2204.tar
,將之前導出的鏡像導入到新的Ubuntu系統。在powershell中輸入wsl -l -v
查看,出現Ubuntu-22.04
的NAME即為導入成功。
wsl --import Ubuntu-22.04 E:\Ubuntu2204 E:\Ubuntu2204.tar
wsl -l -v
6. 更改默認用戶。
在powershell中輸入ubuntu2204.exe config --default-user [YourUesrName]
,將新的Ubuntu系統默認用戶設置為[YourUesrName]
。
如更改默認用戶為tdc
,則輸入下列命令:
ubuntu2204.exe config --default-user tdc
7. 啟動Ubuntu子系統。
在開始菜單中搜索Ubuntu
并運行,出現終端界面即為成功。
8. 刪除文件。
刪除導出的鏡像文件E:\Ubuntu2204.tar
。
Tips: 可以通過上述方法備份和恢復Ubuntu系統。
Tips: 在Windows的資源管理器中,按住Shift鍵,右鍵空白處或者文件夾,即可選擇
在此處打開 Linux shell
,從而實現快速啟動Ubuntu子系統并切換終端目錄。
Tips: 在Windows的資源管理器中,輸入
\\wsl$
即可訪問Ubuntu的文件系統,該系統是通過網絡接口訪問的,可右鍵該文件夾并選擇映射網絡驅動器
將其映射為帶有盤符的目錄,從而實現快速訪問Ubuntu文件。
四、配置圖形桌面
更新軟件
在Ubuntu終端中運行sudo apt update && sudo apt upgrade -y
,等待更新完成。
方案1:使用Ubuntu-desktop(失敗)
在Ubuntu終端中運行下列命令,等待安裝完成。
sudo apt purge -y acpid acpi-support modemmanager
sudo apt-mark hold acpid acpi-support modemmanager
sudp apt install ubuntu-desktop gnome -y
我這里出現Setup界面后會出現如下錯誤,無法啟動。
方案2:使用xUbuntu-desktop(xfce4)
1. 安裝Xubuntu-desktop
在Ubuntu終端中運行下列命令,等待安裝完成。
sudo apt purge -y acpid acpi-support modemmanager
sudo apt-mark hold acpid acpi-support modemmanager
sudo apt install -y xubuntu-desktop
也可以安裝更為精簡的xfce4
和xfce4-goodies
:
sudo apt install -y xfce4 xfce4-goodies
xubuntu-desktop相比于xfce4,xubuntu-desktop會安裝更多的軟件,如Firefox(瀏覽器)、gmusicbrowser(音頻)、Parole(視頻)、Ristretto(照片管理)、Abiword/Gnumeric(辦公)等。
在開始安裝時,會彈出下列設置,這里選擇輕量化的Lightdm顯示管理器。
2. 安裝Xrdp
在Ubuntu終端中運行下列命令,等待安裝完成。
sudo apt install -y xrdp
3. 配置Xrdp
添加xrdp
用戶
sudo adduser xrdp ssl-cert
配置端口號。編輯/etc/xrdp/xrdp.ini
文件:
sudo nano /etc/xrdp/xrdp.ini
該文件內容如下,;
開頭的為注釋;將port=3389
修改為需要的端口,并保存。
; Examples:
; port=3389
; port=unix://./tmp/xrdp.socket
; port=tcp://.:3389 127.0.0.1:3389
; port=tcp://:3389 *:3389
; port=tcp://<any ipv4 format addr>:3389 192.168.1.1:3389
; port=tcp6://.:3389 ::1:3389
; port=tcp6://:3389 *:3389
; port=tcp6://{<any ipv6 format addr>}:3389 {FC00:0:0:0:0:0:0:1}:3389
; port=vsock://<cid>:<port>
port=3389; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above
配置防火墻,此處的3389端口號與/etc/xrdp/xrdp.ini
文件中的端口號保持一致。
sudo ufw allow 3389
編輯/etc/xrdp/startwm.sh
文件
sudo nano /etc/xrdp/startwm.sh
將其內容替換為下列內容:
#!/bin/sh
unset DBUS_SESSION_BESSION_ADDRESS
unset XDG_RUNTIME_DIR
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
mkdir -p "$XDG_CACHE_HOME" "$XDG_CONFIG_HOME"
xfce4-session
完成配置后重新啟動Xrdp,在Ubuntu終端中運行下列命令,等待啟動完成。
sudo systemctl restart xrdp
4.黑屏問題
安裝mesa
并將其添加到Xrdp的啟動腳本/etc/xrdp/startwm.sh
中。
sudo apt install libgl1-mesa-glx
sudo nano /etc/xrdp/startwm.sh
添加以下內容:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa/
重新啟動Xrdp:
sudo systemctl restart xrdp
6. 連接Xrdp
使用Windows的遠程桌面連接連接到Ubuntu系統,設置目標為localhost:3389
,3389
為上述設置的端口號。
輸入用戶名和密碼即可登錄到桌面:
五、配置Xfce4桌面
1.設置中文
在Ubuntu終端中運行下列命令選擇語音和編碼。
sudo dpkg-reconfigure locales
第一個界面劃到最下面按下Space勾選zh_CN.UTF-8 UTF-8
,按Enter確定,第二個界面選擇zh_CN.UTF-8
,按Enter確定。
在Ubuntu終端中運行下列命令安裝語言字體包。
sudo apt-get install fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp
安裝完成后,重啟Ubuntu系統。
2.設置中文輸入法
在Ubuntu終端中運行下列命令安裝fcitx輸入法與中文輸入法包。
sudo apt install fcitx fcitx-googlepinyin
安裝完成后,在啟動項中添加fcitx
,并設置默認輸入法為fcitx
。
配置.bashrc
文件
sudo nano ~/.bashrc
添加以下內容:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
啟動輸入法
fcitx
一些問題
1.彈出提示:需要授權來創建色彩管理設備
每次啟動Ubuntu系統,都會彈出提示:需要授權來創建色彩管理設備。
在Ubuntu終端中運行下列命令,禁用colord
。
systemctl status colord # 檢查是否仍在運行
sudo systemctl stop colord # 強制停止
sudo systemctl disable colord # 禁用開機自啟
sudo systemctl mask colord # 徹底屏蔽(防止被其他服務依賴啟動):cite[2]
2.部分GUI軟件在Windows中打開
新版WSL2默認啟用WSLg,WSLg允許在Windows中運行GUI軟件,我們使用了RDP訪問Ubuntu系統,因此不再需要WSLg,因此需要禁用WSLg。
在PowerShell中運行下列命令,修改WSL的配置文件。
wsl --shutdown
notepad "$env:USERPROFILE\.wslconfig"
添加下列內容并保存:
[wsl2]
guiApplications=false
隨后重啟幾次WSL即可正常。
3.后臺運行WSL
運行WSL需要開啟一個Ubuntu終端,一旦終端關閉,WSL就會停止運行,RDP也會斷開連接。
可以使用tmux
終端復用工具在單個終端窗口中創建持久化的會話,即使關閉終端,會話仍能在后臺運行。
安裝tmux終端復用工具:
sudo apt install tmux
創建tmux會話:可以創建匿名會話或命名會話。命名會話可以方便管理會話,例如,可以創建多個會話,并分別運行不同的任務。
tmux # 創建匿名會話
tmux new -s <會話名> # 創建命名會話(推薦)
如:創建命名會話daemon
:
tmux new -s daemon
此時會進入名為daemon
的會話,將該會話后臺運行:先按Ctrl+B,松開后再按D。
此時關閉終端,會話daemon
依然在后臺運行,并且WSL仍然正常運行。
重新連接會話:
tmux attach -t <會話名> # 重新連接指定會話
tmux ls # 查看所有會話列表
如:重新連接會話daemon
:
tmux attach -t daemon
關閉會話:在會話內按Ctrl+D;或者輸入exit
。
一鍵部署腳本(未經驗證,謹慎使用)
1. Windows端操作
下列腳本由 AI 自動生成,未經測試,請謹慎使用!
以管理員權限打開PowerShell,運行下列命令:(自行修改安裝目錄路徑)
# 該腳本由 AI 自動生成,未經測試,請謹慎使用!# 啟用必要功能并重啟
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux, VirtualMachinePlatform -NoRestart
wsl --install
wsl --set-default-version 2
Restart-Computer -Force# 重啟后繼續執行
$ubuntuDir = "E:\Ubuntu2204"
mkdir $ubuntuDir
wsl --install -d Ubuntu-22.04
wsl --shutdown
wsl --export Ubuntu-22.04 "$ubuntuDir\Ubuntu2204.tar"
wsl --unregister Ubuntu-22.04
wsl --import Ubuntu-22.04 $ubuntuDir "$ubuntuDir\Ubuntu2204.tar" --version 2
ubuntu2204.exe config --default-user $env:USERNAME
Remove-Item "$ubuntuDir\Ubuntu2204.tar"# 禁用 WSLg 避免 GUI 沖突
echo "[wsl2]`nguiApplications=false" | Out-File "$env:USERPROFILE\.wslconfig" -Encoding ASCII
2. Ubuntu端操作
下列腳本由 AI 自動生成,未經測試,請謹慎使用!
啟動wsl,在Ubuntu終端中運行下列命令:(自行修改使用的桌面環境xubuntu-desktop/xfce4)
#!/bin/bash# 該腳本由 AI 自動生成,未經測試,請謹慎使用!# 更新系統并安裝 Xfce4 + xrdp
sudo apt update && sudo apt upgrade -y# 使用xubuntu-desktop:
# sudo apt purge -y acpid acpi-support modemmanager
# sudo apt-mark hold acpid acpi-support modemmanager
# sudo apt install -y xubuntu-desktop# 使用xfce4
sudo apt install -y xfce4 xfce4-goodies# 安裝配置 xrdp
sudo apt install -y xrdp
sudo adduser xrdp ssl-cert
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini
sudo ufw allow 3390# 修復黑屏問題
sudo apt install -y libgl1-mesa-glx
echo "export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa/" | sudo tee -a /etc/xrdp/startwm.sh
sudo tee /etc/xrdp/startwm.sh > /dev/null <<'EOF'
#!/bin/sh
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
mkdir -p "$XDG_CACHE_HOME" "$XDG_CONFIG_HOME"
xfce4-session
EOF
sudo chmod +x /etc/xrdp/startwm.sh
sudo systemctl restart xrdp# 設置中文環境
sudo apt install -y locales fonts-arphic-*
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8# 安裝中文輸入法
sudo apt install -y fcitx fcitx-googlepinyin
echo "export GTK_IM_MODULE=fcitx" >> ~/.bashrc
echo "export QT_IM_MODULE=fcitx" >> ~/.bashrc
echo "export XMODIFIERS=@im=fcitx" >> ~/.bashrc# 禁用 colord 服務
sudo systemctl mask colord --now# 安裝 tmux 保持后臺運行
sudo apt install -y tmux
tmux new -s xrdp-daemon -d "sudo /usr/sbin/xrdp"
其他相關參考
-
WSL2中使用USB設備
-
WSL2中使用VSCode