aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-05-21 13:40:18 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2015-05-21 13:40:18 +0200
commitb081143b378235706c45c8fa89f800f0df717380 (patch)
tree6dde14ebb1b9b8771d43e2b7f798b84f294f8fe7
parentf53af4778ede5b73f6af9951b655f387c5bc94ba (diff)
downloadqboot-b081143b378235706c45c8fa89f800f0df717380.zip
qboot-b081143b378235706c45c8fa89f800f0df717380.tar.gz
qboot-b081143b378235706c45c8fa89f800f0df717380.tar.bz2
a nicer README
-rw-r--r--README60
1 files changed, 42 insertions, 18 deletions
diff --git a/README b/README
index ab8a381..3d6a5a4 100644
--- a/README
+++ b/README
@@ -1,26 +1,50 @@
-A simple x86 firmware that can boot Linux. Usage:
+A simple x86 firmware that can boot Linux.
+
+Most of QEMU's 500-700 ms 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-uuid --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.
+
+* in fw_cfg. This is fixed by putting kernel and initrd in a CoreBoot cbfs
+ image, and doing a memory copy from NVDIMM or flash instead of using fw_cfg.
+ Right now only flash is supported. 350 ms are saved, bringing the startup
+ time down to 60 ms.
+
+Usage
+=====
fw_cfg based example:
-$ qemu-kvm -bios bios.bin \
- -kernel /boot/vmlinuz-4.0.3-300.fc22.x86_64 \
- -serial mon:stdio -append 'console=ttyS0,115200,8n1'
+ $ qemu-kvm -bios bios.bin \
+ -kernel /boot/vmlinuz-4.0.3-300.fc22.x86_64 \
+ -serial mon:stdio -append 'console=ttyS0,115200,8n1'
cbfs-based example (pflash isn't the definitive interface though):
-$ dd if=/dev/zero of=boot.bin bs=4096 count=1
-$ cbfstool cbfs.rom create -s 8m -B boot.bin -m x86 -o 0x1000
-$ cbfstool cbfs.rom add -f /boot/vmlinuz-4.0.3-300.fc22.x86_64 -n vmlinuz -t raw
-$ echo 'console=ttyS0,115200,8n1' > cmdline
-$ cbfstool cbfs.rom add -f cmdline -n cmdline -t raw
-$ qemu-kvm -drive if=pflash,file=bios.bin,readonly=on \
- -drive if=pflash,file=cbfs.rom,readonly=on \
- -serial mon:stdio
-
-TODO:
-- ACPI tables
-- SMBIOS tables
-- Multiboot loading
+ $ dd if=/dev/zero of=boot.bin bs=4096 count=1
+ $ cbfstool cbfs.rom create -s 8m -B boot.bin -m x86 -o 0x1000
+ $ cbfstool cbfs.rom add -f /boot/vmlinuz-4.0.3-300.fc22.x86_64 -n vmlinuz -t raw
+ $ echo 'console=ttyS0,115200,8n1' > cmdline
+ $ cbfstool cbfs.rom add -f cmdline -n cmdline -t raw
+ $ qemu-kvm -drive if=pflash,file=bios.bin,readonly=on \
+ -drive if=pflash,file=cbfs.rom,readonly=on \
+ -serial mon:stdio
-Example:
+TODO
+====
+* ACPI tables
+* SMBIOS tables
+* Multiboot loading