OpenWRT折腾笔记

发布于 2020-06-27  4.02k 次阅读


久闻OpenWRT这个可玩性很强的路由器固件,然而家里的老古董路由器并不支持刷第三方固件,所以就一直没机会玩一玩。前段时间又想起这事,就去某平台上入手了一台中古的WNDR4300 v1来练练手。路由器到手之后,马上开工。麻利地将原本连在老路由器上的几根线转移过去之后,开机,准备开始折腾。

由于写这篇文章的时候,文章里的内容已经折腾一遍了,就按照惯例依旧没有截图。( ̄(工) ̄)

1.TFTP刷入固件

这台路由器之前的主人用的是某第三方编译的OpenWRT固件。我想用原版的,就去OpenWRT官网上下载了目前(2020年6月)最新的稳定版(19.07.3)升级包。

可以在这个目录(https://downloads.openwrt.org/releases/19.07.3/targets/ar71xx/nand/)上找到19.07.3版本的WNDR4300固件.tar升级包和.img镜像。

一开始我下载了升级包,登录LuCI上传到路由器上,开始升级。谁知路由器重启之后,直接砖了。

……这才开始折腾几分钟呢,就第一次玩砖。太惨了。

好在之前做功课的时候看到过救砖的方法,就是拿一根牙签之类的细针顶住路由器背面的reset键半分钟左右,然后路由器的电源指示灯会变成绿色并且不断闪烁。这时就可以在电脑上用TFTP将固件.img镜像刷入路由器了。

要想使用TFTP,首先必须有个TFTP客户端。由于Windows已经自带一个命令行客户端,但默认是没有启用的,所以这里只需在控制面板里面开启TFTP客户端功能即可。

按下Win+I键启动Windows设置,点击“应用”,然后再点击右上角的“程序和功能”,在弹出的控制面板窗口中点击左侧的“启用或关闭Windows功能”,会弹出一个Windows功能列表。在列表里面找到TFTP Client然后勾上,点击确定,稍等片刻就可以在CMD里面使用TFTP命令了。

在刷入.img固件镜像之前,需要先去下载镜像(废话),接着用网线连接电脑与路由器,然后把电脑的IP设置成192.168.1.2/24。(路由器目前的IP地址是192.168.1.1)

准备完成后,启动命令提示符,先ping一下192.168.1.1。

ping 192.168.1.1

如果路由器能够正常回复,那么就可以刷固件入镜像了。将下面命令中的D:\openwrt\wndr4300.img换成自己电脑上固件镜像的路径并执行命令,即可开始刷入固件。

tftp -i 192.168.1.1 put D:\openwrt\wndr4300.img

固件刷入完毕后,路由器将会自动重启。这时可以将电脑的IP改为DHCP获取,但是不要把网线拔掉。重启完毕后,即可通过浏览器访问192.168.1.1进入LuCI控制台了。

在进入控制台后,首先需要设置一下root用户的密码,并且开启SSH功能,然后就可以像设置其他路由器一样设置路由器的上网与无线功能了。

2.5 GHz Wifi信道修改

在开启5 GHz WiFi后,我的Switch并不能搜到信号,原因倒不是因为它不支持5 GHz,而是日版设备所支持的信道和大陆地区设备所支持的信道并不一样。虽然OpenWRT里面想要哪个信道基本都可以设置,但是要想让设备上网,还是得按照设备所支持的信道来。

经过一番搜索,最后把信道改成了64,这是大陆地区和欧洲/日本都支持的信道。修改完后Switch就可以连上WiFi了,同时其他设备也能正常连接。

3.更换opkg源

opkg是OpenWRT所使用的包管理器。想都不用想,在大陆地区使用官方源的速度特别慢,因此最好还是更换为国内源,从而获得更好的使用体验。这里打算切换的是TUNA源。

使用SSH连接到路由器(192.168.1.1),登录用户名是root,密码是刚才给root用户设置的密码。连上去后使用sed命令修改配置文件即可更换。

sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf

现在可以使用opkg update命令更新一下软件包列表来看看配置是否正确。

4.U盘挂载

在OpenWRT中,软件包和配置文件都存放在/overlay分区中。用df -h命令查看,WNDR4300上这个分区的大小只有14M,如果要安装一些并不轻量级的软件包,完全不够用。所以有必要给该分区扩容。

扩容的一个可行的办法就是挂载一个磁盘,将/overlay分区重定向一下,从而达到扩容效果。

我不打算拿这个路由器当网盘用,就决定挂载一个USB 3.0的U盘。这个U盘我准备分两个区,一个用来当Swap,另一个给/overlay扩容。

在把U盘插上去之后,先把这些软件包全装上。(都是从其他资料上找来的,不知道是不是多安装了一些包)

opkg install blkid fdisk lsblk block-mount block-extroot kmod-usb-core kmod-usb-ohci kmod-usb-uhci kmod-usb-storage kmod-usb-storage-extras kmod-usb2 kmod-usb3 kmod-fs-ext4 kmod-scsi-core

安装完毕之后使用reboot命令重启路由器,同时把U盘插到路由器的USB口上。

重启完毕后使用SSH再次连接路由器,输入以下命令查看块设备信息。

lsblk

不出意外的话,可以看到一个名称为sda,大小和U盘容量相近的块。这就表示路由器成功识别出U盘了。

如果U盘还没格式化的话,可以先格式化一下。这里就随便格式化成ext4

mkfs.ext4 /dev/sda

接着使用fdisk命令给U盘分区。

fdisk /dev/sda

首先创建一个Swap分区。这台WNDR4300的内存是121.4MB,所以理论上分配242.8MB的Swap比较合适。然而我图省事,决定直接分配1G。

按下n新建一个分区。分区类型使用默认的primary,因此直接回车。分区号使用默认的1,直接回车。起始柱面依旧默认,直接回车。最后柱面输入+1G后回车。接着按下t修改分区类型。要修改的分区号选择默认的1,直接回车。分区类型的十六进制码输入82后回车(代表swap类型)。

经过以上操作,Swap分区就创建好了。

接着创建第二个分区。按下n新建分区,接着可以一路回车直到新分区创建完毕。

两个分区都创建完毕后,输入w保存分区设置。

分区设置保存完毕后,将/dev/sda1格式化成Swap。

mkswap /dev/sda1

随后启用该Swap分区。

swapon /dev/sda1

然后再将/dev/sda2格式化成ext4格式。

mkfs.ext4 /dev/sda2

完成之后可以在浏览器中的LuCI中通过系统->挂载点进入文件系统挂载界面,分别设置两个分区的挂载。设置完成后,路由器似乎会自动重启。等重启完毕之后在该界面查看,分区都已经正确挂载。

现在路由器上就多出了好多空间,可以随意安装各种软件包啦。

5.个人吐槽

这次姑且先把路由器的基本设置搞定,还没有开始玩一些比较好玩的插件。

OpenWRT确实是个很棒的固件,能够让路由器拥有很多原厂固件并没有提供的功能。不过这次用来练手的也算是一个老古董型号了,等我练的差不多了,或许会再入手一款新型号的正式开玩。