Test Kernel with grub

孟成文
2023-12-01

http://sig9.com/bochs-grub

Bochs+Grub, Testing Kernels

Lack of resources means finding newer, crooked ways of doing things, including emulating them. Being an os development enthusiast with just a single x86 PC at my disposal, I have often relied on Bochs for emulation purposes such as trying out Linux, BSD and even my own kernels. Here is how I use a file backed floppy disk image with grub installed in it for quick kernel try-outs; because rebooting can be a pain. The steps described here are specific to GNU/Linux based systems, and some of them may require super user privileges. Ofcourse, you need to have Bochs and Grub installed.

  1. Create the floppy disk image (1.44M capacity).
    $ dd if=/dev/zero of=floppy.img bs=1024 count=1440
  2. Create and attach a loopback device to the image.
    $ losetup /dev/loop1 floppy.img
  3. Create a file system (EXT2FS).
    $ mkfs /dev/loop1
  4. Mount the device, so we can read and write to it.
    $ mount -o loop /dev/loop1 /mnt
  5. Setup grub directory with stage1 and stage2. For this step, you will need to determine the location of grub "stage1" and "stage2" files. Some common locations are "/boot/grub" "/usr/share/grub", "/usr/local/share/grub/" etc. The following worked for me (on my Fedora Core 3 system).
    $ mkdir -p /mnt/boot/grub
    $ cp /boot/grub/stage1 /boot/grub/stage2 /mnt/boot/grub/
  6. Create the grub configuration file.
    $ vi /mnt/boot/grub/grub.conf
    The following is a sample "grub.conf". More about the menu here .
    # My Grub.conf
    #
    title=MyTestKernel
    root (fd0)
    kernel /mykern

    title=TestLinux
    root (fd0)
    kernel /vmlinuz
    And unmount the device.
    $ umount /mnt
  7. Install and embed grub into the image.
    $ grub --device-map=/dev/null
    Upon which you should get the grub interface. Enter the following commands into it -
    grub> device (fd0) /dev/loop1
    grub> root (fd0)
    grub> setup (fd0)
    grub> quit
  8. Detach the loopback device.
    $ losetup -d /dev/loop1
Thats it! The floppy image is ready with a grub boot loader installed. All you need to do is use this file as the floppy disk image under Bochs. To install the kernel files into this image, all you need to do is follow these steps -
  1. Create and attach a loopback device to the image and mount it.
    $ losetup /dev/loop1 floppy.img
    $ mount -o loop /dev/loop1 /mnt
  2. Perform operations on the image file, such as installing new kernel images or updating grub.conf. Once thats done, perform the next step.
  3. Unmount device and detach the loopback device.
    $ umount /mnt
    $ losetup -d /dev/loop1
Once you're ready for some real testing, all you need to do is get hold of a real floppy disk and write the image onto it.
$ dd if=floppy.img of=/dev/fd0

 

 类似资料:

相关阅读

相关文章

相关问答