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

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

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

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

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>