Changes made to Grub-Quiet

With v18.0-beta-7 I changed the way on how we use grub. This is the needed information to communicate to the user when using grub-quiet package.


We added new features to grub-quiet. On this we worked with Fedora together.

On systems with only a single OS installed, the grub menu’s only function is to allow booting older kernels, which is only necessary as a rescue option in case of a severe kernel bug and as such not something which is directly useful for normal use.

Manjaro already has a lot of work done to not show too technical boot messages to end users during bootup, e.g. we pass quiet to the kernel and we had plymouth to show a bootsplash instead of a bunch of “Starting service-foo: OK” messages.

The grub menu with its kernel versions is another example of showing too technical info to end-users and on non multi-boot systems it normally is not necessary, so it is better to hide it.

This change will add menu-auto-hide functionality to grub, which when enabled will hide the menu if:

  • The machine only has a single OS installed; and
  • The previous boot has set a flag to indicate it successfully booted

To make the menu easier to reach when hidden this change will also extend how the menu can be unhidden. Currently to show the menu when hidden the user needs to press ESC during boot. There are 3 problems with this

  • It is not easily discoverable
  • Timing the ESC key press right may be hard
  • ESC makes the machine enter its firmware/BIOS setup screen on some machines (especially with the #bladebook)

So we added 2 new unhide methods to address these problems:

  • Press F8 to unhide the menu (F8 has been the key to show the Windows boot menu for many older Windows versions)
  • Keep SHIFT pressed during boot, this fixes the timing problem and this is what Ubuntu does

This new auto-hide functionality will be automatically enabled on new Manjaro 18.0 installs. This can be disabled by running:

sudo grub-editenv - unset menu_auto_hide

You can also show the menu once for 60 seconds on next boot:

sudo grub-editenv - set menu_show_once=1


How to enable smooth-bootup

These steps are only needed when not using any Manjaro 18.0-beta-7 install media.

  • switch to testing branch
  • install linux418 or linux419
  • install grub-quiet
  • reinstall grub to MBR (Attention: use the correct cmd for your system!)
    • EFI: sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck
    • BIOS: sudo grub-install --recheck /dev/sd[X] (change [X] for your device letter. Check via lsblk -f)
  • reboot to see if all is still booting fine (optional)
  • check that you have loglevel=3 vga=current rd.systemd.show_status=auto rd.udev.log-priority=3 vt.global_cursor_default=0 in /etc/default/grub under GRUB_CMDLINE_LINUX_DEFAULT or GRUB_CMDLINE_LINUX
  • sed -i -e 's|fsck||g' /etc/mkinitcpio.conf
  • sudo mkinitcpio -P
  • sudo update-grub
  • reboot your system
9 Likes

While it doesn’t apply to me, I noticed that the sed removes fsck from this as well:

# NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
1 Like

Working perfectly on my custom installed system :slight_smile:

EDIT: Having a issue when shutting down/rebooting. I will post it in the appropriate topic.

I have not that line, but it works perfectly:

#grub-quiet 
GRUB_DEFAULT=saved
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR='Manjaro'
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=xxxyyyyzzzz"
GRUB_CMDLINE_LINUX=""

# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Uncomment to enable Hidden Menu, and optionally hide the timeout count
GRUB_HIDDEN_TIMEOUT=3
GRUB_HIDDEN_TIMEOUT_QUIET=true

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
GRUB_BACKGROUND="/usr/share/grub/background.png"
#GRUB_THEME="/path/to/gfxtheme"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

Now what we need is a smooth splash screen in xfce’s startup and we’re done.
You should add to the post how smooth-bootup looks in virtualbox too.

These are optional but with them, you have a silent boot. There are degrees of quiet with GRUB. Disable systemd messages, output to terminal, cursor blinking.

loglevel=3 vga=current rd.systemd.show_status=auto rd.udev.log-priority=3 vt.global_cursor_default=0

I can only boot via “F8” .iso’s via USB stick, via bios does not work on this PC.
Since there are several Manjaro’s * on the hard disks anyway, I don’t need that.
Fortunately you can turn it off :slight_smile:

sudo grub-editenv - unset menu_auto_hide

Hope it doesn’t come via online update about me :wink:

* XFCE (twice), Deepin, i3wm (twice)

Habe Mint 19 entsorgt und endlich eine saubere Festplatte mit funktionierendem Grub hinbekommen, schon wird wieder alles geändert :wink: , MENNO :smiley:

I disposed of Mint 19 and finally managed to get a clean hard drive with working grub, now everything is changed again. :wink:

you shouldn’t really add this entry if you already have gpumodulenamehere.modeset=1 to enable Kernel Mode Setting as part of the power saving tweaks. the two will just conflict and quiet boot works fine with mode setting

With or without vga=current my system boots without change. Also tried to make the boot more smooth, but managed to do it partly.

Removed xf86-video-intel (as recommended by arch wiki (thus using kms for Haswell or later))
Enabled early kms (adding intel_agp i915 to /etc/mkinticpio.conf, rebuilding images and updated grub.

I get a grub background for about a second (or 2) and then the vendor logo for a second, black screen for a second (kms starting) and then again the vendor logo until sddm. The only thing I gained is that the black screen from kms starting doesn’t happen in the middle of the vendor logo and when looking at the output of systemd-analyze blame the intel backlight entry is shorter (thus a shorter black screen at boot), so not sure if I will keep early kms enabled.

Correct, vga= is deprecated a long time ago. Still in use for linux16 commands as in grub-legacy.
Good thing (bad if you see it differently) in grub is that it just ignores parameters that is not applicable or just junk. As are some fedora commands like rd.system… log-priority…cursor…
They are just junk (IMO, also in fedora systems :smiley:) as like the linux16 command itself. RH and Fedora are one of the last hold-outs for grub-legacy (grub-legacy is much better than lilo or syslinux, of course) and when they have to change to grub2, they have to show… anyway, I’ve spoken more than I need to.

Debian and ubuntu have their own additions to grub parameters (vt_handoff=, recordfail…) but at least they try to serve some sort of purpose (unnecessary, IMO).

These added complexities is what I think cause users to complain about the …uhm, complexities of grub2 and the appeal of refind and systemd-boot. It can be as simple as grub-legacy and much more reliable, robust and user-compliant than grub-legacy.

I don’t think we should copy RH method as I don’t think we should copy Arch method of handling intel-ucode but again, I’ve spoken more than I need to.

2 Likes

Well I’m not so sure that all you’ve mentioned is junk.
I’ve played with these options and found out that on my laptop there are only two necessary to have a silent boot - vendor logo is the only thing I see from entering decryption password to sddm prompt: they are quiet rd.udev.log-priority=3 and that’s all.
All other mentioned in OP might be necessary in different cases, I don’t know for sure.

EDIT:
Oops, it worked only for a few consecutive reboots to Manjaro, as soon as I tried booting to another OS and then Manjaro again, I was greeted by a bunch of messages. So it seems to me that most options except vga=current in fact are necessary for silent boot. Or MAYBE there’s something else, I’m giving up on this, going back to my own bootsplash.

The main point of what I was saying is that grub accommodates so many parameters to do so many functions.

‘quiet’ for example disables text messages when booting.
And ’ rd.udev.log-priority=3 disables systemd messages, like ‘starting version 237’
See here for systemd kernel parameters.
Without ‘splash’, plymouth and other graphics will not be displayed.
And individual OS’s use kernel parameters for their own purposes, as I mentioned.

So when users complain that grub 2 is too complicated, it can very well function simply (like grub-legacy and all other bootloaders).
All it needs is just the kernel (or efi file) and device path.
The rest, while serving some functions are ‘ancillary’.
And junk, if serving no function, will be ignored.

To have ‘silent boot’, some parameters are necessary, but for grub to function as a bootloader, most things are unnecessary.

Hope we are clear.
Cheers.

ps: thought you are on refind?
ps: your city has been busy with international conferences and military exercises. Must be the busiest in all times. :laughing:

I found (could have known it before with a little bit thinking) that it’s more or less useless for me, because I have a crypted home-partition and there is a need to decrypt it while booting. From the point of asking for and giving the passphrase the verbose startup is back. I don’t want to complain. As I wrote, I could have figured out this myself.

Yeah it’s my favourite loader but I don’t use it on a regular basis due to it’s lack of something like grub’s GRUB_ENABLE_CRYPTDISK. I love this feature: I type my password once when grub loads and then all necessary partitions unlock without a need to enter password again (crypto_keyfile.bin embedded into initramfs located on encrypted root partition). With rEFInd I’d have to place it to some unencrypted place, and that is unsafe.

You tell me! That was the worst time of a month. A whole city had extra charges and expenses because of one spoiled poutine guy who likes to show off. :face_vomiting:

2 Likes

Seems Fedora only uses quiet so far. Have to test this a little more on our end …

1 Like

Had to use loglevel=2 to suppress all messages

My guess - only guess! - is that most of these parameters could be set as a part of kernel compiling options and systemd default settings, so if we want to set silent boot as a default behaviour for Manjaro, it has to be done this way. And those who wish to see these logs during the boot process would need to manually set something like “debug” or “loglevel=5”.
This is how it’s done in systems like macOS - I remember how I configured Clover bootloader first to figure out what was wrong with boot process and then after all issues were resolved I just deleted extra debug options in order to make booting silent and seamless.

2 Likes

If you have anything on level 3, deal with it after you finish booting.

Well on linux 418 it is the acpi errors that have been on 414 for a year. As far as I know no one has a solution to stop these?

Just tried “grub-quiet-test” and can confirm it works with loglevel=3

1 Like

I’ve created a test-iso, which can be used to check if your system supports grub-quiet 2.03.0-13.

1 Like

Forum kindly sponsored by