前言

之前一直是在用vmware来跑linux,但是最近在接触一下机器学习的相关内容,想用显卡进行训练,又不太想装双系统。*【主要是硬盘实在分不出地方来了,划分区比较困难,有条件建议还是双系统】*正好最近有朋友跟我提起了wsl这个东西,说是微软已经弄的比较好了,可以在上面直接走linux环境调显卡训练,就想着试一试。顺便在这里记录一下自己的安装调试经历和一些踩坑记录。


以下内容,没有特殊提及是一代wsl的时候所有‘wsl’均指代wsl2。


一、WSL是什么?

Windows Subsystem for Linux

但是我觉得搜过来的应该也都是知道的,简单来说就是微软自己出的一个系统支持比较好的能在windows环境下打开的linux系统。

wsl1可以理解为微软想办法把linux的应用和框架能在window上带入运行。

wsl2则是直接利用虚拟化等一系列手段,反正就是和虚拟机差不多,但是比vmware吊,因为这个linux可以直接和window系统对接和调用。

百度百科:https://baike.baidu.com/item/wsl/20359185?fr=aladdin
微软官方:https://learn.microsoft.com/zh-cn/windows/wsl/

二、启用WSL2

1. 首先确定自己的windows系统版本

WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。 检查你的 Windows 版本,可以通过按Windows 徽标键 + R,然后键入 winver,选择“确定”。 (或者在 Windows命令提示符下输入 ver 命令)

win+R
比如我这个就是内部版本1904,所以是可以装wsl2的。
我的

2. 打开系统的虚拟化等一大堆功能

打开电脑的“启用或关闭windows功能”这个设置。就是在左下角的搜索里“功能”两字应该就行。
在这里插入图片描述
打开以后是这样的一个窗格。
在这里插入图片描述
启用Hyper-V适用于Linux的Windows子系统虚拟机平台这三个选项,全点成勾就行了。点击确定,windows会自动帮你安装和开启这些功能,安装完了需要重启一下!

3. 切换默认模式至WSL2

官网说是自动下系统的应该就会是wsl2,但是保险起见设置一下。
以管理员权限运行powershell

wsl --set-default-version 2

应该就没问题了,这样的话后续下载的系统包就会默认装成wsl2模式的。


至此,我们可以理解为’虚拟机框架‘(可以理解为vmware软件这个层面)装好了,接下来在这个框架上装不同系统的发行版(虚拟机)了。


三、安装WSL虚拟机–Ubuntu1804

1. 下载安装

一般来说是三种下载安装方式…但其实都差不多,应该是都会默认安装在C盘下的一个地方(具体的我没细究也不太清楚)。我看网上说方法2可以直接把虚拟系统装在安装包所在路径,我试了好像不太行。没关系这部分后边我会写怎么迁移这个虚拟机到其他的盘或者路径下,避免占用C盘空间。

- -方法1 Microsoft store安装

打开电脑上的Microsoft Store,搜你想要的LINUX发行版,直接点击就可以傻瓜式安装。
在这里插入图片描述

- -方法2 WSL官网下载发行版

在某些情况下,你可能不想或者无法使用 Microsoft Store 安装 WSL Linux 发行版。 那可以手动从Microsoft提供的网址上下载所有支持的WSL发行版本。
WSL支持的发行版本

使用以下链接来下载并手动安装 Linux 发行版:

下载发行版: https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#downloading-distributions

下载完之后会得到一个.appx后缀的文件,双击就可以安装。

- -方法3 使用PowerShell的WSL指令安装

还是以管理员身份运行PowerShell
使用以下命令,可以看到目前wsl支持的可以安装的LINUX发行版本。

wsl -l -o

WSL支持的发行版本
然后选择你想要的版本,使用下面这命令来安装。

wsl --install -d <分发名称>

分发名称就是上面那个图前面NAME那列的名字,例如我要装Ubuntu18.04LTS的版本,我就按下面这样运行。

wsl --install -d Ubuntu-18.04

等待下载安装完成即可。

2. 设置 Linux 用户名和密码

安装好后会出现一个这个提示,让你输入用户名和密码,按步骤输入就行。这个用户名就是你这个Linux虚拟机的用户名和密码,和Windows的无关。
输入用户名
如果在输入用户名的时候报错了,大概率是用户名不符合检查规范,换一个合适的用户名就行。我知道的是不能用大写字母,全小写和数字应该是没问题的。

其他的官网说明挺详细的,直接搬过来了。

  • 此用户名和密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
  • 请注意,输入密码时,屏幕上不会显示任何内容。 这称为盲目键入。 不会看到正在键入的内容,这完全正常。
  • 创建用户名和密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。
  • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
  • 在 WSL 上运行的每个 Linux 发行版都有其自己的 Linux 用户帐户和密码。每当添加分发版、重新安装或重置时,都必须配置一个Linux 用户帐户。

3. 可以稍稍验证一下

至此,WSL2的虚拟机算是安装完了。不放心的可以用uname -a指令验证一下看看,应该是可以看到系统信息。
uname-a
在任务管理器中,也可以看到一个Vmmem的进程,这个就是wsl虚拟机相关的进程。
vmmem

4. 怎么打开

如果需要打开虚拟机终端的话,第一种方式是直接在Windows菜单里启动Ubuntu的终端,或者用搜索选择打开也没问题。
windows菜单打开了虚拟机
第二种可以在PowerShell中直接打wsl可以打开默认虚拟机终端。
在这里插入图片描述
当你是有多个版本(分发)的虚拟机时,你可能要用wsl -d <分发>来运行指定版本虚拟机的终端
在这里插入图片描述
!!推荐第一种!!
直接启动ubuntu终端会以ubuntu根目录作为当前地址,用powershell启动的终端会以powershell的当前地址作为终端的当前地址。操作不慎可能会删掉电脑里的一些资料。。。

5. 怎么退出

在ubuntu终端里使用以下指令可以退出ubuntu虚拟机。
只是退出了该终端!并不是关闭虚拟机!!!
两种方式任一即可

exit
# 或者
logout

退出终端

6. 一些有必要掌握的WSL命令

这些命令都是在PowerShell中用的!不是在Ubuntu终端里用的!!

- -关机!

wsl虚拟机不是当你叉掉所有窗口之后就会关机,而是类似于内核在后台运行那种,同时每个终端其实没有权限直接操作内核关机。例如在ubuntu终端中使用shutdown命令或是reboot命令其实都是不被允许的。
无法关机
因此要在比虚拟机终端更高一层的powershell中使用指令对虚拟机进行关机。

# 关闭所有版本(分发)的虚拟机
wsl --shutdown

# 关闭指定版本(分发)的虚拟机
wsl -t <分发>

- -查看分发状态!

有的时候需要了解一下该电脑上装了那些分发版本,或者这些分发是否在运行,可以使用以下指令。

# 查看当前所有分发虚拟机的状态
wsl -l --all -v

例如我就可以看到我装了一个名为Ubuntu-18.04的虚拟机,目前是在关机状态。

wsl状态*号指的是这个是默认打开的虚拟机,state说明它正在运行或停止,version指的是这个分发以wsl2运行而不是wsl1。

- -设定默认打开的虚拟机

wsl -s <分发>

将指定分发设置为默认打开的虚拟机。

- -导出虚拟机包

# 导出虚拟机分发至一个指定路径
wsl --export <分发> <储存包路径>

最后指定的文件路径一定要是一个.tar压缩包!
例如
导出虚拟机
导出后就可以在你导出的目录下看到导出的虚拟机,这个文件可以发给别的支持wsl2的计算机,让别的计算机加载为虚拟机使用。
wsl导出文件

- -导入加载虚拟机包

# 导出虚拟机分发至一个指定路径
wsl --import <分发名字> <安装位置> <储存包路径>  --version <wsl版本>

最后指定的文件路径一定要是一个.tar压缩包!
例如在这里插入图片描述
导入请确认,该电脑之前没有相同的分发名字,不然会导出失败。
可以看到能读取到这个名字的虚拟机(分发)了。
在这里插入图片描述

- -删除虚拟机

# 注销分发并删除根文件系统。
wsl --unregister <分发>

四、提高使用体验

1.迁移安装好的虚拟机到其他位置!!!!

