grub: Environment block
15.2 The GRUB environment block
===============================
It is often useful to be able to remember a small amount of information
from one boot to the next. For example, you might want to set the
default menu entry based on what was selected the last time. GRUB
deliberately does not implement support for writing files in order to
minimise the possibility of the boot loader being responsible for file
system corruption, so a GRUB configuration file cannot just create a
file in the ordinary way. However, GRUB provides an "environment block"
which can be used to save a small amount of state.
The environment block is a preallocated 1024-byte file, which
normally lives in ‘/boot/grub/grubenv’ (although you should not assume
this). At boot time, the ‘load_env’ command (⇒load_env) loads
environment variables from it, and the ‘save_env’ (⇒save_env)
command saves environment variables to it. From a running system, the
‘grub-editenv’ utility can be used to edit the environment block.
For safety reasons, this storage is only available when installed on
a plain disk (no LVM or RAID), using a non-checksumming filesystem (no
ZFS), and using BIOS or EFI functions (no ATA, USB or IEEE1275).
‘grub-mkconfig’ uses this facility to implement ‘GRUB_SAVEDEFAULT’
(⇒Simple configuration).