费劲往 Netgear R8000 路由器上刷 TomatoUSB 固件当然是为了在路由器上安装运行一些特别的软件。Entware 是为嵌入式系统提供定制软件包的一个开源项目。本来打算按照网上常见的方法 entware 相关软件包安装到 JFFS 里面的,但是却发现无法往 JFFS 路径下写入内容。后来发现这个帖子上也有人问了这个问题。回复中有人表示 NAND 可能存在写入寿命问题,建议装到外接 USB 设备上。所以最后虽然看到提问者表示经过多次重启之后 JFFS 终于可以写入了,我还是决定用外接 USB 设备。反正路由器上有两个 USB 口,闲着也是闲着。
于是找来一个 USB 盘,2GB 大小。注意,下面的操作中会删除 U 盘里面的所有东西。该操作完全参照这里的说明。
准备挂载 U 盘¶
在路由器的 AdvancedTomato 网页管理界面中的「USB & NAS」中的「USB Support」页面注意检查以下选项都勾选了,
[x] Core USB Support [x] USB 2.0 Support [x] USB Storage Support [x] Ex2/Ext3 File Systems Support [x] Automount
将下面的文本粘贴到该页面中 “Run after mounting” 文本框里面,
#!/bin/sh /opt/etc/init.d/rc.unslung start
将下面的文本粘贴到该页面中 “Run before unmounting” 文本框里面,
#!/bin/sh /opt/etc/init.d/rc.unslung stop sleep 15 for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do mount -o remount,ro $i done
单击页面底部的「Save 保存」按钮,然后检查该页面底部的「USB Status 状态」。如果 USB 设备已经挂载,则单击其最右端的「Unmount」取消挂载。
格式化和配置 U 盘¶
到「Administration 管理」中的「Scripts 脚本」页面,点击「Init 初始化」标签页,将下面的文本粘贴进去,
echo "LABEL=ENTWARE /opt ext3 rw,noatime 1 1" >> /etc/fstab
单击页面底部的「Save 保存」按钮。这里假定该 U 盘的标签是「ENTWARE」,下面会继续一致地使用这个标签。
当然这些操作在 entware 的 USB 配置指南中都有。
把 USB 盘插到了 USB 2.0 口上。开始没有挂载上,重启路由器之后能看到 U 盘。
通过 SSH 登录到路由器,使用
# fdisk -l
可以查看到该设备是 /dev/sda
。然后通过 fdisk
来删除 U 盘上的所有分区,创建一个新的主分区,并设置格式为 Linux。指令及反馈如下,
# fdisk /dev/sda Command (m for help): d Selected partition 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-243, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-243, default 243): Using default value 243 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 83 Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table
给该设备一个独特的标签(ENTWARE
),
# mkfs.ext3 -L ENTWARE /dev/sda1 mke2fs 1.43.4 (31-Jan-2017) /dev/sda1 contains a ext3 file system labelled 'TomatoUSB' last mounted on Sun Jul 1 16:22:27 2018 Proceed anyway? (y,N) y Creating filesystem with 487966 4k blocks and 122160 inodes Filesystem UUID: 0758853d-c6e1-4eae-bac9-e46c9502b57d Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
重启路由器之后应该能在「USB & NAS」中的「USB Support」页面最底部看到该 USB 设备 ENTWARE
已经自动挂载到 /opt
了(因为 /opt
这个系统路径是默认用来保存用户安装的软件的)。
安装和更新 Entware¶
通过 SSH 连接到路由器之后就可以开始安装 entware 了。TomatoUSB 116 版本的时候就已经加入了 Entware 安装脚本,所以这里直接安装,
# entware-install.sh
安装完成后升级和更新 entware,
opkg upgrade opkg update
然后就可以安装 dferg 推荐的那些软件包了,当然安不安装还要看自己的需要。反正 U 盘空间足够大,我是全都给安装了。
后来还发现一个问题就是,一些放在这个外接 U 盘(路径 /opt
里面)的 bash 脚本没法通过「Administration 管理」中的「Scripts 脚本」页面「Init 初始化」标签页直接执行,虽然已经配置了正确的执行权限。不知道放在 JFFS 里面的脚本是不是也有类似的限制。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/tomatousb-entware-netgear-usb-stick/>。转载请保留此信息及相应链接。
引用通告: Tomato 固件上配置 Shadowsocks + GFWList | 水景一页