Skip to content
forked from bonzini/qboot

Minimal x86 firmware for booting Linux kernels

License

Notifications You must be signed in to change notification settings

linuxboot/qboot

 
 

Repository files navigation

Build status

A simple x86 firmware that can boot Linux.

Most of QEMU's startup time is spent:

  • in the dynamic linker. This can be reduced by 150 ms simply by compiling a stripped down QEMU:
    ./configure --disable-libssh2 --disable-tcmalloc --disable-glusterfs \
        --disable-seccomp --disable-{bzip2,snappy,lzo} --disable-usb-redir \
        --disable-libusb --disable-smartcard-nss --disable-libnfs  \
        --disable-libiscsi --disable-rbd  --disable-spice --disable-attr \
        --disable-cap-ng --disable-linux-aio --disable-brlapi \
        --disable-vnc-{jpeg,tls,sasl,png,ws} --disable-rdma --disable-bluez \
        --disable-fdt --disable-curl --disable-curses --disable-sdl \
        --disable-gtk  --disable-tpm --disable-vte --disable-vnc  \
        --disable-xen --disable-opengl --target-list=x86_64-softmmu
  • in the BIOS. qboot saves another 150 ms.

  • until QEMU 2.7+, in fw_cfg. qboot uses the DMA interface which is pretty much instantaneous.

Compile qboot

Clone the source:

$ git clone https://github.com/bonzini/qboot.git

Compile the qboot firmware (you may need to install the relevant build time dependancies):

$ make

The result will be a 64K file named build/bios.bin.

Usage

$ qemu-kvm -bios bios.bin \
  -kernel /boot/vmlinuz-4.0.3-300.fc22.x86_64 \
  -serial mon:stdio -append 'console=ttyS0,115200,8n1'

TODO

  • Add the possibility to configure out PIC and PCI bridge initialization

About

Minimal x86 firmware for booting Linux kernels

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 94.2%
  • Assembly 3.6%
  • Makefile 1.4%
  • C++ 0.8%