commit | 7aeec271d806efe1ecc18bf6dc32f39dfe8b994a | [log] [tgz] |
---|---|---|
author | Trammell hudson <hudson@trmm.net> | Fri Mar 13 16:34:50 2020 +0100 |
committer | Trammell hudson <hudson@trmm.net> | Fri Mar 13 16:34:50 2020 +0100 |
tree | 5ec6b0a3676ef8520a1534df67e16cfdc42bc45c | |
parent | 0cafc75c6821c1f34563e6cb226bd20670c877a0 [diff] |
try to link to workflow Signed-off-by: Trammell hudson <hudson@trmm.net>
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.
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
.
$ qemu-kvm -bios bios.bin \ -kernel /boot/vmlinuz-4.0.3-300.fc22.x86_64 \ -serial mon:stdio -append 'console=ttyS0,115200,8n1'