小米盒子精简做 frp 客户端

把闲置在手的 小米盒子 1s(MDZ-06-AA) 利用起来做 frp cilent.

起因

frp 是一个高性能的内网穿透工具 balabala…总之,frp 相比较 Ngrok 之类的内网穿透工具,配置也更加简单,性能更好,功能也挺多的额,最近还加上 端对端、不走服务器流量的穿透方式,也就不受服务器网络带宽限制了。
最近打算给放在家里的 k2p 配置一个 frp 方便在出门在外搞搞事情。k2p a2 的 pandavan 固件带一个 frp 客户端,但是版本和功能都不太完整,也不大喜欢这个华硕固件的 UI ,于是就刷到了 openwrt ,但是 frp 的软件包太大了,k2p 不魔改闪存,根本装不下,只能另辟蹊径了。这个 1+2 的盒子倒是一个好的选择,5.2V 2.0A 供电,是 ARM 架构,并且这个盒子目前也没找到第三方 recovery 之类的,只有在原 ROM 的基础上精简,然后用 Termux 虚拟一个 Linux 环境来跑 SSHD 和 Frpc。但是后来发现 Termux 最低兼容 Android 5.0 ,最后只能选择 Linux Deploy
linux deploy 与 Termux 不同,Linux Deploy 是通过 Chroot 切换到一个完整的虚拟 Linux 环境,完全可以当一个实体 Linux 使用,缺点就是需要设备已 root, 使用的是安卓的内核,安卓内核都比较老旧了,所以不支持一些软件,比如 Dockers 。而 Termux 则是模拟一些命令,是与宿主机联通的。但是也有作死在 Linux Deploy 虚拟的 Linux Deploy 根目录执行 rm -rf / 让手机开不了机的。
Chroot , Changing root , 创造一个 Chroot jail (Chroot 监狱) 供 Chroot 使用,此系统不能访问监狱之外的目录。此系统因为缺少 D-Bus 所以不能运行 Systemd 工具。Linux Deploy 可以挂载此监狱之外的目录。

准备工作

ROOT

没有第三方 Recovery ,也没找到进 Bootloader 的方法,就只有用各种工具,比如 Kingroot , 360ROOT , 刷机精灵等毒瘤来 ROOT ,因为机型很老,成功率也挺高的。pc 的 360root 死活用不了···只有用盒子上的了。
如果有能够使用的 OTG 线或者蓝牙鼠标,可以尝试外接鼠标操作,要方便很多。身边的 OTG 一体式转接口会被电源线挡住插不进去,红外遥控器(包括 MIREMOTE) 在一些针对触摸屏的软件内根本用不了,不存在光标的(这点好像还不如 Windows )。
所以只有用 ADB 的模拟点击操控,(很麻烦就是了)

  • 首先你得在设置 - 账号与安全 -USB 调试中打开调试开关(重启会自动关闭)- adb devices , 显示设备 ID 才算配置成功
    配置 adb 环境什么的,这不是重点 记得此时盒子弹出来的是否信任以及开启调试要选择信任。
  • 模拟点击主要用到的就是 adb shell input tap dx dyadb shell input swipe dx dy dx dy
    dx 和 dy 是建立在屏幕上直角坐标系的点坐标,跟实际屏幕分辨率有关,比如 1920x1080 的中间点就是(960,540),注意坐标原点在左上角,x 轴正方向向右,y 轴正方向向下。比如我想点击坐标为(600,600)的坐标,输入 adb shell input tap 600 600 从(660,660) 滑动到 (320,320), 输入adb shell input swipe 660 660 320 320
    可以打开开发者选项中显示指针位置来确定元素位置。
    小米把开发者选项入口隐藏了,点击多次版本号后还需要输入 adb shell am start -a com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS 打开开发者选项。
  • 几个软件都试一下,我是用 360root 成功获得 root,获取 root 后可以尝试用 supersu 或者 Magisk 来接管权限管理。(建议 Magisk)然后进 /system/app 删掉 360root 的 apk。
    我这儿删掉 apk 后 360root 就没了,但是这时 Magisk 和 Root 全部掉了,重启后就会恢复。
    在盒子上卸载软件还是不方便, adb 输包名…我尝试多次,卸载系统软件都失败,所以最佳的方案还是去 /system/ 删文件。

可选的降级

最新的版本 UI 换成瀑布流了,占用大了不少,浪费了不少资源,可选降级。
降级需要把刷机包放在 U 盘根目录,插进盒子,开机时长按 主页 + 菜单 或者 OK+ 返回 进入 Recovery ,(我用手机上的遥控器操作就没成功过一次),降级成功后,去更新关掉自动更新。
小米盒子貌似有是双系统机制,更新后也可以回滚上一个版本。

其他

  • 关于 Magisk 接管 Root ,首先去 Github 下载 Magisk manager ,安装,授予 ROOT 权限,点击安装,直接安装(root 授权不成功,不会有直接安装的选项)等待安装完成即可。

  • 不建议使用刷机精灵,即使卸载本体程序后,还会有 授权组件存在,不好卸载。

  • 还是建议准备一条 OTG 转接 线,非转接头,空间不允许。

  • 记得禁止自动更新和关闭自动休眠。

安装 Linux

