BIOS speedup

I have been doing some attempts to make the upboard boot fast, and at this moment I am able to boot into running Xorg with running Qt application into about 6.5 seconds. The problem is that I'm starting to run out of low hanging fruit, the recipe I followed is quite simple, throw out all the junk I don't need. Systemd is reporting the following
Meaning that 65% of my boot budget is wasted in the BIOS (10% in GRUB, 12.5% in the kernel and 12.5% in userland). I've tried looking for some low hanging fruit there, but I guess it's probably just silly timeouts, there's for example a one second timeout waiting for a keypress for boot selection (which can't be set to zero), and showing the splash screen also takes up some time. Which possibilities are there to get the up-board to get faster beyond the BIOS ?
[email protected]:~# systemd-analyze Startup finished in 4.222s (firmware) + 598ms (loader) + 838ms (kernel) + 796ms (userspace) = 6.456s
Meaning that 65% of my boot budget is wasted in the BIOS (10% in GRUB, 12.5% in the kernel and 12.5% in userland). I've tried looking for some low hanging fruit there, but I guess it's probably just silly timeouts, there's for example a one second timeout waiting for a keypress for boot selection (which can't be set to zero), and showing the splash screen also takes up some time. Which possibilities are there to get the up-board to get faster beyond the BIOS ?
Comments
If its only to change the logo its few hundred dollars
I think anybody using the up-board in a custom project with a screen attached would be thrilled to have it boot faster and have the means to modify/disable the splash screen.
I think Aling's response covered the "official BIOS release with custom splash image" angle. For your usecase, there are a few things you might be able to do from the current BIOS settings:
Boot > Quiet boot
enabling this should show boot output instead of the splash image. I'm not sure if drawing the splash introduces much boot overhead, though. It's probably more a mix of timeouts and device initialization as you said.
CRB Boot > Setup Prompt Timeout (requires the engineering BIOS password to access)
that's the one-second timeout you were referring to. It seems it can be set to 0, although I can't test how well that works myself right now. Unless you're prepared to externally reflash the BIOS chip in the worst-case scenario, I'd advise not to take the risk for now.
It's plausible that some other engineering BIOS tweaks might result in shorter BIOS boot times (e.g. by disabling controllers you won't use). Again, please be cautious. We could verify if a given setting is safe for you if you're unsure.
Hope that's useful.
Thanks for your input.
- Quiet boot , is a nice suggestion, I just gave this a try and then it shows the American megatrends logo, and this already shaves off 200 miliseconds (jay !).
- CRB BOOT > Setup Prompt Timeout, is something I already spotted but this timeout cannot be set to 0 ... (which imho is indeed a full second of 'dead weight'), probably responsible for 15% of my boot time budget.
On some other platforms, I remember seeing on occasion a "Fast Boot" option that overrides the "Setup Prompt Timeout" entirely and adds almost no delay (yet still allows you to hold Del or Esc before powering on the device to get inside the menu). I can't find anything like that, so it looks like this might just be a limitation of the AMI base for the current BIOS.