问答媒体

 找回密码
 立即注册
快捷导航
搜索
热搜: 活动 交友 discuz
查看: 125|回复: 9

一波 WSL 使用小技巧【持续更新。。。】

[复制链接]

3

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2022-12-31 18:44:36 | 显示全部楼层 |阅读模式
上两篇文章都是讲怎么在 Windows 10 上安装和配置 WSL 2。这篇文章分享我在使用 WSL 过程中积累的一些小技巧,后面如果学到新的技巧也会在本篇更新。虽然都是经验之谈,但我一次性告诉你,也省的你慢慢积累了。
本文假设你已经在 Windows 10 上配置好了 WSL 2。如果还没配置好的话,可以参考我上一篇文章 喜迎 WSL 1.0 发布,Windows 10 的 WSL 2 也可以用 systemd 了,再水一篇安装教程 - 知乎 (zhihu.com)
tips 1. 从应用商店安装发行版比用命令行快

用命令行 wsl --insall -d 可以安装指定的 Linux 发行版,这条命令要先访问一次 Github,由于国内众所周知的网络问题,这条命令大概率会被卡死。但其实 Windows 应用商店中就有所有 WSL 能用的 Linux 发行版。我们可以直接打开 Windows 应用商店搜索对应的 Linux 发行版,在图形界面上点击获取、安装。
是不是说明 Windows 应用商店没有被墙?
tips 2. 开启 systemd

进入发行版,执行如下命令:
sudo sh -c 'echo "[boot]\nsystemd=true" >> /etc/wsl.conf'即在发行版的 /etc 目录下创建一个 wsl.conf 文件,并输入了如下配置:
[boot]
systemd=true然后重启发行版,再进入。执行如下命令进行验证:
ps --no-headers -o comm 1如果输出的是 “systemd”,说明 systemd 已开启成功。
tips 3. 设置 hostname

WSL 发行版默认的 hostname 和宿主机一样。你可能尝试过用 hostnamectl 相关的命令修改 hostname,但重启后发行 hostname 又复原了。正确的姿势是在 wsl.conf 文件中写入配置。
sudo sh -c 'echo "[network]\nhostname=jammy" >> /etc/wsl.conf'记得将命令中的 “jammy” 换成你要设置的 hostname。实际就是在 /etc/wsl.conf 中写入了如下配置:
[network]
hostname=jammy然后重启发行版,让配置生效。
tips 4. 更改发行版镜像文件位置

WSL 默认将每个发行版的数据都保存在 C 盘,其中最大的文件是一个后缀为 .vhdx 的镜像文件。这个文件里是 WSL 发行版的文件系统,相当于发行版的磁盘,随着我们的使用,这个文件的大小会持续膨胀,一般至少都是几个 G。


如果你像我一样,C 盘空间很紧张,可以用下面的导出导入操作将发行版的镜像文件移出 C 盘,为 C 盘节约点空间。
下面以 Ubuntu-18.04 为例,记得将下面命令行中的 ”Ubuntu-18.04“ 换成你要操作的发行版。
step 0. 关闭所有发行版

不知道为啥,导出操作需要先关闭所有正在运行的 WSL 发行版。
wsl --shutdownstep 1. 导出镜像

mkdir d:/18.04
wsl --export Ubuntu-18.04 d:/18.04/18.04.vhdx --vhdd:/18.04/18.04.vhdx 表示将 Ubuntu-18.04 导出到 D 盘的 18.04 目录下,文件名为 18.04.vhdx。--vhd 选项表示将将发行版导出为 .vhdx 文件,不指定该选项则会导出一个 tar 文件。
step 2. 注销并删除发行版文件系统

wsl --export 只是导出了一份发行版的镜像文件备份,并不会从 C 盘将其数据删除,下面的注销命令才会。
wsl --unregister Ubuntu-18.04执行完该命令,你的 C 盘空闲空间应该变大了一些,执行 wsl -l -v 也看不到 Ubuntu-18.04 了。
step 3. 导入镜像

