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
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
|
|
``` |