wok view mirror-tools/stuff/usr/share/mirror-host/boot/lguest-disk @ rev 5975

busybox*: remember post_install answer
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Aug 11 12:39:49 2010 +0200 (2010-08-11)
parents 7cc5d70d5d9b
children
line source
1 #!/bin/sh
3 usage()
4 {
5 cat << EOT
6 resize2fs
7 usage:
8 $0 grow <guest> <size>[MG]
9 $0 fixmbr <guest>
10 EOT
11 exit 1
12 }
14 grow()
15 {
16 case "$2" in
17 *M) dd if=/dev/zero bs=1M count=${2%M} >> /boot/guests/$1 ;;
18 *G) dd if=/dev/zero bs=1G count=${2%G} >> /boot/guests/$1 ;;
19 esac
20 }
22 # write a 32 bits data
23 # usage: storelong offset data32 file
24 storelong()
25 {
26 echo $2 | awk '{ printf "%c%c%c%c",
27 $1%256,($1/256)%256,($1/256/256)%256,($1/256/256/256)%256 }' | \
28 dd bs=1 conv=notrunc of=$3 seek=$(( $1 )) 2> /dev/null
29 }
31 # read a 32 bits data
32 # usage: getlong offset file
33 getlong()
34 {
35 dd if=$2 bs=1 skip=$(( $1 )) count=4 2> /dev/null | \
36 hexdump -e '"" 1/4 "%d" "\n"'
37 }
39 fixmbr()
40 {
41 if [ $(getlong 0x1ea $1) -ne 0 -a $(getlong 0x1fa $1) -ne 0 ]; then
42 echo "Parttion 3 & 4 non empty. Abort"
43 exit 1
44 fi
45 if [ $(getlong 0x1da $1) -eq 0 ]; then
46 echo "Parttion 2 empty. Abort"
47 exit 1
48 fi
49 size=$(stat -c %s $1)
50 new=$(( $size/512 - 32 - $(getlong 0x1ca $1) ))
51 storelong 0x1da $new $1
52 }
54 case "$1" in
55 grow) shift; grow $@ ; fixmbr $1 ;;
56 fixmbr) shift; fixmbr $1 ;;
57 *) usage ;;
58 esac