#!/bin/sh read32() { dd if=kernel bs=1 skip=$((0x$1)) count=4 2> /dev/null | \ hexdump -e '"" 1/4 "%d" "\n"' } case "$1" in extract) dd bs=512 count=2 > kernel 2> /dev/null setupsz=$(($(read32 1F1) & 255)) dd bs=512 count=$(($setupsz - 1)) >> kernel 2> /dev/null [ $(read32 228) -ne 0 ] && dd bs=512 count=1 2> /dev/null | strings > cmdline syssz=$(read32 1F4) syssz=$(( ($syssz + 31) / 32 )) dd bs=512 count=$syssz >> kernel 2> /dev/null ramsz=$(read32 21C) dd bs=512 count=$((($ramsz + 511) / 512)) of=rootfs 2> /dev/null dd bs=1 seek=$ramsz count=0 of=rootfs 2> /dev/null ;; *) cat <