diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-21 13:40:18 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-21 13:40:18 +0200 |
commit | b081143b378235706c45c8fa89f800f0df717380 (patch) | |
tree | 6dde14ebb1b9b8771d43e2b7f798b84f294f8fe7 | |
parent | f53af4778ede5b73f6af9951b655f387c5bc94ba (diff) | |
download | qboot-b081143b378235706c45c8fa89f800f0df717380.zip qboot-b081143b378235706c45c8fa89f800f0df717380.tar.gz qboot-b081143b378235706c45c8fa89f800f0df717380.tar.bz2 |
a nicer README
-rw-r--r-- | README | 60 |
1 files changed, 42 insertions, 18 deletions
@@ -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 |