下载

Github 或者 play-store 安装 Linux Deploy.

部署

如果没有特殊需求可以直接打开 ssh 或者一个 GUi 然后安装,开始即可搞定。
软件排版 (竖屏))
软件主界面 = 刚打开 linuxdeploy 显示的界面
左滑动菜单栏 = 左上角的滑动菜单(包含容器、仓库、终端和软件设置)
linux 配置区 = 右下角图标(主要就是 linux 容器的具体配置,如软件源、ssh 之类的)
操作菜单 = 主界面右上角的 3 点(安装、配置、导出、状态、清除)
app 设置 = 滑动菜单里面的设置(包含自启等等)

配置 linux

  • 容器类型

    建议选择 chroot (proot 支持有问题)

  • 发行版本

    根据自己需要

  • 架构
    可在终端(adb shell?)执行 arch 查看

  • 发行版 GNU/Linux 版本
    根据需要

  • 源地址
    默认官方源,建议选择国内源,速度更加理想(自己根据自己发行版的版本寻找)

  • 安装类型
    我选择的是 目录
    因为刚开始使用的文件模式无法自启动容器。

具体差异如果想深究可查看pluhuxc

  • 用户名
    可随意定义

  • 特权用户
    保持默认不建议更改,会有神奇的 bugs

  • 初始化
    为 Linux 启动时自动执行的 /etc/rc.local 脚本,这个可以参考Linux 设置开机启动项的几种方法
    关于 runpartssysv

  • 挂载
    将 GNU/linux 外部的一个目录挂载到 GNU/linux 供 linux 访问
    ,请勿在挂载点列表填写块设备文件名 我也是晕的

  • SSH
    建议打开, 端口建议更改为高位端口,安卓设备对端口有较大的限制。

其他就是一些图形界面的选项,但是我个人不大建议使用,资源占用挺多。

安装和启动以及再配置

首先点击 安装 然后等待,无报错,出现 < 既是部署成功。
点击 start 启动容器,无报错,出现 < 既是启动成功。
ssh 连接客户端,成功后一般都没有太大问题了。
注意修改 ssh 等配置后要重新 配置 容器后,配置才会生效。

Mibox 系统的精简

虽然是旧版系统,但是毕竟他已经不是一个电视盒子,许多的服务和软件可以干掉了,不然系统负载会很大。我已经删了不少了,桌面和一些 DLNA 服务没删,日常负载还是 1.3~1.7 ,建议用支持 root 的文件管理器。

谷歌文档


来源

FRP

Frp具体配置可以参考 神代綺凜的教程

FAQ

出现 Permission denied", "Socket operation on non-socket"

请安装 Busybox ,正常情况下应该不需要。并在 "Settings -> PATH variable"添加路径 /system/xbin

程序和容器无法自启

确定没有其他管理程序禁止了 Linux Deploy 的自启,并打开设置菜单中的自启选项,还有我的盒子上,镜像文件模式是无法成功自启的,启动延迟默认一般无需更改。

其 - 他

  • 可以用 adb 进入 recovery 恢复系统,开不了机···也没办法了.

  • 救砖方法: 拆开外壳,连接主板屏蔽罩背面、2.5mm av 接口和 HDMI 接口之间三个触点中靠近 AV 接口的两个,打开开关,这样电脑才能识别到机器。才可以用下列的刷机工具,来源 工具 密码: cu45
    需要注意的是本工具中导入驱动的方式为 设备管理器 - 其他设备 - 找到这个未识别的设备 - 右键更新驱动 - 从本地选择 - 选择解压出来文件夹中的 AmlogicusbBurningdriver 安装完后,设备正确识别。
    导入配置文件的的入口在左上角。

win10 是无法使用这个工具的,驱动都装不上,用虚拟机 win7 32 位亲测可以走到上传刷机包的步骤,但是期间某个程序(adb?)会自启,设备会掉,然后就失败了。

  • 如果需要长期在线,建议在路由器 DHCP 中给此设备分配一个固定 IP 。在 frp 中穿透本机 SSH 服务,ip 填写 127.0.0.1 ,我填局域网地址会穿透失败,穿透成功后,在外网(指中国局域网) ssh usr@server_ip -p remoteip 即可。其他服务同理。穿透 http 严格意义上是违法的,你用国内服务器的 80 443 端口,道理上也应该备案。
  • frp 的 xtcp 服务可以无视服务器带宽,路由器自由度不高,用这个方案的话跑满家宽,比较适合文件传输。
  • 如果 adb root 无法正常使用,无法正确重新挂载,可以用 超级 adbd ,就可以正常使用 adb root / adb remount

链接和参考

解决卡顿!小米盒子极度精简列表(适合各型号小米盒子)

LinuxDeploy 详解

fatedier/frp

meefix/linux deploy

没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

Linux 查看操作系统位数、CPU 架构、个数、核数

【Linux Deploy】一、Linux Deploy 安装配置使用教程

chroot wiki)

How to Install Ubuntu on Your Android Phone Using Linux Deploy

[frp] 内网穿透神器搭建 萌新也看得懂的教程系列

adb

小米盒子 1S(MDZ-06-AA)降级 1.4.23 版终极救砖详解

题图

★ | GiO #pixiv