前言
在之前的文章中,介绍了用 Buildroot 构建芒果派 MQ-R T113 的固件,以及开启 ADB 调试。
本文继续介绍 SSH 调试所需的开发板配置。
SSH 服务可以实现远程登录、端口转发和文件传输。相比 ADB,它的使用体验更接近默认的 UART 调试方式。不过,SSH 通常面向局域网开放,一般需要先让开发板连接到指定 Wi-Fi,再由电脑访问。
这里采用另一种方式:开启 USB OTG 的 USB 虚拟网卡功能。使用USB 数据线连接开发板和电脑后,两者就可以组成一个局域网,进而使用 SSH 登录并调试开发板。
本文以芒果派 MQ-R 开发板为例,但 Buildroot 的配置方法具有通用性,其他开发板也可以采用类似配置。
构建过程
开发板软件配置
首先安装 OpenSSH,打开menuconfig配置界面:
makemenuconfig在Target packages → Networking applications中选中openssh:
保存配置并编译后,相关配置文件会自动生成。
为了让开发板通过 USB 连接电脑后组成局域网,还需要打开 USB 虚拟网卡驱动。
打开 Linux 配置界面:
进入Device Drivers → USB support → USB Gadget Support,配置 USB 驱动:
这里有两种配置方式:
configfs用于手动配置 USB Gadget,适合需要更细致自定义的场景。- 本文选择
precomposed,它提供了预先配置好的 Gadget,可以直接使用,配置更简单。
继续进入Device Drivers → USB support → USB Gadget Support → USB Gadget precomposed configurations,
开启Ethernet Gadget(USB 虚拟网卡)选项。
默认值为M(编译为内核模块),后续还需要手动加载这个功能。这里直接选择*,让它随内核默认启用。
保存并编译。
SSH配置文件修改
为了简化后续开发,需要修改两个配置文件。在 Buildroot 中修改系统文件有两种方式:
- 编译好系统并烧录到开发板后,在开发板上更改
- 在
buildroot/board/开发板/rootfs_overlay中放置文件,rootfs_overlay中的文件在编译后覆盖系统默认文件
这里选择第二种方式,直接在电脑上修改芒果派 MQ-R 开发板对应的buildroot/board/mangopi/mq1rdw2/rootfs_overlay中的内容。
首先修改 SSH 配置文件sshd_config
启用openssh并执行make -jN编译后,Buildroot 会在buildroot/output/target/etc/ssh/sshd_config生成默认配置文件。将它复制到buildroot/board/mangopi/mq1rdw2/rootfs_overlay/etc/ssh/sshd_config,然后编辑该文件,启用以下选项:
PermitRootLogin yes PermitEmptyPasswords yesPermitRootLogin yes表示允许使用 root 账户登录 SSH。PermitEmptyPasswords yes表示允许使用空密码登录(如果没有单独设置 root 密码,Buildroot 默认的 root 账户通常为空密码)。
再配置interfaces
为了方便后续通过 SSH 连接,需要让 USB 虚拟网卡使用固定 IP,这样每次访问同一个 IP 地址即可。
编辑文件(在 MQ-R 开发板中,该文件默认存在)buildroot/board/mangopi/mq1rdw2/rootfs_overlay/etc/network/interfaces,加入以下配置:
auto usb0 iface usb0 inet static address 192.168.7.2 netmask 255.255.255.0
至此,配置完成,直接执行make -jN编译固件。
上机测试
Windows 额外配置
此时,使用 USB 线连接电脑后,理论上就可以通过 SSH 登录开发板了。但在 Windows 下,系统可能会将 USB 虚拟网卡识别为串口,导致无法连接:
因此需要手动安装 USB 虚拟网卡驱动,安装过程可以参考 Sipeed 安装 RNDIS 驱动。正确安装驱动后,就可以看到 USB 虚拟网卡:
安装好驱动后,检查 USB 虚拟网卡的信息和 IP 地址:
Get-NetAdapterGet-NetIPAddress-AddressFamily IPv4|Format-TableInterfaceAlias,IPAddress,PrefixLength由于开发板端 USB 虚拟网卡的 IP 地址设置为192.168.7.2,需要将电脑端的 IP 地址设置在同一子网中,这里设置为192.168.7.1:
New-NetIPAddress`-InterfaceAlias"网卡名称"`-IPAddress 192.168.7.1 `-PrefixLength 24至此,Windows 端配置完成。通常只需要配置一次,之后无需重复设置。
测试
运行ssh root@192.168.7.2即可登录开发板。
首次启动 SSH 服务时,系统可能会自动生成主机密钥,这个过程会花费一些时间。
也可以提前生成主机密钥并放入rootfs_overlay,避免首次启动时生成。