#!/bin/bash
set -e
set -x
export LC_ALL=C

if [ -e img ]; then rm -f img; fi
if [ -d mnt ]; then rmdir mnt; fi
mkdir mnt
# 480*1024*1024/(512*63*255) = 61.2
dd if=/dev/zero of=img bs=1M count=0 seek=480
set +e
/sbin/fdisk -C 61 -H 255 -S 63 img <<EOF
n
p
1
1
61
a
1
w
q
EOF
set -e

if [ ! -e /dev/loop0 ]; then
    sudo modprobe loop
fi
loopdev="`sudo losetup -f`"
sudo losetup -o 32256 "${loopdev}" img
# (61-1)*255*63*512/4096 = 120487
sudo mkfs -t ext2 -b 4096 "${loopdev}" 120487
sudo losetup -d "${loopdev}"

sudo mkdir -p fs/boot/grub
echo y | sudo chroot fs update-grub

sudo mount img mnt -oloop,offset=32256
sudo cp -a fs/* mnt
sudo mkdir -p mnt/boot/grub
sudo cp fs/usr/lib/grub/i386-pc/{stage1,e2fs_stage1_5,stage2} mnt/boot/grub
sudo umount mnt

grub <<EOF
device (hd0) img
geometry (hd0) 61 255 63
root (hd0,0)
setup (hd0)
quit
EOF

sudo mount img mnt -oloop,offset=32256
sudo umount mnt
rmdir mnt
