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

所需环境: windows11专业版及以上 WSL版本: 2 镜像: 通过VM导出或Docker导出

获取镜像

使用VM

  1. 安装好镜像

  2. 制作镜像

	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