Diskussion / Ports / Custom Recoverys for Shift 6mq

Hätte eine Frage bezüglich backup: Wenn ich mit diesem TWRP boote und mir dann "adb pull /dev/sda" hole, sehe ich das richtig, dass ich damit das gesamte Phone gesichert habe? Ich hab das schon mal versucht und von der Dateigröße würde es passen :)
Mir ist schon klar, dass weiterhin die userdata encrypted sind aber mir gehts eher darum, ob ich den Zustand später wieder einmal herstellen könnte, indem ich das zB per push wieder zurückspiele oder auf eine Speicherkarte packe und per dd draufspiele?

Meine Frage zielt auch darauf ab, ob zB die Keys für die userdata zB in irgendeinem anderem Speicher liegen, den ich damit nicht bekomme? Oder wäre der Key für die userdata tatsächlich nur ein Hash von dem, was man am Bildschirm als Muster wischt? Stelle mir eher vor, dass das nur dazu benutzt wir, die richtigen Keys zu entschlüsseln, so wie es auch Tools wie zB VeraCrypt machen?
 
Wenn ich mit diesem TWRP boote und mir dann "adb pull /dev/sda" hole, sehe ich das richtig, dass ich damit das gesamte Phone gesichert habe?
Ich denke tendenziell eher nicht.
Die SDA-Partition besteht aus 9 Unterpartitionen.
Das wären unter anderem die Super-Partition (System/Vendor/Product), die Metadata- und Keystore Partition und (jetzt kommt's) die Userdata-Partition.

Allerdings gibt es noch andere Partitionen (SDB / SDE) die alle noch ein bissel was mitbringen (unter anderem Kernel, Recovery und die AVB-Keys/VBMeta).

Die haben auch ihre Existenzberechtigung, auch wenn sie meist unangetastet bleiben sollten.

Denke dein SDA-Backup ist so um die 14-16GB groß?
Ich würde nach aktueller Einschätzung davon ausgehen, dass hier das komplette System (beide Partitonen) und die Nutzerdaten mit drin sein sollten. Wie es mit den Encryptionkeys aussieht kann ich nicht sagen.

Hab zur Verdeutlichung mal die Partitonstabelle vom 6mq angehängt. Vll kannst du was damit anfangen.

Greetz
 

Anhänge

  • Partition.txt
    5,7 KB · Aufrufe: 17
Danke schon mal für die Antwort, damit muss ich meine Frage auch gleich erweitern:
die anderen Partitionen hatte ich schon auch gesehen und übertragen, sind aber nicht besonders groß. Also insofern wäre meine Frage: wenn ich die auch habe, hab ich dann ein Backup?

zu deiner Frage der Größe des sda-Backups: ich hab es jetzt nicht hier am Laptop aber es ist um die ~120GB, was der Größe des internen Speichers entspräche (die anderen Partitionen machen mit ihrer Größe hier nicht viel Unterschied, kann später posten, wie groß die übertragenen Files genau sind)

Danke für die Partitionstabelle, die hatte ich mir aber eh auch angesehen, die hat mich erst auf die Idee gebracht ;)

Dazu auch: ich hab das einfach mal mit adb pull geholt, ich weiß gar nicht, ob adb pull für Blockdevices funktioniert, oder ob das bei der Übertragung was am encoding zerstört haben könnte?
 
  • Like
Reaktionen: MIonix
die anderen Partitionen hatte ich schon auch gesehen und übertragen, sind aber nicht besonders groß. Also insofern wäre meine Frage: wenn ich die auch habe, hab ich dann ein Backup?
Prinzipiell sollte bei Vorhandensein aller Partitionen auch ein komplettes Backup vorhanden sein (denke ich mal). Da es sich hier aber nur um einen experimentellen TWRP-Port handelt, der einige Fehler in Bezug auf das Shift 6mq aufweist kann ich nicht abschätzen, ob Fastboot / Fastbootd hier so fehlerfrei funktioniert um a) alles fehlerfrei runterzuholen und vor allem b) fehlerfrei wieder aufzuspielen.
Dazu auch: ich hab das einfach mal mit adb pull geholt, ich weiß gar nicht, ob adb pull für Blockdevices funktioniert, oder ob das bei der
Bei der Fragen muss ich leider komplett passen 🤷🏼‍♂️. Vll weiß jemand anderes mehr.

Aber mir gefällt dein Ansatz! Backups mit ADB-Pull, auf die Idee bin ich bisher noch nicht gekommen.
Ist ne gute Zwischenlösung bis ein funktionierendes TWRP mal soweit läuft, dass man auf der Partition Userdata die Bereiche /data von /internal getrennt bekommt. Sonst hat man halt echt immer direkt 120GB auf der Backe.
Greetz
 
"Ausführliche Schrittweise" - ich schreibs gerne auf aber viel gibts da gar nicht 😅 ich beschreibe es hier dennoch aus historischen Gründen - glaube aber, dass mir diese Backups nichts gebracht hätten und man mit dd (wie unten beschrieben) weiter kommt:

1) Boote in TWRP (über USB Kabel & fastboot, habe es nicht aufs Phone geflasht)
2) Da das Kabel schon am PC steckt dort ausführen: "adb pull /dev/block/sda dev_block_sda"
3) Sobald das fertig ist wiederholen mit sdb, sdc, ... bis sdf ("adb pull /dev/block/sdb dev_block_sdb"...)

und das wars dann auch schon - der Befehl kopiert die Datei natürlich in den aktuellen Ordner am PC also sollte man für sda auch schon mal ~120GB frei haben oder einen anderen Pfad angeben;)


Ich habe aber inzwischen auch über dd ein Backup gemacht und das mit den Backups von "adb pull" verglichen und musste feststellen - sie sind verschieden😕 würde die Vorgehensweise also jetzt mal nicht empfehlen, da sich "adb pull" anscheinend doch nicht für blockdevices eignet...
Einer Sicherung über dd traue ich aber doch - selbst wenn ich am PC nicht die Partitionen innerhalb der Images sehen kann, nehme ich jetzt einmal an, dass ich sie benutzen könnte, um den gesicherten Zustand am Telefon wiederherzustellen. Deswegen hier, wie ich die dd Backups gemacht habe:

1) Große Speicherkarte ins Phone (Platz für die Backups)
2) wieder TWRP booten
2) adb shell
3) Mit mount checken, ob die Speicherkarte unter "/external_sd" gemountet wurde, sonst mounten
4) "dd bs=16M if=/dev/block/sda of=/external_sd/backup_sda.img"
5) wiederholen - wieder von sda bis sdf
6) Diese Backups denke ich kann man dann auch problemlos per "adb pull" auf den Rechner ziehen, wenn man die Speicherkarte nicht rausnehmen möchte, da es jetzt ja schon images (also gewöhnliche Dateien) sind und man nicht mehr die Blockdevices direkt zieht.


Da diese Experimente eher die Versuche waren, das Telefon zu sichern, bevor ich Teile überschreibe (in der Hoffnung Daten zu retten) und das nicht in die Richtung zielte, mein Telefon regelmäßig auf diese Art zu sichern - vielleicht noch eine allgemeine Anmerkung darüber wie ich Backups mache (und was ich auch eher empfehlen könnte): ich selbst habe bisher auf meinem alten Telefon zuerst TitaniumBackup gestartet, um alle Anwendungsdaten auf die Speicherkarte gesichert zu bekommen und danach mit rsync auf meinen PC synchronisiert (wo ich es mit ZFS Versioniere). Hat für mich hervoragend funktioniert, beim neuen ShiftPhone verwende ich nun Syncthing statt rsync (damit ich das Backup nicht manuell triggern muss und einen schönen Überblick durch das UI habe) und OandBackupX statt Titanium, da ich mich lieber auf ein OpenSource Tool verlasse.

Disclaimer: ich beschreibe hier nur, was ich auf meinem Gerät ausprobiert habe und gebe meine persönlichen Kommentare dazu. Ich übernehme keine Verantwortung dafür, was sonst jemand damit mit seinem Telefon macht. Das ist auch nichts für unerfahrene Nutzer und - wie bereits oben erwähnt - ob diese "Backups" sich so überhaupt wiederherstellen & verwenden lassen, weiß ich nicht. Im schlimmsten Fall sind die so erstellten Dateien komplett wertlos.
 
Aktuell versuche ich den Nachbau eines Trees auf Grundlage eines Oneplus 6T (auch kein Android 10 Initial), da das von den Specs dem 6mq am ähnlichsten ist. Aber auch hier stoße ich aktuell aus Unwissenheit an meine Grenzen und hangel mich von Problem zu Problem...

Kann einer von euch Fehlermeldungen "lesen" und verstehen?
Komm nach etlichem Probieren nicht weiter.
Vielleicht hat jemand nen guten Tipp.
Mein Kompilierungsergebnis sieht derzeit so aus:

lhotze@lhotze-Lenovo-:~/TWRP-Compile$ mka adbd recoveryimage

build/make/core/board_config.mk:180: warning: Building a 32-bit-app-only product on a 64-bit device. If this is intentional, set TARGET_SUPPORTS_64_BIT_APPS := false
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=16.1.0
TARGET_PRODUCT=omni_axolotl
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-2a
TARGET_CPU_VARIANT=cortex-a75
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-2a
TARGET_2ND_CPU_VARIANT=cortex-a55
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.4.0-53-generic-x86_64-Ubuntu-20.04.2-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=QQ3A.200805.001
OUT_DIR=/home/lhotze/TWRP-Compile/out
PRODUCT_SOONG_NAMESPACES=device/shiftphone/axolotl
ROM_BUILDTYPE=HOMEMADE
============================================
device/shiftphone/axolotl/BoardConfig.mk was modified, regenerating...

build/make/core/board_config.mk:180: warning: Building a 32-bit-app-only product on a 64-bit device. If this is intentional, set TARGET_SUPPORTS_64_BIT_APPS := false
device/shiftphone/axolotl/BoardConfig.mk was modified, regenerating...

[100% 1/1] initializing build system ...
build/make/core/board_config.mk:180: warning: Building a 32-bit-app-only product on a 64-bit device. If this is intentional, set TARGET_SUPPORTS_64_BIT_APPS := false

[ 1% 5/264] including bootable/recovery/Android.mk ...
warning: Not a git repository. Use --no-index to compare two paths outside a working tree
usage: git diff --no-index [<options>] <path> <path>

Diff output format options
-p, --patch generate patch
-s, --no-patch suppress diff output
-u generate patch
-U, --unified[=<n>] generate diffs with <n> lines context
-W, --function-context
generate diffs with <n> lines context
--raw generate the diff in raw format
--patch-with-raw synonym for '-p --raw'
--patch-with-stat synonym for '-p --stat'
--numstat machine friendly --stat
--shortstat output only the last line of --stat
-X, --dirstat[=<param1,param2>...]
output the distribution of relative amount of changes for each sub-directory
--cumulative synonym for --dirstat=cumulative
--dirstat-by-file[=<param1,param2>...]
synonym for --dirstat=files,param1,param2...
--check warn if changes introduce conflict markers or whitespace errors
--summary condensed summary such as creations, renames and mode changes
--name-only show only names of changed files
--name-status show only names and status of changed files
--stat[=<width>[,<name-width>[,<count>]]]
generate diffstat
--stat-width <width> generate diffstat with a given width
--stat-name-width <width>
generate diffstat with a given name width
--stat-graph-width <width>
generate diffstat with a given graph width
--stat-count <count> generate diffstat with limited lines
--compact-summary generate compact summary in diffstat
--binary output a binary diff that can be applied
--full-index show full pre- and post-image object names on the "index" lines
--color[=<when>] show colored diff
--ws-error-highlight <kind>
highlight whitespace errors in the 'context', 'old' or 'new' lines in the diff
-z do not munge pathnames and use NULs as output field terminators in --raw or --numstat
--abbrev[=<n>] use <n> digits to display SHA-1s
--src-prefix <prefix>
show the given source prefix instead of "a/"
--dst-prefix <prefix>
show the given destination prefix instead of "b/"
--line-prefix <prefix>
prepend an additional prefix to every line of output
--no-prefix do not show any source or destination prefix
--inter-hunk-context <n>
show context between diff hunks up to the specified number of lines
--output-indicator-new <char>
specify the character to indicate a new line instead of '+'
--output-indicator-old <char>
specify the character to indicate an old line instead of '-'
--output-indicator-context <char>
specify the character to indicate a context instead of ' '

Diff rename options
-B, --break-rewrites[=<n>[/<m>]]
break complete rewrite changes into pairs of delete and create
-M, --find-renames[=<n>]
detect renames
-D, --irreversible-delete
omit the preimage for deletes
-C, --find-copies[=<n>]
detect copies
--find-copies-harder use unmodified files as source to find copies
--no-renames disable rename detection
--rename-empty use empty blobs as rename source
--follow continue listing the history of a file beyond renames
-l <n> prevent rename/copy detection if the number of rename/copy targets exceeds given limit

Diff algorithm options
--minimal produce the smallest possible diff
-w, --ignore-all-space
ignore whitespace when comparing lines
-b, --ignore-space-change
ignore changes in amount of whitespace
--ignore-space-at-eol
ignore changes in whitespace at EOL
--ignore-cr-at-eol ignore carrier-return at the end of line
--ignore-blank-lines ignore changes whose lines are all blank
--indent-heuristic heuristic to shift diff hunk boundaries for easy reading
--patience generate diff using the "patience diff" algorithm
--histogram generate diff using the "histogram diff" algorithm
--diff-algorithm <algorithm>
choose a diff algorithm
--anchored <text> generate diff using the "anchored diff" algorithm
--word-diff[=<mode>] show word diff, using <mode> to delimit changed words
--word-diff-regex <regex>
use <regex> to decide what a word is
--color-words[=<regex>]
equivalent to --word-diff=color --word-diff-regex=<regex>
--color-moved[=<mode>]
moved lines of code are colored differently
--color-moved-ws <mode>
how white spaces are ignored in --color-moved

Other diff options
--relative[=<prefix>]
when run from subdir, exclude changes outside and show relative paths
-a, --text treat all files as text
-R swap two inputs, reverse the diff
--exit-code exit with 1 if there were differences, 0 otherwise
--quiet disable all output of the program
--ext-diff allow an external diff helper to be executed
--textconv run external text conversion filters when comparing binary files
--ignore-submodules[=<when>]
ignore changes to submodules in the diff generation
--submodule[=<format>]
specify how differences in submodules are shown
--ita-invisible-in-index
hide 'git add -N' entries from the index
--ita-visible-in-index
treat 'git add -N' entries as real in the index
-S <string> look for differences that change the number of occurrences of the specified string
-G <regex> look for differences that change the number of occurrences of the specified regex
--pickaxe-all show all changes in the changeset with -S or -G
--pickaxe-regex treat <string> in -S as extended POSIX regular expression
-O <file> control the order in which files appear in the output
--find-object <object-id>
look for differences that change the number of occurrences of the specified object
--diff-filter [(A|C|D|M|R|T|U|X|B)...[*]]
select files by diff type
--output <file> Output to a specific file

[ 99% 263/264] finishing build rules ...
vendor/omni/build/tasks/kernel.mk:111: warning: ***************************************************************
vendor/omni/build/tasks/kernel.mk:112: warning: * Using prebuilt kernel binary instead of source *
vendor/omni/build/tasks/kernel.mk:113: warning: * THIS IS DEPRECATED, AND WILL BE DISCONTINUED *
vendor/omni/build/tasks/kernel.mk:114: warning: * Please configure your device to download the kernel *
vendor/omni/build/tasks/kernel.mk:115: warning: * source repository to
vendor/omni/build/tasks/kernel.mk:116: warning: * for more information *
vendor/omni/build/tasks/kernel.mk:117: warning: ***************************************************************

[ 5% 1042/17904] target C: zip <= external/zip/src/fileio.c
external/zip/src/fileio.c:3727:24: warning: unused variable 'no_arg_files_err' [-Wunused-const-variable]
static ZCONST char Far no_arg_files_err[] = "argument files not enabled\n";
^
1 warning generated.

[ 5% 1049/17904] target C: zip <= external/zip/src/zipfile.c
external/zip/src/zipfile.c:5812:27: warning: unused parameter 'c' [-Wunused-parameter]
OFT( uzoff_t) c,
^
1 warning generated.

[ 5% 1053/17904] target C: zip <= external/zip/src/unix/unix.c
external/zip/src/unix/unix.c:571:12: warning: unused parameter 'z_utim' [-Wunused-parameter]
iztimes *z_utim;
^
1 warning generated.

[ 6% 1089/17904] target C: zip <= external/zip/src/zip.c
external/zip/src/zip.c:1287:9: warning: unused parameter 'unzippath' [-Wunused-parameter]
char *unzippath;
^
external/zip/src/zip.c:1434:11: warning: explicitly assigning value of variable of type 'char *' to itself [-Wself-assign]
zippath = zippath;
~~~~~~~ ^ ~~~~~~~
external/zip/src/zip.c:1799:9: warning: explicitly assigning value of variable of type 'const char *' to itself [-Wself-assign]
zfn = zfn;
~~~ ^ ~~~
external/zip/src/zip.c:1850:9: warning: unused parameter 'out_path' [-Wunused-parameter]
char *out_path;
^
external/zip/src/zip.c:698:12: warning: unused function 'help_extended' [-Wunused-function]
local void help_extended()
^
5 warnings generated.

[ 15% 2851/17904] //bionic/libc:common_libc versioner preprocess include
warning: attempted to generate guard with empty availability: obsoleted = 21
warning: attempted to generate guard with empty availability: obsoleted = 23

[ 18% 3274/17904] //bionic/libc:libc_bionic clang arch-arm/generic/bionic/memcmp.S [arm]
bionic/libc/arch-arm/generic/bionic/memcmp.S:99:9: warning: applying IT instruction to more than one subsequent instruction is deprecated
ittt eq
^

[ 37% 6747/17904] //external/e2fsprogs/lib/blkid:libext2_blkid clang probe.c
external/e2fsprogs/lib/blkid/probe.c:1521:30: warning: passing 'char [128]' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
unicode_16le_to_utf8(utf8_label, sizeof(utf8_label), label->name, label->length * 2);
^~~~~~~~~~
external/e2fsprogs/lib/blkid/probe.c:1163:49: note: passing argument to parameter 'str' here
static void unicode_16le_to_utf8(unsigned char *str, int out_len,
^
1 warning generated.

[ 94% 16967/17904] Target buildinfo: /home/lhotze/TWRP-Compile/out/target/product/axolotl/obj/ETC/system_build_prop_intermediates/build.prop
Target buildinfo from: device/shiftphone/axolotl/system.prop

[ 99% 17901/17904] Target boot image from recovery: /home/lhotze/TWRP-Compile/out/target/product/axolotl/boot.img
FAILED: /home/lhotze/TWRP-Compile/out/target/product/axolotl/boot.img
/bin/bash -c "(mkdir -p /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery ) && (mkdir -p /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/sdcard /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/tmp ) && (rsync -a --exclude=sdcard --exclude=/root/sepolicy --exclude=/root/plat_file_contexts --exclude=/root/vendor_file_contexts --exclude=/root/plat_property_contexts --exclude=/root/vendor_property_contexts --exclude=/root/odm_file_contexts --exclude=/root/odm_property_contexts --exclude=/root/product_file_contexts --exclude=/root/product_property_contexts --exclude=cache /home/lhotze/TWRP-Compile/out/target/product/axolotl/root /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery ) && (find /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root -maxdepth 1 -name 'init*.rc' -type f -not -name \"init.recovery.*.rc\" | xargs rm -f ) && (cp -f bootable/recovery/etc/init.rc /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/ ) && (cp /home/lhotze/TWRP-Compile/out/target/product/axolotl/root/init.recovery.*.rc /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/ 2> /dev/null || true ) && (mkdir -p /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/res ) && (rm -rf /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/res/* ) && (cp -rf bootable/recovery/res-mdpi/* /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/res ) && (true ) && (cp -f bootable/recovery/fonts/12x22.png /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/res/images/font.png ) && (cp -rf device/shiftphone/axolotl/recovery/root /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/ ) && (cp -f device/shiftphone/axolotl/recovery.fstab /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/system/etc/recovery.fstab ) && (cp -f device/shiftphone/axolotl/recovery.wipe /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/system/etc/recovery.wipe ) && (mkdir -p /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/system/etc/security ) && (cp /home/lhotze/TWRP-Compile/out/target/product/axolotl/obj/PACKAGING/ota_keys_intermediates/otacerts.zip /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/system/etc/security/otacerts.zip ) && (ln -sf prop.default /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root/default.prop ) && (/home/lhotze/TWRP-Compile/out/host/linux-x86/bin/mkbootfs -d /home/lhotze/TWRP-Compile/out/target/product/axolotl/system /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery/root | /home/lhotze/TWRP-Compile/out/host/linux-x86/bin/minigzip > /home/lhotze/TWRP-Compile/out/target/product/axolotl/ramdisk-recovery.img ) && (/home/lhotze/TWRP-Compile/out/host/linux-x86/bin/mkbootimg --kernel /home/lhotze/TWRP-Compile/out/target/product/axolotl/kernel --ramdisk /home/lhotze/TWRP-Compile/out/target/product/axolotl/ramdisk-recovery.img --cmdline \"androidboot.hardware=qcom androidboot.console=ttyMSM0 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 service_locator.enable=1 swiotlb=2048 androidboot.configfs=true androidboot.usbcontroller=a600000.dwc3 firmware_class.path=/vendor/firmware_mnt/image loop.max_part=7 console=ttyMSM0,115200n8 earlycon=msm_geni_serial,0xA84000 androidboot.selinux=permissive printk.devkmsg=on androidboot.memcg=1 cgroup.memory=nokmem androidboot.boot_devices=soc/1d84000.ufshc buildvariant=userandroidboot.hardware=qcom androidboot.console=ttyMSM0 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 service_locator.enable=1 swiotlb=2048 androidboot.configfs=true androidboot.usbcontroller=a600000.dwc3 firmware_class.path=/vendor/firmware_mnt/image loop.max_part=7 skip_override androidboot.fastboot=1 buildvariant=eng\" --base 0x00000000 --pagesize 4096 --os_version 16.1.0 --os_patch_level 2099-12-31 --ramdisk_offset 0x01000000 --tags_offset 0x00000100 --header_version 2 --output /home/lhotze/TWRP-Compile/out/target/product/axolotl/boot.img --id > /home/lhotze/TWRP-Compile/out/target/product/axolotl/recovery.id ) && (size=\$(for i in /home/lhotze/TWRP-Compile/out/target/product/axolotl/boot.img; do stat -c \"%s\" \"\$i\" | tr -d '\\n'; echo +; done; echo 0); total=\$(( \$( echo \"\$size\" ) )); printname=\$(echo -n \" /home/lhotze/TWRP-Compile/out/target/product/axolotl/boot.img\" | tr \" \" +); maxsize=\$(( 67108864-0)); if [ \"\$total\" -gt \"\$maxsize\" ]; then echo \"error: \$printname too large (\$total > \$maxsize)\"; false; elif [ \"\$total\" -gt \$((maxsize - 32768)) ]; then echo \"WARNING: \$printname approaching size limit (\$total now; limit \$maxsize)\"; fi )"
cannot delete non-empty directory: root/etc
could not make way for new symlink: root/etc
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]
11:49:51 ninja failed with: exit status 1

#### failed to build some targets (37:08 (mm:ss)) ####

Meine Erfolge so far 😏
Greetz
 
Ich vermute es gibt keine Neuigkeiten bzgl. TWRP?
Nicht von meiner Seite, habe es weitgehend eingestellt. Dachte mir zwar, dass es kompliziert wird, aber habe nicht damit gerechnet, dass es so kompliziert sein wird...
Können wir vielleicht irgendwie helfen?
Sure, why not🤷🏼‍♂️.

Ich sage euch einfach mal, was ich gemacht habe und vll. hat ja jemand ne Idee:

Zum kompilieren nutze ein Ubuntu 20.04. Grundlage ist der Omni 10 Tree von TWRP auf Github.
Den Device-Tree habe ich dereinst mit SebaUbuntu aus dem Recovery des ersten ShiftOS-L extrahiert.
Das kompilieren hiermit war erfolglos. Hab es damals nicht geschafft. Es gab (unter anderem Probleme bei der "bootcontrol" File. @amartinz meinte Shift würde für das erstellen der Bootcontrol dieses Repository benutzen, damit war ich aber nicht erfolgreich...Hab es nichtmal geschafft das einzubinden.

Ich habe dann versucht von mehreren Geräten, die den gleichen SOC haben auf deren Grundlage ein Device-Tree nachzubauen, so dass man hier ggfs ein bestehendes Bootcontrol übernehmen kann.

Das waren einmal das Xiaomi Mi8, das Xiaomi Pocophone F1 und letztendlich das OnePlus 6T, welches mit dem Shift 6mq von den Specs her am ähnlichsten ist.

Hab zur Erstellung der Device-Trees die notwendigen Dateien aus der /system, /product, /vendor und den extrahierten Boot und Recovery Images des Shift 6mq extrahiert und die entsprechenden Dateien angepasst.
Hab auch den Tree vom Oneplus mal angehängt. Die anderen habe ich ggfs noch irgendwo abgelegt, aber da war ich nicht so vorausschauend die Teile immer mal wieder zu sichern. Kann also entweder dauern bis ich sie finde oder sie sind schon gelöscht.

Einen (Platzhalter) Device-Tree von Shift findet ihr hier und die Kernel-Sources gibt es ebenfalls als Git.

Mit dem Device Tree des Oneplus kam dann dieser Fehler hier raus. Der mögliche Lösungsvorschlag funktionierte leider nicht.

Ansonsten braucht ihr ne gute Internetleitung (eher keine mobilen Daten), alleine das TWRP-Repo sind gut 50GB...

Am liebsten wäre mir, Alex hätte mal nen Flow und würde ein TWRP fürs 6mq schreiben😍
Wäre natürlich Edel, er ist direkt an der Materie.
Allerdings denke ich ist das nichts, was von Shift direkt supported wird. Das wäre freiwillige unnezahlte Freizeit. Denke auch die Prio liegt bei Shift im Moment bei einem anderen Gerät.

Da stellt sich die Frage, wenn die Community nicht genug Ahnung mitbringt um das Ding selbst zu stemmen, aber jeder ein TWRP will:

Was haltet ihr von einem Bounty-Programm (nicht für mich, ich habe schon kapituliert 😂) für beispielsweise @amartinz, falls er sich ebenfalls damit einverstanden erklären würde, sein Wissen um das 6mq in den Topf zu werfen um hier Freizeitarbeit neben Shiftarbeit aufzufangen?

Greetz und viel Erfolg
 

Anhänge

  • SebaUbuntu - Device-Tree Shift 6mq.zip
    22,1 MB · Aufrufe: 1
  • Device-Tree Shift 6mq aus Oneplus 6T.zip
    14,8 MB · Aufrufe: 3
Geld ist nicht der Motivator sondern Zeit.
Ich arbeite in meiner Freizeit schon an zwei anderen SHIFT6mq Projekten :D

In ca 2 Wochen ist ein Freund von mir wieder verfügbar (studiert und hat jetzt viel um die Ohren) und dann könnte ich mal mit ihm planen.
So wie es jetzt aussieht, würden wir eher Lineage Recovery vorziehen, weil damit hat man auch adb, root, kann zips flashen
Von da aus je nach Aufwand weiter zu TWRP.
 
Super😍 wie bekommen wir es auf unser 6mq?😁

Du weist ja, wir sind eine Horte Kinder die im Sandkasten immer sofort das neueste Spielzeug haben wollen. Geduld? Fehlanzeige😂
Abwarten, bis ich es getestet habe :D

Hab es bis jetzt nur gebaut und gebootet.
Ich hab den Code dazu aber schon veröffentlicht.
Falls es wer selbst bauen möchte (Grunderfahrung vorausgesetzt):
  1. Lineage 18.1 als Basis hernehmen
  2. Device Repo nach device/shift/axolotl syncen
  3. Kernel Repo nach kernel/shift/sdm845 syncen
  4. . build/envsetup.sh
  5. breakfast axolotl
  6. mka recoveryimage
  7. fastboot boot out/target/product/axolotl/recovery.img
Als Bonus, wer das Lineage GSI selbst bauen und ausprobieren möchte: https://github.com/SHIFTPHONES/andr...mmit/a8768e4ec46773015a086ca1e818019ed39dece8
1628178292349.png
 
OMG!
Wie geil!

Kann man den Thread Titel noch mit Lineage Recovery oder so ergänzen?

Kann es kaum abwarten bis wir es flashen und benutzen können.
 
  • Like
Reaktionen: NoG....eFan
Konnten deine Tests schon Früchte tragen? @amartinz
Noch nicht zufriedenstellend.
Ich hab mich die letzten Tage eher auf Ubuntu Touch konzentriert.

Melde mich aber eh, sobald es etwas zu berichten gibt :)

z.B.: Über uns wurde im letzten QA Livestream von UBports berichtet ;)
URL: https://youtu.be/dTiZL-LhFrk?t=609


Und gerade hat ein Vöglein was gezwitschert :)
URL: https://twitter.com/lanux_mage/status/1427390051244290054
 

Anhänge

  • lineage_recovery_202010902.img.tar.gz
    22,2 MB · Aufrufe: 24
Zuletzt bearbeitet:
Hype Train incoming :love:

Soweit ich das in ein paar kurzen Test Überblicke (Check der Menüpunkte, Zips über ADB Sideloaden, Partitionen über Fastboot flashen) funktioniert es im Gros.
Hab mich aber noch nicht getraut, systemrelevante Partitionen über Fastboot zu flashen oder mal nen Full Wipe zu machen. Das Gerät ist mein Daily Driver und der Aufwand einer möglichen Wiederherstellung ist mir aktuell zu hoch.

@amartinz great work (y)🙌🙇‍♂️
Greetz
 
  • Haha
Reaktionen: eMPai
Mit Root und Terminal aus Android mit den Befehlen:
dd if=/pfad/zum/recovery.img of=/dev/block/sde20 für Partition A oder dd if=/pfad/zum/recovery.img of=/dev/block/sde42 für Partition B.

Alternativ mit offenem Bootloader im Fastboot-Menü im Windows oder Linux Terminal:
fastboot flash recovery /pfad/zum/recovery/auf/dem/pc.img.
Das flasht dann auf die derzeit aktive Partition.
Greetz
 
Mit Root und Terminal aus Android mit den Befehlen:
dd if=/pfad/zum/recovery.img of=/dev/block/sde20 für Partition A oder dd if=/pfad/zum/recovery.img of=/dev/block/sde42 für Partition B.

Alternativ mit offenem Bootloader im Fastboot-Menü im Windows oder Linux Terminal:
fastboot flash recovery /pfad/zum/recovery/auf/dem/pc.img.
Das flasht dann auf die derzeit aktive Partition.
Greetz
Oder, wenn man es nur mal kurz probieren möchte -> fastboot boot /pfad/zum/recovery/auf/dem/pc.img

Die Recovery-Datei oben von mir ist übrigens komprimiert (tar.gz) also zuerst entpacken, um das recovery.img zu bekommen :)
 
Hab mich aber noch nicht getraut, systemrelevante Partitionen über Fastboot zu flashen oder mal nen Full Wipe zu machen. Das Gerät ist mein Daily Driver und der Aufwand einer möglichen Wiederherstellung ist mir aktuell zu hoch.
Ich kenne da jemanden, der solchen Aufwand auf sich nehmen würde ;)

EDIT:
Wenn es noch eine Backup-Funktion gäbe und man via sd1 (extern SD-Card) ZIP-Files flashen könnte, wäre ich glücklich. :)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Revan335