add stuff

This commit is contained in:
angryzero committed 2026-10-27 15:56:27 +01:00
commit 26cd15d899
65 files changed
+4820

No files matched your search

+209
View File
@@ -0,0 +1,209 @@
# 01 — System: Linux, SoC, Userland, Package Manager, Storage
**Ziel:** Hisense HE40E5600FFWTS, FW `V0100.01.00A.N0410`, LAN `192.168.188.94`.
**Quelle:** Live-Root-Reads am TV (`/proc`, `/lib`, `/bin`, `/etc`, Mounts) + statische Dumps.
**Status:** Systemfakten **CONFIRMED** (live/static); einzelne Hardware-/Bootloader-Details `UNVERIFIED`.
---
## 1. Linux / Kernel
```text
Linux version 3.18.25 (gfkfcmo@docker01.89.12045.pzgl.com)
(gcc version 4.8.2 20131014 (prerelease) (Linaro GCC 4.8-2013.10) )
#1 SMP PREEMPT Mon Apr 10 17:40:02 CST 2023
```
- **Kernel 3.18.25**, ARM (32-bit), SMP, PREEMPT.
- Gebaut mit **Linaro GCC 4.8.2** (2013.10), Build 2023-04-10.
- **Kein** Standard-Distro-Userland, **kein** `/etc/os-release`, **kein** `/etc/issue`, **kein** `/etc/version`.
- Firmware-Kennung: `V0100.01.00A.N0410`.
### Kernel-Cmdline (Auszug, `/proc/cmdline`)
```text
rootwait rootfstype=squashfs ro console=ttyMT0,115200n1 vmalloc=512mb quiet
mtdparts=mt53xx-emmc:2M(ubootA),2M(ubootB),256k(bt_flag),256k(ra_data),
2M(uboot_envA),2M(uboot_envB),5M(kernelA),5M(kernelB),40M(rootfsA),40M(rootfsB),
256k(basic),8M(perm),205M(3rd_ro),1152M(rw_area),256k(reserved),1M(channelA),
1M(channelB),4M(pq),4M(aq),48M(logo),1M(acfg_descr),256k(part_21),4M(adsp),
256k(part_23),256k(part_24),1M(eeprom_A),1M(eeprom_B),8M(facset),1M(hiscfg),
2040M(data),1M(cidata),1M(dbdata),40M(spdata),100M(swapdt)
root=/dev/mmcblk0p9 usbportusing=1,1,1,0 ... adb_enable=0
androidboot.serialno=000018300ced9b74 ...
```
- **Bootmedium:** eMMC (`mmcblk0`), MediaTek **`mt53xx-emmc`**-Partitionierung.
- **Rootfs:** `/dev/mmcblk0p9` (rootfsA), **squashfs ro**; A/B-Slots für U-Boot/Kernel/Rootfs.
- **`/3rd`:** Device-Mapper **`dm-3`**, squashfs ro (~141 MB).
- **`console=ttyMT0,115200n1`**: serielle Konsole existiert, ist aber nicht angeschlossen (kein Öffnen des TVs nötig).
- **`adb_enable=0`**: kein ADB.
- **U-Boot-Env:** `fw_printenv` meldet **„Bad CRC, using default environment“** und zeigt nur einen NFS-Default (`bootcmd=bootp...`). Die **echte** Boot-Konfiguration ist die `/proc/cmdline`; das U-Boot-Env ist **nicht** verlässlich (UNVERIFIED im Detail).
### CPU / SoC
`/proc/cpuinfo`:
```text
model name : ARMv7 Processor rev 4 (v7l)
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU part : 0xd03
CPU revision : 4
```
- **ARMv7**, Cortex-A53 (`part 0xd03`), NEON/VFPv4, Thumb-2.
- **SoC-Klasse:** MediaTek **MT53xx/MT5863** (Belege: `mt53xx-emmc` in cmdline; Browser-Build `mt5863_sa_768_linux` in `run-Browser.sh`; `mt5863` im Build).
- **Exakte Kernanzahl** aus dem Dump: `processor 0..2` sichtbar; `mt5863` ist 4×A53. Als **4 Kerne** dokumentiert, exakter Count `UNVERIFIED` (der Dump war auf 28 Zeilen begrenzt).
- **GPU:** ARM Mali (`/3rd/Arm_Mali`, `/basic/lib/libMali.so`, `ins_arm_mali_mod.sh`); die UI nutzt GLES (`--hw-gles`).
---
## 2. Userland
### libc / Laufzeit
- **glibc 2.18**:
- `/lib/ld-linux.so.3`, `/lib/ld-2.18.so`
- `/lib/libc-2.18.so`, `libm-2.18.so`, `libdl-2.18.so`, `libpthread-2.18.so`
- `/lib/libstdc++.so.6.0.18`, `libgcc_s.so.1`
- **ABI:** ARM EABI5, hard-float (VFPv4), `Tag_ABI_align_needed: 8-byte`.
- **Zusätzliche Libs:** `/basic/lib` (libcrypto/ssl/curl/nss/…), `/3rd/lib` (libxml2/mxml/iconv/…), `/3rd_rw/opera4xLib` (Browser-Libs), `/lib` (glibc).
- **Dynamische Binaries** brauchen die TV-glibc 2.18. **Statisch** ist der sichere Weg (siehe `06`).
### BusyBox / Shell
- **BusyBox 1.18.5** (Build 2017-12-05), multi-call.
- **Viele Applets sind nicht als Symlink vorhanden** (`uname`, `tr`, `tail`, `id` fehlen z. B. als `/bin/<name>`); nutze:
```sh
/bin/busybox uname -a
/bin/busybox tail -n 10 /pfad
/bin/busybox tr '\0' '\n' < /proc/.../environ
```
- `/bin/sh` existiert (Shell), `/bin/bash` ebenfalls; `/bin`, `/sbin`, `/usr/bin`, `/basic/bin` gemischt.
- Nützliche vorhandene Tools: `mount`, `umount`, `insmod`, `mknod`, `mkfs.ext4`, `tar`, `sed`, `grep`, `awk`, `find`, `ping`, `nc`? (nicht geprüft), `ps`, `kill`, `reboot`, `fw_printenv`, `busybox`.
- **Nicht vorhanden / nicht gebaut:** `uname` (Applet), `tr` (Applet), `id` (Applet), `ssh`, `sshd`, `scp`, `sftp`, `opkg`, `apt`, `dpkg`, `rpm`, `curl` (BusyBox), `wget`? (nicht geprüft), `python`, `perl`.
### Init / Services
- **SysV-artig**, **kein systemd**:
- `/etc/inittab`: `id:3:initdefault:`; `1:012345:respawn:/sbin/getty -L ttyMT0 115200 vt100`; `si::sysinit:/etc/init.d/rcS`.
- `/etc/init.d/rcS`: `source /etc/profile`; `mount -avt nonfs,nosmbfs`; `/etc/rc.d/rc.local`.
- `/etc/rc.d/rc.local`: `/proc/boottime`, `/dev/shm/shm_tmp`, `rc.local.partial`, `mount_main.sh`, `mount_data.sh`, `/basic/3rd_ini/*/global_env_setup.ini`, `mount_3rd*`, `mount_perm.sh`, `fusion.ko`, `hisense_rc.sh`, `dtv_driver*.ko`, `autorun.sh`, `patch/opera4x`, `preload_opera`, `ms_service`, `hisenseUI`, `app_man`, `delayrun`.
- **Seriell:** `ttyMT0` 115200; `rootlogin.sh` (USB-Key + doppelt-MD5-PIN) ist der Hardware-Root-Login. **Nicht nötig** für den Software-Root.
- **USB-Console:** `usb_console.sh` nur wenn `ttyUSB` in `/proc/cmdline`; hier nicht.
---
## 3. Package Manager: **keiner**
Live-Root-Check:
```sh
for c in apt apt-get dpkg rpm opkg ipkg apk yum pacman; do command -v $c; done
# -> keine Ausgabe / nicht gefunden
ls -la /etc/opkg /etc/opkg.conf /var/lib/opkg /var/lib/dpkg /usr/lib/opkg
# -> No such file or directory
/bin/busybox --list | grep -E '^(opkg|dpkg|rpm|apk|ipkg)$'
# -> keine Treffer
cat /etc/os-release
# -> No such file or directory
```
**Fazit:** Es gibt **keinen Package Manager**, kein Paket-Repo, kein `opkg install`, kein `apt`.
**Modding-Konsequenz:**
- Eigene Tools als **statische ARM-Binaries** bauen (`arm-linux-gnueabihf-gcc -static`) oder Shell-Skripte verwenden.
- Deployment per **`File.download`** (Browser root) nach `/3rd_rw/appdata`, per **SSH** (`cat`/`base64`/`tar`) oder USB.
- Nichts „installieren“ im Sinne einer Distro; Dateien nach `/3rd_rw`/`/data`/`/perm` legen und per `developer.sh`/`HamService`-Wrapper starten.
- Siehe `06-toolchain-deploy.md`.
---
## 4. Storage / Mounts / Partitionen
### Mounts (live)
```text
rootfs / rootfs rw 0 0
/dev/root / squashfs ro,relatime 0 0
none /proc proc rw
none /sys sysfs rw
none /opt tmpfs rw # 304.6M
none /dev/shm tmpfs rw # 304.6M; /tmp -> /dev/shm/shm_tmp
none /var/run tmpfs rw # 304.6M
/dev/mmcblk0p30 /data ext4 rw # 1.9G
/dev/mmcblk0p30 /vddt ext4 rw # gleiche Partition
/dev/mapper/dm-3 /3rd squashfs ro
/dev/mmcblk0p33 /spdata ext4 ro
/dev/mmcblk0p14 /3rd_rw ext4 rw # 1.1G
/dev/mmcblk0p12 /perm ext4 rw # 3.9M
/dev/sda1 /dev/shm/shm_tmp/mnt/usb/sda1 ext4 rw
/dev/mmcblk0p14 /etc/passwd ext4 rw # unser Bindmount (Root-Home)
devpts /dev/shm/pts devpts rw
devpts /dev/pts devpts rw # Bind für PTY
```
### Größen (`df -h`)
| Mount | Größe | Belegt | Frei | FS |
|---|---:|---:|---:|---|
| `/` | 38.8M | 38.8M | 0 | squashfs ro (100 %) |
| `/3rd` | 141.0M | 141.0M | 0 | squashfs ro (100 %) |
| `/3rd_rw` | 1.1G | 610.6M | 489.3M | ext4 rw (56 %) |
| `/data` | 1.9G | 3.0M | 1.9G | ext4 rw |
| `/perm` | 3.9M | 172K | 3.5M | ext4 rw |
| `/spdata` | 35.4M | 1.3M | 33.3M | ext4 ro |
| `/opt` | 304.6M | 0 | 304.6M | tmpfs |
| `/dev/shm` | 304.6M | 58.8M | 245.8M | tmpfs |
| `/var/run` | 304.6M | 0 | 304.6M | tmpfs |
| USB | 927.7M | 264K | 863.5M | ext4 rw |
- **Kein OverlayFS** (`/proc/filesystems`: sysfs, rootfs, ramfs, bdev, proc, tmpfs, debugfs, sockfs, pipefs, **devpts**, ext2/3/4, **squashfs**, vfat, iso9660, udf, mqueue, ntfs; **kein overlay**).
- **Modding-Mechanik:** rw-Partitionen + **`mount --bind`** (Datei oder Verzeichnis), kein Overlay.
- **`/dev` ist Teil des ro Squashfs** (kein devtmpfs); `/dev/pts` enthält statische Nodes 136,0–4; **PTY-Workaround** nötig (siehe `06`/Root-Guide).
- **`/tmp` ist ein Symlink auf `/dev/shm/shm_tmp`** (tmpfs).
- **eMMC-Partitionen** (Auszug): p9 rootfsA (40M), p10 rootfsB, p12 perm, p13 3rd_ro (205M), p14 rw_area/3rd_rw (1152M), p30 data (2040M), p33 spdata (40M), p34 swap (100M); `dm-3` = 141M `/3rd`; `zram0` 200M.
- **Swap:** `delayrun.sh` macht `mkswap /dev/mmcblk0p34` + `swapon`; `zram0` 200M.
- **Rootfs/3rd 100 % voll**; neue Daten gehören nach `/3rd_rw` (489M frei) oder `/data` (1.9G frei), nicht in `/`/`/3rd`.
---
## 5. Toolchain-Constraints (Kurz)
| Constraint | Wert |
|---|---|
| Architektur | ARMv7, EABI5, hard-float, VFPv4/NEON |
| Kernel | 3.18.25 (kein overlayfs, kein devtmpfs, devpts ja) |
| libc | glibc 2.18 (TV) |
| Compiler | `arm-linux-gnueabihf-gcc` (Host) |
| Static | empfohlen; `-static`; der mitglieferte Dropbear ist statisch (glibc 2.39) und läuft |
| Dynamic | nur mit TV-glibc 2.18 / passendem Sysroot; sonst GLIBC_2.xx-Fehler |
| Package Manager | **keiner** |
| Deploy | `File.download` (Browser root), SSH (`cat`/`base64`/`tar`), USB |
| PTY | devpts auf `/dev/shm/pts` → bind `/dev/pts`; `/dev` ro |
| Overlay | **nein** → `mount --bind` + `developer.sh` |
Details, Dropbear-Build und Deploy: `06-toolchain-deploy.md`.
---
## 6. Evidence
- `/proc/version`, `/proc/cmdline`, `/proc/cpuinfo`, `/proc/filesystems`, `/proc/mounts`, `/proc/partitions`
- `df -h`, `ls -l /lib`, `ls -l /bin`, `ls -l /etc`, `/etc/inittab`, `/etc/init.d/rcS`, `/etc/rc.d/rc.local`
- `command -v apt/dpkg/opkg/...` leer; `/etc/opkg`/`/var/lib/dpkg` fehlen; `/bin/busybox --list`
- Der alte Run-Ordner (`docs/re/20261025-vidaa-takeover/`) enthält die Roh-Captures; für die Replikation nicht nötig.
---
## 7. Bekannte Unknowns
- Exakte SoC-Bezeichnung (MT5863 vs. MT53xx-Familie), exakte Kernanzahl, Secure-Boot-/Signaturstatus.
- Vollständige Kernel-Config, `dm-3`-Konstruktion, `spdata`/`perm`/`facset`/`hiscfg`/`eeprom`-Inhalte.
- U-Boot-Env (Bad CRC; default NFS) und echter Bootloader-Flow im Detail.
- DRM/`securetime`/PlayReady/Widevine, Netflix/Cobalt/Amazon, OTA/`checker.sh`/`file_upgrading`.
- `dtv_svc`/`app_man`-Interna, `LauncherService`-Datenquelle, `Hisense_*`-API-Signaturen.
- Ob `VIDAAU2Launcher` auf diesem Modell je aktiv ist (die aktive UI ist `/3rd_rw/UI`; `launcher`/`VIDAAU2` sind Alt-/Alternativ-Skins).
- Ob der `preset.txt`-Cache vom `LauncherService`/der UI bei jedem Start neu geschrieben wird (die `deletedPresetApp.txt` ist die persistente Hide-Liste).