TWRP: Eigene Flashbare ZIP macht nicht alles was sie soll

Ja wie gesagt gibt aber leider Ausnahmefälle. Aber ich werde mich besser auf die 95% normale Smartphones konzentrieren und es dann doch einfach auf dem normalen Weg machen :) . So gehts es aber auch zumindest bei 7 von 8 verschiedenen Smartphones hier. Jetzt landen die Lockscreen Wallpaper auch automatisch im Unterordner oder nicht :

Code:
#!/sbin/sh

export OUTFD="/proc/self/fd/$2"
ui_print() {
    echo "ui_print ${1}" > "$OUTFD"
}

ui_print "                                            "
ui_print "--------------------------------------------"
ui_print "                                            "
ui_print "     personalisation Script 13.1o.2o2o      "
ui_print "                                            "
ui_print "  Install hosts, ringtones, notifications   "
ui_print "               and wallpaper                "
ui_print "                                            "
ui_print "--------------------------------------------"
ui_print "                                            "
ui_print "                                            "

ui_print "- mount system                              "
mount /system
mount /system_root
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- detecting system mountpoint               "
FILE=/system/build.prop
if test -f "$FILE"; then
    SYSTEM_MOUNT=/system
else
    FILE=/system_root/build.prop
    if test -f "$FILE"; then
        SYSTEM_MOUNT=/system_root
    else
        FILE=/system_root/system/build.prop
        if test -f "$FILE"; then
            SYSTEM_MOUNT=/system_root/system
        else
            ui_print "                                            "
            ui_print "- no mountpoint found                       "
            ui_print "--------------------------------------------"
            ui_print "                                            "
            ui_print "                                            "
            exit 0
        fi
    fi
fi
UP=/data/system/users/0
RT=$SYSTEM_MOUNT/media/audio/ringtones
NT=$SYSTEM_MOUNT/media/audio/notifications
TEMP=/tmp/TWRPscript
ui_print "- mountpoint: "$SYSTEM_MOUNT
ui_print "- done                                      "
ui_print "                                            "

ui_print "- extract archiv: "$3
mkdir $TEMP
unzip -o "$3" -d $TEMP
sleep 5
ui_print "- done                                      "
ui_print "                                            "

