当前位置: 首页 > article >正文

windows下轻量级虚拟化wsl 执行linux系统实践应用

一、WSL介绍

      Windows Subsystem for Linux (WSL) 是一个兼容 Linux 的环境,它允许用户在 Windows 操作系统上直接运行 Linux 命令行工具和应用程序,无需传统的虚拟机或双启动设置。WSL 提供了一个高效且轻量级的方法,让开发人员能够在 Windows 上使用 Linux 工具和工作流。

    WSL 2 使用虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 Linux 发行版作为独立的容器在 WSL 2 托管 VM 内运行。 通过 WSL 2 运行的 Linux 发行版将共享同一网络命名空间、设备树(而非 /dev/pts)、CPU/内核/内存/交换空间、/init 二进制文件,但有自己的 PID 命名空间、装载命名空间、用户命名空间、Cgroup 命名空间和 init 进程。

        wsl不同于docker、kvm。个人感觉有点像 QEMU中 运行 Linux,据说是微软基于hyper-v,在windows上运行轻量级的linux内核。

    

二、版本适用

win10 + win11,其他版本未测试.

三、WSL开启方法

在windows程序功能中启动wsl服务。

        

备注:启用wsl后需要重新启动系统。

四、wsl环境搭建过程问题解决

4.1 安装WSL时遇到“无法解析服务器名称或地址”的错误及解决方法

通过在网卡配置属性中添加电信114.114.114.114或者谷歌8.8.8.8 dns服务器,无法解决此问题,另外使用腾讯、阿里云等dns服务器,问题仍存在,以下dns尝试后都无法解决该问题。

1、百度DNS服务:180.76.76.76

2、阿里DNS,223.6.6.6 

3、腾讯DNS:119.29.29.29

4、电信:首选:101.226.4.6

5、联通:首选:123.125.81.6

6、移动:首选:101.226.4.6

7、铁通:首选:101.226.4.6

8、通用DNS 114.114.114.114

解决办法:在C:\Windows\System32\drivers\etc 下的hosts文件中添加raw.githubusercontent.com对应的域名解析,然后ping raw.githubusercontent.com 可正常通信,修改如下:

添加方法:ip + 空格 + 域名,添加后保存hosts文件,需要用管理员身份打开修改和保存hosts文件。
185.199.109.133 raw.githubusercontent.com

说明:可通过wireshark抓包发现无法解析raw.githubusercontent.com地址,知道该域名后需要找到对应的ip地址,可通过Dns检测|Dns查询 - 站长工具来查询。

4.2 执行wsl -l -o 安全频道支持出错 问题解决

wsl -l -o是列出可安装的有效分发的列表,但是执行后一直报“安全频道支持出错”问题。

解决方法:win+r 输入inetcpl.cpl打开internet属性界面 -> 高级 -> 开启TLS1.2

cmd窗口再次执行命令即正常,如下:

wsl -l -o
以下是可安装的有效分发的列表。
请使用“wsl --install -d <分发>”安装。

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Debian                          Debian GNU/Linux
kali-linux                      Kali Linux Rolling
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_7                 Oracle Linux 8.7
OracleLinux_9_1                 Oracle Linux 9.1
openSUSE-Leap-15.6              openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed             openSUSE Tumbleweed

五、wsl 常用命令使用

wsl -l -v  //显示有关所有分发的详细信息

wsl --shutdown ubuntu //关闭某一个os

wsl --install -d ubuntu //安装os

wsl -d //启动某一个系统

wsl --unregister Ubuntu//反注册os

wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\Ubuntu.tar //导入os

wsl --export ubuntu D:\WSL\Ubuntu.tar //导出os

wsl --update //更新wsl

wsl --set-default-version 2 //wsl切换

六、wsl启动linux系统问题解决

6.1WslRegisterDistribution failed with error: 0x800701bc错误解决

wsl --install -d kali-linux

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel

Press any key to continue...

更新到wsl2,下载链接如下:

下载wsl2: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

切换到wsl2: wsl --set-default-version 2

6.2 wsl  0x80004005错误解决

再次手动启动服务:

dism.exe /online /enable-feature /featurename /VirtualmachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
修改wsl管理服务:
将 LxssManager 服务修改为自动启动
从服务中修改会提示“拒绝访问”,所以从注册表改
win + R -> regedit -> \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LxssManager -> 右键 Start 项 -> 将值修改为 2
默认为 3

1 自动(延迟启动)
2 自动
3 手动
4 禁用

以上修改完后,问题解决,即可正常启动和登录linux系统:

登录后可以正常安装服务和应用,如mysql,或者ngnix等:

sudo apt install mysql ;

wsl官网学习网站:旧版 WSL 的手动安装步骤 | Microsoft Learn

---欢迎一起交流学习。
 


http://www.kler.cn/a/409429.html

相关文章:

  • CSS中calc语法不生效
  • 【SQL】【数据库】语句翻译例题
  • 【人工智能】AutoML自动化机器学习模型构建与优化:使用Auto-sklearn与TPOT的实战指南
  • excel版数独游戏(已完成)
  • ValueError: bbox_params must be specified for bbox transformations
  • 序列化库Jackson、FastJson 和 Gson详细对比
  • 7天掌握SQL - 第三天:MySQL实践与索引优化
  • HarmonyOS应用开发中的页面路由与数据传输
  • C语言之为表达式计算器实现定义变量和使用变量功能
  • 大数据的数据整合
  • 【linux】插入新硬盘如何配置:格式化、分区、自动挂载(Ubuntu)
  • 表格数据处理中大语言模型的微调优化策略研究
  • Python 使用 OpenCV 将 MP4 转换为 GIF图
  • 新华三H3CNE网络工程师认证—子接口技术
  • 任子行网络安全审计系统 log_fw_ips_scan_jsondata SQL注入漏洞复现
  • java基础(一):JDK、JRE、JVM、类库等概念,java跨平台实现原理
  • On-Chip-Network之Topology
  • Pytorch自定义算子反向传播
  • cirros-0.3.4-x86_64-disk.img
  • 【Linux】使用nohup命令实现不挂断的后台运行
  • ECharts柱状图-带圆角的堆积柱状图,附视频讲解与代码下载
  • [Leetcode小记] 3233. 统计不是特殊数字的数字数量
  • shell脚本-笔记27
  • 《CSDN及其旗下产品:构建中国IT行业的知识与技术生态》
  • Java开发经验——SpringRestTemplate常见错误
  • 【C++】static修饰的“静态成员函数“--静态成员在哪定义?静态成员函数的作用?