Raspberry Pi Zero W Install OpenWrt

on 2024-07-01

刷写 OpenWrt 系统镜像

进入 OpenWrt 系统的下载页面

根据树莓派的型号, 选择对应的系统镜像, 例如:

wget https://downloads.openwrt.org/releases/22.03.5/targets/bcm27xx/bcm2708/openwrt-22.03.5-bcm27xx-bcm2708-rpi-ext4-factory.img.gz

解压下载好的文件

gzip -d openwrt-22.03.5-bcm27xx-bcm2708-rpi-ext4-factory.img.gz

写入前建议先使用 fdisk -l 查看系统中的设备名, 千万不能写错设备

随后根据自己系统中SD卡的设备名, 写入镜像

dd if=openwrt-22.03.5-bcm27xx-bcm2708-rpi-ext4-factory.img of=/dev/sda bs=2M conv=fsync
sync

开启前的准备(可选)

由于树莓派 Zero W, 正常情况下只有一个 Wi-Fi 接口, 没有以太网口, 因此为了实现 headless 启动, 我们需要让其在开机后, 自动完成连接 Wi-Fi 的工作

参考官方文档中 flashing_openwrt_with_wifi_enabled_on_first_bootconnect_client_wifi, 可以使用以下配置, 在第一次开启树莓派的时候, 自动连接到我们的局域网中

#
# /etc/uci-defaults/xxx_config
#

uci set network.wan=interface
uci set network.wan.proto='dhcp'
uci set firewall.@zone[0]=zone
uci set firewall.@zone[0].name='wan'
uci set firewall.@zone[0].input='ACCEPT'
uci set firewall.@zone[0].output='ACCEPT'
uci set firewall.@zone[0].forward='ACCEPT'
uci set firewall.@zone[0].masq='1'
uci set firewall.@zone[0].mtu_fix='1'
uci set firewall.@zone[0].network='wan'
uci set wireless.@wifi-device[0].disabled="0"
uci set wireless.@wifi-iface[0].disabled="0"
uci set wireless.@wifi-iface[0].network='wan'
uci set wireless.@wifi-iface[0].country=CN
uci set wireless.@wifi-iface[0].mode='sta'
uci set wireless.@wifi-iface[0].ssid='ABCDEF'
uci set wireless.@wifi-iface[0].encryption='psk2'
uci set wireless.@wifi-iface[0].key='flz#3qcysyhl9day'
uci commit

至此开机前的准备就完成了

启动 USB 网卡

树莓派通电后, 应该就会自动连接上局域网, 此时我们可以直接 ssh 上去对其进行操作

换源(可选)

为了加快安装的速度, 我们可以更换为国内的源

cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.bak
sed -i 's/downloads\.openwrt\.org/mirrors\.tuna\.tsinghua\.edu\.cn\/openwrt/g' /etc/opkg/distfeeds.conf

安装驱动

我们一共需要安装两个驱动

opkg install kmod-usb-dwc2 kmod-usb-gadget-eth
echo 'g_ether' > /etc/modules.d/gadget-eth
echo 'dtoverlay=dwc2' >> /boot/config.txt

重启之后, OpenWrt 就可以支持 USB 网卡了, 但由于我们并没有对这块网卡做操作, 因此它仍然不能正常工作

设置网卡

我们登录至 OpenWrt 的 Web 管理页面, 进入 Network -> Interfaces -> Devices, 将这张网卡加入 br-lan 中

设置usb0

同时为了防止和现有网段冲突, 记得及时修改我们系统的网段

修改网段

更新 root 分区

OpenWrt系统在刚安装好之后, 并不会使用全部的 SD 卡空间, 我们需要扩展这个分区

存储信息

参考官方文档

opkg update
opkg install parted losetup resize2fs
uclient-fetch -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0"
. ./expand-root.sh
reboot

重启完成后, 就可以看到 root 分区已经扩展完成了