@文章首版
前言
什么是WSL呢?引用官网“适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。”简单说就是开销小了,但需要满足的Linux的基本功能都有。wsl官网
一.Windows上的基本准备
1.使用Windows搜索功能搜索“启用或关闭Windows功能”
2.勾选以下选项
3.通过Microsoft Store软件下载Ubuntu版本或者使用Windows终端下载Ubuntu版本(这个方法比较慢) ,我这里使用的Ubuntu22.04。(这一步不是必须,但创建一个新的Ubuntu是必须的)
1 | wsl --list --online @查看可以安装的发行版本 |
下面是展示的例子:
二.WSL的常用命令和存储转移
1.常用命令
1 | wsl --set-version <distribution name> <versionNumber> @设置指定的发行版使用wsl1还是wsl2。DistributionName=发行版本名字,versionNumber=版本号1,2(目前仅2个版本) |
2.wsl的存储转移
1 | wsl --export <Distribution Name> <FileName> @导出wsl,DistributionName=同上,FileName=保存的文件(.tar后缀) |
三.WSL的GUI功能
1.下面是对比Ubuntu22.04和Ubuntu18.04的gitk显示。这也是我为什么选择22.04版本的原因。这个可能是字体的粗细影响,应该也是可以调整,不过我想会挺麻烦,为了省事。直接安装22.04比较好用。至于其他的就不用展示了,gitk如果可以使用大家下载好相关的gui程序应该也可以使用。
2.正常来说安装成功就可以使用wsl的gui功能。但我这里例举一些可能出现问题。
(1)官网上要求的wsl内核版本,这个是需要的。一般使用wsl –update命令更新到最新就行。
(2) /tmp/.X11-unix连接文件出现问题,重新连接一个/mnt/wslg/.X11-unix 文件就可以。
(3)如果出现/mnt下没有wslg文件夹的情况下,更新windows的系统版本。将他更新到最新就行。(这不是一个常见的问题,但遇到后可能很难找到解决方案,我这里也当作记录下自己的解决方法。)
四.WSL连接USB
1.首先windows上安装usbip.exe程序。(这里需要使用wsl2版本)
(1)下载其中的msi文件,并安装: 开源usbip-win项目.
(2)如果有winget工具,windows终端上使用以下命令就行
1 | winget install --interactive --exact dorssel.usbipd-win @使用Windows终端下载 |
2.接下来需要在usb上安装
方式(1)20.04及以下的版本使用以下命令:
1 | sudo apt install linux-tools-5.4.0-77-generic hwdata |
方式(2)22.04及以上(其实其他版本也是可以这样使用,只是目前还没尝试)
1 | sudo apt install linux-tools-5.15.0-52-generic hwdata #因为22.04上面没有5.4.0-77版本,我选择了一个最高版本,也可以选择其他版本 |
3.连接一个usb设备:
1 | usbipd wsl list @windows终端上使用这个命令查看有哪些usb设备 |
对比,然后使用命令(windows终端)
1 | usbipd wsl attach --busid 1-1 @1-1是设备ID,根据上面的打印,换成自己添加的设备ID |
wsl的终端上(需要先输入以上命令连接成功后,以后再连接就可以使用wsl上连接):
1 | usbip list -r $HOSTNAME.local #查看已连接过的设备信息 |
断开usb,windows终端上输入以下命令
1 | usbipd wsl detach --busid 1-1 @断开USB设备,替换成自己的ID |
#######注意:如果没有加入这一行就拔出usb,可能会出现鼠标旁边不间断画圈(一直有usb设备以鼠标的形式在使用)。这时候使用前面提到的wsl –shutdown,关闭所有的wsl发行版即可恢复正常。
五.WSL设置默认启动用户
一般使用import导入的方式,启动wsl会默认是root用户。以下提供几种方式,设置默认启动的用户。
1.使用windows的命令,没有卸载wsl的发行版可用,卸载后只有看运气,版本是否一致。
1 | <DistributionName> config --default-user <Username> @DistributionName=同上,Username=自己wsl发行版的用户名字 |
2.更改/etc/wsl.conf文件,可以省去麻烦,以后都不用再改。
1 | echo -e "[user]\ndefault=$Username" >> /etc/wsl.conf #Username=同上,然后重启wsl就行了 |
3.更改注册表。
(1)使用win+r,输入regedit,打开注册表。
(2)打开下面注册表的路径
1 | 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss //注意这不是命令,是注册表路径 |
(3)找到下面的DefaultUid,更改为10进制的1000,然后重新启动wsl就可以了。0是root用户,1000一般是自己创建的用户。
1 | cat /etc/passwd #可以查看自己的用户ID是多少,根据自己的用户名对应的ID更改 |
(4)展示添加一个csdn的账户名,并默认启动这个账户
#######注意:前面所提到的windows终端大多需要管理员方式打开,最好都使用管理员方式打开。如果不好分辨哪个是windows上的命令和Linux上的命令。可以根据我后面添加的注释命令,@表示windows终端的注释,#表示Linux上的注释。