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
mkdir Android-14-vim4 && cd Android-14-vim4
export OSVER=14
export VER=v240822-beta
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
#!/bin/sh ## hyphop ## #= oowow-dump2xz #: USAGE mkdir FOO && cd FOO && [OSVER=] [VER=] [LABEL=] [OUT=] [BOOT=] owow-dump2xz lowcase(){ echo "$@" | tr '[:upper:]' '[:lower:]' ; } upcase(){ echo "$@" | tr '[:lower:]' '[:upper:]' ; } CMD(){ echo "# $@" >&2 ; "$@" ;} DIE(){ echo "! $@" >&2 ; exit 1;} REMOTE=${REMOTE:-172.22.1.1} XZE=https://raw.githubusercontent.com/hyphop/khadas-rescue-tools/master/scripts/xze XZE=http://docs.khadas.com/_export/code/scripts/xze?codeblock=0 for D in *-dump.img.zst; do O=${D%.*} CMD zstd -d "$D" || CMD rm "$O" done for D in *-dump.img; do [ -s "$D" ] && break D= done [ "$D" ] || { # DUMP begin echo DUMP data ... ping -q -c1 $REMOTE || DIE "cant reach $REMOTE host" BOARD=$(ssh root@$REMOTE /opt/board_name 2>/dev/null ) echo "BOARD: $BOARD" [ "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 ssh root@$REMOTE sfdisk --dump \$\(/opt/mmc_disk\)>$T # | tee $T echo -- USER_DATA=userdata grep $USER_DATA $T | while read a b c d e; do [ "$d" ] || DIE "partition $USER_DATA not found" echo $d - $e echo ${d%,*} > $T.userdata done read USER_START < $T.userdata BS=512 BYTES=${BYTES:-$((USER_START*BS))} board=${board-$(lowcase $BOARD)} DUMP=$BOARD-emmc-dump.img echo "Dump image from $BOARD > $DUMP $BYTES bytes ...wait..." CMD curl -L "$REMOTE"/api/disk/rdz/mmc.zst:$((BYTES)) -o$DUMP.zst CMD zstd -d $DUMP.zst D=$DUMP } # DUMP end BOARD=${D%%-*} board=${board-$(lowcase $BOARD)} LABEL=${LABEL:-Android} label=${label:-$(lowcase $LABEL)} OSVER=${OSVER:-14} VER=${VER:-v240820} OUT=${OUT:-$board-$label-$OSVER-$VER.raw.img} echo "CONVERT $D to $OUT ..." [ -e "$OUT" ] && DIE "image $OUT already exist" CMD truncate -s+50M "$D" CMD mv "$D" "$OUT" bootloader(){ [ "$BOOT" ] || return 0 boot=${boot:-boot0} echo "BOOT LOADER '$boot' inject to image...">&2 BOOT_OFFSET=$(du -b "$OUT") BOOT_SIZE=$(du -b "$boot") echo "copy boot area $boot to $OUT by $BOOT_OFFSET + $BOOT_SIZE">&2 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 \ label="$LABEL" \ builder="Khadas" \ date="$(TZ=GMT+0 date)" \ match=BOARD=$BOARD \ $(bootloader) \ duration=90 \ desc="$BOARD $LABEL $OSVER $VER"
mkdir Android-14-vim4 && cd Android-14-vim4 export OSVER=14 export VER=v240822-beta curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1837 0 1837 0 0 2209 0 --:--:-- --:--:-- --:--:-- 2210 DUMP data ... PING 172.22.1.1 (172.22.1.1) 56(84) bytes of data. --- 172.22.1.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.343/0.343/0.343/0.000 ms BOARD: VIM4 Warning: Permanently added '172.22.1.1' (ED25519) to the list of known hosts. The backup GPT table is corrupt, but the primary appears OK, so that will be used. -- 8124416, - size= 52946936, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=1FE84740-97C9-8C42-98E2-C47015AECEC7, name="userdata", attrs="GUID:50,60" Dump image from VIM4 > VIM4-emmc-dump.img 4159700992 bytes ...wait... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 8485 0 8485 0 0 8496 0 --:--:-- --:--:-- --:--:-- 8493 # curl -L 172.22.1.1/api/disk/rdz/mmc.zst:4159700992 -oVIM4-emmc-dump.img.zst % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1032M 0 1032M 0 0 9.8M 0 --:--:-- 0:01:44 --:--:-- 4000 # zstd -d VIM4-emmc-dump.img.zst VIM4-emmc-dump.img.zst: 4159700992 bytes CONVERT VIM4-emmc-dump.img to vim4-android-14-v240822-beta.img ... # truncate -s+50M VIM4-emmc-dump.img # mv VIM4-emmc-dump.img vim4-android-14-v240822-beta.img # sh ./xze vim4-android-14-v240822-beta.img --meta label=Android builder=Khadas date=Thu Aug 22 02:58:40 AM GMT 2024 match=BOARD=VIM4 duration=90 desc=VIM4 Android 14 v240822-beta [i] xze compress vim4-android-14-v240822-beta.img (4212129792 bytes) > vim4-android-14-v240822-beta.img.xz # /usr/bin/xz -T8 --block-size 90M -k -c -F xz --verbose vim4-android-14-v240822-beta.img (1/1) 100 % 883.8 MiB / 4,017.0 MiB = 0.220 46 MiB/s 1:27 [i] padded to 926724096 from 926722204 + 1892 [i] XZ info Strms Blocks Compressed Uncompressed Ratio Check Filename 1 45 883.8 MiB 4,017.0 MiB 0.220 CRC64 vim4-android-14-v240822-beta.img.xz [i] add meta block ##META_FILE## FILE: vim4-android-14-v240822-beta.img.xz UNPACKED_SIZE: 4212129792 PACKED_SIZE: 926724096 FILE_SIZE: 926728192 ##META-FILE## ##KRESCUE_META## type:xz label: Android builder: Khadas date: Thu Aug 22 02:58:40 AM GMT 2024 match: BOARD=VIM4 duration: 90 desc: VIM4 Android 14 v240822-beta image: vim4-android-14-v240822-beta.img ##KRESCUE-META## ##KRESCUE##END [i] padded to 4096 from 308 + 3788
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
bootloader: 4212129792 - showing us this image has additional special bootloader
OSVER
and VER
must be setup properly and related with installed eMMC system
export OSVER=14 export VER=v240820 export BOOT=1 curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
export OSVER=14 export VER=v240820 curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
export OSVER=14 export VER=v240820 curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -