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

WSL安装及问题

1 概述

       Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。【引用百度百科】

        适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。【引用wsl】

2 WSL版本

      WSL分为WSL1和WSL2,WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。 WSL 2 是安装 Linux 发行版时的当前默认版本,它使用最新最好的虚拟化技术在轻量级实用工具虚拟机 (VM) 内运行 Linux 内核。 WSL2 将 Linux 发行版作为托管 VM 内的隔离容器运行。

功能比较:

参考官网【https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions】

3 启用虚拟化

可通过任务管理器(Ctrl+Shift+Esc)中的性能确认CPU虚拟化,默认开启

4 开启虚拟任务

1、通过快捷键WIN+R打开运行窗口,输入control,点击确定,打开控制面板

2、点击“程序”,打开程序面板

3、点击“启用或关闭Windows功能”

4、点击确定后,可正常应用WSL

5 安装WSL

5.1 检验安装情况

1、通过WIN+R快捷键打开运行窗口,输入cmd,打开命令提示符窗口

2、输入wsl

如果提示子系统没有已安装的分发版,说明还没有安装。

如果提示子系统没有已安装的分发版,说明还没有安装。

5.2 查看支持的 Linux 发行版

使用wsl –list –online 可查看支持的Linux发行版

5.3 无法解析服务器的名称或地址

在使用wsl –list –online 可查看支持的Linux发行版时,可能会提示“无法解析服务器的名称或地址”

这个错误通常表示Windows Subsystem for Linux(WSL)无法解析指定的服务器名称或IP地址。可能的原因包括网络配置问题、DNS服务器不可用、或者服务器名称不正确。

5.3.1 解决方法

1、检查服务器名称:确保输入的服务器名称正确无误。

2、网络配置:确保WSL的网络配置正确。可以尝试重启WSL服务:在命令提示符或PowerShell中运行wsl --shutdown。

3、DNS问题:确认Windows系统的DNS设置是否正确,可以尝试更换DNS服务器,如使用Google的8.8.8.8或8.8.4.4。

4、防火墙/安全软件:检查是否有防火墙或安全软件阻止了WSL的网络访问。

5、临时网络问题:尝试重新连接网络或重启路由器。

5.3.2 网络正常配置

如果网络正常,配置下DNS就可解决,配置方式如下:

1、右键桌面图标“网络”属性,打开网络和共享中心

2、点击“更改适配器设置”,打开网络连接窗口

3、选择WLAN右键属性,打开WLAN属性窗口

4、双击Internet协议版本4(TCP/IPv4),更改DNS

5.4 Wsl/WININET_E_NAME_NOT_RESOLVED

在执行 wsl –list –online时,有时会出现以下问题:

无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法解析服务器的名称或地址
Error code: Wsl/WININET_E_NAME_NOT_RESOLVED

遇到这个问题时,可以通过访问 https://www.sojson.com/ip/查询 raw.githubusercontent.com 域名对应的 IP 地址。

然后对C:\Windows\System32\drivers\etc\hosts文件进行追加

185.199.109.133 raw.githubusercontent.com

5.5 安装Ubuntu

1、选择Linux发行版的Ubuntu-24.04进行安装

2、安装过程中,会出现Ubuntu24.04.1 LTS 的安装窗口,可能会一直出现“Installing,this may take a few minutes…”这样的提示。可以通过wsl --list -v命令,查询Ubuntu的运行状态。

如果出现上面的情况,可以将该命令符提示窗口关闭。输入wsl后:

上图所示明显Ubuntu已经安装成功,却跳过了创建用户的步骤,因此,只需要创建一个新用户,并将其设定为默认启动的用户就可以解决问题。

解决方法:(参考:https://www.cnblogs.com/ziyulab/p/18446092#2-%E8%A7%A3%E5%86%B3)

1、创建新用户

2、通过cat /etc/passwd 查看用户是否添加

3、为用户赋予sudo权限

vim /etc/sudoers

# 增加配置, 在打开的配置文件中,找到root ALL=(ALL:ALL) ALL, 在下面添加一行

# 其中xxx是你要加入的用户名称

xxx ALL=(ALL:ALL) ALL

# 按esc,输入:wq!保存配置

 /etc/sudoers 文件是用来配置 sudo 命令的访问权限的。

sudo 是一个用于在 Linux 和其他类 Unix 操作系统上以超级用户身份执行命令的工具。/etc/sudoers 文件定义了哪些用户或用户组具有以超级用户身份执行命令的权限。

4、设置用户为默认启动用户

vim /etc/wsl.conf

# 添加配置

[user]

default=你的用户名

# 按esc,输入:wq!保存配置

5、通过wsl --shutdown 重启Ubuntu,完成修改

5.6 启动虚拟机

 在命令符提示中,输入wsl,就能进入到子系统中

5.7 注销或删除虚拟机

 参考:https://blog.csdn.net/FHY26828/article/details/143863100

1、注销虚拟机:仅删除 WSL 环境配置,不会删除对应的文件:

wsl --unregister Ubuntu-24.04

2、完全删除虚拟机(包括文件夹)

(1)找到虚拟机的文件存储位置(默认在 C:\Users\<用户名>\AppData\Local\Packages)。

(2)手动删除对应的文件夹。

5.8 临时切换WSL版本

临时切换到WSL1

wsl --set-version Ubuntu-2404 1

 5.9 设置默认版本

设置默认WSL2

wsl --set-default-version 2

5.10 查看版本

wsl --status

5.11 更新 WSL 内核

更新WSL后,需要重启电脑

 wsl --update

 通过执行wsl --update,用户可以检查并下载任何WSL2内核更新,这是因为WSL2内核是WSL2本身的一部分,并且在所有已安装的发行版之间共享,因此其更新方式与其他包更新方式不同。

更新后,增加了更多的功能,比如可通过systemd管理Linux服务;可通过 wsl --version 查看版本信息等。

5.12 以特定用户的身份运行 

wsl --user test

5.13 将目录更改为主页

wsl ~

5.14 更改发行版的默认用户

更改用于发行版登录的默认用户。 用户必须已经存在于发行版中才能成为默认用户。

<DistributionName> config --default-user <Username>

例如:ubuntu config --default-user test 会将 Ubuntu 发行版的默认用户更改为“test”用户。

5.15 注意事项 

当安装了vmware时,不要启动WSL2,可能导致虚拟化问题。 


http://www.mrgr.cn/news/93709.html

相关文章:

  • Nginx快速安装-Linux-CentOS7
  • 美杜莎:带多个解码头的简单LLM推理加速框架
  • UI自动化测试Selenium安装教程(1)
  • 【Linux内核系列】:深入解析输出以及输入重定向
  • selenium库
  • TI毫米波雷达开发 —— 串口输出数据解析
  • 09第三方库的使用
  • VBA 数据库同一表的当前行与其他行的主键重复判断实现方案
  • 迅投miniQMT量化交易之【网格交易】的实现(七)——__init__()方法
  • 【网络】HTTP协议、HTTPS协议
  • 【linux网络编程】套接字编程API详细介绍
  • 08动态库与静态库
  • element-plus中table组件的使用
  • 算法进阶——双指针
  • c语言笔记 数组进阶题目的理解
  • 渗透测试之利用sql拿shell(附完整流程+防御方案)【上】
  • OpenManus:开源版Manus的快速安装及使用「喂饭教程」
  • 数据结构--【顺序表与链表】笔记
  • python中如何正确进行浮点数的大小比较
  • 【让POSTGRESQL支持MS SQLSERVER的 extension】 Babelfish for PostgreSQL介绍及源码安装