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

1. 概览

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

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

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

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.yaml 
network:   version: 2   wifis:     wlan0:       optional: true       dhcp4: true       access-points:         "Wi-Fi SSID":           auth:             key-management: "psk"             password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"      ethernets:     eth0:       addresses: [192.168.10.1/24]       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.conf 
port=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.1 

4. 笔记本电脑网络接口优先级

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

我们可以修改笔记本的路由表,使得流量优先路由到Wi-Fi网卡。最终效果:

  1. 网线 → 树莓派(eth0,IP: 192.168.10.1),用于 SSH。
  2. Wi-Fi → 路由器(互联网),用于上网。
  3. 不连接树莓派时,网口仍然保持正常的功能。

这里只展示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访问互联网不受影响。

发表评论

您必须 [ 登录 ] 才能发表留言!

相关文章