QEMU Build Tutorial

From coreboot
Revision as of 20:55, 7 September 2006 by Stepan (talk | contribs) (→‎Introduction)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!

Introduction

If you don't have a mainboard supported by LinuxBIOS don't worry: Qemu can help you to emulate one.

This nice tutorial was written by Alan Carvalho de Assis <acassis@gmail.com>.

Requirements

You need the following softwares:

  • GCC (obvious, since you need compile FILO and LinuxBIOS)
  • Qemu
  • FILO
  • LinuxBIOS


Creating FILO

Download FILO (I used filo-0.4.2.tar.bz2), decompress it, enter inside directory created.

First invocation of make creates the default Config file.

$ make   

Edit this file as you like. The default configuration worked to me.

$ vi Config   

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

$ make   

You will need this file (filo.elf) to start Linux. This is used as a payload in LinuxBIOS, when executed it can load Linux kernel.


Creating LinuxBIOS

Download LinuxBIOS source code (I used LinuxBIOSv2-2394). Decompress it.

Change to directory targets/emulation/qemu-i386 and modify Config.lb to point to your filo.elf.

Return to targets directory and execute:

$ ./buildtarget emulation/qemu-i386  

Go to targets/emulation/qemu-i386/qemu-i386 and execute:

$ make  

It will create the file "qemu-bios.rom"

Rename this file to "bios.bin" and copy to your HOME directory.


Creating your disk image

Create a empty file (~ 200MB):

# dd if=/dev/zero of=disk.img bs=1M count=200 

Format it as ext2:

# mkfs.ext2 -F disk.img 

Mount it on somewhere:

# mount disk.img /mnt/rootfs -t ext2 -o loop 

Now you need copy a root filesystem to it.

I create a directory /debian and used debootstrap command to create a basic root filesystem, but you can use any root filesystem from your distro (i.e. copy one from diskboot.img):

# cp -R /debian/* /mnt/rootfs 

Open the file /mnt/rootfs/etc/inittab and change runlevel to level 1:

id:1:initdefault: 

Change to /mnt/rootfs/boot and copy your default vmlinuz and initrd:

# cp /boot/vmlinuz-2.6.16-2-686 vmlinuz
# cp /boot/initrd.img-2.6.16-2-686 initrd

Change to /root and umount /mnt/rootfs:

# umount /mnt/rootfs

Exit of root account:

# exit


Starting LinuxBIOS in Qemu

Execute Qemu using the followings parameters:

$ qemu -L ~ -hda disk.img -nographic -no-kqemu -d in_asm,exec

When appear "boot:" text enter it:

boot: hda:/boot/vmlinuz root=/dev/hda initrd=/boot/initrd console=tty0 console=ttyS0,115200