V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gleArk
V2EX  ›  路由器

华硕路由器梅林固件+alist 简明小教程

  •  
  •   gleArk · 2023-02-10 12:25:59 +08:00 · 5125 次点击
    这是一个创建于 687 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在折腾 alist ,碰到了不少坑点,记录一下,同时也是备忘。过程中有些不明白的地方,如果谁之前碰到过、解决了,也请指教下。

    (我知道某软件中心有,但我没装某软件中心,我喜欢自己动手。)

    一、背景:

    路由器为华硕 AX86U/梅林固件,有台 win 家庭服务器通过有线连接路由器。

    准备通过 alist 连接某数字网盘,最终通过 iPhone/iPad/MacbookPro/Apple TV (以下简称 infuse 终端)的 infuse 读取和播放 4k remux mkv 资源。

    家中宽带 200M ,某三位数网盘直接下载或播放基本能跑到满速。

    二、win 家庭服务器篇:

    一开始把 alist 放在了 win 家庭服务器上,发现播放 4k remux mkv 资源 20-30 分钟会发生断流,症状为家庭服务器和路由器之间掉线、ping 不通,重新拔插网线可以恢复。

    另外,之前 iPhone 手机通过 wifi 直接下载某数字网盘的资源,也会出现类似的断流,通过关闭 /开启 wifi 可以恢复。

    因此,怀疑是 AX86U 路由器在高流量负载下会断流,网上有人说是因为 AX86U 的芯片发热造成的(看了下,此时 CPU 温度大概 70 多度)。同时,感觉大流量在路由器-win 家庭服务器-路由器-infuse 终端之间跑也是浪费资源,所以考虑把 alist 挂在路由器上。

    同时,去某宝买了个散热风扇,在 PWM40%(基本没声音)的前提下,能把 AX86U 的 CPU 温度降低 20 度左右。
    具体断流是 PC 侧还是路由器侧造成的,懒得去研究了。


    三、华硕 AX86U 路由器-jffs 篇:

    接下来是 AX86U 路由器上安装 alist 。
    华硕路由器刷梅林固件、打开 jffs 、ssh 等等不说了,网上都能找到。win 侧我一般只用 powershell 里的 ssh 操作,不用第三方软件。

    一开始我选择把 alist 装到了路由器的 jffs 上。**注意,装在 jffs 上存在很大的风险!**我会在本篇的最后面做解释。建议按照第四篇装在路由器挂载的 U 盘上。

    首先,打开 powershell ,连接路由器:
    ssh [email protected] (此处填入你自己的路由器地址)
    接下来填入密码,登录成功后会显示 /tmp/home/root#

    接下来去 jffs 文件夹并创建 alist 目录
    cd /jffs

    mkdir alist

    cd alist

    接下来是下载 alist ,我试过了最新的 3.10.1 和上一个版本的 3.9.2 ,都会报错,如果是 AX86U 的,不用去下这两个版本了,最后试了个 3.6.0 版本,可以正常运行,就这个版本了。

    在命令行执行
    curl -L https://ghproxy.com/https://github.com/alist-org/alist/releases/download/v3.6.0/alist-linux-musl-arm64.tar.gz -o /tmp/alist.tar.gz

    接下来解压缩
    tar zxf /tmp/alist.tar.gz -C /jffs/alist
    这个解压的过程有点慢,耐心等一下

    解压完成后,运行测试( alist 官方的安装说明里还要授予程序执行权限:chmod +x alist ,我自己是发现解压完就是可执行文件了)
    ./alist
    如果操作说明正常弹出,再跑下服务器
    ./alist server
    如果服务器正常开启,就没问题了,后面的流程和其他设备上装 alist 的设置是一样的,不再赘述。

    需要开机启动的,看第五篇的脚本。

    最后说下我为什么不推荐把 alist 装在 jffs 上。
    snbforum 上反馈这几年的华硕路由器 jffs 寿命很长,可擦写 10 万次,华硕自己的 syslog 文件也往 jffs 上写(在 jffs 文件夹下 ls 能看到)。
    但是,我在 infuse 终端操作、播放测试了大约 1 小时后,根据我对 alist 文件夹的观察,daemon 文件夹下的 start.log 和 data/log 文件夹下 log.log 已经各有近 4MB 文件,而且更新是比较频繁的。本身 jffs 也就几十兆的可用容量,就算可擦写 10 万次,我觉得也坚持不了太久的。
    **总之,我非常非常不建议装在 jffs 上,毕竟换 U 盘比换路由器便宜多了,不是吗?**

    四、华硕 AX86U 路由器-U 盘篇:
    因为前述的原因,改为安装在 U 盘上。

    准备一个不用的 U 盘,如果之前有 GPT 分区的,先清一下 GPT 分区并改为 MBR (比如使用 win 的 diskpart )。
    插入路由器的 U 盘口,用 fdisk 建立分区。
    以上两个网上都有很多教程,不再赘述。

    我碰到的坑是 ext4 格式的 u 盘有时路由器不会自动挂载,格式化成 ext2 格式后就行了,本着能用就行的原则,没有深究。
    mkfs.ext2 /dev/sda1

    接下来是去 U 盘文件夹并创建 alist 目录
    cd /tmp/mnt/sda1
    mkdir alist
    cd alist

    在命令行执行
    curl -L https://ghproxy.com/https://github.com/alist-org/alist/releases/download/v3.6.0/alist-linux-musl-arm64.tar.gz -o /tmp/alist.tar.gz

    接下来解压缩
    tar zxf /tmp/alist.tar.gz -C /tmp/mnt/sda1/alist
    这个解压的过程有点慢,耐心等一下

    解压完成后,运行测试( alist 官方的安装说明里还要授予程序执行权限:chmod +x alist ,我自己是发现解压完就是可执行文件了)
    ./alist
    如果操作说明正常弹出,再跑下服务器
    ./alist server
    如果服务器正常开启,就没问题了,后面的流程和其他设备上装 alist 的设置是一样的,不再赘述。

    目前用 U 盘跑有没有坑我还在测试

    五、华硕 AX86U 路由器-开机启动篇:

    华硕路由器 /梅林固件的启动是通过脚本实现的
    进入脚本文件夹(如果你还在 alist 的 server 进程里,可以直接按 CRTL+C 先退出)
    cd /jffs/scripts

    新建 post-mount 文件并编辑(注意,此处 post-mount 名字不能改,具体见 https://github.com/RMerl/asuswrt-merlin.ng/wiki/User-scripts
    touch post-mount
    nano post-mount

    写入如下脚本代码

    alist 文件在 U 盘的:
    #!/bin/sh
    sleep 60
    /tmp/mnt/sda1/alist/alist start

    alist 文件在 jffs 的:
    #!/bin/sh
    sleep 60
    /jffs/alist/alist start

    按 CTRL+O 写入,按回车确定,按 CTRL-X 退出

    如果要测试开机启动是否成功的话,reboot 重启即可

    六、其他篇:
    1 、某三位数网盘的用户,建议 cookies 用 iPhone 客户端的(抓包可用 stream )。年初没有买终身我后悔了。
    2 、建议别玩脱了。
    第 1 条附言  ·  2023-02-10 20:12:44 +08:00
    修正两个 bug

    1 、reboot 热重启时,alist 进程会保持存在,但不会正常工作,新的 alist 进程又无法启动,所以必须在热重启关机阶段将 alist 进程关闭。

    方法是在 scripts 文件夹里新建一个 services-stop 脚本,然后在脚本中将 alist 服务停止。

    在命令行中操作:

    cd /jffs/scripts

    touch services-stop

    nano services-stop

    写入如下脚本代码:

    alist 文件在 U 盘的:
    #!/bin/sh
    /tmp/mnt/sda1/alist/alist stop

    alist 文件在 jffs 的:
    #!/bin/sh
    /jffs/alist/alist stop

    CTRL+O 写入 回车确认 CTRL+X 退出


    2 、前述的 post-mount 脚本和 services-stop 脚本都需要执行权限,这一步忘提了,在此一并解决:

    cd /jffs/scripts

    chmod +x post-mount

    chmod +x services-stop
    第 2 条附言  ·  2023-02-11 01:20:03 +08:00
    经过反复的测试,继续做一些小的改进:

    1 、还是关于重启自启动,热重启都是正常的,但是我试着直接断电再上电,alist start 就会跑不起来,我猜测应该和突然断电造成 U 盘上的数据文件被破坏有关系。

    (正常的断电流程应该是
    a. SSH 登录到路由器
    b. 停止 alist 进程 alist stop
    c. 卸载磁盘 umount
    d. 断电)

    数据文件被破坏后,alist start 是无法正常运行的,因此,我建议还是通过 alist server 启动服务,此时(突然断电导致数据文件被破坏的前提下)会生成新的数据和账号,要重新设置,但通过 web 页面可以直接操作,相对比较简单。

    不过,现在电网断电应该很少见了,自己需要断电的话按照我上面的断电流程走,或者 alist 重置后重新配置一下,说不定比正常断电流程走一遍还更简单点。

    配置里记得密码和路径要改成和之前一致的,唯一比较麻烦的就是 cookies 要重新获取,我自己是提取了某三位数字网盘的 iphone app cookies ,保质期很长。

    2 ,关于启动脚本,我之前启动的时机是系统挂载磁盘后延时 1 分钟启动,虽然运行下来一直很顺利,但我刚才想了下,启动 alist 服务不仅需要挂载磁盘,各种网络服务也是需要的,启动的时机应该放在系统服务全部加载完成后。

    以上 1 、2 两点修改,对应的指令如下:

    cd /jffs/scripts

    如果之前没有创建过 post-mount 脚本文件的,直接创建 services-start 脚本:

    touch services-start

    已经创建了 post-mount 脚本的,改名:

    mv post-mount services-start

    修改 services-start 脚本如下:

    nano services-start

    alist 文件在 U 盘的:
    #!/bin/sh
    sleep 60
    /tmp/mnt/sda1/alist/alist server

    alist 文件在 jffs 的:
    #!/bin/sh
    sleep 60
    /jffs/alist/alist server

    保存退出我就不再重复了,别忘了加上执行权限:

    chmod +x services-start

    3 ,目前的 alist 程序和脚本我已经反复重启了 N(>10)次、观看视频 4 小时,还未发现别的什么问题,也没有任何断流(不排除是路由器风扇的功劳,如果有断流的可以考虑加个风扇,实测 CPU 温度不会超过 50 度),infuse 拉进度条也就稍微停顿一小会儿,总体满意。

    后续如果发现问题了,我会继续更新,没有问题的话我就不会再更新了。

    另外安利一下 infuse 永久会员,真的很棒,我现在 iPhone 、MacbookPro 和 apple tv 都有美观的画报墙,并直接播放 hdr 的 4k remux 准 UHD 原盘,码率一般是流媒体最高画质的 3-4 倍,显示效果强太多了。

    我现在日常看片搭配是客厅看 apple tv + OLED 电视,书房看 MacbookPro ,床上看 iPadAir(可惜没有 XDR ,有 XDR 的 12 寸 Pro 太重),出门看 iPhone ,感觉这个配置已经比较完美了,作为准果黑我宣布看片才是唯一值得为苹果付出高溢价的用途。之前搭的 madvr HTPC 已经不香了,虽然在电视上显示效果还是比 apple tv 略强一点,但给 HTPC 配的 kodi 都是什么玩意,而且 MCE 遥控器怎么玩怎么别扭,等 applebtv 用稳定了就准备出咸鱼或者拆了。
    12 条回复    2023-06-14 11:05:22 +08:00
    oneisall8955
        1
    oneisall8955  
       2023-02-10 15:24:03 +08:00 via Android
    值得尊敬,太折腾了吧😂

    infuse 不用直链播放的吗?应该不会过 win 家庭服务器才对吧?

    网盘资源多大,有没有分享?我也想试试
    gleArk
        2
    gleArk  
    OP
       2023-02-10 15:34:39 +08:00
    @oneisall8955

    三位数字网盘的 webdav 策略必须本地代理,会经过服务器中转的。

    另外其他网盘比如阿里云,本地代理的兼容性也是最好的,采用重定向的策略有时会播不出来,这个我在 issues 看到有人反馈过。

    我自己只用三位数字网盘,分享只能通过 cookies ,所以抱歉不能分享哈。
    gleArk
        3
    gleArk  
    OP
       2023-02-10 15:40:09 +08:00
    对了,我家还有台 AC66U B1 ,我试了好几个版本的 Arm V7 版和 musl-arm 版,都不行。
    估计只能考虑本地编译了。
    而且,我通过 PC 中转的方式做了测试,AC66U B1 的 CPU 负载已经上 80%-90%了,感觉有点撑不住的样子。

    不过,一直跑倒是没有出现断线,这点比 AX86U 强多了。
    billytom
        4
    billytom  
       2023-02-10 16:06:48 +08:00
    楼主自己试了哪么多,又打了那么多字,赞一个。。。

    如有时间,老哥能否帮忙试试,新版 AX86U 梅林固件 388.1 以客户端方式连接 Wireguard (不是 Wireguard )怎么才能正常使用?我参数都对了(同样参数电脑端 WG 应用瞬间连接能通)连接也建立了,但双方都无法 ping 通。不知道是固件没做好还是我那里没设对

    谢谢

    @gleArk
    billytom
        5
    billytom  
       2023-02-10 16:07:54 +08:00
    补充一下上文,不是用的路由器上的 Wireguard Server 模式,是 Client 模式连接另一台 WG Server
    gleArk
        6
    gleArk  
    OP
       2023-02-10 16:10:16 +08:00
    @billytom 我现在还是 386 版的,以后上 388 了再试下吧
    mmdsun
        7
    mmdsun  
       2023-02-10 16:43:05 +08:00
    感谢分享,我是 AX86U pro ,改天试试看。
    billytom
        8
    billytom  
       2023-02-10 16:45:32 +08:00
    @gleArk 好的,谢谢老哥,不过你咋不升级最新 388 版固件呢,这批华硕新机一下增加了好多新功能
    opengg
        9
    opengg  
       2023-02-13 11:22:28 +08:00
    alist 阿里云一般是 302 模式吧,服务运行在哪都是一样的。
    我怀疑你没找对问题原因。
    sleepsky520
        10
    sleepsky520  
       2023-02-20 10:42:29 +08:00
    @gleArk #2 老哥,你的 AX86 散热器风扇有链接吗?
    gleArk
        11
    gleArk  
    OP
       2023-03-03 08:54:11 +08:00
    @sleepsky520 你去某宝找找,好多家
    cencoroll
        12
    cencoroll  
       2023-06-14 11:05:22 +08:00
    大佬想问问你 u 盘用的读写速度多少的?速度有影响使用吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1744 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 16:30 · PVG 00:30 · LAX 08:30 · JFK 11:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.