Flicker Free Boot

From Gentoo Wiki
Jump to:navigation Jump to:search
Warning
This page has been nominated for deletion.

The given reason is: Requires pulling from unverified sources and use of pastebin

If you disagree with its deletion, do not remove this notice; discuss your objections on the associated discussion page.

Administrators, please remember to check if anything links here and the page history before deleting.

This notice should remain for a minimum of 1 month after it was placed on the page. If discussion is still ongoing it should remain until a consensus is reached, at which time the page may be deleted or this notice may be removed. (However, if the page has only been edited by the user who nominated it for deletion and/or is in the nominator's user space, then a speedy deletion may be called for.)

Flicker Free Boot is a relatively new feature, that was created by Hans de Goede and is available in Fedora since version 30.

Warning
This is not an easy task to accomplish and might break the system. It's recommended to make a backup of all files in the /boot partition before attempting this tutorial. No support for boot failures will be provided by Gentoo (forums, bugs, email, irc) when using software outside of the repository. Follow this tutorial at your own risk!

Testing

Device Model CPU (Code Name) Notes
Dell Inspiron 15 5567 Intel Core i7-7500U (Kaby Lake) The boot process is completely fluent, using kernel patches from [1] or kernel version below 5.7.
Dell PowerEdge T20 Intel Xeon E3-1225v3 (Haswell) The boot process is around 80% fluent. It flickers once for 2 - 3 sec. Unfortunately it's the same when booting from a Microsoft Windows 10 based USB key, so it appears to be the way it was implemented.
Lenovo ThinkPad P52 Intel Core i7-8750H (Coffee Lake) The boot process is completely fluent

Other results

Please share your success or failure results if you can. This way we can get a more accurate view of what is working.

Requirements

Hardware / Software

  • A working UEFI setup, preferably with a Intel Skylake (6th Generation) or more recent processor should work.
  • Older (3rd to 5th Generation Core iXXXX series processors might work.
  • You must be using the Intel Onboard (i915) series graphics. Other graphics cards are not supported.
  • The specified system must boot up in native UEFI mode. CSM mode needs to be disabled.
  • The specified system must use a manually compiled kernel. I haven't tested this with a genkernel created kernel.
  • If you're using an older (e.g. Ivy Bridge / Haswell / Broadwell) based system, it's recommended that you use at least sys-kernel/gentoo-sources version 4.20.17 or higher due to a bug that actually causes the screen to go to stand-by mode and turn back on.
  • Kernel version 5.7.0 or higher does not honor the i915.fastboot kernel parameter [2]. Use the patches located on that bug report or use a version below 5.7.0.
  • This guide assumes that you've configured your kernel correctly and set the appropriate options for framebuffer support and such.
  • This guide assumes that you're using /dev/sda1 as ESP (/boot) partition. If it's not, then adjust the commands for your own paths accordingly.

Knowledge

  • A working Gentoo setup, preferably configured with EFI stub.
  • Intermediate to advanced knowledge about the Linux boot process.

Summary

This tutorial assumes that you've currently got a working Gentoo setup. This setup boots in (U)EFI mode using grub with CSM mode disabled and is using an Intel processor with it's own integrated graphics card.

Installing the required software

In order to be able to successfully get everything working, there are things you'll need to do in order to be able to successfully getting this running on a system

Setting the correct USE flags for plymouth

In order to set the correct use flags for plymouth, you'll need to take the following steps:

  1. Run the command:
    root #nano -w /etc/portage/package.use/plymouth
  2. Add the following line to the file:
    FILE /etc/portage/package.use/plymouth
    sys-boot/plymouth libkms pango
    1. NOTE: libkms is the minimal requirement for the splash screen even to show up and pango is required For interactivity (e.g.: If you want to have the ability to enter a LUKS password on a nice graphical screen). The gtk and gdm USE flags should be added respectively when using GDM as Display Manager or lightdm with GTK.
    2. NOTE: Do NOT use the static-libs USE flag. This USE flags break plymouth and causes the package not to compile or show any themes.
  3. Press CTRL + O, press [Enter] and press CTRL + X in order to save the file.
  4. Now install the package: sys-boot/plymouth:
    root #emerge --ask --verbose sys-boot/plymouth
    Verify that the correct use flags are set (otherwise there might be a typo in the file).

Using dracut

This has been tested to work by using the amd64 version of dracut. Using the latest available version of dracut from portage is recommended.

Install the package: sys-kernel/dracut:

root #emerge --ask sys-kernel/dracut

Then create the initramfs image with

root #dractut --hostonly

More information is available on the Dracut page.

Setting up EFI stub

Usage of EFI stub can be found at EFI Stub and Efibootmgr. Make sure you include the i915.fastboot=1 kernel parameter, and include the path to your initranmfs generated by dracut, like so:

root #efibootmgr -c -d /dev/sda -p 1 -L "Gentoo" -l '\vmlinuz-5.4.97-gentoo' -u '... i915.fastboot=1 initrd=\initramfs-5.4.97-gentoo.img ...'

Finally, reboot and pray it's working.

See also

  • Dracut — an initramfs infrastructure and aims to have as little as possible hard-coded into the initramfs.
  • Plymouth — a bootsplash used to show splash screens during system boot and shutdown.

External References