小米路由器R1D开发版安装entware及qbittorrent记录
今天上班摸鱼,网上闲逛的时候看到了不折腾 篇三:小米路由器R1D破土而出三部曲-终局_路由器_什么值得买 (smzdm.com)这篇文章。我的R1D系统一直保持在开发版2.25.213,它自带了一个opkg命令,但是软件仓库里面基本上没啥有用的。这篇文章提到R1D可以安装Entware,使用另外的软件仓库,虽然那里用的是Tomato系统,但同样的硬件架构,开发版说不定也可以装?一下子我就又想折腾了。最终折腾一下午,有些收获,然后就写了这篇文章记录一下。比较啰嗦,大家见谅。
ssh登录路由器,查看一下,opkg果然在
root@XiaoQiang:~# which opkg
/bin/opkg
然后就异想天开,既然有这个命令,我去Entware库里面把软件下下来使用opkg命令安装可不可以? 查看一下路由器的架构
root@XiaoQiang:~# uname -a
Linux XiaoQiang 2.6.36 #3 MiWiFi-R1D-2.25.213 SMP PREEMPT Tue Oct 16 11:44:14 UTC 2018 armv7l GNU/Linux
然后下载对应版本的ipk包,上传到路由器,执行命令
root@XiaoQiang:/userdisk/data/software/mi_router# opkg install qbittorrent_4.5.4-1_armv7-2.6.ipk Unknown package 'qbittorrent'. Collected errors: * pkg_hash_fetch_best_installation_candidate: Packages for qbittorrent found, but incompatible with the architectures configured * opkg_install_cmd: Cannot install package qbittorrent.
果然,是我想太多……
那么老老实实安装Entware吧。 那篇文章提到Tomato自带安装脚本entware-install.sh,我的路由器开发版系统显然不可能有。那么怎么安装呢,在entware的官网上就有,进入 https://bin.entware.net/ 可以看到不同架构的软件包,我的是armv7,刚才已经在这里下载过一个qbittorrent软件包了。依次点击armv7sf-k2.6 installer 就能看到安装脚本了,有两个generic.sh和alternative.sh。两者的区别在wiki上有提到(The two types of installations),我没看,反正直接就选generic.sh安装了。
安装脚本的位置具体的安装步骤,我参照了这篇教程 Install on Synology NAS (因为本来还想着能不能在我的黑群晖上也安一个,但是我的黑群晖版本太低,目前暂时放弃了)。
Entware的安装目的地是/opt目录,教程里让直接把/opt目录删掉再重建,好粗暴。看了下我的路由器/opt目录里面有两个子目录plugin_sandbox和filetunnel,不认识的东西不能随便删,而且里面的程序还在运行着,就更不能随便动了。
root@XiaoQiang:/opt# ps w | grep opt 7780 root 30984 S /opt/filetunnel/tunnelserver 7808 root 12048 S /opt/filetunnel/stunserver --verbosity 1 14528 root 1572 S grep opt
所以先备份下/opt目录吧
root@XiaoQiang:/opt# cd /userdisk/data/software/mi_router root@XiaoQiang:/userdisk/data/software/mi_router# tar czvf opt.tar.gz /opt
然后就可以愉快的开始安装了
# 下载安装脚本 root@XiaoQiang:/userdisk/data/software/mi_router# wget http://bin.entware.net/armv7sf-k2.6/installer/generic.sh # 添加执行权限 root@XiaoQiang:/userdisk/data/software/mi_router# chmod +x generic.sh # 开始安装 root@XiaoQiang:/userdisk/data/software/mi_router# ./generic.sh
然后就报错了……
root@XiaoQiang:/userdisk/data/software/mi_router# ./generic.sh Info: Checking for prerequisites and creating folders... Warning: Folder /opt exists! mkdir: can't create directory '/opt/bin': Read-only file system .......此处省略一大堆日志.......... Info: Found a Bug? Please report at https://github.com/Entware/Entware/issues
opt目录是只读的,Entware安装不上去。那么怎么把他改成可读写呢?我没研究过不知道。但是我想到了另外的办法绕过去,上面提到的Entware的安装教程里面有一段内容:
参考安装教程的截图就是我圈起来的这条命令,可以把其他的目录绑定到opt目录。那就试试看吧,首先在/userdisk目录下面新建opt目录,然后将/userdisk/opt目录绑定到/opt
root@XiaoQiang:/userdisk/data/software/mi_router# mkdir -p /userdisk/opt root@XiaoQiang:/userdisk/data/software/mi_router# mount -o bind "/userdisk/opt" /opt root@XiaoQiang:/userdisk/data/software/mi_router# ls /opt
可以看到绑定成功了,那么再试试安装吧
root@XiaoQiang:/userdisk/data/software/mi_router# ./generic.sh Info: Checking for prerequisites and creating folders... Warning: Folder /opt exists! Info: Opkg package manager deployment... .......此处省略一大堆日志.......... Info: Congratulations! Info: If there are no errors above then Entware was successfully initialized. Info: Add /opt/bin & /opt/sbin to $PATH variable Info: Add "/opt/etc/init.d/rc.unslung start" to startup script for Entware services to start Info: Found a Bug? Please report at https://github.com/Entware/Entware/issues
从日志看好像有戏?看了下/opt目录多了不少东西,那就试试吧
root@XiaoQiang:/userdisk/data/software/mi_router# ls /opt bin lib opt root share usr etc home libexec sbin tmp var root@XiaoQiang:/userdisk/data/software/mi_router# opkg update Downloading http://archive.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/packages/Packages.gz. Updated list of available packages in /data/var/opkg-lists/attitude_adjustment.
默认的opkg命令还是老的,到/opt/bin目录里找到有新的opkg命令,应该是这个了,试试看
root@XiaoQiang:/opt/bin# ./opkg update Downloading http://bin.entware.net/armv7sf-k2.6/Packages.gz Updated list of available packages in /opt/var/opkg-lists/entware
果然,可以哎。那就装个qbittorrent试试水吧
root@XiaoQiang:/opt/bin# ./opkg install qbittorrent Installing qbittorrent (4.5.4-1) to root... Downloading http://bin.entware.net/armv7sf-k2.6/qbittorrent_4.5.4-1_armv7-2.6.ipk .......此处省略一大堆日志.......... Configuring qbittorrent.
可以可以,好像成功安装了啊,启动起来试试吧。
root@XiaoQiang:/opt/bin# /opt/etc/init.d/S89qbittorrent start
结果又报错了😂,原因是/root目录也是只读的,qbittorrent的缓存目录无法建立。看了下/root目录里面好像没啥东西,那就如法炮制吧
root@XiaoQiang:/opt/bin# mkdir -p /userdisk/root root@XiaoQiang:/opt/bin# mount -o bind "/userdisk/root" /root root@XiaoQiang:/opt/bin# /opt/etc/init.d/S89qbittorrent start Starting qbittorrent-nox... done.
这次没问题了,浏览器访问下qbittorrent的页面,可以正常访问。
然后还有些遗留问题要处理 。
1、为了不影响原来的功能,原来备份的/opt目录里面的内容还得放回来,具体操作我就不写了
2、/opt /root这两个目录使用mount绑定,路由器重启后就没了,所以得把这个绑定关系持久化,修改/etc/fstab文件在最后面增加两条
root@XiaoQiang:/opt/bin# vi /etc/fstab /userdisk/opt /opt none bind 0 0 /userdisk/root /root none bind 0 0
注意修改/etc/fstab是非常危险的行为,一旦出错会导致机器重启后无法正常进入系统。所以修改完成之后,记得一定要检查一下有没有问题。
root@XiaoQiang:/opt/bin# mount -a root@XiaoQiang:/opt/bin#
这个命令会尝试挂载 fstab 文件中列出的所有文件系统。如果 fstab 文件中的条目有任何错误,该命令将会报错并显示相应的错误信息。
或许是因为修改fstab太危险,实测路由器重启后这个修改就没了。那就不使用这个方法,改用下面第三条,亲测可用。
3、绑定文件夹并设置开机启动通过Entware安装的软件,可以修改/etc/rc.local文件
root@XiaoQiang:/opt/bin# vi /etc/rc.local
# 在文件最后添加下面这几行,需确保命令之前的行没有exit 0或任何会中断启动的命令。 mount -o bind "/userdisk/root" /root
mount -o bind "/userdisk/opt" /opt
/opt/etc/init.d/rc.unslung start
exit 0
4、将/opt/bin和/opt/sbin添加到PATH中方便使用,可以修改/etc/profile文件
root@XiaoQiang:/opt/bin# vi /etc/profile
# 在文件最后添加下面这行
export PATH=/opt/bin:/opt/sbin:$PATH
#使修改生效
root@XiaoQiang:/opt/bin# source /etc/profile
OK,能想到能写的基本上就这些了,到此打住吧。话说折腾费力气,写一篇记录花费的时间也不少啊。
PS:一定让我传一张封面图才能发布,太不爽了,没办法从美味香甜甜那里偷了一张,见谅见谅。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
你们呐
校验提示文案
CAD常用命令
校验提示文案
lcr1228
校验提示文案
韦青青青青青
校验提示文案
非著名坐家
校验提示文案
Grogu
校验提示文案
Grogu
校验提示文案
非著名坐家
校验提示文案
韦青青青青青
校验提示文案
lcr1228
校验提示文案
CAD常用命令
校验提示文案
你们呐
校验提示文案