OpenWRT x86部署笔记

发布于 5 天前  27 次阅读


在用了大概2年多时间的梅林固件后,最近打算重新用回OpenWRT。

原因非常现实,是因为某日一觉醒来,发现在用的那台AC86U坏掉了。

那就准备换新路由器玩玩吧。这次就尝试一下之前想玩玩的OpenWRT x86。

新路由器上线前,先拿一台闲置的路由器凑合用着。

上网淘一台双网口小主机,再准备一块调试用的小屏幕,最后等一个周末,开工。

1.准备工作

1.1.连接显示器

既然是小主机,那么当然有视频输出口。拿一根HDMI线将小主机街上小屏幕,同时再接上一个键盘,就可以在网络不通的环境下配置,相对来说更加灵活。

1.2.下载固件镜像

截至目前(2025年1月),OpenWRT的稳定版本为23.05.5。可以访问这个地址获取固件镜像:https://downloads.openwrt.org/releases/23.05.5/targets/x86/64/

其中有好几种镜像可选。简单归纳一下它们的区别,大概是这样的:

  • 文件名带efi的:UEFI启动
  • 文件名不带efi的:Legacy BIOS启动
  • ext4:根目录分区可自由扩容,但无法重置固件系统
  • squashfs:根目录分区只读,需要通过overlay分区扩容

对于即将装上OpenWRT x86的小主机来说,硬件支持UEFI启动,系统盘容量管够,一般也不会有事没事去重置系统,因此就选generic-ext4-combined-efi.img.gz即可。

下载完成后将压缩包解压,获得generic-ext4-combined-efi.img镜像文件。

1.3.写入固件镜像

小主机没有自带硬盘,因此我选择先把镜像写入后再装进小主机直接启动。

把打算作为系统盘的SSD塞入硬盘盒接上电脑,通过Balena Etcher写入镜像。

Balena Etcher的下载地址:https://etcher.balena.io/#download-etcher

1.4.接网线开机

把写入完成的SSD装进小主机,随后把小主机的2个网口分别接上在用路由器的LAN口和调试用电脑的网口,开机!

一连串的系统启动滚屏完后,敲个回车就能以root账号进入shell了。

2.开始调试

2.1.设置root密码

OpenWRT的root账号在初始状态下是没有密码的。从安全的角度考虑,建议设置一个。输入passwd回车,根据提示输入新密码并确认一次,root账号的密码就设置完成了。

2.2.确认网口

接下来确认一下两个网口哪个是WAN口。可以通过配置文件进行查看和编辑。

系统自带的编辑器是vi,简易的操作方式是按i进入编辑模式,编辑完成后按Esc退出编辑模式,输入:wq后按回车保存退出编辑器,或者输入:q!后按回车不保存退出。

vi /etc/config/network

配置文件中需要确认并修改的部分如下。

config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0' #LAN口桥接组成员,这里是eth0口

config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.1.1' #LAN口地址
option netmask '255.255.255.0'
option ip6assign '60'

config interface 'wan'
option device 'eth1' #WAN口成员,这里是eth1口
option proto 'dhcp'
option metric '64'
option delegate '0'

上面的示例中eth0口是LAN口,eth1口是WAN口。刚好我也是eth0口接的调试用电脑,eth1口接的在用路由器,就不用改了。

LAN口的IP地址可以根据实际情况改掉,比如把192.168.1.1改成10.0.0.1之类的。重启网络服务后生效。

如果刚刚修改过网络配置文件,可以执行这个命令重启网络服务。

service network restart

2.3.修改opkg软件源

OpenWRT用的包管理器是opkg。按照惯例,默认的软件源服务器地址在海外,在内地直连的速度是比较慢的,建议换成第三方源。

我比较习惯用TUNA源,换源命令如下。

sed -i 's_https\?://downloads.openwrt.org_https://mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf

命令执行完后,可以执行opkg update命令进行确认。

2.4.扩容根目录分区

OpenWRT x86镜像中划分的根目录分区很小,不到100MB。这就很有必要进行扩容了。

扩容前,先执行df -h命令看看根目录分区有多少。

Filesystem Size Used Available Use% Mounted on
/dev/root 98.3M 18.6M 77.7M 19% /

官方文档中提供了扩容根目录分区的脚本,可以直接用脚本自动将SSD剩余空间全部扩容至根目录分区中。

根目录分区扩容文档链接:https://openwrt.org/docs/guide-user/advanced/expand_root

首先安装脚本要用的几个包。

opkg update
opkg install parted losetup resize2fs

然后从那个文档中下载脚本的脚本,并运行。

文档中“Instructions”下面的一串命令就是“脚本的脚本”,运行它可以自动创建根目录分区扩容的2个脚本,同时将2个脚本加入系统升级后的自动执行列表中。

wget -U "" -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0"
sh expand-root.sh

脚本的脚本下载运行完成后,执行以下命令运行真正的扩容脚本。

sh /etc/uci-defaults/70-rootpt-resize

命令执行完成后,系统会自行重启。

重启好后,再次执行df -h命令看看根目录分区是否已经扩容完成。

Filesystem Size Used Available Use% Mounted on
/dev/root 117.7G 18.6M 117.7G 0% /

看起来已经扩容好了。128G的SSD,去除格式化损耗以及几个启动分区,也确实是这么大。

2.5.安装SFTP软件包

OpenWRT x86没有自带SFTP服务组件,需要手动安装。

opkg update
opkg install vsftpd openssh-sftp-server

安装完成后启动服务并将其设为开机自启动。

/etc/init.d/vsftpd start
/etc/init.d/vsftpd enable

2.6.安装中文语言包

OpenWRT LuCI默认只有英文显示。如果想看中文界面,可以装个中文语言包。

opkg update
opkg install luci-i18n-base-zh-cn

2.7.修改WAN口协议类型

浏览器访问LAN口地址,在网络->接口中对WAN口的协议进行修改。

WAN口默认用的是DHCP客户端协议,可以根据实际情况改为PPPoE协议进行拨号上网。

改好后,就可以把WAN口接到光猫上,使用这台OpenWRT小主机拨号上网了。

原来的路由器则是关闭LAN口的DHCP服务,LAN口网线连接小主机的LAN口,充当一个胖AP的角色。

毕竟小主机本身没带无线网卡,还得通过原来的路由器提供无线网信号。

3.个人吐槽

做完上面的调试工作后,OpenWRT x86小主机已经基本能用了。后面可以玩的东西很多,之后应该会再单独写文章来记录。

最后还是必须得吐槽一下那台AC86U。故障原因很经典,MT3125芯片烧坏了。前段时间网上买了2块MT3125,请了会操作热风枪的友人尝试换芯片,看着网上的视频教程折腾了半天,愣是没把那个芯片给吹下来,无奈放弃。

拍拍脑袋想一想,排除本身质量问题,路由器芯片烧坏的原因无非就是负载太高,散热没跟上。要么就是强化散热,要么就是降低负载。

所以这次就打算用小主机+路由器的架构,2台设备分别提供路由交换和无线信号的功能,看看实际效果怎么样。