1、获取grub-0.97的预编译包, from ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.tar.gz. 解压。
2、建立grub启动的软盘映像
a、dd if=/dev/zero of=fda.img bs=512 count=2880,生成镜像文件。
b、准备安装grub到软盘 fda.img 中。
c、sudo losetup /dev/loop30 fda.img
d、sudo dd if=./grub-0.97-i386-pc/boot/grub/stage1 of=/dev/loop30 bs=512 count=1
e、sudo dd if=./grub-0.97-i386-pc/boot/grub/stage2 of=/dev/loop30 bs=512 seek=1
f、sudo losetup -d /dev/loop30
g、qemu -fda fda.img,测试grub安装是否正确,如果正确可以进入grub>界面。
3、创建硬盘镜像
a、mkdir rootfs
b、dd if=/dev/zero of=os.img bs=4096 count=8192 #32M
c、fdisk -C 16065 -H 255 -S 63 os.img #npaw #磁道数为16065、磁头数为255、扇区数为63
d、losetup -o 1048576 /dev/loop50 os.img #把前面的2048个扇区(0~2047)作为引导扇区使用,格式化分区从第2048个扇区开始,所以1048576=2048*512
e、mkfs.ext3 -m 0 /dev/loop50
f、mount /dev/loop50 rootfs/
g、cp bzImage rootfs/ -v
h、cp ../busybox-1.21.0/_install/* rootfs/ -rfv
i、mkdir rootfs/boot/grub -p
j、cp grub-0.97-i386-pc/boot/grub/* ./rootfs/boot/grub -rfv
k、touch ./rootfs/boot/grub/menu.lst
cat ./rootfs/boot/grub/menu.lst <<EOF
default 0
timeout 30
title linux on os.img
root (hd0,0)
kernel (hd0,0)/boot/bzImage root=/dev/ram init=/bin/ash
initrd (hd0,0)/initrd.img
EOF
l、umount rootfs
m、losetup -d /dev/loop50
4、qemu 启动
a、qemu -boot a -fda fda.img -hda os.img,
进入grub> 输入command
1. root (hd0,0)
2. setup (hd0)
b、qemu -hda os.img
ref: http://blog.sina.com.cn/s/blog_70dd169101013gcw.html
ref: http://blog.csdn.net/silangquan/article/details/9100749