WSL设置添加固定IP
任务目标
- 在Win端添加一个固定IP 192.168.50.99 用于X-Server界面显示.
- 在WSL端添加一个固定IP 192.168.50.16 用于和Win端通讯.
在win端创建批处理文件
创建一个批处理文件, 例如: D:\wsl_work\Ubuntu_1604_static_ip.bat, 内容如下:
该脚本作用是
-
向vEthernet (WSL)网卡添加一个IP 192.168.50.99
-
向wsl子系统网卡添加一个IP 192.168.50.16
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
netsh interface ip add address "vEthernet (WSL)" 192.168.50.99 255.255.255.0
wsl -d Ubuntu-16.04 -u root ip addr add 192.168.50.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1
exit
在WSL实例里编辑~/.bashrc, 添加如下内容:
# 下面是用于判断是否执行Win端的脚本来设置添加一个固定IP
HOST_IP_STR=`hostname -I`
echo $HOST_IP_STR
AIM_IP_STR='192.168.50.16'
echo $AIM_IP_STR
if [[ $HOST_IP_STR == *$AIM_IP_STR* ]]; then
echo "IP has set."
else
echo "Reset IP."
cmd.exe /c "D:\wsl_work\Ubuntu_1604_static_ip.bat" 1>nul
fi
# 下面是用于X-server界面通讯的设置
export DISPLAY=192.168.50.99:0.0
export XDG_RUNTIME_DIR=/home/edu/.runtime-edu
这样就可以在启动WSL时, 自动为WSL添加一个固定IP地址为192.168.50.16了, 而又不会影响WSL本身的自动IP分配. (注意Win端脚本运行时, 会弹出是否以管理员身份运行, 应选择"是").
常见错误
'\\wsl$\Ubuntu-16.04\home\edu'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported. Defaulting to Windows directory.
解决方法:
在注册表中,添加一个值即可.路径如下:
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
添加值 DisableUNCCheck, 类型为 REG_DWORD并将该值设置为1 (十六进制)。
批处理文件如下:
reg add "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" /v "DisableUNCCheck" /t "REG_DWORD" /d "1" /f