WSL:在 Windows 10 中安裝和使用 Ubuntu 子系統

實在不習慣在 Windows 開發的一些設定,而之前安裝的雙系統又被我洗掉了,因此打算來安裝 VM。不過就在此時我同事說或許可以安裝 WSL?

適用於 Linux 的 Windows 子系統 適用於 Linux 的 Windows 子系統(圖片來源: Microsoft Docs

WSL

WSL 是 Windows Subsystem for Linux 的縮寫,是由 Microsoft 與 Canonical 公司開發的相容 Linux 底層核心的接口,不細究其原理的話,使用上的感覺像是就好像是在 Docker 而且還是把整台電腦所有儲存空間都掛載進去的那種 XDDD

相較傳統 VM 跟 Docker,它不需要額外安裝虛擬機與容器,資源也沒那麼吃緊。這對 Linux 的初學者以及像我這種輕量使用的情境,它算是個超棒的工具。

另外一個對我來說的優點,就是它的終端機是用 Unix 指令,我再也不用擔心記不住 DOS 指令了XDDD

在 Windows 安裝 Ubuntu

有 Window 的介面輔助下,安裝起來其實相當方便快速:

  1. 用系統管理員身分執行 Windows PowerShell
    在 Win10 中已經有內建 Windows PowerShell,你可以從開始選單旁的搜尋欄輸入 Windows PowerShell 找到它,再以系統管理員身分執行它。

    Windows PowerShell 在開始選單

    是說 PowerShell 的預設顏色真的有夠醜,字也很小。所以我開啟後的第一件事就是幫它換個顏色,順便把字體調大。

    Windows PowerShell

    應該會注意到,打開 PowerShell 時會上面有一行字:

    Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。
    請嘗試新的跨平台 PowerShell https://aka.ms/pscore6

    看起內建的 PowerShell 不是最新版的,雖說不升級不會怎像,但若真的很想弄到這行字的話,可以從 GitHub 下載安裝套件,詳細說明可參考文件


  2. 安裝 WSL
    在終端機中輸入下列指令:
    1
     $ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    


    進度條跑完後請按照指令提示重新啟動電腦:

    1
    2
     是否要立即重新啟動電腦以完成此操作?  
     > [Y] Yes  [N] No  [?] Help (default is "Y"):    
    


    重啟後,再次啟動 PowerShell,測試是否安裝成功:

    1
    2
    3
    4
    5
     $ wsl  
     Windows 子系統 Linux 版沒有任何已安裝的發行版本。  
     您可以透過瀏覽 Microsoft Store 來安裝各種發行版本:  
     https://aka.ms/wslstore       
     如果看到提示訊息代表安裝成功,可以開始來安裝所需要德 Linux 發行。
    


    🤟 補充 WSL2 安裝方式 → 安裝 WSL2


  3. 安裝 Linux 發行
    在這邊遇到了點小問題,如果我按照剛剛的提示訊息連接到 https://aka.ms/wslstore,會被向 Microsoft Store,但卻會得到下列訊息:
    1
     Wait a while, then try again. Something happened on our end.
    


    所以我改在 Microsoft Store 中直接輸入 Ubuntu,不過如果直接輸入搜尋的話,需要注意 WSL 相容問題;或者考以直接使用網友提供的連結,找到與 WSL 相容的 Ubuntu 版本,我這邊選擇了了目前正在使用的 Ubuntu20.04:

    Ubuntu 20.02

執行 Ubuntu

在安裝好發行版本之後,就可以準備第一次的啟動,可以在 Microsoft Store 中找到剛剛安裝的 Ubuntu20.04,點擊畫面右上角的「啟動」按鈕。

Ubuntu 20.02 啟動

或者你也可以在開始選單中,點擊剛剛安裝的 Ubuntu20.04:

Ubuntu 20.02 啟動2

第一次啟動大概會花上幾分鐘的時間進行初始化設定,系統會要求提供 username 與 passward:

Ubuntu


安裝完成後,可以打開 Windows PowerShell,輸入:

1
2
3
 $ wsl --list 
 Windows 子系統 Linux 版發布:
 Ubuntu-20.04 (預設值)         

你可以看到已經完成安裝的子系統。


下次再次執行時,除了從開始選單點擊 Ubuntu20.04 的 icon 外,你也可以在 PowerShell 中輸入:

1
$ wsl 

重設與解除安裝 Ubuntu

如果你再需要使用子系統了,只需要前往「應用程式與功能」把 Ubuntu 解除安裝即可,就像是一般的軟體的解除安裝:

Ubuntu 解除安裝


如果你還想要使用子系統,但嫌環境太髒想要重裝,也可以幫它「回復成出廠預設值」。一樣前往「應用程式與功能」,選擇 Ubuntu,會注意到有一個進階選項。

Ubuntu 進階選項

點選進階選項,找到裡面的重設,如此它就會將整個安裝給清掉了:

Ubuntu 重設

用 PowerShell 檢查下,可以發現子系統被清掉了,

1
2
3
4
$ wsl  -l  --all
Windows 子系統 Linux 版沒有任何已安裝的發行版本。
您可以透過瀏覽 Microsoft Store 來安裝各種發行版本:
https://aka.ms/wslstore        

接下來只要重複前一章的執行步驟重來一次就好了。


另外還有一個方法可以重設,雖然文件中說這叫「取消登錄發布」,但我目前看不出兩者的差異,所以還是稱之為重設吧 XDDD 這個方法就不用去設定了,在 PowerShell 就可以了:

1
$ wsl --unregister Ubuntu20.04   

儲存路徑

在使用時我有兩個問題:

  1. 如何在存取 Windows 中的檔案?
  2. Home 目錄下的資料又會存在 Windows 中的哪個位置?


找了下,Windows 的檔案會被掛載在 /mnt/ 下,例如 D 槽就會被掛載在 /mnt/d。Home 目錄中的資料則存在 C 槽的 user 資料中,完整路徑如下:

C:\Users\%UserName%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs

不過 CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc 這個會依照 Linux 系統版本而有所不同,所以可能要注意找一下。


在打這段的時候忽然想到,我能不能將 Home 目錄資料放到 D 槽?說道立刻就去查,不過看起來好像不行,因為文件上提到:「適用於 Linux 的 Windows 子系統只會在系統磁碟機(通常是 C)上執行」,因此看來是不能換了。

錯誤

為了寫網誌的時候,為了截圖看錯誤訊息,所以我反覆重設又啟動,結果在某次重起的時候就遇到了這個錯誤:

WslRegisterDistribution failed with error: 0x800700b7 The distribution installation has become corrupted. Please select Reset from App Settings or uninstall and reinstall the app. Error: 0x800700b7 ????????????????

不過這問題還滿好處理的了,訊息都寫了,卸掉重裝就好了。

後續

執行到現在,其實就已經差不多了,就像是一個 Ubuntu 的 Docker。不過如果在找資料的時候有發現 WSL + Linux GUI 的資料,所以我下次應該會來看看能不能安裝成功,就靜待我的好消息吧 XDDD

參考資料

  1. Chen Do (2020-06-23)。【工具】win10 安裝 ubuntu 子系統(WSL) 並安裝圖形化界面。檢自 台部落 (2021-11-05)。
  2. 辛比 (2019-07-28)。[推薦] WSL (Windows Subsystem for Linux) 安裝與使用教學。檢自 辛比誌 (2021-11-05)。
  3. Will 保哥 (2019-02-01)。介紹好用工具:WSL (Windows Subsystem for Linux)。檢自 The Will Will Web (2021-11-05)。
  4. Craig Loewen/olprod (2021-09-28)。適用於 Linux 的 Windows 子系統文件。檢自 Microsoft Docs (2021-11-05)。
  5. 顧武雄 (2020-05-18)。Win10內執行Linux程式 實戰WSL子系統安裝。檢自 網管人 (2021-11-05)。
  6. 玩轉Win10的MS酋長(2019-03-20)。Win10重置/註銷Linux子系統教程。檢自 每日頭條 (2021-11-05)。
  7. 辛比(2019-07-28)。[推薦] WSL (Windows Subsystem for Linux) 安裝與使用教學。檢自 辛比誌 (2021-11-05)。
  8. Craig Loewen、olprod、Ticiana Ciminari、Bruce Chen(2021-10-06)。針對適用於 Linux 的 Windows 子系統進行疑難排解。檢自 Microsoft Docs (2021-11-12)。

更新紀錄

最後更新日期:2022-07-20
  • 2022-07-20 更新:附上 WSL2 安裝連結
  • 2022-05-06 發布
  • 2021-11-09 完稿
  • 2021-11-05 起稿