[coreboot] questions about "QEMU Build Tutorial"

Jun Ma sync.jma at gmail.com
Sat May 3 17:54:40 CEST 2008

On Sat, May 3, 2008 at 12:29 AM, Myles Watson <mylesgw at gmail.com> wrote:
>  Your contributions are welcome!

"You must have cookies enabled to log in to coreboot. If you don't
have an account and wish to contribute contact Stefan Reinauer or
Ronald Minnich. NOTE: You don't need an account to read the
information on this site. So don't ask for an account unless you have
something to contribute."

Here is a instruction with ugly format, hope I have not miss important things.

My test env: debian etch with kernel 2.6.25.

src prepare:
  coreboot v2       - svn://coreboot.org/repos/trunk/coreboot-v2
  qemu-0.9.1.tar.gz/kqemu - http://fabrice.bellard.free.fr/qemu/
  filo-0.5          - svn co svn://coreboot.org/filo/trunk/filo-0.5
  linux src                     - http://www.kernel.org
  linux rescue cd.  - for partitions.

build tools:
        New linux distributions use gcc4.x as default, but qemu needs
gcc-3.x, so maybe you need to install gcc3.4 (for debian users, 'sudo
apt-get install gcc-3.4')
        $ cd qemu-0.9.1
    $ ./configure --cc=gcc-3.4 --target-list=i386-softmmu && make
        $ sudo make install

        Ok, qemu is done. you can use "qemu -h" for more helps. Let us
create a qemu hard disk image first. BTW, kqemu will bring you better
performance, please google for installing.

        $ qemu-img create -f raw test.img 200M
        Use your favourite rescue CD to do partion issues.(I choose
rhel here because both Debian etch/lenny CDs could not enter the
rescue mode in qemu-0.9.1.:<. anyone who knows the reason please tell
me, thanks. )
        $ qemu -cdrom ~/iso/rhel5_rescue.iso -boot d -hda test.img -L
~/work/qemu-0.9.1/pc-bios/ -m 512
        Run fdisk and create a single partition on the drive that
takes up the whole drive
        Quit and write the partition to disk
        Run mkfs.ext2fs on that partition
        Exit QEMU

        Allright, we start to build rootfs for qemu image.
        $ sudo mount -o loop,offset=32256 test.img /mnt/rootfs

        Create a boot directory and copy your Linux kernel (vmlinuz)
and initramfs (initrd) to it:

        $ sudo mkdir /mnt/rootfs/boot
        $ sudo mkdir /mnt/rootfs/boot/filo
        $ sudo cp vmlinuz /mnt/rootfs/boot/vmlinuz
        $ sudo cp initrd /mnt/rootfs/boot/initrd
        $ sudo vi /mnt/rootfs/boot/filo/menu.lst
                # For booting GNU/Linux
                title  GNU/Linux
                root (hd0,0)
                kernel /boot/vmlinuz root=/dev/hda1
                initrd /boot/initrd

        # Add other files as you wish.
        $ sudo cp -R /* /mnt/rootfs

        Alternatively, with Debian you can use the debootstrap command
to create a basic root filesystem:
        $ sudo debootstrap --arch i386 etch /mnt/rootfs

        If you are using a debootstrap filesystem, open the file
/mnt/rootfs/etc/inittab and change runlevel to level 1:

        cd out of /mnt/rootfs and umount it:
        $ sudo  umount /mnt/rootfs

        $ cd filo-0.5
    First invocation of make creates the default Config file.
        $ make
        Edit this file as you like.
        vi Config
        change MENULST_FILE to "hda1:/boot/filo/menu.lst", since we
only have one single partition.
        change AUTOBOOT_FILE to "hda1:/boot/vmlinuz root=/dev/hda1

        Run make again to create filo.elf, the ELF FILO image.
        $ make

        change payload to path/to/filo.elf
        $ vi coreboot-v2/targets/emulation/qemu-x86/Config.lb

        $ cd coreboot-v2/targets
        $ ./buildtarget emulation/qemu-x86
        $ cd emulation/qemu-x86/qemu-x86/
        $ sudo make
        Here we got coreboot.rom which use filo as bootloader.

        $ cp coreboot.rom ~/bios.bin
        $ cp $path/to/qemu-0.9.1/pc-bios/vgabios-cirrus.bin ~/

Here we go!
        Boot test.img using coreboot.
        $ qemu -L ~ -hda test.img


FIXME if it is wrong.

More information about the coreboot mailing list