>>
>> Of this, 1.4 seconds is the time required by LinuxBoot to copy the
>> kernel+initrd. If I used an uncompressed initrd, which I really want
>> to, to avoid decompression overhead, this increases to ~1.7 seconds.
>> So the LinuxBoot ROM is ~60% of total QEMU execution time, or 40%
>> of total sandbox execution overhead.
>
> One thing we can do is boot a guest and immediately snapshot it, before it
runs any application specific code. Subsequent invocations will MAP_PRIVATE the
memory image and COW their way. This avoids the kernel initialization time as
well.
That doesn't allow modification of -append
>
>>
>> For comparison I also did a test building a bootable ISO using ISOLinux.
>> This required 700 ms for the boot time, which is appoximately 1/2 the
>> time reqiured for direct kernel/initrd boot. But you have to then add
>> on time required to build the ISO on every boot, to add custom kernel
>> command line args. So while ISO is faster than LinuxBoot currently
>> there is still non-negligable overhead here that I want to avoid.
>
> You can accept parameters from virtio-serial or some other channel. Is
there any reason you need them specifically as *kernel* command line parameters?
That doesn't work for kernel parameters. It also means things would have to be
rewritten needlessly. Some times we can't easily change the way parameters are
passed into the guest either, for example when running a random (read: old,
think of RHEL5) distro installation initrd.