slitaz-dev-tools annotate mirror-tools/slitaz/mirror/floppies/floppies @ rev 305

mirror/floppies: ascii only for switch.ch
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Sep 03 18:03:50 2017 +0200 (2017-09-03)
parents cb4d9f3aa7d8
children
rev   line source
pascal@186 1 #!/bin/sh
pascal@186 2
pascal@232 3 rd()
pascal@186 4 {
pascal@302 5 echo $(od -j $(($1)) -N ${2:-4} -t u${2:-4} -An ${3:-kernel})
pascal@232 6 }
pascal@232 7
pascal@232 8 ds()
pascal@232 9 {
pascal@302 10 set -- $1 ${2:-512}
pascal@302 11 dd count=$((($1*$2)/512)) bs=512 2>/dev/null
pascal@302 12 dd count=$(((($1*$2)%512)/$2)) bs=$2 2>/dev/null
pascal@186 13 }
pascal@186 14
pascal@186 15 case "$1" in
pascal@232 16 extract) (
pascal@232 17 ds 1
pascal@302 18 ds $(($(rd 0x1F1 1)-1))
pascal@302 19 [ $(rd 0x229 1) -le 128 ] || ds 1
pascal@302 20 [ $(rd 0x228) -ne 0 ] && ds 1 >cmd$$
pascal@302 21 ds $(( ($(rd 0x1F4) +31) /32)) ) >kernel
pascal@302 22 [ $(rd 0x21C) -ne 0 ] && ds $(( ($(rd 0x21C) +3) /4)) 4 >rootfs ||
pascal@302 23 if [ $(rd 0x218) -ne 0 ]; then
pascal@302 24 n=$(($(rd 0x1EE 2)%512))
pascal@302 25 i=0
pascal@302 26 [ $(rd $n 4 cmd$$) -eq 0 ] && ds 5000 >rootfs ||
pascal@302 27 while [ $(($n % 256)) -lt $(rd 0x1F0 1) ]; do
pascal@302 28 ds $(( ($(rd $n 4 cmd$$) +3) /4)) 4 >rootfs$i
pascal@302 29 n=$(($n+4))
pascal@302 30 i=$(($i+1))
pascal@302 31 done
pascal@302 32 fi
pascal@302 33 [ -s cmd$$ ] && strings <cmd$$ | sed q >cmdline
pascal@302 34 rm -f cmd$$
pascal@186 35 ;;
pascal@186 36 *) cat <<EOT
pascal@302 37 usage: cat fd*.img | $0 extract or
pascal@186 38 # cat fd0*.img | $0 extract
pascal@302 39 creates kernel, rootfs(es) and cmdline files
pascal@186 40 EOT
pascal@232 41 for i in 1 2 3; do
pascal@232 42 j=" cat fd$i*.img |"
pascal@232 43 echo "#$j cpio -i 2>/dev/null ||$j unlzma | cpio -idmu"
pascal@232 44 done
pascal@186 45 esac