@see http://wiki.osdev.org/GRUB_2
@see http://my-zhang.github.io/blog/2014/06/28/make-bootable-linux-disk-image-with-grub2/
menuentry "bzImage" {
linux /bzImage
initrd /initrd.img.gz
boot
}
(hd0) /dev/loop0
(hd0,1) /dev/loop1
bximage -mode=create -hd=500M -q my-linux.img
# The following line should appear in your bochsrc:
# ata0-master: type=disk, path="my-linux.img", mode=flat
sudo losetup /dev/loop0 my-linux.img
sudo gparted /dev/loop0
# create an MS-DOS partition table
# create primary partition ext2
sudo fdisk -l /dev/loop0
# Device Boot Start End Blocks Id System
# /dev/loop0p1 2048 1021951 509952 83 Linux
# 注意 Start = 2048 = 512 * 2048 = 1M
sudo losetup -o $((512*2048)) /dev/loop1 my-linux.img
sudo mount /dev/loop1 /mnt
sudo mkdir -p /mnt/boot/grub/
sudo cp device.map /mnt/boot/grub/
sudo grub-install --root-directory=/mnt --grub-mkdevicemap=/mnt/boot/grub/device.map --no-floppy /dev/loop0
sudo cp grub.cfg /mnt/boot/grub/
sudo cp bzImage /mnt/
sudo cp initrd.img.gz /mnt/
sync
sudo umount /mnt/
sudo losetup -d /dev/loop0 /dev/loop1