0x01 写在前面
笔者认为似乎应该在前面写点什么,但是又不知道写点什么,于是就写了这段话。或许笔者正在思考怎么写这段话。
关于 WSL
有什么好,或者有什么比较方便的地方,这里不多赘述。
多图预警。
0x02 官方教程配置环境
加入体验计划
首先进入 设置
→ 更新和安全
→ Windows预览体验计划
然后选择开始,加入此计划。然后选择 Dev
,然后一路默认。
如果点进来是一片空白,根据官方提示,需要修改一个地方:
在设置中搜索
诊断数据
,打开诊断和数据
,修改为可选诊断数据
即可出现上述的界面,而不是白的了。可参考。
2.1.2 更新系统版本
重启之后,进入设置中的 Windows 更新
,在下图所示的 高级选项
中选择 更新 Windows 时接受其他 Microsoft 产品更新
。
然后返回更新页面,开始进行更新,这个过程可能会反复很多次,耗时也比较久。
2.1.3 检查系统版本
更新完毕后,需要检查当前的系统版本是否满足要求了。 按住 win
+ R
输入命令:winver
,即可以查看下图的信息。
WSL要求系统版本 2004 以上,微软官方说 OS 内部版本为 19041 以上。
而想要安装 CUDA,则要求系统不仅仅是版本 2004, 并且 OS 内部版本必须为 20145 之后。
所以,读者根据自己的需求自行决定。
2.1.4 打开 WSL 选项
2.1.4.1 命令行打开 WSL
以管理员权限运行 PowerShell
并输入下面的命令,若提示是否要重启,则选择暂时不重启。
1 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux |
两个命令都运行完毕后,手动重启。
2.1.4.2 检查启动是否成功
重启之后,在 控制面板
→ 程序
→ 启动或关闭Windows功能
检查是否开启了 适用于Linux的Windows子系统
。(有可能是英文
确认开启无误后,在管理员 PowerShell
中运行下面命令
1 | dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart |
然后重启。
2.1.5 下载 msi 安装包
从官方下载对应的安装包文件,然后直接一瞬安装。唯一需要注意的就是自己系统的版本和CPU架构。
msi 安装包地址:download。
然后双击运行
一路默认就好
2.1.6 设置默认 WSL2
然后在管理员 PowerShell
中通过如下命令设置默认版本为 WSL2
1 | wsl --set-default-version 2 |
lxrunoffline 工具安装
下面将使用工具 lxrunoffline
进行后续的安装,若读者只想从官方一样用微软商店进行安装的话,移步官方教程,后面就比较简单。
lxrunoffline 简介
lxrunoffline 工具是一个 GitHub 上开发的很好用的管理工具,使用这个工具具有众多好处:
可以安装任意发行版到任意目录、转移已安装的 WSL 目录、备份 WSL、设置默认用户和修改环境变量等操作,完全碾压 WSL、wslconfig 这些简陋原生管理命令。
lxrunoffline 的安装
虽然 lxrunoffline
从笔者看的博文来看拥有多重安装方式,但是个人觉得其他的方式需要额外配置很多环境或者工具。不如直接手动安装来得好和轻便。
其他方式有如 使用 Chocolatey 安装, 使用 Scoop 安装。这部分读者有兴趣可以参阅这个博文。
下载 lxrunoffline
首先是下载 lxrunoffline
,地址。
然后选择合适的版本,我也不知道区别,只是我认识 mingw 所以就选择了这个。下载解压之后里面有个 LxRunOffline.exe
,然后将 LxRunOffline.exe
放到某一个你觉得合适的地方,然后为了方便,建议添加环境变量。
然后就可以愉快在命令行中使用这个命令了 lxrunoffline
。
至此 lxrunoffline
安装完毕。
lxrunoffline 命令介绍
细心的读者已经发现上图中已经显示了一种查看help的方式,直接缺省就会打印help信息,这里简要列举了部分。
1 | l , list - 列出所有已安装的发行版。 |
更多使用功能和常用功能请参阅这里。
发行版的安装
distros 下载
使用此工具可以按照任意版本的有效的 WSL 发行版本。这里我选择了 Ubuntu18.04
,本来选择 kali
的,但是 kali
安装失败了。于是还是就使用 Ubuntu
了。
官方发行版文件列表在这里。点击选择一个合适的版本,这里笔者选择了 Ubuntu18.04
。ARM
架构的朋友自己选择对应的版本。
解压安装
下载的压缩包解压之后里面有一个 install.tar.gz
,然后就可以安装了。
为了避免不必要的麻烦,以下都是管理员权限在运行命令
先在你想存储此 WSL
的地方建立合适的文件夹。因为笔者有多个不同版本的 WSL
,为了方便在E盘下建立了一个目录 WSL
,然后建立了一个文件夹 Ubuntu18CUDA
用于存储此 Ubuntu18.04
的发行版。
上述准备完毕后,然后在 PowerShell
中运行下面的命令,
1 | # lxrunoffline i -n <WSL名称> -d <安装路径> -f <安装包路径>install.tar.gz |
如下图所示:
设置用户
为了方便我们需要设置用户,笔者个人比较喜欢随时都是 root
,但是这个不怎安全。
设置 root 为默认用户
root
用户的 UID
为 0
,所以可以直接在 PowerShell
输入以下命令进行设置:
1 | lxrunoffline su -n <WSL名称> -v 0 |
设置默认用户为 root
设置普通用户为默认用户
使用 lxrunoffline
新安装的 WSL
默认是以 root
用户登录,如果你需要默认以普通用户进行登录,就需要进行下面的操作。
首先运行 WSL
1 | lxrunoffline r -n <WSL名称> |
输入以下命令创建用户:
1 | useradd -m -s /bin/bash <用户名> |
然后对该用户设置密码,输入命令后会提示输入两次密码。
1 | passwd <用户名> |
授予该用户 sudo
权限。
1 | usermod -aG sudo <用户名> |
为了保持和微软商店安装的效果一致,这里提及的方法是把用户添加到 sudo 用户组。其他关于 sudo 权限的设置方法以及免密设置可参考《Linux 中授予普通用户 sudo 权限的正确方法》这篇文章。
查看用户 UID ,一般是 1000
。
1 | id -u <用户名> |
按 Ctrl
+D
退出 WSL
,在 PowerShell
中输入以下命令:
1 | lxrunoffline su -n <WSL名称> -v 1000 |
进入验证
通过下面命令,可以启动一个指定的发行版
1 | lxrunoffline r -n <WSL名称> |
然后一瞬进入,由于笔者设置了就是管理员root,所以不用sudo。
于是到这里 WSL
就安装完毕啦,你可以拿去玩好玩的了。
修改配色
如果自己 Windows Terminal
有配色的应该就不用修改配色了,没有的,想添加 Windows Terminal
配色的可以参考这个。
若无 Windows Terminal
或者只是想在修改这个终端的配色(事实上通过 Windows Terminal
也可以实现,但是这里记录另一种方法。)
编辑文件 ~/.bashrc
来实现
1 | vim ~/.bashrc |
然后在最后面添加下面的代码
1 | PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32;1m\]\u\[\033[00;32;1m\]@\[\033[01;32;1m\]\h\[\033[00;31;1m\]:\[\033[00;34;1m\]\w \[\033[01;33;1m\]\$ \[\033[0;37;1m\]' |
然后使之生效 source ~/.bashrc
。
然后就是这个样子
如果 Windows Terminal
本身有配色,也可以叠加,大概是这个样子
下面还有更多的颜色对应方案,读者可以自行设置自己喜欢的。
颜色代码:
1 | 字背景颜色: 40–49 字体颜色: 30—39 |
ANSI控制码:
1 | \033[0m 关闭所有属性 |
默认的特殊符号所代表的意义:
1 | \d :代表日期,格式为weekday month date,例如:“Mon Aug 1” |
桌面安装
根据参考的教程,还可以在 WSL
中安装远程桌面,通过 Windows 的远程桌面进行连接,Windows 不需要再安装其他东西。还是挺香的。
使用了xrdp+xface4,参考链接为:here。
笔者暂时没有这个需求,就没有整。
0x03 遇到的坑
使用此方法搭建可能会遇到一个坑:lxrunoffline 可能没认识 WSL2
所以设置的 WSL2
默认版本可能就没有生效,按照的版本就是 WSL1
的,所以如果某些要求2的版本(如对 CUDA
的支持)则需要先将其升级为 WSL2
的才可以。
这里部分请参考另外一篇。
0x04 总结
东西确实不错,比虚拟机启动快,随时可以切换,文件系统和Windows共享,可以随便迁移,也可以开启桌面通过远程桌面进行连接,可以保存快照,WSL2
还可以使用 CUDA
了。我想除了某些神奇病毒的研究需要使用虚拟机以进行隔离意外,我暂时想不到不用 WSL
的地方了。
总之,我局的很不错。
0x05 参考
lxrunoffline+wsl: https://p3terx.com/archives/manage-wsl-with-lxrunoffline.html
wsl2 官方教程: https://docs.microsoft.com/en-us/windows/wsl/install-win10
配色参考: https://blog.csdn.net/weixin_36778746/article/details/101150231
Windows Terminal 配色参考:https://zhuanlan.zhihu.com/p/163765431