Windows下使用WSL2創建Ubuntu子系統(更改安裝位置與啟動圖形桌面)

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

  1. 打開PowerShell輸入wsl --install,完成后顯示適用于 Linux 的 Windows 子系統已安裝。,其他錯誤信息可以忽略。
  2. 輸入wsl.exe --update,進度條完成后即可。
wsl --install
wsl.exe --update

可以直接下載wsl的離線安裝包,地址如下https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

2. 安裝Ubuntu

  1. 打開Microsoft Store搜索Ubuntu,選擇合適的版本獲取并安裝。我這里安裝的是Ubuntu 22.04 LTS

在這里插入圖片描述
2. 安裝完成后可以在開始菜單打開Ubuntu,會彈出下列終端界面以及wsl的幫助界面
在這里插入圖片描述
在這里插入圖片描述

  1. 第一次啟動Ubuntu會提示輸入用戶名和密碼,輸入后顯示下列界面,此時即可通過終端進行操作。
    在這里插入圖片描述

三、更改Ubuntu安裝位置

1. 關閉Ubuntu系統

運行PowerShell,輸入wsl --shutdown。再輸入wsl -l -v查看Ubuntu-22.04的運行狀態,STATEStopped即說明已關閉。

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

也可以安裝更為精簡的xfce4xfce4-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:33893389為上述設置的端口號。

在這里插入圖片描述

輸入用戶名和密碼即可登錄到桌面:

在這里插入圖片描述

五、配置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"

其他相關參考

  1. WSL2中使用USB設備

  2. WSL2中使用VSCode

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95584.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95584.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95584.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

時間泄漏 TemporalLeakage

時間泄漏 TemporalLeakage: 就是后續有事件發生&#xff0c;然后才有了這個結果&#xff0c;但是在該事件發生之前&#xff0c;不應該預測該結果。 Temporal Leakage 問題是往往導致縱向Planning不“果斷”。 解決方案&#xff1a;人工標注出時間發生的時刻 真值只監督時間發生…

獨立書店數字化轉型:絕版書修復檔案系統與讀者閱讀行為分析營銷平臺

在電商沖擊與閱讀習慣變遷的雙重壓力下&#xff0c;獨立書店正遭遇 “舊書修復難、新書賣不動” 的生存困境。傳統模式中&#xff0c;絕版書修復依賴老師傅經驗&#xff0c;單本修復周期長達 2 周&#xff0c;損耗率超 30%&#xff1b;營銷缺乏數據支撐&#xff0c;導致客流年均…

const修飾指針用法詳解

目錄 一、const修飾變量 繞過const限制的問題 二、const修飾指針變量 1、無const修飾的指針 2、const放在*左邊 3、const放在*右邊 4、*兩邊都有const 三、使用建議 四、記憶技巧 一、const修飾變量 在C語言中&#xff0c;變量默認是可修改的。如果我們希望某個變量不能…

pcl法線估計的踩坑

1&#xff0c;normalestimation對點云法線的評估&#xff0c;只輸出法線向量&#xff0c;并不輸出xyz值。如果輸出類型是pointnormal&#xff0c;那么這點云的法向量有值&#xff0c;xyz值都是02&#xff0c;添加點云xyz數據。可以使用 pcl::concatenatefields(*a,*b,*c)函數p…

利用Minicsv庫解析csv文件的c程序及讀入測試

上午的c程序寫入xlsx較快但不正確&#xff0c;python程序雖正確但過慢。所以找了一個全部源程序加起來不到4K字節的C語言csv解析庫Minicsv&#xff0c;來改寫&#xff0c;改寫結果如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h…

企微用戶部門同步HRS系統

企微用戶導入HR系統流程說明 概述 本文檔詳細說明了WechatUserImportServiceImpl.importWechatUsersToHrs()方法的業務流程和實現邏輯。該方法負責將企業微信用戶數據同步導入到HR管理系統中&#xff0c;包括員工信息、工作信息和任職記錄的創建與更新。 主要功能 數據同步…

告別傳統SEO!擁抱下一代流量密碼:生成式引擎優化(GEO)實戰指南

前言&#xff1a;為什么你的“最佳實踐”SEO正在失效&#xff1f;你是否發現&#xff0c;即使嚴格遵循了谷歌自2019年以來的所有“最佳實踐”&#xff0c;你的技術博客或產品文檔的流量依舊增長乏力&#xff0c;甚至不升反降&#xff1f;你不是一個人。問題在于&#xff0c;游戲…

week1-[一維數組]傳送

week1-[一維數組]傳送 題目描述 有 nnn 個傳送門&#xff0c;從第 iii 個傳送門進去后會被傳送到第 aia_iai? 個傳送門&#xff0c;進而被傳送到第 aaia_{a_i}aai?? 個傳送門&#xff0c;如此一直下去……小 A 想知道從第 kkk 個傳送門進去后&#xff0c;能不能回到第 kkk 個…

【18】目心智能——目心智能 嵌入式一面 ,校招,面試問答記錄

目心智能——目心智能 嵌入式一面 &#xff0c;校招&#xff0c;面試問答記錄 1 簡單自我介紹2 你做了這么多算法&#xff0c;為什么不找算法的&#xff1f;3 我們主要還是軟件開發&#xff0c;不做結構設計4 模電知識6 CSDN應該附鏈接在簡歷上&#xff0c;稍后發給我&#xff…

C++第二十課:快遞運費計算器 / 黑白配+石頭剪刀布小游戲

快遞運費計算器幫一家快遞站點開發一個快遞運費計算器&#xff0c;快遞站點人員只需要輸入包裹重量和地點編號即可計算出對應的運費。假設快遞費計算規則如下&#xff1a;首重&#xff1a;3公斤 3公斤以內&#xff1a;1.東三省/寧夏/青海/海南&#xff1a;12元&#xff0c;2.新…

網絡安全藍隊常用工具全景與實戰指南

摘要 在現代信息系統的安全防護中&#xff0c;藍隊承擔著防御、檢測、響應和持續改進的核心職責。要實現高效、可持續的防御能力&#xff0c;藍隊需要一整套成熟、可靠的工具集來進行威脅情報收集、日志分析、入侵檢測、漏洞評估、端點防護、網絡流量監控、事件響應與取證等工作…

基于 Flink 的淘寶實時數據管道設計:商品詳情流式處理與異構存儲

引言在電子商務領域&#xff0c;實時數據處理能力已成為企業核心競爭力的重要組成部分。淘寶作為中國領先的電商平臺&#xff0c;每天產生海量的商品數據&#xff0c;這些數據需要被實時處理、分析并分發到各種存儲系統中&#xff0c;以支持搜索、推薦、庫存管理等關鍵業務。本…

面試題:【多線程問題,三個線程A,B,C;C線程依賴B線程的結果執行,怎么控制】

在 Java 中&#xff0c;若需要控制線程間的依賴關系&#xff08;如 C 線程依賴 B 線程的結果&#xff09;&#xff0c;可以通過以下幾種方式實現&#xff1a; 方案 1&#xff1a;使用 CountDownLatch CountDownLatch 是一個同步工具類&#xff0c;允許一個或多個線程等待其他線…

React useMemo 深度指南:原理、誤區、實戰與 2025 最佳實踐

把“為什么用、怎么用、用錯了怎么辦”一次講透&#xff0c;附 React 19 自動優化前瞻。一、useMemo 是什么&#xff1f; 一句話&#xff1a; useMemo 記住&#xff08;緩存&#xff09;昂貴計算結果&#xff0c;只在依賴變化時重新計算。 const memoValue useMemo(() > {…

[ HTML 前端 ] 語法介紹和HBuilderX安裝

目錄 一. HTML 1.概述 2. 安裝前端開發工具 (1)HBuilderX下載 (2)創建html項目和使用 3. HTML基礎 1.標簽 (1).標簽定義: (2).標簽結構: (3).標簽屬性: 2.常用標簽: 3.特殊符號: 4.表格(table) (1)基本標簽: (2)基本結構: (3)表格屬性: 5.表單(form) (1). 表單概述…

Spring Cloud系列—Alibaba Sentinel熔斷降級

上篇文章&#xff1a; Spring Cloud系列— Alibaba Sentinel限流https://blog.csdn.net/sniper_fandc/article/details/149944260?fromshareblogdetail&sharetypeblogdetail&sharerId149944260&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link…

Spring Boot 使用 @NotBlank + @Validated 優雅校驗參數

在日常開發中&#xff0c;我們常用 if (isBlank(...)) 來判斷參數是否為空&#xff0c;但這種方式不僅繁瑣&#xff0c;而且容易遺漏。 Spring 生態中推薦使用 JSR-303 校驗注解&#xff08;NotBlank、NotNull 等&#xff09;配合 Validated 實現自動校驗&#xff0c;大幅減少手…

網絡安全(Java語言)簡單腳本匯總 (一)

文章目錄敏感信息探測腳本源代碼思路URL批量存活探測器源代碼思路端口掃描器源代碼思路 敏感信息探測腳本 源代碼/*** description 該腳本通過分析HTTP響應頭&#xff0c;來檢測可能暴露服務器信息的安全隱患*/import java.io.IOException; import java.net.HttpURLConnection;…

buuctf_NSBlogin_http_upload(極客2019+ACTF2020新生賽)

今天做三1個web 題目&#xff1a;NSB_login用戶名有admin&#xff0c;看源碼&#xff1a;I like rockyou&#xff01;今天學習到&#xff0c;kali里面有密碼爆破的文件叫rockyou.txt&#xff08;/usr/share/wordlists/&#xff09;&#xff08;沒kali也可以去https://gitcode.c…

IDEA如何引用brew安裝的openjdk

因為 brew 安裝的 openjdk@21 目錄結構和 IDEA 期望的 JDK 目錄不一樣。所以默認brew安裝的jdk,在IDEA中是無法識別到的。 一、創建軟連接 sudo mkdir -p /Library/Java/JavaVirtualMachines sudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/Java…