折腾轻量下载方案 android linux deploy 方案 root

因为总要下载东西,老开着电脑也费电,还担心电脑的寿命。

那天在同事那里见到一个 openwrt transmission 回来也折腾一下,本来也想放到 路由器上,但是编译下载时间太长,先在 现成的 树莓派 4b上弄下。

先更新
sudo apt-get update

安装 U盘 ext 格式支持
sudo apt-get install exfat-fuse

安装 transmission

sudo apt-get install transmission-daemon

先停止服务
sudo systemctl stop transmission-daemon

修改配置文件 用户名 密码 访问白名单
sudo vim /etc/transmission-daemon/settings.json

启动服务
sudo systemctl start transmission-daemon

浏览器登录
http://192.168.0.123:9091/

试用了一下,感觉不是很好用,不能选择下载的文件

换软件

qbittorrent 此软件需要 qt 环境,装一个在命令行运行的 qbittorrent-nox

sudo apt-get install qbittorrent-nox

启动
sudo qbittorrent-nox -d

浏览器登录
http://192.168.0.123:8080/

用户名 admin
密码 adminadmin

功能很丰富啊,试用了一下,容易卡住,可能是树莓派性能太差

 

买一台小主机又不花算,想着上次当tv box 的 rk3399 在安卓上面在跑一个 linux 这样方案比较好

rk3399 的性能还是非常不错的,秒杀市场上的主流盒子 Amlogic S905 。

先准备软件:

https://github.com/meefik/busybox/releases

https://github.com/meefik/linuxdeploy/releases

https://www.juicessh.com/changelog

https://supersuroot.org/download/

busybox-1.31.1-46.apk (比较齐全的工具箱)
linuxdeploy-2.6.0-259.apk (chroot 容器)
supersu-2-82.apk

juicessh-2.1.4.apk  (ssh 客户端连接工具,适用于 android 6 7 低版本)

先是一个主要的软件 linuxdeploy 在就是 busybox 工具箱

root 权限,明明编译的是 user-debug  版本,adb root 都正常的版本,还是提示无 root 权限。

解决 root 权限问题:

android 中 app 运行的时候的权限是以 app 安装的时候的用户决定的。

app 安装时的权限是一个随机的高 uid  的低权限用户。

supersu 是做什么用的呢?

supersu 本身已 root 用户在运行,因为已经取得了 root 权限,普通  app 想要权限的时候,向 supersu 的 su 发送请求,由 supersu 替代执行 root  操作,在把结果返回给 app

PS: supersu 根本没用上。

操作方法:

1,挂载 system 为读写,可随意操作

2,修改安卓源码,添加 Android.mk 或 Android.bp 打包时安装到 /system/app 中

https://github.com/koush/Superuser

build in AOSP 方案,经过试验并不能运行,而且系统本身有 su 这个 mk 会导致出错

虽然 adb 中可以使用 su 切换到 root  用户也能随便执行 命令,但是,普通的 app 并不是 adb 的 shell 用户,所以还是没有 root 权限。

关键改动点:

1,关闭 selinux ,就算有  root 权限,如果 selinux  是严格模式,还是执行不了所有操作,会报 avc 错误,所以要先关闭 或 修改 selinux 状态为 permissive

通过 getenforce 进行查看工作状态

2,虽然有 root 也关闭了 selinux 但是还是不能修改 /system/ 系统文件,因为系统分区被挂载为 ro 模式,并且,还有 dm-verity 保护

修改 fstab 挂载方式为 rw 

3,虽然 修改了 system/extras/su/su.cpp 里面的,权限检查,可是打开 app 还是提示无权限操作

1 int main(int argc, char** argv) {
2     //uid_t current_uid = getuid();
3     //if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");

在 进入 java 的世界的时候, Zygote 会执行 drop 权限的操作, DropCapabilitiesBoundingSet

4,虽然以上你全都操作对了,可是还是没有 root 权限,为何呢?因为文件权限的问题  ls -la /system/xbin/su

没有 s 权限,不要以为设为 777 就万事大吉,谁都可以操作 

经过以上重重困难,终于,可以在 app 正常使用 root  权限了。

 

 

 

 安装 qbittorrent-nox 并运行

开机自动启动
锁定WIFI
保持CPU唤醒
联网更新
PATH变量

安装位置,需要 ext4 分区,可以设为 /data/linux.img

配置文件

镜像地址
http://ftp.debian.org/debian/
改为
https://ftp.debian.org/debian/

用户名 admin
密码 12345678
本地化 zh_CN.UTF-8

挂载
允许挂载 Android 上的资源

SSH
允许使用 SSH 服务器

图形桌面
不需要

配置好以后,先点 安装,然后在点启动

容器应用,可能被系统 oom 杀掉,可以添加系统签名,做为系统 app 安装在 room 里面。

 

posted @ 2021-11-07 19:41  宁次  阅读(730)  评论(0编辑  收藏  举报