# WSL基礎知識
> [!Note]
> microsoft 推出 WSL, 可以快速的在 windows 上建立出 linux 核心的子系統.
> powershell 升級成 core 比較不會有字集上的問題.
> 環境: WSL2 + powershell core + Ubuntu 18.04 LTS
### 首先升級 powershell:(出處保哥部落格 搜尋 sandbox)
``` powershell
# 首先調整 ExecutionPolicy 等級到 RemoteSigned(讓下載的程式可被執行, 有一定風險. 請做好確認於下載的第三方套件)
Set-ExecutionPolicy RemoteSigned -Force
# 安裝 Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# 建議使用 PowerShell Core 當成主要的命令提示字元環境,問題會少很多,主要差異在:1).所有 In/Out 預設皆使用 UTF-8 編碼 2).預設選用 Unicode 字型
# choco 只會下載最新版的
choco install powershell-core -y
```
## 本機操作 WSL 子系統的空間
共有幾種方式:
- [# WSL用檔案總管開啟目錄](http://jdev.tw/blog/6117/wsl2-intreract-with-windows#top "Back to top")
- [# WSL存取Windows磁碟](http://jdev.tw/blog/6117/wsl2-intreract-with-windows#top "Back to top")
- [# WSL存取USB隨身碟等移動磁碟](http://jdev.tw/blog/6117/wsl2-intreract-with-windows#top "Back to top")
- [# WSL存取網路磁碟](http://jdev.tw/blog/6117/wsl2-intreract-with-windows#top "Back to top")
- [# Windows 開啟WSL目錄或檔案](http://jdev.tw/blog/6117/wsl2-intreract-with-windows#top "Back to top")
目前只有將 windows 檔案傳送到 linux 上的需求,經測試 utf-8 的檔案直接透過複製貼上,不會有亂碼的問題
### 安裝 WSL For Ubuntu 18.04 LTS
```powershell
# 開啟 windows Subsystem feature
$ DISM /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 開啟虛擬機器 feature
$ DISM /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 重新啟動
$ Restart-Computer
# 若第一次開啟 WSL 建議手動更新 Windows update
# 設定預設版本: Version 1 Or 2 # 這裡選擇 2
$ wsl --set-default-version [Version]
# 查看可用版本
$ wsl --list --online
# 安裝指定版本
$ wsl --install -d Ubuntu-18.04
# 移除指定版本
$ wsl.exe --unregister Ubuntu-18.04
# 查看已安裝 WSL 對應的 名稱, 狀態, 版本.
$ wsl -l -v
# 關閉特定的 WLS
$ wsl -t WLinux
# 使用 WSL 第一次安裝 ubuntu,可先更新和升級套件
$ sudo apt update && sudo apt upgrade
```
**如果發現版本是 WSL1**
``` bash
# 以系統管理員開啟PowerShell
$ Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
# 輸入指令將當前存在電腦裡的WSL轉換成WSL2
$ wsl --set-version [name] 2
```
**app: terminal 無法開啟指定應用**
- [安裝 windows terminal](https://github.com/microsoft/terminal)
- [錯誤原因](https://github.com/microsoft/terminal/issues/12474)
- 使用 terminal 操作 wsl 時,會提供方便的快捷鍵讓你快入啟動安裝的應用。但第一次使用時會發現無法開啟,原因是設定 profile 對應的啟動程序中 **command line** 操作符的問題,請如下調整
``` terminal_setting
// 預設
C:\Windows\system32\wsl.exe -d Ubuntu-20.04
// 調整為
C:\Windows\system32\wsl.exe ~ -d Ubuntu-20.04
// save
```
**將 WSL 子系統的空間變成是網路空間**
```bash
$ net use U: \\wsl$\[子系統名稱 ex: Ubuntu-18.04]
```
**到網路空間後,就可以透過檔案管理 UI 去操作,也可透過指令先確認**
```bash
$ U:
$ dir
$ cd .\home\kevin\download\
$ dir
```