WSL 使用說明
關於解除安裝
wsl --shutdown
wsl --unregister xxxxx
- 解除安裝
Ubuntu
開啟
Windows
功能關閉:- 適用於
Linux
的Windows
子系統 - 虛擬機器平臺
- 適用於
- 點選確定
關於匯入匯出
import
和export
只是針對磁碟,意思就是網上說的修改Ubuntu
目錄用的匯入匯出方法的就是修改了磁碟的位置罷了。
下面是遷移Ubuntu
時的操作:wsl --export Ubuntu E:\Wsl\Ubuntu\ubuntu.tar wsl --unregister Ubuntu wsl --import Ubuntu E:\Wsl\Ubuntu E:\Wsl\Ubuntu\Ubuntu.tar --version 2
關於使用者許可權
- 當第一次啟動
Ubuntu
時,會讓你建立使用者,下面設定的就是這個使用者。 可以很好的解決在Windwos
下建立檔案具有Root
許可權的問題,還有Vscode
中的Terminal
也可以開啟就是普通使用者,不需要在進行設定。 在
cmd
或者powershell
中執行如下命令ubuntu config --default-user xxx # wsl 關閉 wsl --terminate Ubuntu # wsl 啟動 -u 指定使用者 wsl -d Ubuntu -u xxx
關於代理
代理問題,一定要開發代理軟體的允許區域網。完了之後找到區域網的代理埠。
設定:source proxy.sh set 10811
取消設定: source proxy.sh unset
#!/bin/sh
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')
set_proxy(){
PROXY_HTTP="http://${hostip}:${port}"
PROXY_HTTPS="http://${hostip}:${port}"
export http_proxy="${PROXY_HTTP}"
export HTTP_PROXY="${PROXY_HTTP}"
export https_proxy="${PROXY_HTTPS}"
export HTTPS_PROXY="${PROXY_HTTPS}"
export all_proxy="${PROXY_HTTP}"
export ALL_PROXY="${PROXY_HTTP}"
echo "Host ip:" ${hostip}
echo "WSL ip:" ${wslip}
echo "Current http proxy: ${PROXY_HTTP}"
echo "Current https proxy: ${PROXY_HTTPS}"
echo "Note: You need to invoke this command with source, like: source proxy.sh set ${port}"
}
unset_proxy(){
unset http_proxy
unset HTTP_PROXY
unset https_proxy
unset HTTPS_PROXY
unset ALL_PROXY
unset all_proxy
echo "Unset done: http_proxy HTTP_PROXY https_proxy HTTPS_PROXY"
echo "Note: You need to invoke this command with source: source proxy.sh unset"
}
proxy_info(){
echo "Host ip:" ${hostip}
echo "WSL ip:" ${wslip}
echo "Current http proxy: $http_proxy"
echo "Current https proxy: $https_proxy"
}
if [ "$1" = "set" ]
then
if [ "$2" = "" ]
then
port="10809"
echo "Use default port: ${port}"
else
port="$2"
fi
set_proxy
elif [ "$1" = "unset" ]
then
unset_proxy
elif [ "$1" = "info" ]
then
proxy_info
else
echo "Unsupported arguments: $1. Available aguments: set [port] unset info"
fi
關於 IDEA
idea
對 wsl2
的支援簡直不忍直視!希望你們改好之後發個公告告訴我能用了。
這幾天我碰到了很多問題:
1,wsl2
普通使用者建立的檔案無法開啟。
2,idea
無法切換到 wsl2
的普通使用者上去。
3,idea
每次都要檢查 jdk
,即使第一次檢查後是沒問題的。特別慢。
4,apt install
安裝的 maven
無法識別。
5,特別容易卡死,奔潰!
關於開發
注:wsl2
不建議跨系統檔案呼叫。我們考慮以下幾個情景。
- 將
wsl
作為伺服器
只需要wsl
做為伺服器,程式碼本地開發。
這樣需要將原生程式碼開發完複製一份到wsl
目錄。只能通過檔案上傳的形式,部署程式碼。即使在你看來,都在windows
上,很可惜,因為不建議跨系統訪問檔案,這個不建議的準確度有多高呢?基本上就是說,一個ls
都會卡一陣。。。
還有,只能在windows
開發,遠端就會有網路問題。 - 開發環境
全部使用wsl
目錄,idea
不支援,vscode
表示適配的很好。jetbrains
的遠端開發和vscode
差不多,都能使用。
簡單來講就是遠端開發,即使你感覺他們都在你的windows
上,其實隔著很遠很遠。。。 - 不知道說啥
全部在windows
,請關閉wsl2
這個垃圾。
關於網路
在 wsl2
中的所有服務,都只能本地訪問,如果想提供遠端訪問,需要讓 windows
轉發。
涉及兩條命令:
netsh interface portproxy add v4tov4 listenport=[port] listenaddress=0.0.0.0 connectport=[port] connectaddress=[wsl ip]
netsh.exe advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=[port]
一條告訴 windows
轉發 wsl
服務埠。一條告訴 windows
開放防火牆
關於 docker
可以很開心的玩,但是由於網路原因,你不能提供遠端服務。
總結
- 磁碟和網路問題不解決,請不要使用
wsl2
,還不如開個虛擬機器。 - 建議在
windows
本地開發,該裝的都裝,不要想著使用wsl2
來隔離開發環境。