# 如何在Win11上安裝wsl/wsl2並建置vscode環境以運行C/C++/Python
(注意:此篇文章並沒有完全寫完,僅wsl2安裝寫得較完善。若有缺失請先參考參考文章第四點的文章)
==(再注意:這幾個月換成MacOS了,所以新增的一些步驟可能沒有圖/都是憑記憶口述。如果有出錯就麻煩去找其他文章吧QQ)==
wsl = Windows Subsystem for Linux
也就是在Windows下跑Linux(在一個作業系統裡裝另一個作業系統)
一般安裝wsl都是為了跑python或C/C++。
以下主要為wsl的安裝步驟,後面會補上python的其他步驟。
(目錄請善用HackMD目錄功能~)
---
## wsl/wsl2
[wsl與wsl2的差別](https://learn.microsoft.com/zh-tw/windows/wsl/compare-versions)。
如果沒有需要用到wsl2的話,應該可以直接跳到第4步。
### 安裝wsl2的裝置需求

[詳細需求在此](https://learn.microsoft.com/zh-tw/windows/wsl/install-manual#step-2---check-requirements-for-running-wsl-2),檢查好後就可以開始進行安裝前的設定作業了~
### 1-1 檢查virtualization是否有啟用
**工作管理員**->**效能**,從CPU看是否有啟用模擬。

有的話就沒事繼續下一步。沒有的話就得更動BIOS設定,開啟方式是**設定**->**系統**->**復原**->**進階啟動**。

點下去後電腦會重啟,然後進到一片很多選項的頁面。
~~但因為我自己沒有需要啟動這個的情況所以中文長怎樣我也不知道,就請需要開啟的人再看[這篇文章(全英文)](https://s1gr1d.medium.com/how-to-set-up-linux-on-windows-with-wsl-2-debe2a64d20d)的「2. Check if virtualization is enabled」揣摩ㄌ~~
### 1-2 啟用Windows子系統Linux版
進設定跟指令法,兩種2擇1。
#### 進設定
在設定搜尋找到**開啟或關閉Windows功能**。

或是~~帥一點~~快捷鍵++win\+R++打開**執行**輸入`optionalfeatures`。

把那個**Windows子系統Linux版**打勾。

按確定後重啟,但可能也不用因為下一個步驟也在這個頁面。
#### 指令法
打開PowerShell __(以系統管理員身份執行)__ 並打上以下指令送出。
```
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```
一樣成功後重啟,但可能也不用因為下一個步驟也在這個頁面。
:::warning
**注意**
上面兩種方法擇一完成重啟後,**設定**->**Windows Update** 刷新一下應該會有幾個22H2的更新,要全部更新(這個更完好像不用重新開機)。

大概是這些更新,這張圖是更新完後可以在更新記錄看到。
:::
### 1-3 啟用虛擬機器平台
一樣進設定跟指令法,兩種2擇1。
#### 進設定
和1-2一樣找到**開啟或關閉Windows功能**後把那個**虛擬機器平台**打勾。

#### 指令法
打開PowerShell __(以系統管理員身份執行)__ 並打上以下指令送出。
```
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```
上面兩種方法擇一後我忘記須不須要重啟但保險一下還是重啟吧,然後==如果1-2做完還沒重啟的話記得重啟完去Windows Update更新!!==
:::danger
1-1沒做的話1-3好像會開不起來,所以一定要先做1-1!
至於1-2要哪時做好像都沒關係,只要有記得重啟+Windows Update就行了。
:::
### 2 更新Linux核心(kernel)
有牽涉到下載檔案的部分我一律給[連結](https://learn.microsoft.com/zh-tw/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package)。
看你的電腦是x64還是ARM64,選對應的更新套件下載後點兩下執行安裝,這個裝很快。
### 3 設定預設version
在PowerShell打上(這邊開始不需要管理員身份了):
```
wsl --set-default-version 2
```
就預設都會是wsl2了。
(下面有如何從wsl2切成wsl的方法)
### 4 安裝Linux
總算正式走到這步la~
找安裝有兩種方法,商店下載跟打指令。
#### 商店下載
打開**Microsoft Store**搜尋「linux」,然後挑一個你要的下載。
(如果不知道要選哪個就挑20.04那個~~因為我也用那個~~)

如果不明原因載不了或是想要的版本在Store找不到的話,微軟在[這裡](https://learn.microsoft.com/zh-tw/windows/wsl/install-manual#step-6---install-your-linux-distribution-of-choice)有給每種Linux的Store下載連結,再往下拉一下也有提供可以手動安裝的Linux發行版本。
#### 打指令
在PowerShell打上下面指令,查詢有什麼linux版本可以安裝。
```
wsl --list --online
```

然後和圖片上面寫的一樣,用下面的指令安裝你要的版本。
```
wsl --install -d <Distro>
```
\<Distro\>是指左欄的NAME喔。
中間可能會要同意什麼的,就都y就對了。有遇到錯誤訊息就全部複製貼google查~~因為我也不知道不明瞭不想要為什麼 我的心~(~~
\-
用上面任一解法成功後應該就會先自己執行了,如果沒有執行就直接去**開始**找剛下載好熱騰騰的Linux點一下執行。
如果安裝成功設定也正常,就會要你輸入新的使用者名稱跟密碼(不用和你的Windows一樣),恭喜完成安裝WSL~~~
若中間有失敗的話,它噴的訊息不一定能看懂,但後面通常會給一串網址,那個網址比較有用,再慢慢試著透過網址解決問題吧~
---
### 其他wsl指令
查詢有安裝的子系統資訊:
```
wsl -l -v
```

\-
如果想要更改某個子系統的wsl版本(更改好像會花一點時間):
```
wsl --set-version <distribution name> <versionNumber>
```
\<distrivution name\>: 就是上圖的NAME。
\<versionNumber>: 1或2。
### OhMyZsh - 如果你想讓操作介面更美觀
如果覺得wsl的terminal超級醜,一坨白白的很難辨認的話,可以安裝OhMyZsh!
#### 1 進入wsl
在PowerShell打下面指令應該可以開啟wsl。(接下來的操作都會在wsl的環境裡)
```
wsl
```
#### 2 [安裝OhMyZsh](https://ohmyz.sh/#install)
在wsl裡打入下面的指令:
```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```
#### 3 啟動
下載完畢後,可以重新啟動比較保險。
在wsl裡打入下面的指令:
```
zsh
```
就會進入到zsh了。
#### 4 設為預設
有點忘記安裝完後會不會一開wsl就進zsh殼層裡。如果沒有且想要作為預設的話,根據[這個網站](https://blog.evalcode.com/zsh-default-wsl-windows-10/),打下以下指令就可以了:
```
chsh -s $(which zsh)
```
~~(應該是這樣,出問題就請估狗ㄅ)~~
#### 5 設定./zshrc
```
vim ~/.zshrc
```
vim是linux裡的文件預覽編輯程式,這一行的意思是:用vim打開.zshrc這個設定檔。
##### vim操作
打完之後應該會看到一份文件,裡面可能全空也可能有很多字(裝完OhMyZsh的話應該要是很多字)。
1. 此時在**瀏覽模式**裡,這時隨便亂按應該是無法寫入文件的。
2. 按下```I```,左下角會有訊息寫```INSERT```,代表現在進入**寫入模式**。
3. 開始自訂theme和想要的plugin,我自己的配置在[這一篇筆記](https://hackmd.io/@hsueh945/HkrLxHfKT)供參。
4. 寫完後按下```esc```離開寫入模式,回到瀏覽模式。
5. 在瀏覽模式下打出```:wq```並enter。(wq=write quit)
6. 完成編輯!
#### 6 重啟zsh
再打一次```zsh```重啟(或是先```bash```再```zsh```也可以)。
\*如果有說什麼找不到plugin,上面vim操作步驟3的筆記裡有方法,或是上網找怎麼補全都可以。網路上也有更多人推薦的plugin可以參考。
---
## 設定vscode(安裝完wsl/wsl2後)
### 1 下載vscode然後安裝
[這裡下載!](https://code.visualstudio.com/Download)
### 2 到Extension下載WSL
這個擴充使得vscode可以連到WSL。
(照理說安裝了什麼東西都最好重新開機一下,這裡可以做一下)

### 3 左下角那個箭頭圖案
那個藍藍的東西,點下去。

應該會有個選項是「連接到wsl」,點下去。
\*如果要在wsl開啟某個資料夾,則先開啟資料夾後再點這個藍藍按鍵,應該會有個選項是「在wsl中重新開啟這個資料夾」。
### 4 開啟Terminal
選單列->Terminal->New Terminal
開啟wsl終端,大功告成!!
---
---
## Python
### pip
通常Linux裝完後內建就會有python,但不一定會有pip。
安裝pip指令
```
sudo apt install python3-pip
```
安裝完後,試著查詢
```
pip list
```
如果安裝有出錯沒有成功,試著跑
```
sudo apt-get update
```
之後==重啟Linux==再重新安裝pip。~~再失敗就無限循環~~
---
參考文章
1. [舊版 WSL 的手動安裝步驟 - Microsoft](https://learn.microsoft.com/zh-tw/windows/wsl/install-manual)
2. [How to set up Linux on Windows with WSL 2 - Medium](https://s1gr1d.medium.com/how-to-set-up-linux-on-windows-with-wsl-2-debe2a64d20d)
3. [WSL 與 Windows 的完美雙結合 — 修改VSCode的預設Terminal為WSL - Medium](https://medium.com/%E4%B8%80%E5%80%8B%E5%B0%8F%E5%B0%8F%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%9A%84%E9%9A%A8%E6%89%8B%E7%AD%86%E8%A8%98/wsl-%E8%88%87-windows-%E7%9A%84%E5%AE%8C%E7%BE%8E%E9%9B%99%E7%B5%90%E5%90%88-%E4%BF%AE%E6%94%B9vscode%E7%9A%84%E9%A0%90%E8%A8%ADterminal%E7%82%BAwsl-2ab3604a7ef5)
4. [Python:Visual Studio Code 在 WSL 中進行開發 - HackMD](https://hackmd.io/@withhhsong/python_wsl)
5. [WSL:在 Win10 安裝 Linux 子系統](https://withhhsong.com/wsl_linux/)
6. [Windows 10 安裝 WSL1、WSL2(手動安裝) - HackMD](https://hackmd.io/@Kailyn/BkMi80IeF)
7. [Windows 11 安裝 WSL2](https://hackmd.io/@Kailyn/H1N5OPKlF)
8. [在Windows11上安裝Windows 子系統 Linux 版 WSL2 - 不及格研究室](https://blog.twshop.asia/%E5%9C%A8windows11%E4%B8%8A%E5%AE%89%E8%A3%9Dwindows-%E5%AD%90%E7%B3%BB%E7%B5%B1-linux-%E7%89%88-wsl2/)