OBSOLETE: /boot/grub2/grub.cfg generated from /etc/default/grub and /etc/grub/* with grub-mkconfig. /boot/grub/grub.cfg generated from /etc/default/grub + /etc/grub.d/* + /etc/default/grub with grub-mkconfig [It loads manually controlled file /boot/grub/custom.cfg at runtime. OBSOLETE?] Kernel boot params are added by either of these settings in /etc/default/grub. GRUB_CMDLINE_LINUX_DEFAULT (not used for recovery boots) GRUB_CMDLINE_LINUX (only this one used for recovery boots). For regular boots, both are used. Use the *_DEFAULT one for every-time params! /etc/default/grub to disable UUID usage: GRUB_DISABLE_LINUX_UUID=true Which menu item for unattended boot? GRUB_DEFAULT number in /etc/default/grub (0-based) Must run after change: grub-mkconfig -o /boot/grub/grub.cfg GOTCHA: grub-set-default / grubenv does not work for me. grub-set-default (and its generated /boot/grub/grub.env) have no effect. Just for next boot, select 3rd menuentry: grub-reboot 3 (0-based???) (May not work for btrfs, lvs, RAID partition, but this may be fixed). Special considerations for GPT disks Disk numbering still starts at 0, but partitioning now starts at 1. BIOS boot partition should be >= 31 kb. With "parted" can set bios_grub option on to make it a BIOS boot part. grub-install /dev/sda4 [sometimes grub2-install]. grub-install /dev/sda Edit a copy of /etc/grub.d/nn_custom (alphabetical order of your script will determine menu sequence placement; always use nn > 06 to ensure necessary scripts loaded first), then run: (Also incorporates /etc/default/grub settings). grub-mkconfig -o /boot/grub2/grub.cfg [used to be grub2-mkconfig] For OpenSuse see https://activedoc.opensuse.org/book/opensuse-reference/chapter-10-the-boot-loader-grub2 If /etc/sysconfig/default has GRUB_DEFAULT=saved then If GRUB_SAVEDEFAULT=true then boot to whatever last booted to Otherwise will boot to whatever you "grub-set-default" to, except for one-time reboots to whatever you "grub-reboot" to. GOTCHA: grub-set-default / grubenv does not work for me.