This are the keys and values the kernel takes, and under which circumstances:
root=<device>Device to mount as root, if any.
rootuuid=<uuid>Used instead of root. It addresses the root device with a UUID instead
of a device name. This can be used to gain some device-independence, for
example, for addressing a given partition in a GPT drive regardless the
containing device.
init=<path>Path to a program that will be booted by the kernel when finished loading.
The program will be started with stdin set to /dev/null, and
stdout and stderr set to /dev/console.
initargs=<args>Arguments to pass to init. If environment variables are what is desired,
consider the trick of booting in typical UNIX fashion
/bin/env <vars> <init command>.
noprogaslrThe offset of loaded programs in virtual memory is randomized when loading if possible, this option disables it system-wide at boot time and hardcodes it to the lowest available value.
nolocaslrThe same as noprogaslr but applied to memory locations like stacks
and memory allocation.