win10 使用LxRunOffline安裝wsl2


電腦環境

618買了台聯想小新pro13 銳龍版 4800U,將台式機中的win10系統遷移到筆記本。

目前win10是最新的2004版本,wsl為版本1,想要將其升級為wsl2使用,因為vmware 20H1可以和hyper-v兼容使用了,以前因為需要經常使用vmware,所以一直沒有升級,這次趁着新電腦的機會搞一下。

目前的子系統為:

D:\Scoop\apps\cmder\current>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1

遷移系統的,發現現在狀態為stopped

D:\Scoop\apps\cmder\current>wsl.exe -d Ubuntu-18.04

D:\Scoop\apps\cmder\current>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-18.04    Running         1

但是沒有任何用,過不了一會又會變成Stopped

卸載以前的wsl

D:\Scoop\apps\cmder\current
λ wslconfig /list
適用於 Linux 的 Windows 子系統分發版:
Ubuntu-18.04 (默認)

D:\Scoop\apps\cmder\current
λ wslconfig /unregister Ubuntu-18.04
正在注銷...

D:\Scoop\apps\cmder\current
λ wsl -l -v
適用於 Linux 的 Windows 子系統沒有已安裝的分發版。
可以通過訪問 Microsoft Store 來安裝分發版:
https://aka.ms/wslstore

注意,我以前安裝過wsl,所有很多配置信息都不需要再次配置。

這里記錄一下需要的配置命令:

安裝LxRunOffline

scoop bucket add extras
scoop install lxrunoffline

查看具體版本

D:\Program Files (x86)\JetBrains
λ lxrunoffline l
Ubuntu-18.04

查看具體路徑

D:\Program Files (x86)\JetBrains
λ lxrunoffline di -n Ubuntu-18.04
D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc

使用lxrunoffline進行備份

D:\Program Files (x86)\JetBrains
λ lxrunoffline export -n Ubuntu-18.04 -f Ubuntu-18.04.tar.gz
[WARNING] Ignoring an unsupported file "\\?\D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc\rootfs\dev\full" of type 0020000.
[WARNING] Ignoring an unsupported file "\\?\D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc\rootfs\dev\null" of type 0020000.
[WARNING] Ignoring an unsupported file "\\?\D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc\rootfs\dev\ptmx" of type 0020000.
[WARNING] Ignoring an unsupported file "\\?\D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc\rootfs\dev\random" of type 0020000.
[WARNING] Ignoring an unsupported file "\\?\D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc\rootfs\dev\tty" of type 0020000.
[WARNING] Ignoring an unsupported file "\\?\D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc\rootfs\dev\urandom" of type 0020000.
[WARNING] Ignoring an unsupported file "\\?\D:\Program Files (x86)\JetBrains\CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc\rootfs\dev\zero" of type 0020000.

-n :wsl的別名,就是之前用list查看的其中一個

-f :備份的路徑,我這直接備份到當前路徑backup.tar.gz

注意這里只能導出wsl為版本1的,版本2的不行,必須先轉換成版本1的才行。

卸載舊系統,遷移位置

D:\MyLinux
λ lxrunoffline uninstall -n Ubuntu-18.04

D:\MyLinux
λ lxrunoffline l

恢復備份

D:\MyLinux
[WARNING] Love this tool? Would you like to make a donation: https://github.com/DDoSolitary/LxRunOffline/blob/master/README.md#donation

指定運行某個發行版本

D:\MyLinux
λ lxrunoffline r -n Ubuntu-18
[oh-my-zsh] Would you like to update? [Y/n] Y

等同於wsl -d <WSL名稱>

創建快捷方式

使用微軟應用商店安裝的 WSL 會在開始菜單添加應用圖標(快捷方式),而使用 LxRunOf­fline 安裝 WSL 時可以通過添加 -s 參數在桌面創建快捷方式。如果你安裝時忘記添加參數,可以使用以下命令進行創建。

lxrunoffline s -n <WSL名稱> -f <快捷方式路徑>.lnk

導出指定的 WSL 配置文件到目標路徑

lxrunoffline ec -n <WSL名稱> -f <配置文件路徑>.xml

配置信息可以輸入lxrunoffline sm -n <WSL名稱>查看

取消注冊(這個操作不會刪除目錄)

lxrunoffline ur -n <WSL名稱>

使用新名稱注冊

lxrunoffline rg -n <WSL名稱> -d <WSL路徑> -c <配置文件路徑>.xml

設置默認 WSL

設置默認 WSL 后,可以在 cmdpowershell 中輸入 wsl 直接調用默認的 WSL 。

lxrunoffline sd -n <WSL名稱>

等同於wsl -s <WSL名稱>

