Windows 10 開啟子系統Ubuntu

2023-06-19 15:01:13

解除安裝原有的wsl 分發子系統

# 檢視已安裝的wsl子系統
wsl --list
# 依次刪除wsl 子系統
wsl --unregister <子系統名稱>

結果

安裝子系統Ubuntu 20.04

在Microsoft Store中搜尋Ubuntu,選擇對應版本安裝。安裝完成後,不要直接點開

安裝完成後,不要直接點選開啟

直接安裝預設安裝在C槽,後續要在Ubuntu系統裝很多東西,會影響效能,所以需要將系統的安裝位置修改一下。

修改子系統安裝位置

控制檯切換到子系統預設安裝目錄:C:\Program Files\WindowApp\

cd C:\\Program Files\\WindowApp\\

找到Ubuntu2004.exe 目錄

dir Canonical #按tab鍵切換目錄檢視

在想要安裝的位置建立資料夾,然後將ubuntu2004.exe所在的目錄複製到建立的目錄下。

mkdi G:\ubuntu\20.04 #請將目錄改為自己需要的目錄
cp .\CanonicalGroupLimited.Ubuntu20.04所在目錄\* G:\ubuntu\20.04 #Ubuntu20.04的目錄需要補全

在自定義安裝目錄下,找到exe檔案,雙擊開啟。Ubuntu子系統會開始進行初始化。

分配網路

每次啟動子系統時候,會自動分配給子系統一個IP地址,這樣會導致一些操作需要重新修改IP地址,如GitLab的地址。
建立一個bat檔案,將如下指令碼儲存到檔案中

@echo off
setlocal enabledelayedexpansion

::先停掉wsl範例
wsl --shutdown ubuntu
::重新拉起來,並且用root的身份,啟動docker服務
wsl -u root service docker start | findstr "Starting Docker" > nul # 不安裝Docker會報錯,可以先註釋掉
if !errorlevel! equ 0 (
    echo docker start success
    :: 看看我要的IP在不在
    wsl -u root ip addr | findstr "171.168.0.109" > nul
    if !errorlevel! equ 0 (
        echo wsl ip has set
    ) else (
        ::不在的話給安排上
        wsl -u root ip addr add 171.168.0.109/24 broadcast 171.168.0.0 dev eth0 label eth0:1
		echo set wsl ip success: 171.168.0.109
    )


    ::windows作為wsl的宿主,在wsl的固定IP的同一網段也給安排另外一個IP
    ipconfig | findstr "171.168.0.100" > nul
    if !errorlevel! equ 0 (
        echo windows ip has set
    ) else (
        netsh interface ip add address "vEthernet (WSL)" 171.168.0.100 255.255.255.0
        echo set windows ip success: 171.168.0.100
    )
)
pause

由於該指令碼需要Administration許可權執行,可以在桌面建立快捷方式,修改快捷方式的開啟方式用管理員許可權開啟。

參考連結:

  1. Win10自定義路徑位置安裝WSL2 (Ubuntu 20.04)
  2. https://zhuanlan.zhihu.com/p/357050093