48 lines
1.4 KiB
Text
48 lines
1.4 KiB
Text
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 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
|
|
====
|
|
|
|
* SMBIOS tables
|
|
* Add the possibility to configure out PIC and PCI bridge initialization
|