为什么写这篇文章?

​ 最近在学习Raspberry Pi Pico的相关内容,Pico是支持MicroPython SDK和 C++ SDK 的。用MicroPython官方推荐的IDE是Thonny,但我用它写代码觉得很难受,智能提示和补全用起来不是很顺手。我在想要不用VS code + 拓展试试?还真在网上找到了相关的文章,用的是VS code + Python + MicroPico拓展。

​ 在查找相关文章之时,发现了一篇用Raspberry Pi Pico官方C++ SDK + Linux + cmake 的环境配置教程,开发方式是 Windows下用 VS code 写代码,远程连接Ubuntu虚拟机,在虚拟机下用 gcc 编译 + make构建生成.uf2文件,再将.uf2文件传输到Windows主机并拖拽至RPI-RP2存储设备(即Pico板)实现开发。
​ 教程链接:轻松玩转树莓派Pico一、树莓派pico新手上路 - 知乎 (zhihu.com)

​ 在Ubuntu用 git 克隆Raspberry Pi官方的Pico SDK时要么特别慢要么会显示拒绝连接,加之有时克隆的项目会出现部分文件缺失。个人猜测是在国内访问GitHub站点不稳定所致。

​ 对个人而言,最好的解决办法就是挂VPN。我在Windows下用的是Clash for windows,最简单的方式就是在Ubuntu也下一个Clash。个人认为,这也是一种解决方式,但一定不是最合理的。那有没有一种方法,让**Windows主机用Clash能够访问外网的同时,让虚拟机也能访问到外网呢?**答案是肯定的。

解决方法:

​ 在和ChatGPT“磨合”了一会后,摸索出了一套方案。首先,你得具有一些必要的软件或环境。

  • 主机系统:Windows 11
  • 代理软件:Clash for windows
  • 虚拟机软件:VM wave 14
  • 虚拟机系统:Ubuntu 18.04 LTS(Linux)
  1. 打开VM wave 点击编辑 → 虚拟机网络编辑器。

  2. 点击右下角的更改设置,需要用管理员身份运行。

  3. 添加一个网络,选择桥接模式,我电脑和路由器是无线连接的,所以选择Wi-Fi驱动设备,若是用网线连接,选择相应的驱动设备即可。修改完成后,先点击应用,再点击确定

  4. 在Windows下按 Win + R 输入cmd或者powershell,点击确定。

    在命令行输入ipconfig,查看Windows本地IP。

  5. 登录Ubuntu系统,在命令行输入ifconfig查看本地IP地址,并尝试Ping主机。
    主机和虚拟机相互Ping通是必须的。

  1. 在命令行输入gedit .bashrc(若没有安装gedit工具,则用 vi .bashrc 或 vim .bashrc)。

    sudo gedit .bashrc
    

    在 .bashrc 文件中添加以下两行。

    export http_proxy=http://Windows主机IP:Clash代理端口
    export https_proxy=http://Windows主机IP:Clash代理端口
    

IP是用Windows主机的IP,端口号可以在Clash查看。

编辑完 .bashrc 后,Ctrl + S 保存退出。(必要的话可以尝试重启系统,用命令reboot即可重启)

  1. 勾选Clash中的必要选项。(Clash for Windows的使用我不在这里赘述,详细使用教程可上网搜索查得。)
    Allow LAN选项是允许同一网段下的网络绑定,此前我已将 Windows 主机和 Ubuntu 虚拟机已经配置到了同一网段下;System Proxy是开启代理。
  1. 至此,你的虚拟机便可与主机通过桥接模式访问外网。访问外网和在Github拉取文件更加稳定。
    虚拟机下访问YouTube: