How can I have less "flickering" when booting?

If you are using an intel integrated gpu, you can try adding the i915.fastboot=1 kernel parameter to avoid the flickering caused by unnecessary mode-setting operations.

First, try adding it temporarily at grub:

  1. Start your system and press and hold Shift (or Esc in UEFI systems) for grub menu to show up.
  2. Press e to edit the commands before booting.
  3. Add i915.fastboot=1 after quiet splash

Notice if it reduces flickering and if it has any side effects, like screen brightness not working.

To add this parameter permanently:

  1. From a terminal run gksudo gedit /etc/default/grub, replace gedit with your text editor.
  2. Add i915.fastboot=1 after quiet splash in line GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
  3. Run sudo update-grub
  4. Reboot and determine if it reduces flickering.

    • How do I add a kernel boot parameter?
    • https://www.phoronix.com/scan.php?page=news_item&px=Intel-Fastboot-Default-2019-Try

The "flickering" occurs most likely when running Ubuntu MATE or a similar distribution. Such instances of screen on-and-off may be, but not necessarily, influenced by the graphic driver support.

In the following sections, I will use these terms:

  • "blank" to refer the instance when screen becomes completely dark with no light at all;
  • "shine" to refer the instance when screen at maximum brightness;
  • "blanking" to refer to the instance when screen becomes dark with light between login and desktop.

Based on the boot process described by OP, there are three instances of "blank", one instance of "shine" and one instance of "blanking".

The blank 1

0:00~0:08 Bios
0:09 Black (no light)  <-- this

This is a common instance, which indicates the boot process proceeding from BIOS/UEFI to subsequent stage (usually MBR for a BIOS machine). The first blank is inevitable and most users can do nothing about this.

The blank 2

0:10~0:11 Black (light)
0:12 Black (no light)  <-- this

The second blank is most likely shown when proceeding from the subsequent stage to the boot loader (usually GRUB for a GNU/Linux machine). The default timeout is usually set to 10 seconds, although built-in configuration may automatically reduce the timeout to several seconds when no other operating system is found. This will still cause some delay.

Workaround: Ensure boot loader timeout is zero and hidden.

In terminal, run sudo nano /etc/default/grub and modify the relevant lines as follows, then save changes by ^X Exit: press Ctrl+X then press Y and press Enter. Then, run sudo update-grub to update the modified configuration (before running the last command, user may want to apply the next workaround together in the same configuration file).

...
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
...

The two lines with GRUB_HIDDEN... are deprecated parameters and should be disabled with comment syntax #. Not really related to the blank; just to rule out any unexpected result.

When other operating systems were found via 'os-prober', the timeout can not be zero and can not be hidden: the built-in configuration will enable the boot menu and timeout is only effective with a non-zero value. For a multiboot system, the menu will appear for at least 1 second and the second blank may be shown anyway.

The shine

0:13~0:15 Bright screen

This is most likely hardware-dependent. The symptom looks similar to this dated post or another dated post on Ask Ubuntu. Otherwise, look up by the machine model or hardware specification at relevant community sites for most appropriate solution.

The blank 3

0:16 Black with light
0:17 Black without light  <-- this
0:18 Loading screen

The third blank is most likely shown when boot loader runs the application that provides a graphical boot animation (usually Plymouth for an Ubuntu-based distribution) a.k.a. boot splash. The boot splash has no meaningful purpose especially when the boot process is fast; what is shown by OP is very fast.

Workaround: Ensure boot loader does not run the boot splash.

Similarly run with sudo permission to edit /etc/default/grub and modify the line that contains "quiet splash" and change that part to "quiet", then save the changes. Finally, run sudo update-grub to update the modified configuration.

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
...

When the boot splash is disabled, some boot message may be shown instead during the boot process. For some reason, the result is inconsistent when running Ubuntu MATE (sometimes showing many lines despite the same "quiet" option), which is otherwise not seen when running other Ubuntu derivative like Xubuntu.

The blanking

0:19 Change of Background
0:22~0:29 Login
0:30 Black with light  <-- this
0:32 My wallpaper

The blanking that occurs between login and desktop, is most likely specific to GNOME or similar desktop environments like MATE. I have confirmed that: in comparison, Cinnamon does show blanking like MATE; in contrast, Xfce does not show such behaviour.

Initially, I thought the blanking may be due to transition of loading the compositing window manager; however, changing or disabling the compositor in MATE either way does not affect the blanking behaviour. So the actual problem is something else.

Workaround: For Ubuntu MATE, the login screen should use a true black colour (#000000).

Go to Control Center > Login Window - Appearance and empty the path for Background, and then change Background colour to black (select the darkest monochrome shade in the bottom-left area). Close the window to finish. The main purpose of this workaround is to minimize the blanking; user may also change the theme to improve contrast and login window visibility.

The result

With workarounds above, most end-users will see only the first blank during the boot process. Except, OP and affected users will need to solve the shine issue separately.

  • blank 1: Always shown (inevitable)
  • blank 2: Use workaround
  • shine: Separate solution (hardware-dependent)
  • blank 3: Use workaround
  • blanking: Use workaround (software-dependent)

Tested workarounds with Ubuntu MATE 18.04, running on 32-bit machine Intel Celeron 1.6 GHz with Intel graphics. Minimal installation has boot time of about 45 seconds (non-optimal), with no shine and only the first blank and blanking were seen.