wsl会把虚拟机默认安装在C盘的某个路径下,具体位置我也不太清楚 ,反正就是会占用C盘空间,这显然不是我想看到的。因此我们要尝试将虚拟机移到其他地方。
因为导入虚拟机时可以指定安装位置,所以我们的大概的步骤就是,将旧虚拟机打包导出,删除旧虚拟机,将导出的包导入到指定路径下作为虚拟机,用的就是前面提到的wsl指令。

我觉得看个我的示例应该就能懂了。。

# 把我的名为‘Uuntu-18.04’的虚拟机导出为F盘下ubuntu1804new.tar文件
wsl --export Ubuntu-18.04 F:\ubuntu1804new.tar

# 注销名为‘Uuntu-18.04’的虚拟机,也就是把旧板的给删了。
wsl --unregister Ubuntu-18.04

# 导入一个虚拟机,设定名为Ubuntu-18.04(也可以为其他)
# 将其安装在F盘的WSL2文件夹里, 安装的导入包为F盘下的ubuntu1804new.tar文件
# 指定该虚拟机为WSL2
wsl --import Ubuntu-18.04 F:\WSL2\ F:\ubuntu1804new.tar --version 2

# 配置ubuntu1804版本的虚拟机默认登录用户名为jarvis
ubuntu1804 config --default-user jarvis

然后就OK啦,正常启动就可以。

2.使用微软的“终端”应用

微软官方退出了一款终端程序,其中集合了对cmd、powershell,wsl终端等的调用。可以以选项卡的方式多开窗口。个人感觉用起来也还不错。
可以在Microsoft store直接搜索下载,也可以在官网下载。
Windows Terminal

官方地址:https://learn.microsoft.com/zh-cn/windows/terminal/install
官方的介绍和使用说明也在上面这个链接里,有兴趣的可以看一下。

3.修改下载镜像源

ubuntu的默认下载镜像源在国内会下的比较慢。。建议换源。

清华源使用帮助:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

省流就是直接运行下面这两行

sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

之后更新包列表

sudo apt-get update

就ok啦

4.修改主机名、默认登录用户

需要通过修改wsl.conf配置文件来实现,
wsl.conf是可用于wsl和wsl2的配置文件,可以通过这个文件对wsl虚拟机做一些设定。

wsl配置文件说明:https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config

装好后的wsl会默认用你的电脑的设备名称作为主机名(就是@后面的部分)。当你在windows中更改设备名称时也会对应更改。如果觉的看着观感不好或者有其他特殊需要也可以单独更改wsl主机名并与windows不同。
默认使用设备名称
更改方法,编辑wsl.conf文件

sudo vim /etc/wsl.conf

有可能是个空文件需要自己创建。
添加以下内容。
hostname后面跟的是自己想要的主机名
再下面内行是配置的默认登录用户

# Set the hostname
[network]
hostname = WSL2

# Set the user when launching a distribution with WSL.
[user]
default = jarvis

文本编辑效果如下:
修改wsl.conf
修改完成后,回到powershell,用wsl --shutdown关机后,再开机即可。
可以看到主机名发生了变化。
修改主机名结果

5. 把wsl根目录映射为网络驱动器

wsl虚拟机的根地址在\\wsl$的网络地址下,打开资源管理器,在上方输入这个地址可以直接跳转到。
wsl网络打开之后可以看到是我wsl虚拟机的根目录。
ubuntu根目录
在这里可以直接对ubuntu文件进行读写,包括进行一些复制粘贴删除等等操作。
但每次这样比较麻烦,所以考虑将其映射为一个储存器。
映射网络驱动器
打开“此电脑”中有一个选项叫做映射网络驱动器,可以在这里直接输入该地址。
wsl地址
点击浏览之后可以更进一步直接定位在这个ubuntu虚拟机的根目录下。
更进一步选择
点击完成,就可以在此电脑中看到这个驱动器啦,和其他电脑硬盘一起显示。
在虚拟机开机的时候直接打开这个驱动器就可以实现跳转啦。
此电脑


声明

该文章是自己学习摸索过程中得出的一些结论,内容不一定百分之百正确,描述语言也不一定专业,若有错误请大佬评论区指正,谢谢!

GitHub 加速计划 / ws / WSL
17.09 K
797
下载
Issues found on WSL
最近提交(Master分支:1 个月前 )
86fa5afa 2 个月前
e899d0b7 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