Windows 10安装WSL 2并使用VSCode进行开发

参考链接:

https://learn.microsoft.com/en-us/windows/wsl/about

https://zhuanlan.zhihu.com/p/386590591

https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-vscode

https://zhuanlan.zhihu.com/p/394535900

Windows 10安装WSL并使用VSCode进行开发

WSL可以使开发人员直接在Windows上运行GNU/Linux环境(包括大多数命令行工具,实用程序和应用程序),未修改,没有传统的虚拟机或Dualboot设置的开销。

WSL 2是Linux体系结构的Windows子系统的新版本,它为Linux的Windows子系统提供动力,以便在Windows上运行ELF64 Linux二进制文件。它的主要目标是提高文件系统性能,并添加完整的系统调用兼容性。

这种新的体系结构改变了这些Linux二进制文件与Windows和您的计算机硬件相互作用的方式,但仍然提供与WSL 1(当前可用版本)相同的用户体验。

单个Linux分布可以使用WSL 1或WSL 2架构运行。每个分布都可以随时升级或降级,您可以并排运行WSL 1和WSL 2分布。WSL 2使用了一个全新的体系结构,该体系结构受益于运行真正的Linux内核。

1 安装WSL 2

1.1 Windows配置

1 启用适用于 Linux 的 Windows 子系统:打开powershell并输入:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2 检查WSL2的要求:win+R打开运行,然后输入winver检查windows版本

3 此版本需要大于1903,并且应该最好是专业版。

1

4 启用虚拟化:以管理员打开powershell输入下列命令

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

5 下载X64的WSL2 Linux内核升级包并安装

6 设置WSL默认版本

wsl --set-default-version 2

1.2 安装Ubuntu

打开Microsoft Store,搜索ubuntu然后安装。

如果没有Microsoft Store,参照3.1。

ubuntu终端打开后设置初始的用户名和密码即可。

设置root密码:

sudo passwd

1.3 配置SSH

修改配置文件/etc/ssh/ssh_config,开启下列选项

PermitRootLogin yes #允许root认证登录
PasswordAuthentication yes #允许密码认证
RSAAuthentication yes #秘钥认证
PubkeyAuthentication yes

由于自带的openssh-server没有生成密钥所以需要生成密钥文件,否则会出现sshd: no hostkeys available – exiting。

sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

启动ssh

service ssh start

如果出现“ssh: unrecognized service”,参照3.2

开机启动ssh:win+R打开运行,输入shell::startup进入开机启动项,创建wsl_ssh_start.bat,其内容为

C:\Users\用户名\AppData\Local\Microsoft\WindowsApps\ubuntu2004.exe run "sudo service ssh restart"
# 用户名为自己的用户名

设置默认root登录:以管理员打开powshell,输入以下命令。注意:用户名需要替换掉,版本页需要替换掉,如果wsl的路径不在这里可以去C:\Program Files\WindowsApps\XXX.UbuntuXXX\ubuntu版本.exe

C:\Users\用户名\AppData\Local\Microsoft\WindowsApps\ubuntu版本.exe config --default-user root

1.4 移动WSL

http://www.xfy-learning.com/2020/05/30/WSL备份与还原/

win10系统中Linux子系统默认安装在C盘,在使用过程中,其体量会越来越大,挤占C盘原本就不大的磁盘空间,影响系统运转。因此,很有必要将子系统从C盘迁移到别的磁盘。本文介绍如何利用wsl export/import来迁移Linux子系统,以及迁移过程中遇到的问题。

1.4.1 wsl命令介绍

过wsl --help查看命令介绍:

用于运行 Linux 二进制文件的参数:
    如果未提供任何命令行,wsl.exe 将启动默认 shell。
    --exec, -e <CommandLine>
        在不使用默认 Linux shell 的情况下执行指定的命令。
    --
        按原样传递剩余的命令行。

选项:
    --distribution, -d <DistributionName>
        运行指定的分发。
    --user, -u <UserName>
        以指定用户身份运行。
用于管理 Windows Subsystem for Linux 的参数:
    --export <DistributionName> <FileName>
        将分发导出到 tar 文件。 文件名可为 - 以便标准输出。
    --import <DistributionName> <InstallLocation> <FileName>
        将指定的 tar 文件作为新分发导入。 文件名可为 - 以便标准输入。
    --list, -l [选项]
        列出分发。
        选项:
            --all
                列出所有分发,包括当前 正在安装或卸载的分发。
            --running
                仅列出当前正在运行的分发。
    -setdefault, -s <DistributionName>
        将分发设置为默认值。
    --terminate, -t <DistributionName>
        终止分发。
    --unregister <DistributionName>
        注销分发。
    --upgrade <DistributionName>
        将分发升级为 WslFs 文件系统格式。
    --help
        显示用法信息。

1.4.2 子系统备份与还原

Step1: 通过wsl --list --running查看正在运行的子系统

Step2: 若有正在运行的子系统,则通过wsl -t <DistributionName>来终止其运行

Step3: 利用wsl --export <DistributionName> <FileName>来备份子系统,结果会得到一个tar归档文件。
假设有名为Ubuntu-18.04的子系统, 想要将结果文件保存为Ubuntu1804.tar
(同时指定其路径即为D:\wsl\Ubuntu1804.tar),则调用的命令为
wsl --export Ubuntu-18.04 D:\wsl\Ubuntu1804.tar

Step4: 然后利用wsl --import <DistributionName> <InstallLocation> <FileName>来恢复子系统。
例如wsl --import Ubuntu D:\wsl\Ubuntu1804\ D:\wsl\Ubuntu1804.tar(将新恢复的子系统命名为Ubuntu)

Step5(可选):使用wsl --unregister Ubuntu-18.04注销原始子系统。

2 连接VS Code

安装VS Code,安装WSL插件。然后在搜索行或者左下角都能够连接我们的WSL。

2

打开命令行的方式:上方工具栏——查看——终端。

3 问题总结

3.1 找不到Windows Store

https://blog.csdn.net/qq_36769966/article/details/107896614

以管理员身份运行powershell。

输入 Get-AppxPackage -allusers | Select Name, PackageFullName 按回车。

找到 Microsoft.WindowsStore ,将后面的一串字母复制。然后执行下述命令:

add-appxpackage -register “C:\Program Files\WindowsApps\复制内容\appxmanifest.xml” -disabledevelopmentmode
# 这里使用刚才复制的内容替换“复制内容”

等待命令完成,接下来就可以使用Windows Store了

3.2 [Ubuntu]ssh: unrecognized service

https://blog.csdn.net/Balmunc/article/details/125615498

apt install ssh
service ssh start

Windows 10安装WSL 2并使用VSCode进行开发
https://blog.fulequn.online/2022/11/Article202211252/
作者
Fulequn
发布于
2022年11月25日
许可协议