跳至主要内容

WLS2


Windows Subsystem for Linux 2

https://docs.microsoft.com/zh-cn/windows/wsl/

资料https://www.sitepoint.com/wsl2/

手动安装步骤

步骤 1 - 启用适用于 Linux 的 Windows 子系统

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。

以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

建议现在转到步骤 #2,更新到 WSL 2,但如果只想安装 WSL 1,现在可以重新启动计算机,然后继续执行步骤 6 - 安装所选的 Linux 发行版。 若要更新到 WSL 2,请等待重新启动计算机,然后继续执行下一步。

步骤 2 - 检查运行 WSL 2 的要求

若要更新到 WSL 2,需要运行 Windows 10。
对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。

若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 更新到“设置”菜单中的最新 Windows 版本。

步骤 3 - 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

步骤 4 - 下载 Linux 内核更新包

下载最新包:适用于 x64 计算机的 WSL2 Linux 内核更新包

备注
如果使用的是 ARM64 计算机,请下载  ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:systeminfo 查看 System Type 或 系统类型
运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)

步骤 5 - 将 WSL 2 设置为默认版本

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:wsl --set-default-version 2

步骤 6 - 安装所选的 Linux 分发

打开 Microsoft Store,并选择你偏好的 Linux 分发版。
在分发版的页面中,选择“获取”。

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码。(小写用户名)
此 用户名 和 密码 特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。

重置 Linux 密码

若要更改密码,请打开 Linux 分发版(例如 Ubuntu)并输入以下命令:passwd
系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。

忘记密码

如果忘记了 Linux 分发版的密码:
请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root

如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。

在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd <WSLUsername>,其中 <WSLUsername> 是 DISTRO 中帐户的用户名,而你忘记了它的密码。
系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭 WSL:exit

祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

启动

下载后,单击Microsoft Store应用程序上的启动”按钮,或“开始”菜单中的新Ubuntu图标

Ubuntu中初始文件夹 dangzenglong@DANG-PC:/mnt/c/Users/DANG$

安装 Windows 终端(可选)

https://docs.microsoft.com/zh-cn/windows/terminal/get-started
打开 Microsoft Store 下载 Windows Terminal,它可启用多个选项卡(在多个 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之间快速切换)、创建键绑定(用于打开或关闭选项卡、复制粘贴等的快捷方式键)、使用搜索功能,以及使用自定义主题(配色方案、字体样式和大小、背景图像/模糊/透明度)。
https://docs.microsoft.com/zh-cn/windows/terminal/command-line-arguments?tabs=powershell

Windows Terminal 设置,打开文件json文件,它在
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState

Windows Terminal(终端)主题

更新和升级包

# apt 是 Linux 发行版推荐的命令 ,apt 是 apt-get 和 apt-cache 命令的子集,为包管理提供必要的命令
# 推荐使用apt而不是apt-get
 sudo apt update
 sudo apt upgrade -y
 # cleanup
 sudo apt autoremove -y

如何在适用于 Linux 的 Windows 子系统中重置 Ubuntu(和其他 Linux 发行版)

右键“开始”按钮,选择“应用和功能”,搜索框中输入“Ubuntu”, 在找到的应用中点击“Ubuntu”(或 您的发行版名称)并单击“高级选项”,单击“重置”按钮

完成后,您将在“重置”按钮旁边看到一个复选标记。然后您可以像往常一样启动 Ubuntu。首次启动时,它会要求您设置用户名和密码。手动安装好之后输入小写用户名

重置同样适用于 Windows Terminal

从 Windows 访问 Linux 文件

在文件资源管理器地址栏或运行对话框中输入\\wsl$\,可以在网络路径上访问 Linux 文件。
列出了您安装的 Linux 发行版,因此您可以访问 Ubuntu 根目录\\wsl$\Ubuntu。
您的个人 Linux 文件通常存储在:\\wsl$\Ubuntu\home\<yourname>
例如:\\wsl$\Ubuntu-20.04\home\dangzenglong

映射网络驱动器

您可以通过\\wsl$\在文件资源管理器中打开\\wsl$\Ubuntu\,右键单击 Ubuntu 文件夹,然后选择Map network drive...来挂载网络驱动器。

从 Linux 运行 Windows 应用程序

在 cmd 或 PowerShell 中运行 wsl --shutdown 来重新启动分发。以便于可以在ubuntu中运行任何 Windows 可执行文件都可以从 Linux 启动(通常需要指定.exe扩展名)。

例如,要在文件资源管理器中打开当前 Linux 目录,请输入:
explorer.exe  会打开 此电脑
explorer.exe .  会打开 C:\Users\DANG 文件夹 也可以用powershell.exe /c start .
或.bashrc在记事本中编辑:notepad.exe ~/.bashrc
或者在 VS Code 中打开特定的项目目录:code ~/projects/mywebsite

从 Windows 访问 Linux 网络应用程序  (localhost)

要查找支持 Linux 发行版的虚拟机的 IP 地址:
从您的 WSL 发行版(即 Ubuntu),运行以下命令: ip addr 找到并复制接口inet值下的地址eth0。
如果您安装了 grep 工具,请通过使用以下命令过滤输出来更轻松地找到它: ip addr | grep eth0
使用此 IP 地址或者 localhost 连接到您的 Linux 服务器。

从 Linux 访问 Windows 网络应用程序 (主机 IP)

通过从 Linux 发行版运行以下命令来获取主机的 IP 地址: cat /etc/resolv.conf
复制以下术语的 IP 地址:nameserver。
使用复制的 IP 地址连接到任何 Windows 服务器。
cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'

安装 MongoDB

搭建 MongoDB 数据库只需要在 docker 里面跑一个容器
docker run -it -v mongodata:/data/db -p 27017:27017 --name mongodb --restart unless-stopped -d mongo

-p 27017:27017 将容器的27017 端口映射到主机的27017 端口

http://localhost:27017/
MongoDB 的默认数据目录路径是\data\db
注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

web 管理数据库

docker run -d --name mongo-express -e ME_CONFIG_MONGODB_SERVER=host.docker.internal -p 8081:8081 mongo-express

http://localhost:8081/


dangzenglong@DANG-PC:~$ docker port  mongodb
27017/tcp -> 0.0.0.0:27017
27017/tcp -> :::27017
dangzenglong@DANG-PC:~$ docker port  mongo-express
8081/tcp -> 0.0.0.0:8081
8081/tcp -> :::8081

dangzenglong@DANG-PC:~$ ss -ltn

如有以下报错:
docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:8081: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

在 Windows 上启用 Hyper-V 时,会保留许多动态端口,所以其他应用程序无法监听在这个端口。

首先,检查您所需的端口是否已保留
PS C:\Users\DANG> netsh interface ipv4 show excludedportrange protocol=tcp

如果您的端口在其中一个范围内,请停止 winnat:
PS C:\Users\DANG> net stop winnat

禁止对您所需的端口进行动态保留(例如,原始问题中所述的 50051):
PS C:\Users\DANG> netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1

Start your docker services 

重启winnat:
PS C:\Users\DANG> net start winnat

PS C:\Users\DANG> netstat -a -n -p tcp | findstr LISTENING


如何修复 docker:尝试连接到 Docker 守护进程套接字时权限被拒绝
sudo chmod 666 /var/run/docker.sock

运行以下docker命令以在容器中启动支持 PHP 7.4 的 Apache Web 服务器,该服务器将主机目录/var/www/html中的文件挂载到容器中:
docker run -it --rm -p 18080:80 --name php -v "$PWD":/var/www/html php:7.4-apache


>wsl -l -v
  • docker-desktop替换了之前使用的 Hyper-V VM 实现 Docker Desktop。这处理容器的引导和管理。
  • docker-desktop-data是存储您的图像和配置的地方;这实质上是对 Hyper-V 以前使用的虚拟硬盘的直接替换。

评论

此博客中的热门博文

学习地址

清华大学计算机系课程攻略 https://github.com/PKUanonym/REKCARC-TSC-UHT 浙江大学课程攻略共享计划 https://github.com/QSCTech/zju-icicles https://home.unicode.org/ 世界上的每个人都应该能够在手机和电脑上使用自己的语言。 http://codecanyon.net   初次看到这个网站,小伙伴们表示都惊呆了。原来代码也可以放在网上卖的?!! 很多coder上传了各种代码,每个代码都明码标价。看了下销售排行,有的19刀的卖了3万多份,额di神啊。可以看到代码的演示效果,真的很漂亮。代码以php、wordpress主题、Javascript、css为主,偏前台。 https://www.lintcode.com/ 算法学习网站,上去每天刷两道算法题,走遍天下都不怕。 https://www.codecademy.com/ 包含在线编程练习和课程视频 https://www.reddit.com/ 包含有趣的编程挑战题,即使不会写,也可以查看他人的解决方法。 https://ideone.com/ 在线编译器,可运行,可查看代码示例。 http://it-ebooks.info/ 大型电子图书馆,可即时免费下载书籍。 刷题 https://github.com/jackfrued/Python-100-Days https://github.com/kenwoodjw/python_interview_question 面试问题 https://github.com/kenwoodjw/python_interview_question https://www.journaldev.com/15490/python-interview-questions#python-interpreter HTTP 身份验证 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication RESTful 架构详解 https://www.runoob.com/w3cnote/restful-architecture.html https://www.rosettacode.org/wiki/Rosetta_C...

PDF处理

虚拟pdf打印机 pdfFactory  https://fineprint.com PDFCreator  https://www.pdfforge.org 开源 cutepdf https://www.cutepdf.com/index.htm Doro PDF Writer http://www.the-sz.com/products/doro PdfScribe  https://github.com/stchan/PdfScribe/releases pdf阅读器 Sumatra PDF https://www.sumatrapdfreader.org/ 为什么 Python 用于 PDF 处理  如您所知,PDF 处理属于文本分析。 大多数文本分析库或框架仅使用 Python 设计。 这为文本分析提供了优势。 还有一件事,您永远无法在现有的机器学习或自然语言处理框架中直接处理 pdf。 除非他们为此证明了显式接口。 我们必须先将pdf转换为文本。 我们可以使用下述任何库轻松实现这一点。 在线转换pdf Sejda https://www.sejda.com/pdf-editor 每个文档 200 页的免费限制 https://www.pdf2go.com/ https://tools.pdfforge.org/extract-text PDF24 Tools https://tools.pdf24.org/zh/ 免费且易于使用的在线PDF工具 FreeOCR http://www.paperfile.net/ 适用于Windows的免费光学字符识别软件,支持大多数Twain扫描仪的扫描,还可以打开大多数扫描的PDF和多页Tiff图像以及流行的图像文件格式,FreeOCR输出纯文本,可以直接导出为Microsoft Word格式。 不支持中文 wkhtmltopdf 和 wkhtmltoimage 是使用 QT Webkit 渲染引擎将 HTML 渲染为 PDF 和各种图像格式的命令行工具。这些完全“无头”运行,不需要显示或显示服务。 https://wkhtmltopdf.org/ django-wkhtmltopdf 允许 Django 站点输出动态 PDF。它利用 wkhtmltopdf 库,允许您使用您知道...

安卓 之 apk下载、ADB、 scrcpy

Apk下载 下载离线安装apk https://www.apkmirror.com/ 免费和安全的Android APK下载 https://apkpure.com/ 被暴雷,有植入 https://apps.evozi.com/apk-downloader/ 可以将Google Play( https://play.google.com )中的apk文件所在网址直接下载到台式机和设备上 https://f-droid.org/zh_Hans/ F-Droid 是一个 Android 平台上 FOSS(Free and Open Source Software,自由开源软件)的目录,并提供下载安装支持。使用客户端可以更轻松地浏览、安装及跟进设备上的应用更新。 https://gitlab.com/AuroraOSS/AuroraStore Aurora商店 是Google Play商店的非官方FOSS客户,设计典雅。 Aurora商店不仅下载,更新和搜索Play商店等应用 https://github.com/OpenTracksApp/OpenTracks OpenTracks是一款运动跟踪应用程序,完全尊重您的隐私。 Tasker https://tasker.joaoapps.com/ 是一款适用于Android的应用程序,它可以根据用户定义的配置文件中的上下文、可点击或定时的主屏幕小部件来执行任务。它无需root或特殊的主屏幕就能控制Android设备。 AsciiCam AsciiCam可以从您的相机指向的任何位置实时生成ASCII图像。选择黑白,原色或全彩,拍照,并将其作为图像或HTML共享。您还可以在库中创建ASCII版本的图片,并且每次使用标准相机应用程序拍摄照片时,也可以选择自动生成ASCII版本。 AsciiCam是完全免费和开源的。 Apk1安装器 优化微信apk文件接收体验。 微信收到apk文件会加 ".1" 后缀导致打不开,必须自己手动找到文件重命名去掉后缀。 使用本安装器就可以在微信内,潇洒地点击直接打开。甚至可以在安装器内浏览apk1文件历史接收记录。 ADB ADB全名是 Android Debug Bridge,是开发或使用Android时很常用的工具。可以从电脑通过USB连线到Android手机上 https:...