Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


scripts:oowow-dump2xz

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
scripts:oowow-dump2xz [2024/08/21 23:04]
hyphop
scripts:oowow-dump2xz [2025/07/24 23:57] (current)
hyphop [Auto convert]
Line 1: Line 1:
 ====== oowow-dump2xz ====== ====== oowow-dump2xz ======
  
-http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0+  - https://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 
 +  - https://github.com/khadas-oowow/oowow-tools/blob/main/oowow-dump2xz 
  
 ===== Online usage examples ===== ===== Online usage examples =====
 +
 +  - write android image via burn tool
 +  - connect SBC with PC by USB cable
 +  - reboot device to oowow 
 +  - boot next shell commands from PC
 +
 +<WRAP tip >
 +''export BOOT=1'' - copy boot-loader from special eMMC area - this is actual for VIM4 Ardroid 14, this feature works start **from oowow version 241000 up**
 +
 +</WRAP>
  
 '' ''
Line 9: Line 21:
 export OSVER=14 \\ export OSVER=14 \\
 export VER=v240822-beta \\ export VER=v240822-beta \\
-curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -+export BOOT=1 \\ 
 +#export REMOTE=192.168.31.x \\ 
 +#export REMOTE=edge2-12345.local \\ 
 +curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s - \\
 ls -l1 *.img.xz ls -l1 *.img.xz
 '' ''
Line 20: Line 35:
 #= oowow-dump2xz #= oowow-dump2xz
  
-#: USAGE mkdir FOO && cd FOO && [OSVER=] [VER=] [LABEL=] [OUT=] owow-dump2xz+#: USAGE mkdir FOO && cd FOO && [OSVER=] [VER=] [LABEL=] [OUT=] [BOOT=] owow-dump2xz
  
 lowcase(){ echo "$@" | tr '[:upper:]' '[:lower:]' ; } lowcase(){ echo "$@" | tr '[:upper:]' '[:lower:]' ; }
Line 30: Line 45:
 XZE=https://raw.githubusercontent.com/hyphop/khadas-rescue-tools/master/scripts/xze XZE=https://raw.githubusercontent.com/hyphop/khadas-rescue-tools/master/scripts/xze
 XZE=http://docs.khadas.com/_export/code/scripts/xze?codeblock=0 XZE=http://docs.khadas.com/_export/code/scripts/xze?codeblock=0
 +
 +for D in *-dump.img.zst; do
 +    O=${D%.*}
 +    [ -s "$D" ] || continue
 +    CMD zstd -d "$D" || CMD rm "$O"
 +done
  
 for D in *-dump.img; do for D in *-dump.img; do
Line 42: Line 63:
 echo "BOARD: $BOARD" echo "BOARD: $BOARD"
 [ "BOARD" ] || DIE "BOARD undetected" [ "BOARD" ] || DIE "BOARD undetected"
 +
 +boot=boot0
 +[ "$BOOT" ] && {
 +echo copy boot area
 +ssh root@$REMOTE cat /dev/mmcblk?boot0 > $boot
 +ls -l1 $boot
 +}
 +
 T=$BOARD.sfdisk T=$BOARD.sfdisk
 ssh root@$REMOTE sfdisk --dump \$\(/opt/mmc_disk\)>$T # | tee $T ssh root@$REMOTE sfdisk --dump \$\(/opt/mmc_disk\)>$T # | tee $T
 echo -- echo --
 USER_DATA=userdata USER_DATA=userdata
-grep $USER_DATA $T | while read a b c d e; do+grep $USER_DATA $T || ssh root@$REMOTE /opt/aml_partitions >>$T # | tee $T 
 +grep $USER_DATA $T | while read a b c d e f g h j k l m ; do
 [ "$d" ] || DIE "partition $USER_DATA not found" [ "$d" ] || DIE "partition $USER_DATA not found"
-echo $d $e +echo "${d%,*} or $l" 
-echo ${d%,*} > $T.userdata+echo ${l:-${d%,*}} > $T.userdata
 done done
 +
 read USER_START < $T.userdata read USER_START < $T.userdata
 BS=512 BS=512
Line 57: Line 88:
 DUMP=$BOARD-emmc-dump.img DUMP=$BOARD-emmc-dump.img
 echo "Dump image from $BOARD > $DUMP $BYTES bytes ...wait..." echo "Dump image from $BOARD > $DUMP $BYTES bytes ...wait..."
-[ -s ./xze ] || curl "$XZE" -O 
 CMD curl -L "$REMOTE"/api/disk/rdz/mmc.zst:$((BYTES)) -o$DUMP.zst CMD curl -L "$REMOTE"/api/disk/rdz/mmc.zst:$((BYTES)) -o$DUMP.zst
 CMD zstd -d $DUMP.zst CMD zstd -d $DUMP.zst
Line 68: Line 98:
 label=${label:-$(lowcase $LABEL)} label=${label:-$(lowcase $LABEL)}
 OSVER=${OSVER:-14} OSVER=${OSVER:-14}
-VER=${VER:-v240725-beta+VER=${VER:-v240820
-OUT=${OUT:-$board-$label-$OSVER-$VER.img}+OUT=${OUT:-$board-$label-$OSVER-$VER.raw.img}
  
 echo "CONVERT $D to $OUT ..." echo "CONVERT $D to $OUT ..."
Line 78: Line 108:
 CMD mv "$D" "$OUT" CMD mv "$D" "$OUT"
  
-CMD sh ./xze "$OUT" \+bootloader(){ 
 +    [ "$BOOT" ] || return 0 
 +    boot=${boot:-boot0} 
 +    echo "BOOT LOADER '$boot' inject to image...">&
 +    BOOT_OFFSET=$(du -b "$OUT"
 +    BOOT_SIZE=$(du -b "$boot"
 +    echo "copy boot area $boot to $OUT by $BOOT_OFFSET + $BOOT_SIZE">&
 +    gzip -c $boot >> "$OUT" 
 +    echo bootloader=$BOOT_OFFSET 
 +
 + 
 +xze=$(which xze) 
 +xze=${xze:-./xze} 
 +[ -s "$xze" ] || curl "$XZE" -o"$xze" 
 + 
 +CMD sh $xze "$OUT" \
     --meta \     --meta \
     label="$LABEL" \     label="$LABEL" \
     builder="Khadas" \     builder="Khadas" \
-    date="$(TZ=GMT+0 date)" \+    date="$(LANG=C TZ=GMT+0 date)" \
     match=BOARD=$BOARD \     match=BOARD=$BOARD \
 +    $(bootloader) \
     duration=90 \     duration=90 \
     desc="$BOARD $LABEL $OSVER $VER"     desc="$BOARD $LABEL $OSVER $VER"
 ``` ```
- 
  
 ```shell logs ```shell logs
Line 155: Line 200:
 ##KRESCUE##END ##KRESCUE##END
 [i] padded to 4096 from 308 + 3788 [i] padded to 4096 from 308 + 3788
 +```
 +
 +==== HowTo Check meta ====
 +
 +```shell
 +khadas@localhost:/images/vim4$  xze vim4n-android-14-v240820.raw.img.xz 
 +Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
 +    2      46    839.1 MiB  4,019.3 MiB  0.209  CRC64   vim4n-android-14-v240820.raw.img.xz
 +[i] blocks: 46 // 839.1*MiB // 4,019.3*MiB
 +##META_FILE##
 +FILE: vim4n-android-14-v240820.raw.img.xz
 +UNPACKED_SIZE: 4214509060
 +PACKED_SIZE: 879849472
 +FILE_SIZE: 879853568
 +##META-FILE##
 +
 +##KRESCUE_META##
 +type:xz
 +label: Android
 +builder: Khadas
 +date: Wed Sep 18 05:43:57 AM GMT 2024
 +match: BOARD=VIM4
 +bootloader: 4212129792
 +vim4n-android-14-v240820.raw.img: vim4n-android-14-v240820.raw.img
 +duration: 90
 +desc: VIM4 Android 14 v240820
 +image: vim4n-android-14-v240820.raw.img
 +##KRESCUE-META##
 +##KRESCUE##END
 +```
 +
 +<WRAP tip >
 +**bootloader: 4212129792** - showing us this image has additional special bootloader
 +
 +</WRAP>
 +
 +
 +==== VIM4 Android 11 ====
 +
 +<WRAP important >
 +''OSVER'' and ''VER'' must be setup properly and related with installed eMMC system
 +</WRAP>
 +
 +```sh VIM4 Android 11
 +unset BOOT
 +export OSVER=11-64bit
 +export VER=v240620
 +export REMOTE=xx.xx.xx.xx
 +curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
 +```
 +
 +==== VIM4 Android 14 ====
 +
 +<WRAP important >
 +''OSVER'' and ''VER'' must be setup properly and related with installed eMMC system
 +</WRAP>
 +
 +```sh VIM4 Android 14
 +export OSVER=14
 +export VER=v240820
 +export BOOT=1
 +curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
 +```
 +
 +==== Edge2 Anrdoid 14 ====
 +```sh
 +unset BOOT
 +export OSVER=14
 +export VER=v240820
 +curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
 +```
 +
 +==== VIM1S Anrdoid 11 ====
 +```sh
 +unset BOOT
 +export OSVER=11
 +export VER=v240820
 +curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
 +```
 +
 +==== OOWOW Meta ====
 +
 +```sh  oowow_meta
 +#!/bin/sh
 +## hyphop ##
 +#? USAGE: oowow_meta  URL | image
 +case $1 in
 +    "")
 +    grep -m1 USAGE "$0"
 +    ;;
 +    http://*|https://*) set -xe ; curl -s -jkLf -r-4096 "$1" | xz -dc ;;
 +    *) set -xe ; tail -c4096 "$1" | xz -dc ;;
 +esac
 +```
 +
 +===== Auto convert =====
 +
 +
 +Copy paste one-liner usage:
 +
 +''%%[OSVER|VER|BOOT|AML_IMAGE|MIRROR|AML_SRC]+ curl https://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=8 | sh -s -%%''
 +
 +```sh aml-android-convert-oowow
 +#!/bin/sh
 +## hyphop ##
 +
 +# create oowow / android installation image for vim4 with full bootloaders
 +
 +export OSVER=${OSVER:-11-64bit}
 +export VER=${VER:-v241211}
 +export BOOT=${BOOT:-1}
 +export AML_IMAGE=${AML_IMAGE:-vim4-android-$OSVER-$VER.img.xz}
 +#MIRROR=https://dl.khadas.com
 +MIRROR=${MIRROR:-https://dl.khadas.cn}
 +AML_SRC=${AML_SRC:-$MIRROR/products/vim4/firmware/android/android-${OSVER%-*}/$AML_IMAGE}
 +
 +case $AML_IMAGE in
 +    vim4*) BOARD=VIM4 ;;
 +esac
 +
 +echo "OWOWO convert $AML_IMAGE OSVER: $OSVER IMG_VER: $VER"
 +
 +[ -s "$AML_IMAGE.md5sum" ] || {
 +echo "Download $AML_SRC ..."
 +wget "$AML_SRC" || exit 1
 +md5sum "$AML_IMAGE" > "$AML_IMAGE".md5sum
 +}
 +
 +[ -s "$AML_IMAGE".flash ] || {
 +echo "Flash image using amlburn $AML_IMAGE"
 +echo "Press KEY_FN x 3 times - and press ENTER to continue"
 +read YES
 +amlburn "$AML_IMAGE" || aml-burn-tool -b "$BOARD" -i "$AML_IMAGE"
 +echo "Confirm amlburn process done - and press ENTER to continue"
 +read YES
 +date > "$AML_IMAGE".flash
 +}
 +
 +echo "Read to Dump image and convert into oowow format..."
 +echo "Press KEY_FN + RESET - to boot into oowow mode and press ENTER to continue"
 +read YES
 +curl "http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0" | sh -s -
 +
 ``` ```
Last modified: 2024/08/21 23:04 by hyphop