#!/system/bin/sh # Driver Manager v2 - Installation Script # Runs during KernelSU module installation MODDIR=${MODPATH:-/data/adb/modules/driver-manager} CONFIGDIR="$MODDIR/config" MODULESDIR="$MODDIR/modules" DRIVERSDIR="$MODDIR/drivers" BACKUPDIR="$MODDIR/backup" LOGFILE="$MODDIR/install.log" log() { echo "[driver-manager] $1" >> "$LOGFILE" 2>/dev/null; ui_print "$1"; } ui_print "================================================" ui_print " Driver Manager v2.0.0" ui_print " LSPosed-style driver management" ui_print "================================================" # --- Detect Hardware --- DEVICE=$(getprop ro.product.device 2>/dev/null || echo "unknown") MODEL=$(getprop ro.product.model 2>/dev/null || echo "unknown") SOC=$(getprop ro.hardware.chipname 2>/dev/null || getprop ro.board.platform 2>/dev/null || echo "unknown") ARCH=$(getprop ro.product.cpu.abi 2>/dev/null || echo "arm64-v8a") API=$(getprop ro.build.version.sdk 2>/dev/null || echo "35") KERNEL=$(uname -r 2>/dev/null || echo "unknown") ui_print " Device: $MODEL ($DEVICE)" ui_print " SoC: $SOC" ui_print " Arch: $ARCH" ui_print " API: $API" ui_print " Kernel: $KERNEL" ui_print "------------------------------------------------" # --- Create directories --- mkdir -p "$CONFIGDIR" mkdir -p "$MODULESDIR" mkdir -p "$DRIVERSDIR" mkdir -p "$BACKUPDIR" mkdir -p "$MODDIR/run" mkdir -p "$MODDIR/logs" # --- Device profile --- cat > "$CONFIGDIR/device.json" << DEVEOF { "device": "$DEVICE", "model": "$MODEL", "soc": "$SOC", "arch": "$ARCH", "api": $API, "kernel": "$KERNEL", "install_time": "$(date -Iseconds 2>/dev/null || date)" } DEVEOF # --- Default configuration --- cat > "$CONFIGDIR/settings.json" << SETEOF { "protection_mode": "monitor", "protection_interval": 300, "scope_mode": "app", "log_level": "info", "auto_apply_scopes": true, "monitor_zygote": true } SETEOF # --- Initialize empty scopes --- [ ! -f "$CONFIGDIR/scopes.json" ] && echo '{"scopes":[]}' > "$CONFIGDIR/scopes.json" # --- Initialize empty autoload --- [ ! -f "$CONFIGDIR/autoload.conf" ] && touch "$CONFIGDIR/autoload.conf" # --- Scan and register system drivers --- ui_print " Scanning system drivers..." if [ -f "$MODDIR/scripts/driver_registry.sh" ]; then sh "$MODDIR/scripts/driver_registry.sh" scan 2>> "$LOGFILE" DRIVER_COUNT=$(sh "$MODDIR/scripts/driver_registry.sh" count 2>/dev/null || echo "0") ui_print " Found $DRIVER_COUNT driver categories" else ui_print " [WARN] driver_registry.sh not found, will scan on first boot" fi # --- Create protection baseline --- ui_print " Creating driver protection baseline..." if [ -f "$MODDIR/scripts/protect.sh" ]; then sh "$MODDIR/scripts/protect.sh" baseline 2>> "$LOGFILE" ui_print " Protection baseline created" else ui_print " [WARN] protect.sh not found, will baseline on first boot" fi # --- Set permissions --- set_perm_recursive $MODDIR/scripts 0 0 0755 0755 set_perm $MODDIR/service.sh 0 0 0755 set_perm $MODDIR/post-fs-data.sh 0 0 0755 set_perm $MODDIR/uninstall.sh 0 0 0755 ui_print "------------------------------------------------" ui_print " Installation complete!" ui_print " Open KernelSU WebUI to manage drivers" ui_print "================================================"