windows11配置wsl2虚拟linux环境

wsl( Windows Subsystem for Linux )是microsoft官方为windows开发的模拟Linux方法。避免了虚拟机vmware的性能损耗开销,或者双系统两者不能同时运行的问题。wsl2似乎可以满足大部分Linux需求。方便且优雅!

安装wsl2安装方法

官方的介绍文档:

WSL 的基本命令 | Microsoft Learn

安装wsl只需要在windows终端输入一条指令

wsl --install

等待几分钟,会安装wsl工具和默认的Linux系统。

也可以指定安装的Linux系统

wsl --list --online  //查看可安装的Linux版本wsl --list --verbose  //查看已安装Linuxwsl --install    //安装指定Linux版本wsl --set-default  //设置默认 Linux 发行版

通过wsl运行Linux

wsl --distribution  --user   //运行特定的 Linux 发行版

可能的报错无法运行Linux

安装完后,运行Linux,一般出现error 0x80370114。

需要在Windows中, “设置”->“应用”->“可选功能” , 下滑至菜单最下面,找到“更多windows功能”选项 。开启“适用于Linux 的Windows子系统”功能。

参考:

WIN11按照官方文档安装WSL2时出现error 0x80370114_半路杀出来的小黑同学的博客-CSDN博客

其他设置迁移wsl位置

因为wsl默认是在C盘。出于空间问题,移动到d盘。

步骤是:导出系统 ——删除系统——导入系统并重新设置存储位置—— 修改默认登录用户

wsl --export Ubuntu D:\wsl\ubuntu.tar  #即 wsl --export  wsl --unregister Ubuntu  #删除目录wsl --import Ubuntu D:\wsl\Ubuntu D:\wsl\ubuntu.tar  --version 2  # 即 wsl --import      WSL版本号Ubunatu config --default-user   //修改默认登录用户

参考:

通过WSL2搭建Pytorch1.10+CUDA11.4+NVIDIA Driver深度学习框架全过程 – 简书 (jianshu.com)

磁盘挂载

需要和系统盘不一样的磁盘(挂载不同分区不行)。这个没有配置。

Linux配置apt换源

国内的镜像服务器,有 阿里源 ,清华源,中科大源。

apt镜像源配置文件是 /etc/apt/sources.list 。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak      #备份sudo vim /etc/apt/sources.list      #编辑源配置文件

不同的Linux版本代号,需要用不同的源。不然后面在apt update和下载软件时,会出现各种问题。(update后有wrong,gedit下载不了,gcc下载后无法编译源文件,报错找不到stdio.h等,实际上是源问题导致下载不兼容的软件)

正常的话,reading后面是没有 wrong的。

查看系统代号

lsb_release -a    #查看系统版本代号uname -r   #查看内核版本,内核不对可能也有问题

我的Ubuntu的发行版是jammy,下面的换源地址就不行,它的发行版是 bionic。可以直接把bionic 改为 jammy,懒的可以直接百度jammy的镜像源地址。

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

找到的jammy源。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

卸载换源前下载的软件

sudo apt-get remove XXXsudo apt-get update

环境配置

一般的话,用apt install 安装 g++,然后用vscode写代码,用Linux工具编译。

编译时需要的硬件驱动,是在物理机(Windows)下安装。

vscode配置WSL插件

在vscode下载官方的WSL插件。现在已经改名叫WSL了。

连接方法1

vscode中,快捷键ctrl+shift+p,可以打开插件控制面板,调用插件功能,在WSL中重新打开文件夹。

这个的优点是可以打开Windows下的目录,对应的速度慢点。这种方法更灵活。

在终端通过指令方式编译程序并运行。

连接方法2

也可以在远程资源控制器中,选择WSL目标,进入ubuntu。

进入之后的界面如图

但是这个相当于进入了Linux目录中,只能在Linux中建立文件和目录,速度也快些。

其他问题

讲道理,应该是可以直接用vscode的运行按钮,直接编译文件的。但是要处理配置文件,而vscode的配置文件launch.json,我目前还是看不懂的。不然会更方便。