WSL开发环境搭建采坑记录
记录
24.06.09修改 新增安装后迁移到其他盘的方法
1.配置win
确保以上打开,或者直接用命令行配置:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2.安装wsl(以下两种方法均可)
大致对比下wsl两个版本区别,详细了解见https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions
2.1 命令行
在管理员 PowerShell 或 Windows 命令提示符中输入此命令,然后重启计算机来安装运行适用于 Linux 的 Windows 子系统 (WSL) 所需的全部内容。
wsl --install
2.2 官网应用
点击wsl下载进行下载,然后点击安装
2.3 WSL常用命令说明
- 使用
wsl --install
命令安装的新 Linux 安装将默认设置为 WSL 2,之后连接USB驱动会在该版本上进行。 wsl --set-version
命令可用于从 WSL 2 降级到 WSL 1,或将以前安装的 Linux 发行版从 WSL 1 更新到WSL 2。wsl -l -v
查看 Linux 状态(运行和挂起)和版本是为 WSL 1 还是 WSL 2 。- 要更改版本,请使用
wsl --set-version <distro name>
2 命令将<distro name>
替换为要更新的 Linux 发行版的名称。 例如,wsl --set-version Ubuntu-22.04 2
会将 Ubuntu
20.04 发行版设置为使用 WSL 2。 wsl --shutdown
命令用于关闭子系统wsl -s <linux_name>
设置默认分发版版本
3. 安装子系统
打开 Microsoft Store,并选择 Linux 版本,正常获取安装就可以,下载时长和网络关系挂钩,出现失败多试几次。
- 首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会提示等待几分钟,提示成功可直接关掉;未来的所有启动时间都不到一秒。
避坑:
1.如果提示一些错误码,导致卡住,大部分原因都是WSL没有安装或者win子系统和虚拟平台没有打开导致,可以将安装WSL步骤重复一遍。
2.先不要着急换源,后续连接usb有大坑。 正常安装好后,就可以愉快的使用了,打开终端,在新打开窗口即可看到子系统选项,打开就可以用了,同时计算机会出现单独的linux文件目录,可以共同复制粘贴,WSL
2兼容性更强。
注:默认权限为root,更换方法:打开终端,使用命令ubuntu config --default-user root
即可更换,其中ubuntu
为安装子系统版本,root
为要更换的用户名,一般在安装时会设置,忘了的话,在子系统里执行whoami
看下用户名称。
4. VScode远程连接配置
- 此时默认开发环境搭建完成,可在子系统内部命令行可进行编译开发。 打开VScode
- 安装好1插件后,点击2指向的地方,会提示打开文件夹,相应的开发环境打好后,可直接打开终端进行编译。
5. USB设备连接子系统
5.1 前提条件
- 运行 Windows 11(内部版本 22000 或更高版本)。 (可提供 Windows 10 支持,请参见下面的注释)
- Linux 发行版已安装并设置为 WSL 2。
- 运行 Linux 内核 5.10.60.1 或更高版本。
注:若要检查 Windows 版本及内部版本号,选择
Win + R
,然后键入“winver
”,选择“确定” 。
可通过选择“开始”>“设置”>“Windows 更新”>“检查更新”
来更新到最新的 Windows 版本。 若要检查 Linux 内核版本,请打开 Linux 发行版并输入命令:uname -a
。 若要手动更新到最新内核,请打开 PowerShell
并输入命令:“wsl --update
”。
升级后重启。
5.2 安装 USBIPD-WIN 项目
WSL 本身并不支持连接 USB 设备,因此你需要安装开源 usbipd-win 项目。
1.转到 usbipd-win 项目的最新发布页。
2.选择 .msi 文件,该文件将下载安装程序。
3.运行下载的 usbipd-win_x.msi 安装程序文件。
5.3 在 Linux 中安装 USBIP 工具和硬件数据库
在 Ubuntu 上运行以下命令:
sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
这里有大坑:
1.子系统刚安装后不要换源不要换源不要换源,执行命令1,安装成功进行下一步;实测阿里源和清华源全部不行。
2.执行命令1不成功看这里,成功跳过;如果接提醒E:无法安装
,先检查源,换源到最原始,换命令sudo apt-get --fix-broken install linux-tools-virtual hwdata
。
3.安装了部分,提示dpkg-deb: 错误: 粘贴 子进程被信号(断开的管道) 终止了
,解决办法:sudo dpkg -i --force-overwrite "实际报错路径"
,中间缺什么装什么,到这里命令1就没有问题了。
4.命令2执行成功忽略。如果提示无效,则到/usr/lib/linux-tools/下看下真实文件夹名称,可能版本号不是命令里的,更改后再执行就可以了。如sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/实际名称/usbip 20
以上都装好后,才可进行下一步。
5.4 连接usb
5.4.1 win下执行
管理员运行终端,使用命令
usbipd wsl list
即可打出当前连接全部设备
终端下执行
usbipd wsl attach --busid <BUSID>
选择要连接的设备,以COM9为例,执行
usbipd wsl attach --busid 1-5
避坑:提示
usbipd: warning: A third-party firewall may be blocking the connection; ensure TCP port 3240 is allowed.
打开电脑防火墙,一般为第三方软件拦截,将3240端口号添加保护就可以了。 其他问题,返回5.2和5.3;
5.4.2 子系统下执行
打开终端执行 lsusb
,列出子系统可看到的设备
然后再确认下对应是/dev/tty*
的具体名称,就可以使用了。
避坑:给端口加权限
6. 迁移子系统到其它盘
1.查看WSL发行版本
wsl -l --all -v
2.导出分发版为tar文件到d盘
wsl --export Ubuntu-20.04 d:\wsl-ubuntu20.04.tar
#(Ubuntu-20.04修改成要迁移的发行版名称)
3.注销当前分发版
wsl --unregister Ubuntu-20.04
#(Ubuntu-20.04修改成要迁移的发行版名称)
4.重新导入并安装WSL
wsl --import Ubuntu-20.04 d:\development-tool\wsl-ubuntu20.04 d:\wsl-ubuntu20.04.tar --version 2
5.设置默认登陆用户为安装时用户名
ubuntu2004 config --default-user Username
6.删除tar文件
del d:\wsl-ubuntu20.04.tar
注意,一定要先注销后导入,不然无法成功
完成后会在d盘看到有新建的wsl系统文件夹
7. 参考链接
https://docs.microsoft.com/zh-cn/windows/wsl/install
https://docs.microsoft.com/zh-cn/windows/wsl/connect-usb
https://www.bilibili.com/read/cv7755144