Deploy VM using Grub version from chroot.

This fixes the remaining Grub-from-host-vs-guest issue. \o/

From: Michael Prokop <mprokop@sipwise.com>
ksolomko/vlan
Michael Prokop 15 years ago
parent 5f9c726022
commit e497b5272a

@ -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

Loading…
Cancel
Save