WSL

      在〈WSL〉中尚無留言

WSL

WSL 全名為 Windows subsystem Linux,是微軟 Hyper-V 虛擬機器裏的一個輕量級子系統。

WSL 僅支援 Windows 10/Windows 11 的 Professional(專業版) EnterPrise(企業版)若是Home(家用版),則無法使用。

WSL 使用指令簡化 Hyper-V 的設定,但因為無法設定橋接器,所以只能說是個玩具。若真的要安裝Linux 伺服器,不太建議使用些法,所以此篇僅作記錄用。

啟動 hyper-v & vbs

如果 Win11 把 hyper-v 及 vbs 關閉,啟動 hyper-v 的最快的方式就是安裝 docker。

Mirrored Networking

wsl 的網址預設為 NAT,會自行產生子網域。wsl 沒有橋接器(bridge),所以無法設定跟宿主機同網域。但 wsl 有 Mirrored Networking,可將 Windows 的 IP 鏡射到 Linux,讓 Windows 及 Linux 共同使用同一個 ip。

請在 C:\user\登入者\ 下新增 .wslconfig 檔案,然後輸入如下設定。

[wsl2]
networkingMode=mirrored

重啟 wsl 即可生效。

wsl 裏的 ip 會跟 Win11 一模一樣,而且此 ip 無法更改。

安裝 WSL

第一次安裝時,以系統管理員身份啟動 DOS 視窗命令提示 ,執行如下指令安裝 wsl 系統

🔒 底下內容僅限會員閱讀。

立即登入

第一次安裝時一定要用系統管理員身份,因為需開啟 Windows 的「虛擬機器平台」及「適用於 Linux 的 Windows 子系統」。第二次安裝時,就不需系統管理員。

上面的指令會自動安裝 Ubuntu 最新的版本。安裝 Ubuntu 時需一段時間,請耐心請待。

安裝ubuntu 時,若出現 WslRegisterDistribution failed with error: 0x80370102 錯誤,請參考本篇最下面的核心隔離,然後重新開機,再執行如下指令

wsl --install -d ubuntu

安裝後的虛擬磁碟檔案置於如下

C:\Users\mahal\AppData\Local\wsl\{xxx-xxx-xxx-xxx}

sudo 免密碼

sudo 是切換到最高權限的方法,但每次 sudo 都要輸入密碼,所以更改如下設定就可省略密碼的輸入

sudo visudo

最後面加入如下設定

帳號  ALL=(ALL) NOPASSWD:ALL

Ctrl + o 儲存,Ctrl + x 離開

安裝常用套件

使用如下指令安裝常用套件

sudo apt install net-tools vim openssh-server

啟動 ssh

ssh 可以在 Windows 宿主機使用 putty 對其控制,首先需設定 /etc/ssh/sshd_config 檔案,將

ListenAddress 0.0.0.0 前面的 #註解拿掉

然後執行如下指令

sudo systemctl enable ssh
sudo systemctl restart ssh

在 Windows 下,防火牆必需將 port 22 開通,若還不能連線,需刪除Windows 下的 C:\Users\mahal\.ssh\known_hosts。

請注意,ssh xxx@localhost、ssh xxx@xxx.ddns.net都可以連線,但 ssh xxx@192.168.1.2 是無法使用虛ip 連線的,因為整体連線還在在 Windows 裏。

啟動 wsl

使用如下指令啟動 Ubuntu

wsl -d ubuntu
或
wsl --distribution Ubuntu

-d 就是 –distribution,指令要啟動那一個 Linux 發行版本

查詢安裝那些版本

使用如下指令查詢電腦安裝了那些版本

wsl -l
結果 : 
PS C:\Users\mahal> wsl -l
Windows 子系統 Linux 版發佈:
Ubuntu (預設)

退出 wsl

wsl –shutdown 會關閉所有的 wsl 發行版本。

wsl --shutdown

若在 Linux 下執行 sudo poweroff,則只會關閉目前的發行版本。

刪除已安裝的 Linux 版本

使用 — unregister xxx 刪除已安裝的 Linux 版本

wsl --unregister Ubuntu

上述指令會把 C:\Users\mahal\AppData\Local\wsl\{xxx-xxx}的虛擬磁碟檔案一併刪除,所以完全無法復原

搬移安裝位置

通常我們不會把 utuntu 安裝在 C 碟,所以要作搬移的動作,請依續執行如下指令

🔒 底下內容僅限會員閱讀。

立即登入

搬移後打開 wsl 進入 ubuntu,卻發現登入的帳號是 root。

請在 開始 按右鍵,執行 regedit,依序進入如下位置

 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{xxxxxx}

然後將 DefaultUid 改成十進位的 1000,最後重新執行 wsl 即會用一般使用者登入。

GPU-PV

WSL2 支援 GPU-PV (顯卡虛擬化),所以 WSL2 一裝好,除了 ubuntu 一併裝進去,dxgkrnl 驅動程式也會自動裝好,馬上可以使用 “nvidia-smi” 這個指令測試。

nvidia-smi

Fri Apr 19 14:48:15 2024
+-------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.76.01          Driver Version: 552.22         CUDA Version: 12.4     |
|-------------------------------------+------------------------+----------------------+
| GPU  Name             Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf      Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                     |                        |               MIG M. |
|=====================================+========================+======================|
|   0  NVIDIA GeForce RTX 3080 Ti  On |   00000000:01:00.0  On |                  N/A |
| 53%   43C    P8         60W /  400W |    1758MiB /  12288MiB |     13%      Default |
|                                     |                        |                  N/A |
+-------------------------------------+------------------------+----------------------+

+-------------------------------------------------------------------------------------+
| Processes:                                                                          |
|  GPU   GI   CI        PID   Type   Process name                          GPU Memory |
|        ID   ID                                                           Usage      |
|=====================================================================================|
|  No running processes found                                                         |
+-------------------------------------------------------------------------------------+

有看到上面的訊息,表示GPU-PV 驅動程式已經安裝完成。

與 VMware相衝

wsl 一打開,市面上常用的 vmware, viturebox 馬上失效,這是因為 “Windows 子系統 Linux 版” 及 “虛擬機器平台” 被打開了,造成 VMware 的 Vituralize Intel VT-x/EPT 無法啟用。請由 “開始/Windows 系統/控制台/程式集/開啟或關閉 Windows 功能” 進入查看。

Vituralize Intel VT-x/EPT 加速虛擬機的技術,若要重新啟用 VMware的 Vituralize Intel VT-x/EPT,請將如下紅線框起來的功能全部都取消。

當然上面的功能關掉,WSL 就無法用。所以如果想要 VMware 與 WSL 共存並用,可以考慮將 VMware的 Virtualize Intel VT-X/EPT 取消,這樣VMware 就又可以執行了,只是速度可能會比較慢。

啟動 Ubuntu

開啟 Dos 視窗,輸入如下指令即可

wsl -d ubuntu

手動安裝 Ubuntu

如果要重新安裝或手動安裝其它 ubuntu,進入 Dos 視窗輸入

wsl --install -d ubuntu

移除 WSL

要移除 WSL 請先確認如下步驟

wsl --unregister ubuntu
wsl --shutdown
wsl --uninstall
控制台關掉 windows 子系統 Linux
重新開機

預設安裝路徑

WSL 預設安裝在 C 碟如下目錄

C:\Users\mahal\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState

ubuntu 初始設定

一開始要初始的設定如下

🔒 底下內容僅限會員閱讀。

立即登入

核心隔離

WSL2 有時會出現 WslRegisterDistribution failed with error: 0x80370102 錯誤,網路常教大家切換到 WSL1 即可,但這樣就無法支援 GPU-PV,唯一的方法就是重新安裝 Windows,這應該是微軟的嚴重bug。

若緊急狀況不能重新安裝 Windows ,可以將核心隔離暫時開啟,就可以跑 wsl2 了,但核心隔離一但開啟,整台電腦的效能就會降低很多,由其是 “雷電” 或 “BlueStacks” 等 Android 模擬器更為嚴重,而且 VMware 及 VirtualBox 就無法執行了。所以想要執行其它虛擬器,核心隔離就要再度手動關閉,然後重心開機。

開啟核心隔離的方法,請由 Windows 安全性/裝置安全性/核心隔離/記憶体完整性將之打開,如下圖所示

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *