zoukankan      html  css  js  c++  java
  • 折腾轻量下载方案 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 里面。

  • 相关阅读:
    systick运用
    stm32的systick原理与应用
    PID算法知识点博文收藏记录
    关于STM32驱动DS1302实时时钟的一点思考
    什么是同步?什么是互斥?
    C语言小笔记(1)
    typedef 复杂函数指针
    获取窗口句柄
    GetWindowRect和GetClientRect的区别详解
    RepositionBars的用法和参数的意义(引用别人的)
  • 原文地址:https://www.cnblogs.com/ningci/p/15521400.html
Copyright © 2011-2022 走看看