WSL (Windows Subsystem for Linux)是个好东西,特别是对于开发人员来说,虽然说以后不需要安装windows+linux双系统或者虚拟机还为时过早,但是就目前来说,还是挺佩服微软的这波骚操作,别的不说,按照官方给出的操作指导,竟然非常顺利,没有出过差错,我的标准很低,只要不用折腾,节约点时间,就是个好产品,以下是官网的操作指导:
Run Linux GUI apps with WSL
因为我之前就已经安装了WSL2,所以省去了一些步骤,如果您还没有装过WSL,按照官网链接操作即可,如果跟我一样已经有WSL2,按照以下操作即可:
根据自己电脑的显卡类型,选择相应的驱动:
我的电脑是i5的集成显卡,所以选择了intel的驱动,文件名是 igfx_win_101.1404.exe
下载完成安装即可
因为我已经安装了WSL2,所以只需要更新即可:用管理员身份打开 Windows Terminal
或 PowerShell
然后执行 wsl --update
,更新完成后,强制关闭 wsl,当然重启windows也可以。
GNU Radio
剩下的工作就和在真正的linux下操作没有什么差别了,我的linux子系统是ubuntu 20.04,安装应用可以用 sudo apt install ...
,所以安装 GNU Radio也很简单: sudo apt install gnuradio
,安装过程会报错:
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/f/freeglut/freeglut3_2.8.1-3_amd64.deb Connection failed [IP: 91.189.88.152 80]
E: Aborting install.
出于一些超出我认知的原因, freeglut3_2.8.1-3_amd64.deb
下载不了,把链接复制到Windows的浏览器,通过不太安全的上网方式,下载到本地,然后到下载的目录,执行 sudo apt install ./freeglut3_2.8.1-3_amd64.deb
,然后继续执行 sudo apt install gnuradio
请跳过以下链接:
因为放在Notion里面共享,应该是无法下载的,我也不想放到别处了,还请自行下载
通过这种方式安装GNU Radio后,UHD也已经有了,可以直接 uhd_usrp_probe
,但是会找不到设备
[INFO] [UHD] linux; GNU C++ version 9.2.1 20200304; Boost_107100; UHD_3.15.0.0-2build5
Error: LookupError: KeyError: No devices found for ----->
Empty Device Address
所以还需要最后关键的一步:
usbipd-win_2.1.0.msi
官网链接:
连接 USB 设备
下载 usbipd-win
:
Releases · dorssel/usbipd-win
安装 usbipd-win_2.1.0.msi
当前(2022年初)最新版本,完成后在 ubuntu
下就可以用 lsusb
查看挂载的设备:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
只能看到USB总线,没有挂载设备,是因为USB设备都挂在windows下而不是ubuntu下,需要在 PowerShell
执行挂载操作:
usbipd wsl list # 查看USB设备,目的是找到设备的 BUSID 以便下面的命令使用:
usbipd wsl attach --busid 1-14 # 把设备挂载到ubuntu, 这里 1-14 就是上面命令查到的 BUSID
usbipd wsl detach --busid 1-14 # 把设备从ubuntu中移除,自动挂载到windows
在 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