ui_print "- Delete old files                          "
rm -f $SYSTEM_MOUNT/etc/hosts
rm -f $NT/*
rm -f $RT/*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy hosts                                "
cp $TEMP/hosts $SYSTEM_MOUNT/etc/
chmod 644 $SYSTEM_MOUNT/etc/hosts
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy notifications                        "
cp $TEMP/notifications/* $NT
chmod 644 $NT/*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy ringtones                            "
cp $TEMP/ringtones/* $RT
chmod 644 $RT/*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- delete wallpaper                          "
if test -d "$UP/wallpaper_lock_images"; then
    LCSF=true
else
    LCSF=false
fi
rm -rf $UP/wallpaper_lock_images
rm -f $UP/wallpaper*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy new wallpaper                        "
cp -r $TEMP/wallpaper/wallpaper* $UP
cp  $UP/wallpaper $UP/wallpaper_orig
cp  $UP/wallpaper_lock_images/wallpaper_lock $UP/wallpaper_lock_images/wallpaper_lock_orig
ui_print "- done                                      "
ui_print "                                            "

ui_print "- set owner and rights                      "
chmod 600 $UP/wallpaper* 
chmod 771 $UP/wallpaper_lock_images 
chmod 600 $UP/wallpaper_lock_images/*
chown system:system $UP/wallpaper*
chown -R system:system $UP/wallpaper_lock_images
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- set SELinux context                       "
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper_orig
chcon u:object_r:users_system_data_file:s0 $UP/wallpaper_info.xml
chcon u:object_r:users_system_data_file:s0 $UP/wallpaper_backup_info.xml
chcon u:object_r:users_system_data_file:s0 $UP/wallpaper_lock_images
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper_lock_images/wallpaper_lock
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper_lock_images/wallpaper_lock_orig
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- set lockscreen-wallpaper folder           "
if "$LCSF"; then
    ui_print "- lockscreenfolder:                    "
    ui_print "- "$UP/wallpaper_lock_images/
else
    mv $UP/wallpaper_lock_images/wallpaper_lock $UP
    mv $UP/wallpaper_lock_images/wallpaper_lock_orig $UP
    rm -rf $UP/wallpaper_lock_images
    ui_print "- lockscreenfolder:                    "
    ui_print "- "$UP/
fi
ui_print "- done                                      "
ui_print "                                            "

ui_print "- unmounting filesystem                     "
rm -rf $TEMP
sleep 3
umount /system
umount /system/root
sleep 1
ui_print "- done.... ready to reboot                  "
ui_print "--------------------------------------------"
ui_print "                                            "
ui_print "                                            "
 

Anhänge

  • __install_wallpaper_tones_hosts.zip
    3,9 MB · Aufrufe: 24
Zuletzt bearbeitet:
@bobwooton Noch ein Versuch: Vielleicht wäre es möglich, die Kontexte zu übernehmen, indem die Dateien nicht vorher gelöscht werden. Bei cp macht das einen Unterschied.
Bsp.: Im aktuellen Verzeichnis befinden sich drei Dateien
Code:
file1 ---------- system:system u:object_r:vendor_file:s0
file2 ---------- system:system u:object_r:vendor_file:s0
file3 ---------- system:system u:object_r:vendor_file:s0
und im darüberliegenden Verzeichnis
Code:
file0 -rw-r--r-- root:root u:object_r:system_file:s0

Werden nacheinander diese Befehle ausgeführt,
Code:
cp ../file0 file1
cp --preserve=context,ownership ../file0 file2
rm file3
cp ../file0 file3
bekommst du das Ergebnis.
Code:
file1 ---------- system:system u:object_r:vendor_file:s0
file2 ---------- root:root u:object_r:system_file:s0
file3 -rw-r--r-- root:root u:object_r:system_file:s0
 
Die Kontexte fehlen ja schon in den Dateien die man aus dem Arciv reinkopiert da sie wohl im ZIP schon verlohren gehen.
 
@bobwooton Durch den Befehl cp können
verschiedene Ergebnisse entstehen.

Wird die Datei überschrieben, dann übernimmt file0 die Kontexte von file1. => das wäre dein Ziel

Wird die Datei vorher gelöscht, dann behält file0 die Kontexte und hat dieselben auch als file3. => das passiert aktuell
 
Morgen mal em Script austesten. Heute bin ich den ganzen Tag nicht zu hause. Muss auch noch mal kucken ne Abfrage nach ner externen SD mit ins Script zu bauen und wenn dort vorhanden den titaniumbackup-Ordner ( Sicherungskopie ) in en internen Speicher kopieren wie ich die Anwendungssicherungen auch noch per Script zurück geschrieben bekomme. Dann hätte man alles in einem Schritt erledigt.
 
Zuletzt bearbeitet:
@bobwooton Ich würde die Wiederherstellung TB überlassen. Das alles per Script auszuführen ist wirklich sehr aufwendig. Du musst einiges berücksichtigen und zum Schluss, wenn alles funktioniert, hast du nicht mehr als das, was die App mit wenigen Klicks ausführt.

Da wäre ein Aufruf der App m.M.n. sinnvoller.
 
Ja aber das rüber kopieren von weiteren Daten mach ich trotzdem schon mal automatisch bei einer Installation ( wenn vorhanden ). Denn es sind teilweise 300-350GB die ich bei einigen ins Smartphone kopiere ( hab z.b. zwei S10+ in "Ceramik White" mit 512GB die hier als Musikabspieler über AirPlay dienen ). Oder auch einiges was vorkonfiguriert ins "Android" Verzeichnis kommt u.s.w.. Hab dafür im Script das jetzt noch drin. Denn die wichtigen Daten hab ich in jedem Smartphone als Backup immer noch auch auf einer internen 512GB SD-Card um bei einem Werksreset nix zu verlieren.

Code:
if test -d "/external_sd/__Install/__AUTO_INSTALL"; then
    ui_print "- copy additional data              "
    cp -r /external_sd/__Install/__AUTO_INSTALL/* /sdcard
    sleep 1
    ui_print "- done                              "
    ui_print "                                    "
fi

So ist es ja offen ob was rein kopiert wird ( wenn vorhanden ) oder nicht.
 
Zuletzt bearbeitet:
@bobwooton Sowas macht ja eh keine Probleme, bzw. ist an so viele Bedingungen geknüpft wie einzelne Apps.
 
Hab hier ja zich Smartphones zur Steuerung im EInsatz. SInad halt alle ( fast ) gleich installiert so das man eben so auch schnell wieder neu installieren kann ohne an zich Sachen einzeln denken zu müssen. Hab es jetzt so im Script
( also entweder wenn vorhanden von externer SD ( weil ggf. aktueller ) oder wenn nicht von dort wenn vorhanden im Notfall aus dem ZIP ). So geht es aber jetzt erst mal auf allen Smartphones hier und kann also dann jetzt endgültig erst mal so bleiben :

Code:
#!/sbin/sh

export OUTFD="/proc/self/fd/$2"
ui_print() {
    echo "ui_print ${1}" > "$OUTFD"
}

ui_print "                                            "
ui_print "--------------------------------------------"
ui_print "                                            "
ui_print "     personalisation Script 16.1o.2o2o      "
ui_print "                                            "
ui_print "  Install hosts, ringtones, notifications   "
ui_print "               and wallpaper                "
ui_print "                                            "
ui_print "--------------------------------------------"
ui_print "                                            "
ui_print "                                            "

ui_print "- mount system                              "
mount /system
mount /system_root
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- detecting system mountpoint               "
FILE=/system/build.prop
if test -f "$FILE"; then
    SYSTEM_MOUNT=/system
else
    FILE=/system_root/build.prop
    if test -f "$FILE"; then
        SYSTEM_MOUNT=/system_root
    else
        FILE=/system_root/system/build.prop
        if test -f "$FILE"; then
            SYSTEM_MOUNT=/system_root/system
        else
            ui_print "                                            "
            ui_print "- no mountpoint found                       "
            ui_print "--------------------------------------------"
            ui_print "                                            "
            ui_print "                                            "
            exit 0
        fi
    fi
fi
UP=/data/system/users/0
RT=$SYSTEM_MOUNT/media/audio/ringtones
NT=$SYSTEM_MOUNT/media/audio/notifications
TEMP=/tmp/TWRPscript
ui_print "- mountpoint: "$SYSTEM_MOUNT
ui_print "- done                                      "
ui_print "                                            "

ui_print "- extract archiv:                           "
ui_print "- "$3
mkdir $TEMP
unzip -o "$3" -d $TEMP
sleep 5
ui_print "- done                                      "
ui_print "                                            "

ui_print "- Delete old files                          "
rm -f $SYSTEM_MOUNT/etc/hosts
rm -f $NT/*
rm -f $RT/*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy hosts                                "
cp $TEMP/hosts $SYSTEM_MOUNT/etc/
chmod 644 $SYSTEM_MOUNT/etc/hosts
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy notifications                        "
cp $TEMP/notifications/* $NT
chmod 644 $NT/*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy ringtones                            "
cp $TEMP/ringtones/* $RT
chmod 644 $RT/*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- delete wallpaper                          "
if test -d "$UP/wallpaper_lock_images"; then
    LCSF=true
else
    LCSF=false
fi
rm -rf $UP/wallpaper_lock_images
rm -f $UP/wallpaper*
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- copy new wallpaper                        "
cp -r $TEMP/wallpaper/wallpaper* $UP
cp  $UP/wallpaper $UP/wallpaper_orig
cp  $UP/wallpaper_lock_images/wallpaper_lock $UP/wallpaper_lock_images/wallpaper_lock_orig
ui_print "- done                                      "
ui_print "                                            "

ui_print "- set owner and rights                      "
chmod 600 $UP/wallpaper*
chmod 771 $UP/wallpaper_lock_images
chmod 600 $UP/wallpaper_lock_images/*
chown system:system $UP/wallpaper*
chown -R system:system $UP/wallpaper_lock_images
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- set SELinux context                       "
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper_orig
chcon u:object_r:users_system_data_file:s0 $UP/wallpaper_info.xml
chcon u:object_r:users_system_data_file:s0 $UP/wallpaper_backup_info.xml
chcon u:object_r:users_system_data_file:s0 $UP/wallpaper_lock_images
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper_lock_images/wallpaper_lock
chcon u:object_r:wallpaper_file:s0 $UP/wallpaper_lock_images/wallpaper_lock_orig
sleep 1
ui_print "- done                                      "
ui_print "                                            "

ui_print "- set lockscreen-wallpaper folder           "
if "$LCSF"; then
    ui_print "- "$UP/wallpaper_lock_images/
else
    mv $UP/wallpaper_lock_images/wallpaper_lock $UP
    mv $UP/wallpaper_lock_images/wallpaper_lock_orig $UP
    rm -rf $UP/wallpaper_lock_images
    ui_print "- lockscreenfolder:                    "
    ui_print "- "$UP/
fi
ui_print "- done                                      "
ui_print "                                            "

if test -d "/external_sd/__Install/__AUTO_INSTALL" || test -d "$TEMP/__AUTO_INSTALL"; then
    if test -d "/external_sd/__Install/__AUTO_INSTALL" ; then
        ui_print "- copy additional data from external-sd"
        cp -r /external_sd/__Install/__AUTO_INSTALL/* /sdcard
        sleep 1
        ui_print "- done                                "
        ui_print "                                      "
    fi
else
    ui_print "- copy additional data from Archiv    "
    chcon -R u:object_r:media_rw_data_file:s0 $TEMP/__AUTO_INSTALL/*
    chown -R media_rw:media_rw $TEMP/__AUTO_INSTALL/*
    cp -r $TEMP/__AUTO_INSTALL/* /sdcard
    sleep 1
    ui_print "- done                                "
    ui_print "                                      "
fi

ui_print "- unmounting filesystem                     "
rm -rf $TEMP
sleep 3
umount /system
umount /system/root
sleep 1
ui_print "- done.... ready to reboot                  "
ui_print "--------------------------------------------"
ui_print "                                            "
ui_print "                                            "
 

Ähnliche Themen

S
Antworten
6
Aufrufe
1.529
chrs267
chrs267
D
Antworten
252
Aufrufe
18.171
Andyowl777
A
B
Antworten
7
Aufrufe
714
boombastique
B
Zurück
Oben Unten