You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.4 KiB
3.4 KiB
所需环境: windows11专业版及以上 WSL版本: 2 镜像: 通过VM导出或Docker导出
获取镜像
使用VM
-
安装好镜像
-
制作镜像
cd /
tar Jcvpf debian.tar --exclude=/debian.tar --exclude=/proc --exclude=/sys /
使用Docker
直接备份Docker容器
导入到WSL
# 导入
wsl --import Debian_base d:\WSL\Debian_base C:\Users\x7129\debian.tar
# 导出
wsl --export Debian_base D:\Debian_Base_WSL.tar
# 强制关闭
wsl --shutdown
# 查看运行状态
wsl -l --all -v
# 注销
wsl --unregister <DistributionName>
# 进入用户主页
wsl ~
# 进入身份
wsl -u root
# 更感默认账户,导入版不行
# <DistributionName> config --default-user <Username>
# 关闭运行
wsl --terminate <Distribution Name>
# 设置默认分发版
wsl -s Debian_base
设置开机启动
win+r 输入shell:startup
创建文件: wsl_init.vbs
Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d Debian_base -u root /etc/wsl.init restart",vbhide
ws.run "Set-VMSwitch WSL -NetAdapterName 以太网",vbhide
wsl 的其他参数
cmd="wsl -d Ubuntu-20.04 -u root --cd %USERPROFILE%" CreateObject("Wscript.Shell").run cmd,vbhide 除此之外还可以为 wsl设置一些参数,用于指定 wsl 的运行状态:
--cd %USERPROFILE%用于指定wsl 的工作目录 -u root 用于指定 wsl的登录用户为 root -d Ubuntu-20.04 用于指定 wsl 的发行版,可以使用 wsl -l -v查看当前发行版
设置桥接网络
win+r shell:startup
创建文件: wsl_switch.vbs
# 存在中文编码方式为ASCII
strCommand ="C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -command Set-VMSwitch WSL -NetAdapterName 以太网"
Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Length = 0 Then
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe" _
, """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
WScript.Quit
End if
Set objExec = WshShell.Exec(strCommand)
编辑wsl内部wsl.init文件
export PATH=/usr/sbin/:$PATH
service ssh start
# 后续启动内容可以添加
更改命令行提示颜色 cp /home/nie/.bashrc /root
- 将ps1哪一行32改成31 root为红色
设置网络
# 管理员身份运行
Get-NetAdapter
# 可能需要开启运行脚本的指令
Set-VMSwitch WSL -NetAdapterName 以太网 #以太网可以根据情况换,观察上面列出的网卡名称
wsl内部
nano /etc/network.sh
#!/bin/bash
new_ip=192.168.1.233
brd=192.168.1.255
gateway=192.168.1.1
nameserver=192.168.1.1
net_dev=eth0
# 注意,下面这里需要用到wsl的sud执行命令,所以需要填写你wsl的密码
echo "[your password]" | sudo -S ip addr del $(ip addr show $net_dev | grep 'inet\b' | awk '{print $2}' | head -n 1) de>sudo ip addr add $new_ip/24 broadcast $brd dev $net_dev
sudo ip route add 0.0.0.0/0 via $gateway dev $net_dev
sudo sed -i "\$c nameserver $nameserver" /etc/resolv.conf
# /etc/wsl.init加入
/etc/wsl_network.sh
其他设置
# nano /etc/wsl.conf
[user]
default=nie # 默认登陆账户
[network]
hostname = wow-xi
generateHosts = false # 不自动修改主机名
generateResolvConf = false # 不自动修改DNS
# nano /etc/hosts
# 加入上面设置的主机名
127.0.0.1 wow-xi
127.0.0.1 localhost