Tomato 固件里安装 Entware 到 Netgear R8000 上的外接 U 盘

费劲往 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 里面的脚本是不是也有类似的限制。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/tomatousb-entware-netgear-usb-stick/>。转载请保留此信息及相应链接。

1 条关于 “Tomato 固件里安装 Entware 到 Netgear R8000 上的外接 U 盘” 的评论

  1. 引用通告: Tomato 固件上配置 Shadowsocks + GFWList | 水景一页

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)