使用WSL2安装Ubuntu子系统

1. 确认安装环境

打开任务管理器,确认虚拟化已启用

然后系统内搜索"启用或关闭Windows功能",开启"适用于Linux的Windows子系统"和"Hyper-V"两项,点击确认等待系统重启

2. 更新及选择WSL子系统

使用管理员打开Power Shell,使用 wsl --update 更新后查看当前可选子系统列表

这里我们选择安装Ubuntu-22.04 , 使用命令 wsl --install -d "Ubuntu-22.04" --web-download(需翻)

或者,使用微软商店搜索ubuntu 22.04,直接下载安装也可以

接着,系统会让我们输入一个新的用户名和密码作为子系统的默认用户,设置完毕后系统即安装完成

当然系统也支持多个子系统,通过如下方式切换默认子系统

退出与打开子系统可以通过wsl应用直接打开,当会话关闭时,子系统即处于停止状态

子系统也可以备份与导入,也非常方便,导出形式是一个文件,导入该文件后可以在指定位置成为一个镜像文件

这里就不展开了, 第3部分有类似操作

3. 将WSL子系统从C盘移出

下载move-wsl,然后使用管理员身份运行Windows PowerShell

运行 wsl --shutdown ,将下载的目录解压到D盘新建的wsl目录下,然后运行如下指令即可

复制代码
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\move-wsl.ps1

然后需要重新设置默认子系统

移动后有一个小问题,默认用户变成了root,所以需要调整回来, 根据move-wsl项目下的说明, 向/etc/wsl.conf添加如下内容

复制代码
[boot]
systemd=true

[user]
default=menhaojie

关闭所有窗口,等待系统关闭后再重新打开窗口,默认用户即配置成功了

4. 配置网络由NAT网络模式改为镜像共享模式

移动wsl镜像后,出现了如下提示,这会导致wsl上的子系统无法使用windows上的代理

关于这个问题,github上此处有讨论,解决办法是把网络模式改为镜像

这种更改是作用于所有子系统的,如果想针对单个子系统进行网络的配置,则另有单独的配置文件可以去操作,这里不展开

复制代码
[experimental]
autoMemoryReclaim=gradual  # gradual  | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

然后使用 wsl --shutdown 后等待10S再重新打开窗口,就发现提示消失了,同时也能使用windows系统上的代理了

5. 配置花生壳内网穿透服务

打开 WSL 终端(例如 Ubuntu),执行

复制代码
sudo apt update
sudo apt install openssh-server

编辑 SSH 配置文件

复制代码
sudo vi /etc/ssh/sshd_config

确保以下几项配置正确

复制代码
Port 22
ListenAddress 0.0.0.0
PermitRootLogin yes     #(如果你想允许 root 登录,默认关闭)
PasswordAuthentication yes

保存并启动 SSH 服务

复制代码
sudo service ssh start

创建花生壳映射,host选择127.0.0.1,因为我的网络模式是镜像模式,所以端口选择22即可

6. 恢复WSL镜像

如果是同机器的恢复,使用如下命令即可

如果不是同机器的恢复,那么因为这个vhdx里面绑定了旧机器的状态,所以需要重新做镜像,这个镜像里面会

  1. 清理 machine-id

  2. 清理 systemd 状态

  3. 重建网络环境

    导出

    wsl --export Ubuntu-22.04 D:WSL\Image\Ubuntu-22.04.tar

    导入

    wsl --import Ubuntu-22.04 D:\WSL\Ubuntu D:\WSL\Image\Ubuntu-22.04.tar

7. 卸载系统

bash 复制代码
wsl --unregister Ubuntu-22.04
相关推荐
程序员-Benothing13 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
m0_6464299713 小时前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
‎ദ്ദിᵔ.˛.ᵔ₎13 小时前
linux 进程信号 (上)
linux·服务器
亚川楼宇自控系统数据中心厂家13 小时前
IBMS 集成管理系统:如何打通楼宇自控实现建筑一体化管控
运维
15Moonlight13 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
迪康Defender13 小时前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作
wuminyu14 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
liulilittle14 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen15 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust
小此方15 小时前
Linux网络(二十一):深入理解 TCP 异常处理:网线断开、Keepalive 保活机制与 Linux 内核传输层协议源码剖析
linux·网络·tcp/ip