安裝wsl2的前置設置

進入頁面 更新 WSL 2 Linux 內核

下載Linux內核更新包,安裝更新。

bcdedit /set hypervisorlaunchtype auto

#用管理員模式啟動PowerShell然后運行
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
這兩個安裝完成直接 重啟 !!!!!!!!!重啟!!!!!!

安裝CentOS子系統

下載 Centosdocker 鏡像

可以參考 https://github.com/RoliSoft/WSL-Distribution-Switcher 來下載。

或者直接下載

使用LxRunOffline安裝CentOS

D:\MyLinux
λ lxrunoffline install -n centos -d D:\MyLinux\CentOS -f centos-7-docker.tar.xz
[WARNING] Love this tool? Would you like to make a donation: https://github.com/DDoSolitary/LxRunOffline/blob/master/README.md#donation

D:\MyLinux
λ lxrunoffline l
centos

D:\MyLinux
λ wsl
[root@qhong-Computer MyLinux]# uname
Linux
[root@qhong-Computer MyLinux]# uname -r
4.4.0-19041-Microsoft
[root@qhong-Computer MyLinux]# uname -a
Linux qhong-Computer 4.4.0-19041-Microsoft #1-Microsoft Fri Dec 06 14:06:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@qhong-Computer CentOS]# cd /
[root@qhong-Computer /]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

上面的D:\MyLinux\CentOS是安裝的位置。

其中 -d 后面是要安裝到的目錄; -f 后面是第二部下載的鏡像存放位置;-n 用來指定名稱

安裝完成之后,使用LxRunOffine 來開啟 Centos lxrunoffline run -n centos

如果,你只安裝了一個WSL,那么直接在cmder輸入wsl即可啟動CentOS了。

查看:

D:\MyLinux
λ wsl -l -v
  NAME      STATE           VERSION
* centos    Running         1

將其升級為wsl2

D:\MyLinux
λ wsl --set-version centos 2
正在進行轉換,這可能需要幾分鍾時間...
有關與 WSL 2 的主要區別的信息,請訪問 https://aka.ms/wsl2
轉換完成。

D:\MyLinux
λ wsl -l -v
  NAME      STATE           VERSION
* centos    Stopped         2

但是升級以后是stopped,必須運行起來

D:\MyLinux
λ lxrunoffline r -n centos
[root@qhong-Computer MyLinux]# ll
total 0
drwxrwxrwx 1 root root 4096 Jun 27 17:40 CentOS

[root@qhong-Computer MyLinux]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

這里使用的是lxrunofflinerun命令

相當於 wsl -d centos

win10中查看子系統的文件

在centos中執行命令:

explorer.exe .

安裝Ubuntu子系統

這個就簡單了,照貓畫虎就行

我以前就有Ubuntu-18.04的子系統,這次升級為wsl2就行。

D:\MyLinux
λ lxrunoffline install -n Ubuntu-18.04 -d D:\MyLinux\Ubuntu -f Ubuntu-18.04.tar.gz

D:\MyLinux
λ wsl -l -v
  NAME            STATE           VERSION
* centos          Running         2
  Ubuntu-18.04    Stopped         1

D:\MyLinux
λ wsl --set-version Ubuntu-18.04 2
正在進行轉換,這可能需要幾分鍾時間...
有關與 WSL 2 的主要區別的信息,請訪問 https://aka.ms/wsl2
轉換完成。

D:\MyLinux
λ wsl -l -v
  NAME            STATE           VERSION
* centos          Running         2
  Ubuntu-18.04    Stopped         2

D:\MyLinux
λ lxrunoffline l
centos
Ubuntu-18.04

D:\MyLinux
λ lxrunoffline r -n Ubuntu-18.04
[oh-my-zsh] Would you like to update? [Y/n] Y

安裝Ubuntu以后,默認是停止的,而且是版本1,必須轉換成版本2,而且再次運行即可。

在CentOS中安裝jdk,maven

下載maven

wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

mv apache-maven-3.6.3-bin.tar.gz /usr/local/
cd /usr/local
tar -zxvf apache-maven-3.6.3-bin.tar.gz
rm -rf apache-maven-3.6.3-bin.tar.gz

下載jdk(發現oracle拒絕wget方式進行獲取,估計下載鏈接有時效)

鏈接:https://pan.baidu.com/s/1oa4tTy_7TIu6CXK9kVYcqw 提取碼:aesn

mv jdk-8u251-linux-x64.tar.gz /usr/local/
cd /usr/local/
tar -zxvf jdk-8u251-linux-x64.tar.gz
rm -rf jdk-8u251-linux-x64.tar.gz

配置環境變量

/etc/profile文件尾部添加配置

export JAVA_HOME=/usr/local/jdk1.8.0_251
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export M2_HOME=/usr/local/apache-maven-3.6.3
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

source /etc/profile

再安裝git,各種配置以后,希望可以使用子系統開發調試java項目,結果,性能慢的要死。

使用wsl命令進行導出,導入

  1. Export distro to a file: wsl.exe --export Ubuntu-18.04 C:\folder\file.tar.gz
  2. Import to new name: wsl.exe --import MyDistro C:\folder C:\folder\file.tar.gz
  3. Convert: wsl.exe --set-version MyDistro 2
 wsl --export centos8 centos8.tar.gz

從wsl中刪除win10帶過來的PATH變量

創建/etc/wsl.conf文件

[interop]
enabled=false # enable launch of Windows binaries; default is true
appendWindowsPath=false # append Windows path to $PATH variable; default is true

第一個是是否允許運行window中的程序

第二個是否帶入window中的環境變量

停止wsl,再重新啟動即可。

wsl --shutdown

wsl -d centos

使用scp命令下載文件

從遠程服務器18.16.200.107中路徑為/data/log/huishi-server下的asdf.cap文件,用戶名為root,端口為22,下載到本機的/mnt/d/目錄

scp -P 22 root@18.16.200.107:/data/log/huishi-server/asdf.cap /mnt/d/

scp -P 22 root@pre:/data/log/huishi-server/asdf.cap /mnt/d/

拷貝文件夾,則多加一個 -r 參數即可

wsl2中設置代理

wsl2中直接訪問window宿主機,訪問不了

這是因為設置的防火牆的緣故

window將wsl的訪問當成了外部網絡方式

使用管理員PowerShell執行:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

這樣wsl2可以通過宿主機ip訪問(不是window本身的ip,這個要開啟對外防火牆)

可以查看window中的防火牆,查看入站規則里面多了一個WSL的規則。

查看宿主機ip:

$ echo $(grep -oP '(?<=nameserver\ ).*' /etc/resolv.conf)
172.25.16.1

~/.bashrc文件中加入

# CUSTOM CONFIG
export HOST_IP=$(grep -oP '(?<=nameserver\ ).*' /etc/resolv.conf)
export PORXY_ADDR="http://$HOST_IP:8118"

# GLOBAL PROXY FOR BASH

# if ~/.bash_proxy not exist , then create it.
if [ ! -f ~/.bash_proxy ]; then
    touch ~/.bash_proxy
fi
# execute ~/.bash_proxy
. ~/.bash_proxy

function proxy() {
    # export all_proxy="$PORXY_ADDR"
    # export http_proxy="$PORXY_ADDR"
    # export https_proxy="$PORXY_ADDR"
    # export ALL_PROXY="$PORXY_ADDR"
    # export HTTP_PROXY="$PORXY_ADDR"
    # export HTTPS_PROXY="$PORXY_ADDR"
    echo -e "export {all_proxy,http_proxy,https_proxy,ALL_PROXY,HTTP_PROXY,HTTPS_PROXY}=\"$PORXY_ADDR\";" | tee ~/.bash_proxy >/dev/null
    # apply
    . ~/.bash_proxy
    # declare
    echo "current proxy status: using $PORXY_ADDR, proxying"
}

function unproxy() {
    # unset all_proxy http_proxy https_proxy ALL_PROXY HTTP_PROXY HTTPS_PROXY
    echo -e "unset all_proxy http_proxy https_proxy ALL_PROXY HTTP_PROXY HTTPS_PROXY" | tee ~/.bash_proxy >/dev/null
    # apply
    . ~/.bash_proxy
    # declare
    echo "current proxy status:  direct connect, not proxying"
}

~/.zshrc頭部中加入

source ~/.bashrc

使用proxy命令即可設置代理,使用unproxy命令即可解除代理

wsl1與wsl2區別

虛擬網卡

wsl1沒有虛擬網卡,wsl2有,體現在使用tcpdump命令時

wsl1

[root@qhong-Computer MyLinux]# tcpdump -D

wsl2:

[root@qhong-Computer MyLinux]# tcpdump -D
1.eth0
2.nflog (Linux netfilter log (NFLOG) interface)
3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
4.any (Pseudo-device that captures on all interfaces)
5.lo [Loopback]

wsl與win10編譯java項目性能對比

左邊是wsl2,右邊是win10,最下邊的是wsl1,同一台電腦,差距還是很大的。

參考:

安裝VMware16兼容Hyper-v+WSL2+Docker+解決0x80370102報錯

在 Windows 10 環境上安裝 WSL 2

LxRunOffline 使用教程 - WSL 自定義安裝、備份

WSL2使用筆記

將WSL2作為生產力工具


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM