|
|
|
|
@ -3,19 +3,11 @@
|
|
|
|
|
set -x
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
|
|
grubonly=0 # for testing
|
|
|
|
|
|
|
|
|
|
if ! [ -r /etc/grml_cd ] ; then
|
|
|
|
|
echo "Not running inside Grml, exiting to avoid damage." >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if stat --help >/dev/null 2>&1; then
|
|
|
|
|
getfilesize='stat -c %s' # GNU stat
|
|
|
|
|
else
|
|
|
|
|
getfilesize='stat -f %z' # BSD stat
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# FIXME - integrate in vmdebootstrap
|
|
|
|
|
wget grml.org/sipwise/bootgrub.mksh
|
|
|
|
|
|
|
|
|
|
@ -25,21 +17,13 @@ if ! [ -d /mnt/sda1/lost+found ] ; then
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# FIXME - integrate in deployment ISO
|
|
|
|
|
apt-get update ; apt-get -y install kpartx qemu-utils grub-pc mksh
|
|
|
|
|
apt-get update ; apt-get -y install kpartx qemu-utils mksh
|
|
|
|
|
|
|
|
|
|
IMAGE=/mnt/sda1/qemu.img
|
|
|
|
|
TMPDIR=$(mktemp -d) || exit 1
|
|
|
|
|
|
|
|
|
|
# problem: 1.99~rc1 results in "error: no such argument" -> core.img from VM?
|
|
|
|
|
grub-mkimage -O i386-pc -p '(hd0,msdos1)/boot/grub' -o "$TMPDIR/core.img" \
|
|
|
|
|
biosdisk part_msdos ext2
|
|
|
|
|
ifirst=4
|
|
|
|
|
ilast=$(($($getfilesize "$TMPDIR/core.img")/512+ifirst))
|
|
|
|
|
|
|
|
|
|
qemu-img create -f raw "${IMAGE}" 3G
|
|
|
|
|
echo 4 63 | mksh bootgrub.mksh -A | dd of="$IMAGE" conv=notrunc
|
|
|
|
|
dd if="$TMPDIR/core.img" of="$IMAGE" conv=notrunc seek=$ifirst
|
|
|
|
|
rm -f "$TMPDIR/core.img"
|
|
|
|
|
echo 4 66 | mksh bootgrub.mksh -A | dd of="$IMAGE" conv=notrunc
|
|
|
|
|
dd if=/dev/zero bs=1 conv=notrunc count=64 seek=446 of="$IMAGE"
|
|
|
|
|
parted -s "${IMAGE}" 'mkpart primary ext3 2M -1'
|
|
|
|
|
|
|
|
|
|
@ -64,31 +48,26 @@ TARGET=$TARGET
|
|
|
|
|
|
|
|
|
|
blockdev --rereadpt $LOOP
|
|
|
|
|
|
|
|
|
|
if test $grubonly = 0; then
|
|
|
|
|
echo FSCK=no >> /etc/debootstrap/config
|
|
|
|
|
echo y | grml-debootstrap --hostname vmbuilder --mirror http://debian.inode.at/debian/ -r squeeze -t "$TARGET" --password foobar
|
|
|
|
|
fi
|
|
|
|
|
echo FSCK=no >> /etc/debootstrap/config
|
|
|
|
|
echo y | grml-debootstrap --hostname vmbuilder --mirror http://debian.inode.at/debian/ -r squeeze -t "$TARGET" --password foobar
|
|
|
|
|
|
|
|
|
|
kpartx -d $IMAGE
|
|
|
|
|
LOOPDEV=$(losetup -f)
|
|
|
|
|
losetup $LOOPDEV ${IMAGE}
|
|
|
|
|
reread_partition_table $LOOP
|
|
|
|
|
if test $grubonly = 1; then
|
|
|
|
|
mke2fs /dev/$LOOP_PART
|
|
|
|
|
fi
|
|
|
|
|
mount /dev/$LOOP_PART $TMPDIR
|
|
|
|
|
|
|
|
|
|
mkdir -p "$TMPDIR/boot/grub"
|
|
|
|
|
cp /usr/lib/grub/i386-pc/* "$TMPDIR/boot/grub/"
|
|
|
|
|
cp "$TMPDIR"/usr/lib/grub/i386-pc/* "$TMPDIR/boot/grub/"
|
|
|
|
|
grml-chroot "$TMPDIR" grub-mkimage -O i386-pc -p "(hd0,msdos1)/boot/grub" -o /tmp/core.img biosdisk part_msdos ext2
|
|
|
|
|
dd if="$TMPDIR/tmp/core.img" of="$IMAGE" conv=notrunc seek=4
|
|
|
|
|
|
|
|
|
|
if test $grubonly = 0; then
|
|
|
|
|
grml-chroot $TMPDIR update-grub
|
|
|
|
|
|
|
|
|
|
sed -i "s;set root=.*;set root='(hd0,msdos1)';" $TMPDIR/boot/grub/grub.cfg
|
|
|
|
|
# sed 's/insmod ext2/insmod ext2\n insmod part_msdos/' $TMPDIR/boot/grub/grub.cfg
|
|
|
|
|
|
|
|
|
|
cat $TMPDIR/boot/grub/grub.cfg > /tmp/grub.cfg
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
umount $TMPDIR
|
|
|
|
|
rmdir $TMPDIR
|
|
|
|
|
|