# 簡介
## 比較 WSL 版本
有分 1 和 2,差異性可以參考官方介紹:
https://learn.microsoft.com/zh-tw/windows/wsl/compare-versions
現在主流好像都是用 2。
# 安裝
官方參考資料:
* https://learn.microsoft.com/zh-tw/windows/wsl/install
* https://learn.microsoft.com/zh-tw/windows/wsl/install-manual
民間參考資料:
* https://hackmd.io/@Kailyn/BkMi80IeF
* https://magiclen.org/wsl/
* https://www.kwchang0831.dev/dev-env/wsl/ubuntu
## 1. 更新 Windows 版本
若要使用 WSL 2 的 windows 版本需求:
* 針對 x64 系統: 版本 1903 或更新版本,使用 組建 18362 或更新版本。
* 針對 ARM64 系統: 版本 2004 或更新版本,使用 組建 19041 或更新版本。
選取【Windows 標誌鍵】+ R、輸入`winver`,可以看到系統版本:

## 2. 更新 Windows 的 Nvidia 驅動程式
將 Windows 的 GPU 驅動程式更新至最新版即可,==後續不需要在 WSL 裡面安裝驅動程式==:

官方資訊:https://docs.nvidia.com/cuda/wsl-user-guide/index.html#cuda-support-for-wsl-2
下載網址:https://www.nvidia.com/Download/index.aspx
## 3. 確認 Windows 設定
在 Windows 搜尋框輸入`Windows 功能`,開啟設定視窗並啟動【Windows 子系統 Linux 版】與【虛擬機器平台】:

確認虛擬機功能已啟用:

個人是透過 BIOS 設定為啟用,萬一沒啟用的話等等重新開機可以順便設定。
設定完成後請==重新開機==
<!-- 上述設定也可以透過指令完成,可以參考官方教學。 -->
## 4. 下載並安裝 Linux 核心更新套件
網址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
如果 Windows 設定更新後沒有重新開機則無法安裝。
## 5. 設定 WSL
確認目前 WSL 狀態,打開 CMD 輸入指令:`wsl --status`
回傳範例:

==即使顯示預設版本為 2,建議使用指令再次指定為 2==:`wsl --set-default-version 2`
建議核心版本至少大於 4.19
<!-- 查詢已安裝的子系統版本:`wsl cat /proc/version`
因為尚未安裝任何 ubuntu 版本,顯示結果如下:
 -->
## 6. 安裝 Linux
開啟【Microsoft Store】,搜尋想要使用的 linux 版本,以 ubuntu 20.04 為例:

點選取得後就會開始下載+安裝,完成後若沒有自動打開 ubuntu 則可以從開始列尋找:

點擊後會跳出視窗,稍等一下:

最後設定使用者帳號與密碼即可完成:

假設因為公司管理規定無法透過微軟商店直接下載安裝:
```
wsl --update --web-download
wsl --install -d Ubuntu-20.04 --web-download
wsl --set-version Ubuntu-20.04 2
```
## 7. 確認安裝結果
進入 WSL 透過指令確認子系統版本:`cat /proc/version`
返回內容:
```
Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Apr 2 22:23:49 UTC 2021
```
建議 Linux version 至少 5 以上,搭配最新 nvidia 驅動可以在 WSL 裡面偵測到 GPU 資訊:
```
nvidia-smi
```
回傳結果:

<!--  -->
若 Linux version 為 4.X 可以參考附錄更新版本。
回到 Windows 使用 CMD 輸入指定:`wsl --list --verbose`
回傳結果:

確認為 WSL2,大功告成!
## 其他
前往微軟商店下載 Windows Terminal:

方便操作 WSL:

參考:https://hackmd.io/@billsun/BJByCIUHf#14-%E9%81%B8%E7%94%A8%E5%AE%89%E8%A3%9D-Windows-%E7%B5%82%E7%AB%AF%E6%A9%9F
# 啟動、停止、備份、刪除、還原
## 啟動
```
wsl -d <linux名稱>
```
## 停止
```
wsl -t <linux名稱>
```
## 備份
```
wsl --export <linux名稱> <輸出路徑+檔名+.tar>
```
## 還原
```
wsl --import <linux名稱> <安裝位置> <tar檔位置>
```
## 刪除
```
wsl --unregister <linux名稱>
```
在 Windows 使用指令確認名稱:`wsl --list --verbose`
輸入刪除指令:`wsl --unregister Ubuntu-20.04`
執行完成後再次執行`wsl --list --verbose`,應該就沒有該名稱的內容惹,但是此時從微軟商店下載的 APP 還在,可以透過開始功能列點選右鍵進行解除安裝:

但如果點擊則會又安裝一個新的 ubuntu 然後設定帳號密碼。
https://blog.csdn.net/admans/article/details/125071913
# 附錄
## 啟動 Ubuntu 時遇到錯誤 Error 0x80370102
參考:https://hackmd.io/@withhhsong/WslRegisterDistributionError
個人是透過 BIOS 啟用虛擬功能後解決。
## 更新 Linux kernel 版本
若發現 Linux version 過舊可以參考考此方法:
1. 確認 windows 設定:

2. 確認 windows 更新然後安裝,視情況重新開機:

3. 確認 Microsoft Store 的 Linux 是否需要更新。
4. 參照先前流程重新建立 WSL 並確認版本。
若上述方法無效可以參考這篇:https://www.awsjunkie.com/update-wsl-windows/
<!-- 執行指令:
```
wsl --update
wsl --shutdown
wsl --status
wsl --install -d Ubuntu
```
再次進入WSL確認版本:`cat /proc/version` -->
