折騰輕量下載方案 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 里面。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM