Skip to content

[Feature Request] proroot 런타임 차원의 Android Host Info Bridge 지원 제안 #9

Description

@hansm629

@coderredlab

안녕하세요. 선생님!
불철주야 개발하시느라 고생 많으십니다!

proot에서 XFCE4 / LXQt 같은 데스크톱 세션을 테스트하면서, 일반 Linux 데스크톱 도구들이 Android host 정보를 제대로 읽지 못하는 문제가 있어 proroot 런타임에 기능 제안드립니다.
(아직 제가 proroot에선 XFCE4 세션 테스트를 성공하지 못했습니다.ㅠㅠ)

현재 non-root Android 환경에서는 proot 내부 rootfs에서도 Android 커널의 /proc, /sys, system property 접근 제한이 그대로 적용되기 때문에, 여러 Linux 앱들이 시스템 정보를 제대로 표시하지 못하고 있습니다.

확인한 증상 1: SoC / CPU 이름 표시 문제

Termux native bionic 환경에서는 fastfetch가 CPU를 정상적으로 표시합니다.

CPU: Qualcomm Snapdragon 8 Elite Gen 5 [SM8850] (8) @ 4.74 GHz

그리고 아래와 같이 Android property도 정상적으로 읽힙니다.

ro.soc.model        = SM8850
ro.soc.manufacturer = QTI
ro.board.platform   = canoe
ro.hardware         = qcom

하지만 proot/proroot 내부 Linux rootfs에서는 Android property 접근이 막히거나 /system/bin/getprop 실행이 Operation not permitted로 실패합니다.

그 결과 Linux용 fastfetch는 SoC 이름 대신 CPU core name으로 fallback되고

CPU: Oryon 2*8 (8) @ 4.74 GHz

Linux rootfs > xfce4-about에선 CPU 정보가 아예 공란으로 표시되고 있습니다.

확인한 증상 2: 배터리 / Wi-Fi 정보 표시 문제

proot rootfs 환경일 경우, XFCE4 패널 플러그인이나 시스템 정보 도구에서 Android host의 배터리 상태, Wi-Fi 상태, 네트워크 정보 등을 제대로 가져오지 못합니다.

Android에서는 실제로 정보가 존재하지만, rootfs 내부 Linux 앱은 일반 Linux 환경처럼 /sys, /proc, netlink, upower 등을 기대하기 때문에 정보가 누락됩니다.

Termux bionic용 XFCE4의 경우 배터리 패키지 한정에서 안드로이드 호스트 디바이스 배터리 패키지 정보를
읽어드릴 수 있도록 패치되어서 Termux bionic XFCE4일 경우 배터리 정보가 표시되고 있습니다.

확인한 증상 3: CPU monitoring 문제

htop, xfce4-taskmanager, XFCE panel system monitor 계열 도구에서 CPU 사용률이 정상 표시되지 않습니다.

원인은 Android non-root 환경에서 아래 파일 접근이 제한되거나 일반 Linux와 다르게 동작하기 때문입니다.

/proc/stat
/proc/uptime
/proc/loadavg

Termux bionic native htop와 xfce4-taskmanager의 경우 별도 패치를 통해 /proc/[pid]/task/[tid]/stat 기반 fallback과 sysinfo() fallback을 넣으면 CPU load, uptime, load average가 정상 표시되고 있습니다.

제안

proroot 런타임 차원에서 Android host 정보를 rootfs 내부에 안전하게 노출하는 Host Info Bridge 기능이 있으면 좋을 것 같습니다.

이 기능은 Android 권한 제한을 우회하는 목적이 아니라, Android host side에서 이미 접근 가능한 정보를 수집해서 rootfs 내부에 read-only로 전달하는 방식이면 좋겠습니다. (without Termux & Termux-API 구조)

기대 효과

이 기능이 들어가면 proroot 기반 데스크톱 세션에서 다음 부분이 개선될 수 있습니다.

  • fastfetch에서 HOST 기기 정보도 함께 표시 (ex: Host: Samsung SM-S948N)
  • xfce4-about에서 정확한 Android SoC 이름 표시
  • 호스트 디바이스 배터리 상태 표시
  • 호스트 디바이스 Wi-Fi / 네트워크 상태 표시
  • htop / xfce4-taskmanager CPU load 표시
    • htop에서 CPU load뿐 아니라 uptime / load average 표시
  • Linux desktop environment의 시스템 정보 완성도 향상

특히 proroot가 단순 Termux > proot-distro보다 Android runtime bridge에 강점을 가지려는 방향이라면, 이 기능은 데스크톱 사용성 측면에서 꽤 의미가 있을 것 같습니다.

보안적으로는 Android 권한을 우회하는 방식이 아니라, host side에서 접근 가능한 정보만 read-only로 rootfs 내부에 전달하는 방식이면 안전하게 구현 가능하지 않을까 생각합니다.

해당 이슈도 버그와 관련된 우선 순위 일감들이 먼저 완료된 후,
차근 차근 적용되어도 될것으로 보입니다!

검토 부탁드립니다!
감사합니다.

proroot Host APK/runtime이 Android API와 native helper를 통해 host info를 수집
SoC / 기기 정보:
  android.os.Build.SOC_MODEL
  android.os.Build.SOC_MANUFACTURER
  Build.HARDWARE
  Build.BOARD
  Build.MODEL
  SystemProperties reflection 또는 native property API

배터리:
  BatteryManager
  ACTION_BATTERY_CHANGED
  dumpsys 없이 Android API로 가능

네트워크:
  ConnectivityManager
  NetworkCapabilities
  WifiManager
  단, SSID/BSSID는 Android 권한/위치 정책 영향 있음

CPU freq:
  /sys/devices/system/cpu/cpu*/cpufreq/*
  또는 읽기 가능한 범위에서 host native collector가 수집

CPU load:
  /proc/stat 직접 접근이 막히면
  /proc/[pid]/task/[tid]/stat 기반 fallback
  단, 같은 앱 UID/process tree 기준으로 제한될 가능성 있음

uptime/loadavg:
  SystemClock.elapsedRealtime()
  Os.sysinfo 또는 native sysinfo()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions