Skip to content
Projects

bonzini/qboot has 718 GitHub stars and 123 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-15 18:38 UTC. Last push 2022-09-20.

How these counts are measured

Measured star growth

in 24h
0
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

Minimal x86 firmware for booting Linux kernels

Developer Tools

README.md

Original

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):

$ meson build && ninja -C build

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

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