小米盒子精简做 frp 客户端

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

请注意,本文编写于 318 天前,最后修改于 248 天前,其中某些信息可能已经过时。

起因

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 dy
adb 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

  • 用户名

    可随意定义
    
  • 特权用户

    保持默认不建议更改,会有神奇的 bug**s**  
    
  • 初始化

    为 Linux 启动时自动执行的 /etc/rc.local 脚本,这个可以参考[Linux 设置开机启动项的几种方法](https://blog.csdn.net/autoliuweijie/article/details/73279136)
    关于 [runparts](https://www.systutorials.com/docs/linux/man/8-run-parts/)和 [sysv](http://glennastory.net/boot/init.html)  
    
  • 挂载
    将GNU/linux外部的一个目录挂载到GNU/linux供linux访问

,请勿在挂载点列表填写块设备文件名 我也是晕的

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

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

安装和启动以及再配置

首先点击 安装 然后等待,无报错,出现 <<deploy 既是部署成功。
点击 start 启动容器,无报错,出现 <<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 [email protected]_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] 内网穿透神器搭建 萌新也看得懂的教程系列](https://moe.best/tutorial/frp.html)

adb

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

题图

★ | GiO #pixiv

添加新评论

评论列表