糙昧邵 发表于 2025-6-3 10:51:32

树莓派无显示器方案-串口终端与网口直连终端

1. 概览


本文满足以下树莓派使用场景:

[*]无显示器,无键盘鼠标,无小型路由器。
[*]有Wi-Fi网络,但无Wi-Fi网络管理员权限(校园网/企业网),树莓派需要连接到互联网。
[*]有USB转TTL串口模块。电脑通过串口登陆树莓派终端。
[*]有一根网线。电脑可以通过网口直连树莓派。
[*]整套设备携带到没有网络的地方也可用。
[*]不影响笔记本网口正常功能。
2. 配置串口终端


[*]硬件:树莓派5
[*]系统:Raspbian或Ubuntu Server 24.04
使用树莓派的Imager软件烧录完SD卡后,打开SD卡,boot盘,找到config.txt文件,在尾部添加:
enable_uart=1
dtoverlay=uart0
dtparam=uart0_console前两行开启串口Shell终端,可以登录控制台。第三行开启串口内核日志。

引脚为上图中的 GPIO14, GPIO15,电平为3.3V。接好USB转串口(TXD接RXD,RXD接TXD,GND接GND),插入SD卡。上电,等待一段时间就可以从串口看到内核启动日志。并且可以输入用户名、密码登录终端。
3. 配置网线直连终端

网上有很多教程是在电脑上把Wi-Fi网络共享给网口,这样电脑就变成一个路由器,树莓派网口接到电脑上就可以访问互联网。
但是本文将采用相反的方案。不修改电脑的网口配置,而是在树莓派的网口启动一个DHCP server,把树莓派变成路由器。
(1) 给树莓派网口配置静态IP

不同操作系统的配置不同。例如Ubuntu桌面版有Network Manager,而Server版没有。这里只展示Ubuntu Server版的配置。Ubuntu Server 24.04通过netplan配置网口。
首先查看网口名称:
ip a以太网口名通常为eth0
检查现有的Netplan配置
sudo cat /etc/netplan/*.yaml我这里的文件名是50-cloud-init.yaml
给网口配置静态ip:
sudo nano /etc/netplan/50-cloud-init.yamlnetwork:
version: 2
wifis:
    wlan0:
      optional: true
      dhcp4: true
      access-points:
      "Wi-Fi SSID":
          auth:
            key-management: "psk"
            password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ethernets:
    eth0:
      addresses:
      routes:
       - to: 192.168.10.0/24
         via: 192.168.10.1其中wifis的部分可能在SD卡烧录完毕,配置镜像的时候就已经输入好密码了,这部分不用动。
增加一个和wifis同级别的ethernets部分。配置静态IP地址为192.168.10.1/24,注意不要和你的校园网/企业网的网段冲突。如果冲突可以换成其他网段。
应用配置
sudo netplan apply(2) 在树莓派网口启动DHCP服务器

安装dnsmasq
sudo apt update
sudo apt install dnsmasq配置dnsmasq
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

sudo nano /etc/dnsmasq.confport=0                  # 禁用 DNS 服务
interface=eth0          # 仅监听 eth0
dhcp-range=192.168.10.100,192.168.10.200,255.255.255.0,24h
dhcp-option=option:router,192.168.10.1
dhcp-option=option:dns-server,114.114.114.114# 指定外部 DNS这里我们只希望dnsmasq启动DHCP server,而不需要它帮我们代理DNS。因此这里需要port=0。
重启dnsmasq
sudo systemctl restart dnsmasq(3) 通过网口ssh直连

重启树莓派
sudo reboot重启后,用电脑的网口应该就可以访问树莓派了:
# 优先通过密码来登录
ssh -o PreferredAuthentications=password pi@192.168.10.14. 笔记本电脑网络接口优先级

以上配置完成后,可能有些笔记本连上网口后会无法连接互联网。这是因为以太网口的默认路由优先级比Wi-Fi网卡高,访问互联网的请求都走到树莓派去了。
我们可以修改笔记本的路由表,使得流量优先路由到Wi-Fi网卡。最终效果:

[*]网线 → 树莓派(eth0,IP: 192.168.10.1),用于 SSH。
[*]Wi-Fi → 路由器(互联网),用于上网。
[*]不连接树莓派时,网口仍然保持正常的功能。
这里只展示Ubuntu笔记本电脑的配置方式:
(1) 查看当前路由

以下内容在Ubuntu笔记本电脑,本地执行:
ip route可能会看到以下内容:
default via 192.168.10.1 dev enp0s31f6 proto dhcp metric 20500
default via 192.168.2.1 dev wlp0s20f3 proto dhcp metric 20600
169.254.0.0/16 dev enp0s31f6 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown其中Wi-Fi网卡是wlp0s20f3,以太网口是enp0s31f6。Wi-Fi网口优先级比以太网口低。
(2) 修改默认路由

Ubuntu桌面版有Network Manager,可以比较方便修改优先级。
ip a               # 确认接口名称(如 wlan0、eth0)
ip route         # 查看当前路由表(注意默认路由的 metric)检查Network Manager连接名称:
nmcli connection show降低 Wi-Fi 的 metric(数值越小优先级越高)
sudo nmcli connection modify "MyWiFi" ipv4.route-metric 100   # Wi-Fi 优先级更高提高有线连接的 metric(数值越大优先级越低):
sudo nmcli connection modify "有线连接名称" ipv4.route-metric 200重新激活连接:
sudo nmcli connection up "MyWiFi"
sudo nmcli connection up "有线连接名称"验证优先级
$ ip route
default via 192.168.2.1 dev wlp0s20f3 proto dhcp metric 20100
default via 192.168.10.1 dev enp0s31f6 proto dhcp metric 20200
169.254.0.0/16 dev enp0s31f6 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
...

[*]关键点:Wi-Fi 的 metric(20100)比有线(20200)更小,因此优先级更高。
如此便可实现网线ssh直连树莓派,同时笔记本通过Wi-Fi访问互联网不受影响。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 树莓派无显示器方案-串口终端与网口直连终端