世界上我和你之间最远的距离就是没网。

当我拿到板子后,第一件事是板子在我键盘旁边会影响同时干很多事,所以第一件事是要把网调通。
1. 看有哪些网卡
ip link show
# 或
ls /sys/class/net/
输出:
lo # 回环
eth0 # 有线,状态 DOWN
wlan0 # WiFi,关键就是这个
can0 # CAN 总线,忽略
dummy0 # 虚拟网卡
WiFi 网卡 wlan0 已经在,说明板子出厂就带了无线模块和驱动。
这个板子用的是 WS73 芯片,WiFi/BT 二合一。驱动以 .ko 文件存放在 /etc/ws73/,系统启动时自动加载:
cat /usr/bin/wifibt-init.sh
insmod /etc/ws73/plat_soc.ko
insmod /etc/ws73/wifi_soc.ko
insmod /etc/ws73/ble_soc.ko
如果 wlan0 没出现,先检查这个服务:
sudo systemctl status wifibt-init
2. 扫描 WiFi 热点
sudo iw dev wlan0 scan | grep SSID
能看到周围的 WiFi 名称列表,确认无线模块正常工作。
3. 配置 wpa_supplicant
编辑 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf:
sudo vim /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
内容:
ctrl_interface=/run/wpa_supplicant
update_config=1
country=CN
network={
ssid="你的WiFi名"
psk="你的WiFi密码"
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
group=CCMP
}
}
字段 | 说明 |
|---|---|
| 地区码,决定信道和功率限制 |
| WPA2 个人版,最常见 |
| 即 WPA2 |
| AES 加密 |
4. 手动测试连接
先不用 systemd 服务,一步步手动验证:
# 启动 wpa_supplicant(后台运行)
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
# 看是否连上
sudo wpa_cli -i wlan0 status
输出里看到 wpa_state=COMPLETED 就说明连上了。
# DHCP 获取 IP(如果有 DHCP 服务器)
sudo dhclient wlan0
# 或者设静态 IP
sudo ip addr flush dev wlan0
sudo ip addr add 192.168.3.207/24 dev wlan0
sudo ip route add default via 192.168.3.1
验证:
ping 192.168.3.1 # 先 ping 网关
ping 8.8.8.8 # 再 ping 外网
ping baidu.com # 最后 ping 域名
5. 做成开机自启的 systemd 服务
手动的命令在重启后就没了。把它写成 service:
sudo vim /etc/systemd/system/wifi-static.service
[Unit]
Description=WiFi static IP for wlan0
After=network.target
Before=network-online.target
Wants=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/sbin/wpa_supplicant -B -i wlan0 \
-c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
ExecStart=/sbin/ip addr flush dev wlan0
ExecStart=/sbin/ip addr add 192.168.3.207/24 dev wlan0
ExecStart=/sbin/ip route add default via 192.168.3.1
ExecStop=/sbin/ip addr flush dev wlan0
ExecStop=/sbin/wpa_cli -i wlan0 terminate
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reload
sudo systemctl enable wifi-static
sudo systemctl start wifi-static
6. DNS 配置
板子用了 systemd-resolved,DNS 解析走本地 stub:
cat /etc/resolv.conf
# nameserver 127.0.0.53
如果没有特殊需求,这步不用改。如果想用特定 DNS,可以改 /etc/systemd/resolved.conf:
[Resolve]
DNS=223.5.5.5 8.8.8.8
FallbackDNS=114.114.114.114
然后 sudo systemctl restart systemd-resolved。
7. 最终验证
# 1. WiFi 网卡状态
ip addr show wlan0
# inet 192.168.3.207/24 ← 有 IP
# 2. 路由表
ip route show
# default via 192.168.3.1 ← 默认网关正常
# 3. WiFi 连接状态
iwconfig wlan0
# ESSID:"liuqi" Access Point: 10:0C:6B:F2:72:BD
# Signal level=-55 dBm ← 信号强度
# 4. 联网
ping -c 3 baidu.com
# 3 packets transmitted, 3 received ← 通了

完整的服务依赖链
板子从开机到 WiFi 可用的顺序:
sysinit.target
│
▼
wifibt-init.service → insmod 加载 WiFi 驱动模块
│
▼
network.target
│
▼
wifi-static.service → wpa_supplicant 连接 AP
│ → ip addr 设静态 IP
│ → ip route 加默认网关
▼
network-online.target
│
▼
systemd-resolved.service → DNS 解析
查看各服务状态:
systemctl status wifibt-init wpa_supplicant wifi-static systemd-resolved
踩过的坑
WiFi 网卡没出现 —
wifibt-init没跑或.ko文件路径不对,dmesg \| grep wifi看内核日志wpa_state=SCANNING一直不完成 — 密码错了或加密方式不对,用wpa_cli status看详细信息能 ping 通 IP 但 ping 不通域名 — DNS 没配好,检查
/etc/resolv.conf和systemd-resolved重启后 IP 丢了 — 忘了
systemctl enable wifi-staticcountry=CN没写 — 某些 5G 信道可能扫不到,因为地区限制了可用信道eth0 也插着网线但 WiFi 优先 — Linux 默认只有一个默认网关,在
ip route里可以看到哪个接口被选中
