NVRAMTOOL(8)
π NVRAMTOOL π β like, the nvramtool manual page (section 8, System Manager's Manual, bestie)
okay so. sit down. hydrate. we're reading a whole manual page together and honestly? it's giving β¨power userβ¨.
πΈ NAME πΈ
nvramtool β read/write coreboot-related information. that's the whole vibe. reading AND writing. iconic behavior.
β¨ SYNOPSIS β¨
nvramtool [OPTS] [-n] -r NAME
nvramtool [OPTS] -e NAME
nvramtool [OPTS] -a
nvramtool [OPTS] -w NAME=VALUE
nvramtool [OPTS] -p INPUT_FILE
nvramtool [OPTS] -i
nvramtool [OPTS] -c [VALUE]
nvramtool [OPTS] -l [ARG]
nvramtool [OPTS] -d
nvramtool [OPTS] -Y
nvramtool [OPTS] -b OUTPUT_FILE
nvramtool [OPTS] -B INPUT_FILE
nvramtool [OPTS] -x
nvramtool [OPTS] -X DUMPFILE
nvramtool [OPTS] -v
nvramtool [OPTS] -h
like, pick a lane, pick a flag, go off π«Ά
π¦ DESCRIPTION π¦
So nvramtool is a utility for reading/writing coreboot parameters and displaying information from the coreboot table. lowkey a little multitool. a swiss army knife but make it firmware.
The coreboot table lives in low physical memory. It gets created at boot time by coreboot, and it's basically carrying the system's lore β stuff like the type of mainboard in use. It also specifies locations in the CMOS (nonvolatile RAM) where the coreboot parameters are stored. so it's not just info, it's a map πΊοΈ
This program is intended for (x86-based) systems that use coreboot. If you want info about coreboot itself, it's at https://www.coreboot.org/. no cap.
π PARAMETERS π
[-n] -r NAMEβ Show the value of the coreboot parameter given by NAME. If-nis specified, show only the value. Otherwise show both parameter name and value. (the-nis the "no small talk, just the number" mode fr fr)-e NAMEβ Show all possible values for the parameter given by NAME. like, every option it could be. the full menu.-aβ Show the names and values for all coreboot parameters. the whole roster. π-w NAME=VALUEβ Assign VALUE to the coreboot parameter given by NAME. writing time.-p INPUT_FILEβ Assign values to coreboot parameters according to the contents of INPUT_FILE. The format of this file is described below. π-iβ This is similar to the-poption, except that the contents of the input file are taken from standard input. same energy, different source.-c [VALUE]β If VALUE is present then set the CMOS checksum for the coreboot parameters to VALUE. Otherwise, show the checksum value. so it's giving "set or tell me", choose your fighter.-l [ARG]β If ARG is present then show information from the coreboot table as specified by ARG. Otherwise show all possible values for ARG. (yes, "show all possible values for ARG" when ARG isn't even there. that's what it says. that's the tea.)-dβ Do a low-level dump of the coreboot table. raw. unfiltered. π΅οΈ-Yβ Write CMOS layout information to standard output. If redirected to a file, the layout information may be used as input for the'-y LAYOUT_FILE'option (see below). so like, save it, reuse it, slay.-b OUTPUT_FILEβ Write the contents of CMOS memory to the binary file OUTPUT_FILE. The first 14 bytes of OUTPUT_FILE do not contain actual CMOS data, and are always written as zeros. This is because the first 14 bytes of the CMOS area do not contain CMOS memory. These bytes are involved with the functioning of the real time clock. β° (yes bestie, the clock is hogging the first 14 bytes, we don't make the rules)-B INPUT_FILEβ Read binary data from INPUT_FILE and write the data to CMOS memory. The first 14 bytes of INPUT_FILE are skipped and data is written to CMOS starting at the 15th byte of the CMOS area. This is because the first 14 bytes of the CMOS area do not contain CMOS memory. These bytes are involved with the functioning of the real time clock. β° same 14-byte situation, opposite direction.-xβ Show a hex dump of all CMOS data. The first 14 bytes of the dump do not contain actual CMOS data, and are always shown as zeros. This is because the first 14 bytes of the CMOS area do not contain CMOS memory. These bytes are involved with the functioning of the real time clock. β° (we been knew)-X DUMPFILEβ Read binary data from DUMPFILE (presumably a CMOS dumpfile created using the-b OUTPUT_FILEoption) and show a hex dump of the data. round two of the same data, different lens β¨-vβ Show version information for this program. who are you, little tool?-hβ Show a help message for this program. hi help bestie π«Ά
π OPTIONS π
In all cases above, [OPTS] evaluates to the following:
[-y LAYOUT_FILE | -t]
The '-y LAYOUT_FILE' option tells nvramtool to obtain CMOS layout information from the contents of LAYOUT_FILE. Likewise, the '-t' option tells nvramtool to obtain CMOS layout information from the CMOS option table (contained within the coreboot table). If neither option is specified, the CMOS option table is used by default. LAYOUT_FILE follows the format of the cmos.layout files provided by coreboot.
If the coreboot installed on your system was built without specifying CONFIG_HAVE_OPTION_TABLE, then the coreboot table will not contain a CMOS option table. In this case, the '-y LAYOUT_FILE' option must be used.
π¨ bestie listen: no CONFIG_HAVE_OPTION_TABLE means no option table means you gotta bring your own layout file. there is no plan B. that IS the plan B.
These two options are silently ignored when used in combination with other options (such as -h, for instance) for which they are not applicable. not a warning, not an error, just π€.
π FILE FORMAT π
For the -p option, INPUT_FILE must consist of a sequence of lines such that each line is either a blank line, a comment, or an assignment. three acceptable line types, no others, we're strict here π
A blank line consists only of zero or more whitespace characters (spaces and tabs).
A comment is constructed as follows:
[ws]#[text]
Here, [ws] indicates optional whitespace characters and [text] indicates optional text. Blank lines and comments are both ignored.
An assignment is constructed as follows:
[ws]NAME[ws]=[ws]VALUE[ws]
Here, NAME is the name of a coreboot parameter and VALUE is the value that will be assigned to NAME. VALUE is allowed to contain whitespace characters, but it must begin and end with nonwhitespace characters.
π okay important: each comment must appear on a line by itself. If you attempt to add a comment to the end of an assignment, then the comment will be interpreted as part of VALUE. it's not a comment anymore. it's your value now. you did this.
It is useful to observe that the output produced by both the -a option and the '[-n] NAME' options (without -n specified) adheres to this file format. so the tool can read what the tool writes. circular queen π
π BUGS π
This program does not implement any type of synchronization to ensure that different processes don't stomp on each other when trying to access the nonvolatile RAM simultaneously. Therefore, corruption of the BIOS parameter values may occur if multiple instances of this program are executed concurrently.
π¨ no locks, no mutexes, no chill. run two of these at the same time and they will absolutely fight over the same bytes and someone's BIOS parameters are gonna get messed up. do not do this fr fr.
π AUTHORS π
- David S. Peterson
<dsp@llnl.gov><dave_peterson@pobox.com> - Stefan Reinauer
<stepan@coresystems.de>
that's the whole page bestie, you ate it πβ¨
this one's from September 2008, part of the System Manager's Manual, and it's the NVRAMTOOL(8) page itself β mwah, go forth and read your CMOS ππ¦
π¦ where this page comes from
- alpine 3.24: coreboot-tools-nvramtool-doc 26.03-r1 Β· GPL-2.0-only
- debian bookworm: coreboot-utils 4.15~dfsg-3 Β· GPL-2.0-only
- debian trixie: coreboot-utils 24.12+dfsg-2 Β· GPL-2.0-only
- nixos 26.05: nvramtool 26.06
- nixpkgs unstable: nvramtool 26.06
- opensuse-leap 16.0: coreboot-utils 4.22.01-bp160.1.11 Β· GPL-2.0-only
- ubuntu noble: coreboot-utils 4.15~dfsg-4 Β· GPL-2.0-only
- ubuntu questing: coreboot-utils 24.12+dfsg-2ubuntu1
- ubuntu resolute: coreboot-utils 25.09+dfsg-1ubuntu1 Β· GPL-2.0-only
- ubuntu stonking: coreboot-utils 25.09+dfsg-1ubuntu1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms