---
# System prepended metadata

title: 在 Win 10 下使用 WSL(Windows Subsystem for Linux)
tags: [Infra]

---

# 在 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   