下面的命令可以将我们刚导出的镜像文件导入到 WSL 中。
wsl --import-in-place Ubuntu-18.04 d:/18.04/18.04.vhdx--import-in-place 是原地导入,原地使用的意思。Ubuntu-18.04 是要导入的发行版名称,记得改成你正在操作的发行版。d:/18.04/18.04.vhdx 是前面导出的镜像文件路径。
导出完成后,执行 wsl -l -v 会发现发行版 Ubuntu-18.04 又回来了。通过这种导出-注销-导入的操作,我们成功将发行版的镜像文件换了一个存储位置。同理,你还可以用这种骚操作定期备份发行版的文件系统,例如做某个危险实验之前导出其镜像文件备份一下,后面出现问题就注销并导入备份的镜像文件。
注意,如果你有多个镜像文件需要 --import-in-place,则每个镜像文件都必须有自己单独的目录,同一个目录下会报错:
提供的安装位置已在使用中。           Error code: Wsl/Service/0x80070050
tips 4. 更改默认用户

进行前面的镜像导出导入操作后,再用 wsl -d 启动发行版,会发现当前用户身份变成了 root。虽然可以在进入发现版时使用 wsl 命令的  --user 选项指定要使用的用户身份,但总归不方便。或者你在发行版中创建了一个新用户身份,想让新用户身份成为默认,则可以用下面的命令设置默认用户。
在 windows 中打开终端,执行:
ubuntu1804 config --default-user chao上面的 ubuntu1804 是 Ubuntu-18.04 对应的管理命令。WSL 会在当前系统用户的 \AppData\Local\Microsoft\WindowsApps 目录下为每个当前安装的发行版都创建了一个管理命令,例如发行版 Ubuntu-18.04 对应的命令为 ubuntu1804.exe,debian 对应的命令为 debian.exe。下图是我系统上的多个发行版对应的管理命令。


可以看出我当前安装了四个 WSL 发行版:Debian、Ubuntu-18.04、Ubuntu-20.04、Ubuntu-22.04。
你需要将 ubuntu1804 config --default-user chao 中的 ”ubuntu1804“ 替换成你正在操作的发行版对应的命令,将  ”chao“ 替换成你的希望设置的默认用户名。
回复

使用道具 举报

0

主题

5

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-31 18:45:23 | 显示全部楼层
导入的时候也可以不使用 “原地导入”,而是直接使用 import 命令,这样可以自定义导入后发行版的名称,也可以方便的复制出多个发行版。

但是这样导入的发行版,无法使用命令行方式更改默认用户,需要使用 wsl.conf 中的 [user] 字段来配置 。
回复

使用道具 举报

1

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-31 18:45:57 | 显示全部楼层
更改镜像的位置也可以去改注册表,这样不用导出导入
回复

使用道具 举报

0

主题

6

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2022-12-31 18:46:41 | 显示全部楼层
改注册表太危险了,还是用公开的接口比较安全
回复

使用道具 举报

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-12-31 18:47:22 | 显示全部楼层
win10有没有我不清楚,win11的话,要是想把wsl从c盘移到d盘,直接在软件管理那里,可以看到wsl,然后点击旁边的移动到,选择d盘就完事了,直接全部移动过去[飙泪笑]
回复

使用道具 举报

1

主题

3

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-31 18:48:14 | 显示全部楼层
开启wsl 是要启动 “虚拟机平台”功能,但是此功能导致笔记本无法休眠,请问又遇到吗?有什么解决方案?
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-31 18:49:11 | 显示全部楼层
我去,果然有,打开设置-应用,点击应用就能看到“移动”按钮
回复

使用道具 举报

1

主题

3

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-31 18:49:36 | 显示全部楼层
牛逼啊!
回复

使用道具 举报

0

主题

6

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-12-31 18:50:25 | 显示全部楼层
安装的时候直接下载安装包,debian.appx这类的,改后缀为zip,找个地方解压即可
回复

使用道具 举报

4

主题

9

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2022-12-31 18:50:55 | 显示全部楼层
我也发现,解决不了,现在只能睡眠
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver| 手机版| 小黑屋| 问答媒体

GMT+8, 2025-7-8 05:54 , Processed in 0.095490 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表