# 在 Win 10 下使用 WSL(Windows Subsystem for Linux) --- ###### tags: `Infra` `工作相關` `環境建立` `2024/09/19` ## 前言 如果所有專案都塞在 C 槽下肯定會很炸的, 因此需要 備份 或是 建立版本 的話, 可以將 虛擬機(Ubuntu) 以 類似映像檔案掛載的玩法, 在分別導出或導入的前提下來使用機器 ## 建立環境 ### 使用 管理員身分 開啟 powershell ``` Win + R -> PowerShell cmd 下輸入: start-process PowerShell -verb runas 或是 搜尋 PowerShell 後右鍵以 "管理員身分執行" ``` --- ### 使用 管理員身分 開啟 powershell 後, 安裝 WSL ``` wsl --install ``` -- 他會一直安裝直到 Ubuntu 完成安裝 --- ### 安裝好後可以用指令來看 Ubuntu 安裝的狀況 ``` wsl -l wsl --list ``` 會看到訊息: > Windows 子系統 Linux 版發佈: > Ubuntu (預設值) 透過指令安裝的話, 會看到 WSL 發行版下只有Ubuntu (預設值)(2024/09/19), 這時候可以匯出 Ubuntu 到 D 槽 --- ### 匯出 Ubuntu 到 D 槽 可以把多個專案以 "備份" 或是建立 版本" 的方式留下來 ==格式以及參數== ``` wsl --export <DistroName> <ExportPath><ExportFileName.tar> ``` 1. DistroName: 發行的 Ubuntu 版本名稱, 如果用指令安裝可能會是沒有帶版本號碼的 2. ExportPath: 匯出路徑, 例如我選擇 D槽的 Project 3. ExportFileName.tar: 可自行命名檔案名稱, 但副檔名須為.tar 因此: ``` wsl --export Ubuntu D:\Project\wcc-ubuntu-20.04-(專案名稱)-wsl.tar ``` --- ### 匯入 Ubuntu 並同時掛載於 WSL 上 ==格式以及參數== ``` wsl --import <NewDistroName> <ImportPath> <ExportFilePath> ``` 1. NewDistroName: 為這個新的發行版本命名 2. ImportPath 匯入地點, 可以自定義, 例如 ``D:/`` 3. ExportFilePath, 匯入檔案的路徑 因此: ``` wsl --import ubuntu-20.04-(專案名稱) D:\Project D:\Project\wcc-ubuntu-20.04-(專案名稱)-wsl.tar ``` 成功後會在 `D:\Project\` 下找到 `ext4.vhdx` 的發行版本檔案 --- ### 檢查是否新增 Ubuntu 成功 ``` wsl -l ``` 會看到 ``` Windows 子系統 Linux 版發佈: ubuntu-20.04-(專案名稱) (預設) Ubuntu ``` 有多出來的發行版本, 因此可以取消他的註冊 --- ### 取消用不到的 Ubuntu 註冊 可輸入指令: ``` wsl --unregister Ubuntu ``` 接著會看到訊息 >取消註冊中。 >操作順利完成。 解除註冊後一樣輸入指令 `wsl -l`, 這時訊息應為: ``` Windows 子系統 Linux 版發佈: ubuntu-20.04-(專案名稱) (預設) ``` --- ### 可以看機器狀態的指令 `wsl -l -v ` ``` NAME STATE VERSION * ubuntu-20.04-(專案名稱) Stopped 2 ``` --- ### 註冊好後進入機器 ``` wsl -d ubuntu-20.04-(專案名稱) -u (使用者名稱) ``` --- 記得更新機器的相關依存 ``` sudo apt update && sudo apt upgrade ``` 更新後可以看到硬體映像檔案會暴增 size ![圖片](https://hackmd.io/_uploads/BJW6G9YaC.png) --- ### 離開機器指令 `exit` ---- --- ### 更改預設的發行版本 ``` wsl --setdefault <DistroName> ``` > DistroName: 發行的 Ubuntu 版本名稱 --- --- - 參考文章: https://hackmd.io/@Kuihao/wsl https://learn.microsoft.com/zh-tw/training/modules/developing-in-wsl/3-setting-up-windows-subsystem-linux https://blog.miniasp.com/post/2019/02/01/Useful-tool-WSL-Windows-Subsystem-for-Linux https://serverfault.com/questions/73084/what-characters-should-i-use-or-not-use-in-usernames-on-linux?newreg=cb5f142d706c4c32bc7e9435d65f9250