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.
 
 
 
 
 
 

147 lines
3.4 KiB

> 所需环境: windows11专业版及以上
> WSL版本: 2
> 镜像: 通过VM导出或Docker导出
## 获取镜像
### 使用VM
1. 安装好镜像
2. 制作镜像
```bash
cd /
tar Jcvpf debian.tar --exclude=/debian.tar --exclude=/proc --exclude=/sys /
```
### 使用Docker
直接备份Docker容器
## 导入到WSL
```bash
# 导入
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`
```powershell
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`
```powershell
# 存在中文编码方式为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文件
```bash
export PATH=/usr/sbin/:$PATH
service ssh start
# 后续启动内容可以添加
```
## 更改命令行提示颜色 cp /home/nie/.bashrc /root
- 将ps1哪一行32改成31 root为红色
## 设置网络
```powershell
# 管理员身份运行
Get-NetAdapter
# 可能需要开启运行脚本的指令
Set-VMSwitch WSL -NetAdapterName 以太网 #以太网可以根据情况换,观察上面列出的网卡名称
```
## wsl内部
```bash
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
```
```bash
# /etc/wsl.init加入
/etc/wsl_network.sh
```
## 其他设置
```bash
# nano /etc/wsl.conf
[user]
default=nie # 默认登陆账户
[network]
hostname = wow-xi
generateHosts = false # 不自动修改主机名
generateResolvConf = false # 不自动修改DNS
```
```bash
# nano /etc/hosts
# 加入上面设置的主机名
127.0.0.1 wow-xi
127.0.0.1 localhost
```