5051 lines
213 KiB
Plaintext
5051 lines
213 KiB
Plaintext
This is VasEBoot.info, produced by makeinfo version 6.8 from VasEBoot.texi.
|
||
|
||
This manual is for GNU VAS_EBOOT (version 2.14, 8 January 2026).
|
||
|
||
Copyright (C)
|
||
1999,2000,2001,2002,2004,2006,2008,2009,2010,2011,2012,2013 Free
|
||
Software Foundation, Inc.
|
||
|
||
Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License,
|
||
Version 1.2 or any later version published by the Free Software
|
||
Foundation; with no Invariant Sections.
|
||
INFO-DIR-SECTION Kernel
|
||
START-INFO-DIR-ENTRY
|
||
* VAS_EBOOT: (VasEBoot). The GRand Unified Bootloader
|
||
* VasEBoot-install: (VasEBoot)Invoking VasEBoot-install. Install VAS_EBOOT on your drive
|
||
* VasEBoot-mkconfig: (VasEBoot)Invoking VasEBoot-mkconfig. Generate VAS_EBOOT configuration
|
||
* VasEBoot-mkpasswd-pbkdf2: (VasEBoot)Invoking VasEBoot-mkpasswd-pbkdf2.
|
||
* VasEBoot-mkrelpath: (VasEBoot)Invoking VasEBoot-mkrelpath.
|
||
* VasEBoot-mkrescue: (VasEBoot)Invoking VasEBoot-mkrescue. Make a VAS_EBOOT rescue image
|
||
* VasEBoot-mount: (VasEBoot)Invoking VasEBoot-mount. Mount a file system using VAS_EBOOT
|
||
* VasEBoot-probe: (VasEBoot)Invoking VasEBoot-probe. Probe device information
|
||
* VasEBoot-script-check: (VasEBoot)Invoking VasEBoot-script-check.
|
||
END-INFO-DIR-ENTRY
|
||
|
||
|
||
File: VasEBoot.info, Node: blocklist, Next: blscfg, Prev: badram, Up: Command-line commands
|
||
|
||
17.4.14 blocklist
|
||
-----------------
|
||
|
||
-- Command: blocklist file
|
||
Print a block list (*note Block list syntax::) for FILE.
|
||
|
||
|
||
File: VasEBoot.info, Node: blscfg, Next: boot, Prev: blocklist, Up: Command-line commands
|
||
|
||
17.4.15 blscfg
|
||
--------------
|
||
|
||
-- Command: blscfg [-p|--path dir] [-f|--enable-fallback]
|
||
[-d|--show-default] [-n|--show-non-default] [-e|--entry file]
|
||
Load Boot Loader Specification (BLS) entries into the VAS_EBOOT menu.
|
||
Boot entries generated from 'blscfg' won't interfere with entries
|
||
from 'VasEBoot.cfg' appearing in the VAS_EBOOT menu. Also, entries
|
||
generated from 'blscfg' exists only in memory and don't update
|
||
'VasEBoot.cfg'.
|
||
|
||
By default, the BLS entries are stored in the '/loader/entries'
|
||
directory in the boot partition. If BLS entries are stored
|
||
elsewhere, the '--path' option can be used to check a different
|
||
directory instead of the default location. If no BLS entries are
|
||
found while using the '--path' option, the '--enable-fallback'
|
||
option can be used to check for entries in the default location.
|
||
|
||
The '--show-default' option allows the default boot entry to be
|
||
added to the VAS_EBOOT menu from the BLS entries.
|
||
|
||
The '--show-non-default' option allows non-default boot entries to
|
||
be added to the VAS_EBOOT menu from the BLS entries.
|
||
|
||
The '--entry' option allows specific boot entries to be added to
|
||
the VAS_EBOOT menu from the BLS entries.
|
||
|
||
The '--entry', '--show-default', and '--show-non-default' options
|
||
are used to filter which BLS entries are added to the VAS_EBOOT menu.
|
||
If none are used, all entries in the default location or the
|
||
location specified by '--path' will be added to the VAS_EBOOT menu.
|
||
|
||
A BLS config file example:
|
||
# /boot/loader/entries/6a9857a393724b7a981ebb5b8495b9ea-3.8.0-2.fc19.x86_64.conf
|
||
title Fedora 19 (Rawhide)
|
||
sort-key fedora
|
||
machine-id 6a9857a393724b7a981ebb5b8495b9ea
|
||
version 3.8.0-2.fc19.x86_64
|
||
options root=UUID=6d3376e4-fc93-4509-95ec-a21d68011da2 quiet
|
||
architecture x64
|
||
linux /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/linux
|
||
initrd /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/initrd
|
||
|
||
For more information on BLS entry keys as well as other information
|
||
on BLS, see: The Boot Loader Specification
|
||
(https://uapi-group.org/specifications/specs/boot_loader_specification/).
|
||
For the VAS_EBOOT, there are a few additional BLS entry keys based on
|
||
the 'menuentry' command (*note menuentry::).
|
||
|
||
The 'VasEBoot_class' key may be used any number of times to group menu
|
||
entries into classes. Menu themes may display different classes
|
||
using different styles.
|
||
|
||
The 'VasEBoot_users' key grants specific users access to specific menu
|
||
entries. *Note Security::.
|
||
|
||
The 'VasEBoot_hotkey' key associates a hotkey with a menu entry. KEY
|
||
may be a single letter, or one of the aliases 'backspace', 'tab',
|
||
or 'delete'.
|
||
|
||
The 'VasEBoot_args' key can be used for any other argument to be passed
|
||
as positonal parameters when the list of commands generated from
|
||
the BLS config file are executed.
|
||
|
||
Variable expansion using the '$' character (*Note Shell-like
|
||
scripting::) may be used with BLS config files for the VAS_EBOOT but
|
||
might not be compatible with other bootloaders.
|
||
|
||
|
||
File: VasEBoot.info, Node: boot, Next: cat, Prev: blscfg, Up: Command-line commands
|
||
|
||
17.4.16 boot
|
||
------------
|
||
|
||
-- Command: boot
|
||
Boot the OS or chain-loader which has been loaded. Only necessary
|
||
if running the fully interactive command-line (it is implicit at
|
||
the end of a menu entry).
|
||
|
||
|
||
File: VasEBoot.info, Node: cat, Next: clear, Prev: boot, Up: Command-line commands
|
||
|
||
17.4.17 cat
|
||
-----------
|
||
|
||
-- Command: cat [--dos] file
|
||
Display the contents of the file FILE. This command may be useful
|
||
to remind you of your OS's root partition:
|
||
|
||
VasEBoot> cat /etc/fstab
|
||
|
||
If the '--dos' option is used, then carriage return / new line
|
||
pairs will be displayed as a simple new line. Otherwise, the
|
||
carriage return will be displayed as a control character ('<d>') to
|
||
make it easier to see when boot problems are caused by a file
|
||
formatted using DOS-style line endings.
|
||
|
||
Note: 'cat' can be used to view the contents of devices using the
|
||
block list syntax (*note Block list syntax::). However, it is not
|
||
advised to view binary data because it will try to decode UTF-8
|
||
strings, which can lead to some bytes missing or added in the
|
||
output. Instead, use the 'hexdump' command (*note hexdump::).
|
||
|
||
|
||
File: VasEBoot.info, Node: clear, Next: cmosclean, Prev: cat, Up: Command-line commands
|
||
|
||
17.4.18 clear
|
||
-------------
|
||
|
||
-- Command: clear
|
||
Clear the screen.
|
||
|
||
|
||
File: VasEBoot.info, Node: cmosclean, Next: cmosdump, Prev: clear, Up: Command-line commands
|
||
|
||
17.4.19 cmosclean
|
||
-----------------
|
||
|
||
-- Command: cmosclean byte:bit
|
||
Clear value of bit in CMOS at location BYTE:BIT. This command is
|
||
available only on platforms that support CMOS.
|
||
|
||
|
||
File: VasEBoot.info, Node: cmosdump, Next: cmostest, Prev: cmosclean, Up: Command-line commands
|
||
|
||
17.4.20 cmosdump
|
||
----------------
|
||
|
||
-- Dump: CMOS contents
|
||
Dump full CMOS contents as hexadecimal values. This command is
|
||
available only on platforms that support CMOS.
|
||
|
||
|
||
File: VasEBoot.info, Node: cmostest, Next: cmp, Prev: cmosdump, Up: Command-line commands
|
||
|
||
17.4.21 cmostest
|
||
----------------
|
||
|
||
-- Command: cmostest byte:bit
|
||
Test value of bit in CMOS at location BYTE:BIT. Exit status is
|
||
zero if bit is set, non zero otherwise. This command is available
|
||
only on platforms that support CMOS.
|
||
|
||
|
||
File: VasEBoot.info, Node: cmp, Next: configfile, Prev: cmostest, Up: Command-line commands
|
||
|
||
17.4.22 cmp
|
||
-----------
|
||
|
||
-- Command: cmp [-v] file1 file2
|
||
Compare the file FILE1 with the file FILE2. If they are completely
|
||
identical, '$?' will be set to 0. Otherwise, if the files are not
|
||
identical, '$?' will be set to a nonzero value.
|
||
|
||
By default nothing will be output. If the '-v' is used, verbose
|
||
mode is enabled. In this mode when when the files differ in size,
|
||
print the sizes like this:
|
||
|
||
Differ in size: 0x1234 [foo], 0x4321 [bar]
|
||
|
||
If the sizes are equal but the bytes at an offset differ, then
|
||
print the bytes like this:
|
||
|
||
Differ at the offset 777: 0xbe [foo], 0xef [bar]
|
||
|
||
|
||
File: VasEBoot.info, Node: configfile, Next: cpuid, Prev: cmp, Up: Command-line commands
|
||
|
||
17.4.23 configfile
|
||
------------------
|
||
|
||
-- Command: configfile file
|
||
Load FILE as a configuration file. If FILE defines any menu
|
||
entries, then show a menu containing them immediately. Any
|
||
environment variable changes made by the commands in FILE will not
|
||
be preserved after 'configfile' returns.
|
||
|
||
|
||
File: VasEBoot.info, Node: cpuid, Next: crc, Prev: configfile, Up: Command-line commands
|
||
|
||
17.4.24 cpuid
|
||
-------------
|
||
|
||
-- Command: cpuid [-l] [-p]
|
||
Check for CPU features. This command is only available on x86
|
||
systems.
|
||
|
||
With the '-l' option, return true if the CPU supports long mode
|
||
(64-bit).
|
||
|
||
With the '-p' option, return true if the CPU supports Physical
|
||
Address Extension (PAE).
|
||
|
||
If invoked without options, this command currently behaves as if it
|
||
had been invoked with '-l'. This may change in the future.
|
||
|
||
|
||
File: VasEBoot.info, Node: crc, Next: cryptocheck, Prev: cpuid, Up: Command-line commands
|
||
|
||
17.4.25 crc
|
||
-----------
|
||
|
||
-- Command: crc arg ...
|
||
Alias for 'hashsum --hash crc32 arg ...'. See command 'hashsum'
|
||
(*note hashsum::) for full description.
|
||
|
||
|
||
File: VasEBoot.info, Node: cryptocheck, Next: cryptomount, Prev: crc, Up: Command-line commands
|
||
|
||
17.4.26 cryptocheck
|
||
-------------------
|
||
|
||
-- Command: cryptocheck [ --quiet ] device
|
||
Check if a given diskfilter device is backed by encrypted devices
|
||
(*note cryptomount:: for additional information).
|
||
|
||
The command examines all backing devices, physical volumes, of a
|
||
specified logical volume, like LVM2, and fails when at least one of
|
||
them is unencrypted.
|
||
|
||
The option '--quiet' can be given to suppress the output.
|
||
|
||
|
||
File: VasEBoot.info, Node: cryptomount, Next: cutmem, Prev: cryptocheck, Up: Command-line commands
|
||
|
||
17.4.27 cryptomount
|
||
-------------------
|
||
|
||
-- Command: cryptomount [ [-p password] | [-k keyfile [-O keyoffset]
|
||
[-S keysize] ] | [-P protector] | [-A] ] [-H file] device|-u
|
||
uuid|-a|-b
|
||
Setup access to encrypted device. A passphrase will be requested
|
||
interactively, if neither the '-p' nor '-k' options are given. The
|
||
option '-p' can be used to supply a passphrase (useful for
|
||
scripts). Alternatively the '-k' option can be used to supply a
|
||
keyfile with options '-O' and '-S' optionally supplying the offset
|
||
and size, respectively, of the key data in the given key file.
|
||
Besides the keyfile, the key can be stored in a key protector, and
|
||
option '-P' configures specific key protector, e.g. tpm2, to
|
||
retrieve the key from. The option '-A' enables hardware
|
||
acceleration in libgcrypt to speed up decryption. The '-H' options
|
||
can be used to supply cryptomount backends with an alternative
|
||
header file (aka detached header). Not all backends have headers
|
||
nor support alternative header files (currently only LUKS1 and
|
||
LUKS2 support them). Argument DEVICE configures specific VasEBoot
|
||
device (*note Naming convention::); option '-u' UUID configures
|
||
device with specified UUID; option '-a' configures all detected
|
||
encrypted devices; option '-b' configures all geli containers that
|
||
have boot flag set.
|
||
|
||
Devices are not allowed to be given as key files nor as detached
|
||
header files. However, this limitation can be worked around by
|
||
using blocklist syntax. So for instance, '(hd1,gpt2)' can not be
|
||
used, but '(hd1,gpt2)0+' will achieve the desired result.
|
||
|
||
VAS_EBOOT supports devices encrypted using LUKS, LUKS2 and geli. Note
|
||
that necessary modules (LUKS, LUKS2 and GELI) have to be loaded
|
||
manually before this command can be used. For LUKS2 only the
|
||
PBKDF2 key derivation function is supported, as Argon2 is not yet
|
||
supported.
|
||
|
||
Successfully decrypted disks are named as (cryptoX) and have
|
||
increasing numeration suffix for each new decrypted disk. If the
|
||
encrypted disk hosts some higher level of abstraction (like LVM2 or
|
||
MDRAID) it will be created under a separate device namespace in
|
||
addition to the cryptodisk namespace.
|
||
|
||
Support for plain encryption mode (plain dm-crypt) is provided via
|
||
separate '*note plainmount::' command.
|
||
|
||
On the EFI platform, VAS_EBOOT tries to erase master keys from memory
|
||
when the cryptodisk module is unloaded or the command 'exit' is
|
||
executed. All secrets remain in memory when the command
|
||
'chainloader' is issued, because execution can return to VAS_EBOOT on
|
||
the EFI platform.
|
||
|
||
|
||
File: VasEBoot.info, Node: cutmem, Next: date, Prev: cryptomount, Up: Command-line commands
|
||
|
||
17.4.28 cutmem
|
||
--------------
|
||
|
||
-- Command: cutmem from[K|M|G] to[K|M|G]
|
||
Remove any memory regions in specified range.
|
||
|
||
This command notifies the memory manager that specified regions of
|
||
RAM ought to be filtered out. This remains in effect after a
|
||
payload kernel has been loaded by VAS_EBOOT, as long as the loaded
|
||
kernel obtains its memory map from VAS_EBOOT. Kernels that support this
|
||
include Linux, GNU Mach, the kernel of FreeBSD and Multiboot
|
||
kernels in general.
|
||
|
||
The command is similar to 'badram' command.
|
||
|
||
Note: The command is not allowed when lockdown is enforced (*note
|
||
Lockdown::). This prevents removing EFI memory regions to
|
||
potentially subvert the security mechanisms provided by the UEFI
|
||
secure boot.
|
||
|
||
|
||
File: VasEBoot.info, Node: date, Next: devicetree, Prev: cutmem, Up: Command-line commands
|
||
|
||
17.4.29 date
|
||
------------
|
||
|
||
-- Command: date [[year-]month-day] [hour:minute[:second]]
|
||
With no arguments, print the current date and time.
|
||
|
||
Otherwise, take the current date and time, change any elements
|
||
specified as arguments, and set the result as the new date and
|
||
time. For example, 'date 01-01' will set the current month and day
|
||
to January 1, but leave the year, hour, minute, and second
|
||
unchanged.
|
||
|
||
|
||
File: VasEBoot.info, Node: devicetree, Next: distrust, Prev: date, Up: Command-line commands
|
||
|
||
17.4.30 devicetree
|
||
------------------
|
||
|
||
-- Command: devicetree file
|
||
Load a device tree blob (.dtb) from a filesystem, for later use by
|
||
a Linux kernel. Does not perform merging with any device tree
|
||
supplied by firmware, but rather replaces it completely.
|
||
|
||
Note: The command is not allowed when lockdown is enforced (*note
|
||
Lockdown::). This is done to prevent subverting various security
|
||
mechanisms.
|
||
|
||
|
||
File: VasEBoot.info, Node: distrust, Next: drivemap, Prev: devicetree, Up: Command-line commands
|
||
|
||
17.4.31 distrust
|
||
----------------
|
||
|
||
-- Command: distrust pubkey_id
|
||
Remove public key PUBKEY_ID from VAS_EBOOT's keyring of trusted keys.
|
||
PUBKEY_ID is the last four bytes (eight hexadecimal digits) of the
|
||
GPG v4 key id, which is also the output of 'list_trusted' (*note
|
||
list_trusted::). Outside of VAS_EBOOT, the key id can be obtained using
|
||
'gpg --fingerprint'). These keys are used to validate signatures
|
||
when environment variable 'check_signatures' is set to 'enforce'
|
||
(*note check_signatures::), and by some invocations of
|
||
'verify_detached' (*note verify_detached::). *Note Using GPG-style
|
||
digital signatures::, for more information.
|
||
|
||
|
||
File: VasEBoot.info, Node: drivemap, Next: echo, Prev: distrust, Up: Command-line commands
|
||
|
||
17.4.32 drivemap
|
||
----------------
|
||
|
||
-- Command: drivemap -l|-r|[-s] from_drive to_drive
|
||
Without options, map the drive FROM_DRIVE to the drive TO_DRIVE.
|
||
This is necessary when you chain-load some operating systems, such
|
||
as DOS, if such an OS resides at a non-first drive. For
|
||
convenience, any partition suffix on the drive is ignored, so you
|
||
can safely use ${root} as a drive specification.
|
||
|
||
With the '-s' option, perform the reverse mapping as well, swapping
|
||
the two drives.
|
||
|
||
With the '-l' option, list the current mappings.
|
||
|
||
With the '-r' option, reset all mappings to the default values.
|
||
|
||
For example:
|
||
|
||
drivemap -s (hd0) (hd1)
|
||
|
||
NOTE: Only available on i386-pc.
|
||
|
||
|
||
File: VasEBoot.info, Node: echo, Next: efitextmode, Prev: drivemap, Up: Command-line commands
|
||
|
||
17.4.33 echo
|
||
------------
|
||
|
||
-- Command: echo [-n] [-e] string ...
|
||
Display the requested text and, unless the '-n' option is used, a
|
||
trailing new line. If there is more than one string, they are
|
||
separated by spaces in the output. As usual in VAS_EBOOT commands,
|
||
variables may be substituted using '${var}'.
|
||
|
||
The '-e' option enables interpretation of backslash escapes. The
|
||
following sequences are recognised:
|
||
|
||
'\\'
|
||
backslash
|
||
|
||
'\a'
|
||
alert (BEL)
|
||
|
||
'\c'
|
||
suppress trailing new line
|
||
|
||
'\f'
|
||
form feed
|
||
|
||
'\n'
|
||
new line
|
||
|
||
'\r'
|
||
carriage return
|
||
|
||
'\t'
|
||
horizontal tab
|
||
|
||
'\v'
|
||
vertical tab
|
||
|
||
When interpreting backslash escapes, backslash followed by any
|
||
other character will print that character.
|
||
|
||
|
||
File: VasEBoot.info, Node: efitextmode, Next: eval, Prev: echo, Up: Command-line commands
|
||
|
||
17.4.34 efitextmode
|
||
-------------------
|
||
|
||
-- Command: efitextmode [min | max | <mode_num> | <cols> <rows>]
|
||
When used with no arguments displays all available text output
|
||
modes. The set mode determines the columns and rows of the text
|
||
display when in text mode. An asterisk, '*', will be at the end of
|
||
the line of the currently set mode.
|
||
|
||
If given a single parameter, it must be 'min', 'max', or a mode
|
||
number given by the listing when run with no arguments. These
|
||
arguments set the mode to the minimum, maximum, and particular mode
|
||
respectively.
|
||
|
||
Otherwise, the command must be given two numerical arguments
|
||
specifying the columns and rows of the desired mode. Specifying a
|
||
columns and rows combination that corresponds to no supported mode,
|
||
will return error, but otherwise have no effect.
|
||
|
||
By default VAS_EBOOT will start in whatever mode the EFI firmware
|
||
defaults to. There are firmwares known to set up the default mode
|
||
such that output behaves strangely, for example the cursor in the
|
||
VAS_EBOOT shell never reaches the bottom of the screen or, when typing
|
||
characters at the prompt, characters from previous command output
|
||
are overwritten. Setting the mode may fix this.
|
||
|
||
The EFI specification says that mode 0 must be available and have
|
||
columns and rows of 80 and 25 respectively. Mode 1 may be defined
|
||
and if so must have columns and rows of 80 and 50 respectively.
|
||
Any other modes may have columns and rows arbitrarily defined by
|
||
the firmware. This means that a mode with columns and rows of 100
|
||
and 31 on one firmware may be a different mode number on a
|
||
different firmware or not exist at all. Likewise, mode number 2 on
|
||
one firmware may have a different number of columns and rows than
|
||
mode 2 on a different firmware. So one should not rely on a
|
||
particular mode number or a mode of a certain number of columns and
|
||
rows existing on all firmwares, except for mode 0.
|
||
|
||
Note: This command is only available on EFI platforms and is
|
||
similar to EFI shell "mode" command.
|
||
|
||
|
||
File: VasEBoot.info, Node: eval, Next: export, Prev: efitextmode, Up: Command-line commands
|
||
|
||
17.4.35 eval
|
||
------------
|
||
|
||
-- Command: eval string ...
|
||
Concatenate arguments together using single space as separator and
|
||
evaluate result as sequence of VAS_EBOOT commands.
|
||
|
||
|
||
File: VasEBoot.info, Node: export, Next: false, Prev: eval, Up: Command-line commands
|
||
|
||
17.4.36 export
|
||
--------------
|
||
|
||
-- Command: export envvar
|
||
Export the environment variable ENVVAR. Exported variables are
|
||
visible to subsidiary configuration files loaded using
|
||
'configfile'.
|
||
|
||
|
||
File: VasEBoot.info, Node: false, Next: fdtdump, Prev: export, Up: Command-line commands
|
||
|
||
17.4.37 false
|
||
-------------
|
||
|
||
-- Command: false
|
||
Do nothing, unsuccessfully. This is mainly useful in control
|
||
constructs such as 'if' and 'while' (*note Shell-like scripting::).
|
||
|
||
|
||
File: VasEBoot.info, Node: fdtdump, Next: file, Prev: false, Up: Command-line commands
|
||
|
||
17.4.38 fdtdump
|
||
---------------
|
||
|
||
-- Command: fdtdump [--prop PROP] [--set VARIABLE]
|
||
Retrieve device tree information.
|
||
|
||
The 'fdtdump' command returns the value of a property in the device
|
||
tree provided by the firmware. The '--prop' option determines
|
||
which property to select.
|
||
|
||
The default action is to print the value of the requested field to
|
||
the console, but a variable name can be specified with '--set' to
|
||
store the value instead of printing it.
|
||
|
||
For example, this will store and then display the model string.
|
||
|
||
fdtdump --prop model --set machine_model
|
||
echo $machine_model
|
||
|
||
|
||
File: VasEBoot.info, Node: file, Next: fwsetup, Prev: fdtdump, Up: Command-line commands
|
||
|
||
17.4.39 file
|
||
------------
|
||
|
||
-- Command: file is_file_type filename
|
||
|
||
The 'file' command tests whether the provided FILENAME is the type
|
||
provided by IS_FILE_TYPE. When the 'file' is of type IS_FILE_TYPE
|
||
this command will return 0, otherwise it will return non-zero (no
|
||
output is provided to the terminal).
|
||
|
||
IS_FILE_TYPE may be one of the following options:
|
||
* '--is-i386-xen-pae-domu' Check if FILENAME can be booted as
|
||
i386 PAE Xen unprivileged guest kernel
|
||
* '--is-x86_64-xen-domu' Check if FILENAME can be booted as
|
||
x86_64 Xen unprivileged guest kernel
|
||
* '--is-x86-xen-dom0' Check if FILENAME can be used as Xen x86
|
||
privileged guest kernel
|
||
* '--is-x86-multiboot' Check if FILENAME can be used as x86
|
||
multiboot kernel
|
||
* '--is-x86-multiboot2' Check if FILENAME can be used as x86
|
||
multiboot2 kernel
|
||
* '--is-arm-linux' Check if FILENAME is ARM Linux
|
||
* '--is-arm64-linux' Check if FILENAME is ARM64 Linux
|
||
* '--is-ia64-linux' Check if FILENAME is IA64 Linux
|
||
* '--is-mips-linux' Check if FILENAME is MIPS Linux
|
||
* '--is-mipsel-linux' Check if FILENAME is MIPSEL Linux
|
||
* '--is-sparc64-linux' Check if FILENAME is SPARC64 Linux
|
||
* '--is-powerpc-linux' Check if FILENAME is POWERPC Linux
|
||
* '--is-x86-linux' Check if FILENAME is x86 Linux
|
||
* '--is-x86-linux32' Check if FILENAME is x86 Linux supporting
|
||
32-bit protocol
|
||
* '--is-x86-kfreebsd' Check if FILENAME is x86 kFreeBSD
|
||
* '--is-i386-kfreebsd' Check if FILENAME is i386 kFreeBSD
|
||
* '--is-x86_64-kfreebsd' Check if FILENAME is x86_64 kFreeBSD
|
||
* '--is-x86-knetbsd' Check if FILENAME is x86 kNetBSD
|
||
* '--is-i386-knetbsd' Check if FILENAME is i386 kNetBSD
|
||
* '--is-x86_64-knetbsd' Check if FILENAME is x86_64 kNetBSD
|
||
* '--is-i386-efi' Check if FILENAME is i386 EFI file
|
||
* '--is-x86_64-efi' Check if FILENAME is x86_64 EFI file
|
||
* '--is-ia64-efi' Check if FILENAME is IA64 EFI file
|
||
* '--is-arm64-efi' Check if FILENAME is ARM64 EFI file
|
||
* '--is-arm-efi' Check if FILENAME is ARM EFI file
|
||
* '--is-riscv32-efi' Check if FILENAME is RISC-V 32bit EFI file
|
||
* '--is-riscv64-efi' Check if FILENAME is RISC-V 64bit EFI file
|
||
* '--is-hibernated-hiberfil' Check if FILENAME is hiberfil.sys
|
||
in hibernated state
|
||
* '--is-x86_64-xnu' Check if FILENAME is x86_64 XNU (Mac OS X
|
||
kernel)
|
||
* '--is-i386-xnu' Check if FILENAME is i386 XNU (Mac OS X
|
||
kernel)
|
||
* '--is-xnu-hibr' Check if FILENAME is XNU (Mac OS X kernel)
|
||
hibernated image
|
||
* '--is-x86-bios-bootsector' Check if FILENAME is BIOS
|
||
bootsector
|
||
|
||
|
||
File: VasEBoot.info, Node: fwsetup, Next: gdbinfo, Prev: file, Up: Command-line commands
|
||
|
||
17.4.40 fwsetup
|
||
---------------
|
||
|
||
-- Command: fwsetup [--is-supported]
|
||
Reboot into the firmware setup menu. If '--is-supported' option is
|
||
specified, instead check whether the firmware supports a setup menu
|
||
and exit successfully if so.
|
||
|
||
|
||
File: VasEBoot.info, Node: gdbinfo, Next: gettext, Prev: fwsetup, Up: Command-line commands
|
||
|
||
17.4.41 gdbinfo
|
||
---------------
|
||
|
||
-- Command: gdbinfo
|
||
Output text to be used as a GDB command for a GDB session using the
|
||
gdb_VasEBoot script and attached to a running VAS_EBOOT instance. The GDB
|
||
command that is output will tell GDB how to load debugging symbols
|
||
to their proper runtime address. Currently this is only available
|
||
for EFI platforms. See the Debugging in the developer
|
||
documentation for more information.
|
||
|
||
|
||
File: VasEBoot.info, Node: gettext, Next: gptsync, Prev: gdbinfo, Up: Command-line commands
|
||
|
||
17.4.42 gettext
|
||
---------------
|
||
|
||
-- Command: gettext string
|
||
Translate STRING into the current language.
|
||
|
||
The current language code is stored in the 'lang' variable in
|
||
VAS_EBOOT's environment (*note lang::). Translation files in MO format
|
||
are read from 'locale_dir' (*note locale_dir::), usually
|
||
'/boot/VasEBoot/locale'.
|
||
|
||
|
||
File: VasEBoot.info, Node: gptsync, Next: halt, Prev: gettext, Up: Command-line commands
|
||
|
||
17.4.43 gptsync
|
||
---------------
|
||
|
||
-- Command: gptsync device [partition[+/-[type]]] ...
|
||
Disks using the GUID Partition Table (GPT) also have a legacy
|
||
Master Boot Record (MBR) partition table for compatibility with the
|
||
BIOS and with older operating systems. The legacy MBR can only
|
||
represent a limited subset of GPT partition entries.
|
||
|
||
This command populates the legacy MBR with the specified PARTITION
|
||
entries on DEVICE. Up to three partitions may be used.
|
||
|
||
TYPE is an MBR partition type code; prefix with '0x' if you want to
|
||
enter this in hexadecimal. The separator between PARTITION and
|
||
TYPE may be '+' to make the partition active, or '-' to make it
|
||
inactive; only one partition may be active. If both the separator
|
||
and type are omitted, then the partition will be inactive.
|
||
|
||
|
||
File: VasEBoot.info, Node: halt, Next: hashsum, Prev: gptsync, Up: Command-line commands
|
||
|
||
17.4.44 halt
|
||
------------
|
||
|
||
-- Command: halt [--no-apm]
|
||
The command halts the computer. On the i386-pc target, the
|
||
'--no-apm' option, or short '-n', is specified, no APM BIOS call is
|
||
performed. Otherwise, the computer is shut down using APM on that
|
||
target.
|
||
|
||
|
||
File: VasEBoot.info, Node: hashsum, Next: help, Prev: halt, Up: Command-line commands
|
||
|
||
17.4.45 hashsum
|
||
---------------
|
||
|
||
-- Command: hashsum --hash hash --keep-going --uncompress --check file
|
||
[--prefix dir]|file ...
|
||
Compute or verify file hashes. Hash type is selected with option
|
||
'--hash'. Supported hashes are: 'adler32', 'crc64', 'crc32',
|
||
'crc32rfc1510', 'crc24rfc2440', 'md4', 'md5', 'ripemd160', 'sha1',
|
||
'sha224', 'sha256', 'sha512', 'sha384', 'tiger192', 'tiger',
|
||
'tiger2', 'whirlpool'. Option '--uncompress' uncompresses files
|
||
before computing hash.
|
||
|
||
When list of files is given, hash of each file is computed and
|
||
printed, followed by file name, each file on a new line.
|
||
|
||
When option '--check' is given, it points to a file that contains
|
||
list of HASH NAME pairs in the same format as used by UNIX 'md5sum'
|
||
command. Option '--prefix' may be used to give directory where
|
||
files are located. Hash verification stops after the first
|
||
mismatch was found unless option '--keep-going' was given. The
|
||
exit code '$?' is set to 0 if hash verification is successful. If
|
||
it fails, '$?' is set to a nonzero value.
|
||
|
||
|
||
File: VasEBoot.info, Node: help, Next: hexdump, Prev: hashsum, Up: Command-line commands
|
||
|
||
17.4.46 help
|
||
------------
|
||
|
||
-- Command: help [pattern ...]
|
||
Display helpful information about builtin commands. If you do not
|
||
specify PATTERN, this command shows short descriptions of all
|
||
available commands.
|
||
|
||
If you specify any PATTERNS, it displays longer information about
|
||
each of the commands whose names begin with those PATTERNS.
|
||
|
||
|
||
File: VasEBoot.info, Node: hexdump, Next: insmod, Prev: help, Up: Command-line commands
|
||
|
||
17.4.47 hexdump
|
||
---------------
|
||
|
||
-- Command: hexdump [--skip offset] [--length len] FILE_OR_DEVICE
|
||
Show raw contents of a file or memory. When option '--skip' is
|
||
given, 'offset' number of bytes are skipped from the start of the
|
||
device or file given. And '--length' allows specifying a maximum
|
||
number of bytes to be shown.
|
||
|
||
If given the special device named '(mem)', then the 'offset' given
|
||
to '--skip' is treated as the address of a memory location to dump
|
||
from.
|
||
|
||
Note: The dumping of RAM memory (by the (mem) argument) is not
|
||
allowed when when lockdown is enforced (*note Lockdown::). The
|
||
dumping of disk or file data is allowed when lockdown is enforced.
|
||
|
||
|
||
File: VasEBoot.info, Node: insmod, Next: keystatus, Prev: hexdump, Up: Command-line commands
|
||
|
||
17.4.48 insmod
|
||
--------------
|
||
|
||
-- Command: insmod module
|
||
Insert the dynamic VAS_EBOOT module called MODULE.
|
||
|
||
|
||
File: VasEBoot.info, Node: keystatus, Next: list_env, Prev: insmod, Up: Command-line commands
|
||
|
||
17.4.49 keystatus
|
||
-----------------
|
||
|
||
-- Command: keystatus [--shift] [--ctrl] [--alt]
|
||
Return true if the Shift, Control, or Alt modifier keys are held
|
||
down, as requested by options. This is useful in scripting, to
|
||
allow some user control over behaviour without having to wait for a
|
||
keypress.
|
||
|
||
Checking key modifier status is only supported on some platforms.
|
||
If invoked without any options, the 'keystatus' command returns
|
||
true if and only if checking key modifier status is supported.
|
||
|
||
|
||
File: VasEBoot.info, Node: list_env, Next: list_trusted, Prev: keystatus, Up: Command-line commands
|
||
|
||
17.4.50 list_env
|
||
----------------
|
||
|
||
-- Command: list_env [--file file]
|
||
List all variables in the environment block file. *Note
|
||
Environment block::.
|
||
|
||
The '--file' option overrides the default location of the
|
||
environment block.
|
||
|
||
|
||
File: VasEBoot.info, Node: list_trusted, Next: load_env, Prev: list_env, Up: Command-line commands
|
||
|
||
17.4.51 list_trusted
|
||
--------------------
|
||
|
||
-- Command: list_trusted
|
||
List all public keys trusted by VAS_EBOOT for validating signatures.
|
||
The output is in GPG's v4 key fingerprint format (i.e., the output
|
||
of 'gpg --fingerprint'). The least significant four bytes (last
|
||
eight hexadecimal digits) can be used as an argument to 'distrust'
|
||
(*note distrust::). *Note Using GPG-style digital signatures::,
|
||
for more information about uses for these keys.
|
||
|
||
|
||
File: VasEBoot.info, Node: load_env, Next: loadfont, Prev: list_trusted, Up: Command-line commands
|
||
|
||
17.4.52 load_env
|
||
----------------
|
||
|
||
-- Command: load_env [--file file] [--skip-sig]
|
||
[whitelisted_variable_name] ...
|
||
Load all variables from the environment block file into the
|
||
environment. *Note Environment block::.
|
||
|
||
The '--file' option overrides the default location of the
|
||
environment block.
|
||
|
||
The '--skip-sig' option skips signature checking even when the
|
||
value of environment variable 'check_signatures' is set to
|
||
'enforce' (*note check_signatures::).
|
||
|
||
If one or more variable names are provided as arguments, they are
|
||
interpreted as a whitelist of variables to load from the
|
||
environment block file. Variables set in the file but not present
|
||
in the whitelist are ignored.
|
||
|
||
The '--skip-sig' option should be used with care, and should always
|
||
be used in concert with a whitelist of acceptable variables whose
|
||
values should be set. Failure to employ a carefully constructed
|
||
whitelist could result in reading a malicious value into critical
|
||
environment variables from the file, such as setting
|
||
'check_signatures=no', modifying 'prefix' to boot from an
|
||
unexpected location or not at all, etc.
|
||
|
||
When used with care, '--skip-sig' and the whitelist enable an
|
||
administrator to configure a system to boot only signed
|
||
configurations, but to allow the user to select from among multiple
|
||
configurations, and to enable "one-shot" boot attempts and
|
||
"savedefault" behavior. *Note Using GPG-style digital
|
||
signatures::, for more information.
|
||
|
||
If the environment variable 'check_appended_signatures' value is
|
||
set to 'yes' and VAS_EBOOT is in lockeddown mode, the user is not
|
||
allowed to set 'check_appended_signatures' to 'no' and
|
||
'appendedsig_key_mgmt' to 'static' or 'dynamic' either directly
|
||
using 'load_env' command or via environment block file. *Note
|
||
Using appended signatures::, for more information.
|
||
|
||
|
||
File: VasEBoot.info, Node: loadfont, Next: loopback, Prev: load_env, Up: Command-line commands
|
||
|
||
17.4.53 loadfont
|
||
----------------
|
||
|
||
-- Command: loadfont file ...
|
||
Load specified font files. Unless absolute pathname is given, FILE
|
||
is assumed to be in directory '$prefix/fonts' with suffix '.pf2'
|
||
appended. *Note Fonts: Theme file format.
|
||
|
||
|
||
File: VasEBoot.info, Node: loopback, Next: ls, Prev: loadfont, Up: Command-line commands
|
||
|
||
17.4.54 loopback
|
||
----------------
|
||
|
||
-- Command: loopback [-d] [-D] device file
|
||
Make the device named DEVICE correspond to the contents of the
|
||
filesystem image in FILE. For example:
|
||
|
||
loopback loop0 /path/to/image
|
||
ls (loop0)/
|
||
|
||
Specifying the '-D' option allows the loopback file to be
|
||
tranparently decompressed if there is an appropriate decompressor
|
||
loaded.
|
||
|
||
With the '-d' option, delete a device previously created using this
|
||
command.
|
||
|
||
|
||
File: VasEBoot.info, Node: ls, Next: lsfonts, Prev: loopback, Up: Command-line commands
|
||
|
||
17.4.55 ls
|
||
----------
|
||
|
||
-- Command: ls [arg ...]
|
||
List devices or files.
|
||
|
||
With no arguments, print all devices known to VAS_EBOOT.
|
||
|
||
If the argument is a device name enclosed in parentheses (*note
|
||
Device syntax::), then print the name of the filesystem of that
|
||
device.
|
||
|
||
If the argument is a directory given as an absolute file name
|
||
(*note File name syntax::), then list the contents of that
|
||
directory.
|
||
|
||
|
||
File: VasEBoot.info, Node: lsfonts, Next: lsfreemem, Prev: ls, Up: Command-line commands
|
||
|
||
17.4.56 lsfonts
|
||
---------------
|
||
|
||
-- Command: lsfonts
|
||
List loaded fonts.
|
||
|
||
|
||
File: VasEBoot.info, Node: lsfreemem, Next: lsmod, Prev: lsfonts, Up: Command-line commands
|
||
|
||
17.4.57 lsfreemem
|
||
-----------------
|
||
|
||
-- Command: lsfreemem
|
||
List free memory blocks.
|
||
|
||
|
||
File: VasEBoot.info, Node: lsmod, Next: lsmem, Prev: lsfreemem, Up: Command-line commands
|
||
|
||
17.4.58 lsmod
|
||
-------------
|
||
|
||
-- Command: lsmod
|
||
Show list of loaded modules.
|
||
|
||
|
||
File: VasEBoot.info, Node: lsmem, Next: lsmemregions, Prev: lsmod, Up: Command-line commands
|
||
|
||
17.4.59 lsmem
|
||
-------------
|
||
|
||
-- Command: lsmem
|
||
List free and allocated memory blocks.
|
||
|
||
|
||
File: VasEBoot.info, Node: lsmemregions, Next: md5sum, Prev: lsmem, Up: Command-line commands
|
||
|
||
17.4.60 lsmemregions
|
||
--------------------
|
||
|
||
-- Command: lsmemregions
|
||
Prints memory region general information including size, number of
|
||
blocks, and total free / total allocated memory per region.
|
||
|
||
|
||
File: VasEBoot.info, Node: md5sum, Next: module, Prev: lsmemregions, Up: Command-line commands
|
||
|
||
17.4.61 md5sum
|
||
--------------
|
||
|
||
-- Command: md5sum arg ...
|
||
Alias for 'hashsum --hash md5 arg ...'. See command 'hashsum'
|
||
(*note hashsum::) for full description.
|
||
|
||
|
||
File: VasEBoot.info, Node: module, Next: multiboot, Prev: md5sum, Up: Command-line commands
|
||
|
||
17.4.62 module
|
||
--------------
|
||
|
||
-- Command: module [--nounzip] file [arguments]
|
||
Load a module for multiboot kernel image. The rest of the line is
|
||
passed verbatim as the module command line.
|
||
|
||
|
||
File: VasEBoot.info, Node: multiboot, Next: nativedisk, Prev: module, Up: Command-line commands
|
||
|
||
17.4.63 multiboot
|
||
-----------------
|
||
|
||
-- Command: multiboot [--quirk-bad-kludge]
|
||
[--quirk-modules-after-kernel] file ...
|
||
Load a multiboot kernel image from FILE. The rest of the line is
|
||
passed verbatim as the "kernel command-line". Any module must be
|
||
reloaded after using this command (*note module::).
|
||
|
||
Some kernels have known problems. You need to specify -quirk-* for
|
||
those. -quirk-bad-kludge is a problem seen in several products
|
||
that they include loading kludge information with invalid data in
|
||
ELF file. VAS_EBOOT prior to 0.97 and some custom builds preferred ELF
|
||
information while 0.97 and VAS_EBOOT 2 use kludge. Use this option to
|
||
ignore kludge. Known affected systems: old Solaris, SkyOS.
|
||
|
||
-quirk-modules-after-kernel is needed for kernels which load at
|
||
relatively high address e.g. 16MiB mark and can't cope with
|
||
modules stuffed between 1MiB mark and beginning of the kernel.
|
||
Known afftected systems: VMWare.
|
||
|
||
|
||
File: VasEBoot.info, Node: nativedisk, Next: normal, Prev: multiboot, Up: Command-line commands
|
||
|
||
17.4.64 nativedisk
|
||
------------------
|
||
|
||
-- Command: nativedisk
|
||
Switch from firmware disk drivers to native ones. Really useful
|
||
only on platforms where both firmware and native disk drives are
|
||
available. Currently i386-pc, i386-efi, i386-ieee1275 and
|
||
x86_64-efi.
|
||
|
||
|
||
File: VasEBoot.info, Node: normal, Next: normal_exit, Prev: nativedisk, Up: Command-line commands
|
||
|
||
17.4.65 normal
|
||
--------------
|
||
|
||
-- Command: normal [file]
|
||
Enter normal mode and display the VAS_EBOOT menu.
|
||
|
||
In normal mode, commands, filesystem modules, and cryptography
|
||
modules are automatically loaded, and the full VAS_EBOOT script parser
|
||
is available. Other modules may be explicitly loaded using
|
||
'insmod' (*note insmod::).
|
||
|
||
If a FILE is given, then commands will be read from that file.
|
||
Otherwise, they will be read from '$prefix/VasEBoot.cfg' if it exists.
|
||
|
||
'normal' may be called from within normal mode, creating a nested
|
||
environment. It is more usual to use 'configfile' (*note
|
||
configfile::) for this.
|
||
|
||
|
||
File: VasEBoot.info, Node: normal_exit, Next: parttool, Prev: normal, Up: Command-line commands
|
||
|
||
17.4.66 normal_exit
|
||
-------------------
|
||
|
||
-- Command: normal_exit
|
||
Exit normal mode (*note normal::). If this instance of normal mode
|
||
was not nested within another one, then return to rescue mode.
|
||
|
||
|
||
File: VasEBoot.info, Node: parttool, Next: password, Prev: normal_exit, Up: Command-line commands
|
||
|
||
17.4.67 parttool
|
||
----------------
|
||
|
||
-- Command: parttool partition commands
|
||
Make various modifications to partition table entries.
|
||
|
||
Each COMMAND is either a boolean option, in which case it must be
|
||
followed with '+' or '-' (with no intervening space) to enable or
|
||
disable that option, or else it takes a value in the form
|
||
'COMMAND=VALUE'.
|
||
|
||
Currently, 'parttool' is only useful on DOS partition tables (also
|
||
known as Master Boot Record, or MBR). On these partition tables,
|
||
the following commands are available:
|
||
|
||
'boot' (boolean)
|
||
When enabled, this makes the selected partition be the active
|
||
(bootable) partition on its disk, clearing the active flag on
|
||
all other partitions. This command is limited to _primary_
|
||
partitions.
|
||
|
||
'type' (value)
|
||
Change the type of an existing partition. The value must be a
|
||
number in the range 0-0xFF (prefix with '0x' to enter it in
|
||
hexadecimal).
|
||
|
||
'hidden' (boolean)
|
||
When enabled, this hides the selected partition by setting the
|
||
"hidden" bit in its partition type code; when disabled,
|
||
unhides the selected partition by clearing this bit. This is
|
||
useful only when booting DOS or Windows and multiple primary
|
||
FAT partitions exist in one disk. See also *note
|
||
DOS/Windows::.
|
||
|
||
|
||
File: VasEBoot.info, Node: password, Next: password_pbkdf2, Prev: parttool, Up: Command-line commands
|
||
|
||
17.4.68 password
|
||
----------------
|
||
|
||
-- Command: password user clear-password
|
||
Define a user named USER with password CLEAR-PASSWORD. *Note
|
||
Security::.
|
||
|
||
|
||
File: VasEBoot.info, Node: password_pbkdf2, Next: plainmount, Prev: password, Up: Command-line commands
|
||
|
||
17.4.69 password_pbkdf2
|
||
-----------------------
|
||
|
||
-- Command: password_pbkdf2 user hashed-password
|
||
Define a user named USER with password hash HASHED-PASSWORD. Use
|
||
'VasEBoot-mkpasswd-pbkdf2' (*note Invoking VasEBoot-mkpasswd-pbkdf2::) to
|
||
generate password hashes. *Note Security::.
|
||
|
||
|
||
File: VasEBoot.info, Node: plainmount, Next: play, Prev: password_pbkdf2, Up: Command-line commands
|
||
|
||
17.4.70 plainmount
|
||
------------------
|
||
|
||
-- Command: plainmount device -c cipher -s key size [-h hash]
|
||
['-S' sector size] ['-p' password] ['-u' uuid] [['-d' keyfile]
|
||
['-O' keyfile offset]]
|
||
|
||
Setup access to the encrypted device in plain mode. Offset of the
|
||
encrypted data at the device is specified in terms of 512 byte
|
||
sectors using the blocklist syntax and loopback device. The
|
||
following example shows how to specify 1MiB offset:
|
||
|
||
loopback node (hd0,gpt1)2048+
|
||
plainmount node ...
|
||
|
||
The 'plainmount' command can be used to open LUKS encrypted volume
|
||
if its master key and parameters (key size, cipher, offset, etc)
|
||
are known.
|
||
|
||
There are two ways to specify a password: a keyfile and a secret
|
||
passphrase. The keyfile path parameter has higher priority than
|
||
the secret passphrase parameter and is specified with the option
|
||
'-d'. Password data obtained from keyfiles is not hashed and is
|
||
used directly as a cipher key. An optional offset of password data
|
||
in the keyfile can be specified with the option '-O' or directly
|
||
with the option '-d' and VAS_EBOOT blocklist syntax, if the keyfile data
|
||
can be accessed from a device and is 512 byte aligned. The
|
||
following example shows both methods to specify password data in
|
||
the keyfile at offset 1MiB:
|
||
|
||
plainmount -d (hd0,gpt1)2048+ ...
|
||
plainmount -d (hd0,gpt1)+ -O 1048576 ...
|
||
|
||
If no keyfile is specified then the password is set to the string
|
||
specified by option '-p' or is requested interactively from the
|
||
console. In both cases the provided password is hashed with the
|
||
algorithm specified by the option '-h'. This option is mandatory
|
||
if no keyfile is specified, but it can be set to 'plain' which
|
||
means that no hashing is done and such password is used directly as
|
||
a key.
|
||
|
||
Cipher '-c' and keysize '-s' options specify the cipher algorithm
|
||
and the key size respectively and are mandatory options. Cipher
|
||
must be specified with the mode separated by a dash (for example,
|
||
'aes-xts-plain64'). Key size option '-s' is the key size of the
|
||
cipher in bits, not to be confused with the offset of the key data
|
||
in a keyfile specified with the '-O' option. It must not exceed
|
||
1024 bits, so a 32 byte key would be specified as 256 bits
|
||
|
||
The optional parameter '-S' specifies encrypted device sector size.
|
||
It must be at least 512 bytes long (default value) and a power of
|
||
2. (1) (*note plainmount-Footnote-1::). Disk sector size is
|
||
configured when creating the encrypted volume. Attempting to
|
||
decrypt volumes with a different sector size than it was created
|
||
with will not result in an error, but will decrypt to random bytes
|
||
and thus prevent accessing the volume (in some cases the filesystem
|
||
driver can detect the presence of a filesystem, but nevertheless
|
||
will refuse to mount it).
|
||
|
||
By default new plainmount devices will be given a UUID starting
|
||
with '109fea84-a6b7-34a8-4bd1-1c506305a401' where the last digits
|
||
are incremented by one for each plainmounted device beyond the
|
||
first up to 2^10 devices.
|
||
|
||
All encryption arguments (cipher, hash, key size, disk offset and
|
||
disk sector size) must match the parameters used to create the
|
||
volume. If any of them does not match the actual arguments used
|
||
during the initial encryption, plainmount will create virtual
|
||
device with the garbage data and VAS_EBOOT will report unknown
|
||
filesystem for such device.
|
||
|
||
|
||
File: VasEBoot.info, Node: plainmount-Footnotes, Up: plainmount
|
||
|
||
(1) Current implementation of cryptsetup supports only
|
||
512/1024/2048/4096 byte sectors
|
||
|
||
|
||
File: VasEBoot.info, Node: play, Next: probe, Prev: plainmount, Up: Command-line commands
|
||
|
||
17.4.71 play
|
||
------------
|
||
|
||
-- Command: play file | tempo [pitch1 duration1] [pitch2 duration2] ...
|
||
Plays a tune
|
||
|
||
If the argument is a file name (*note File name syntax::), play the
|
||
tune recorded in it. The file format is first the tempo as an
|
||
unsigned 32bit little-endian number, then pairs of unsigned 16bit
|
||
little-endian numbers for pitch and duration pairs.
|
||
|
||
If the arguments are a series of numbers, play the inline tune.
|
||
|
||
The tempo is the base for all note durations. 60 gives a 1-second
|
||
base, 120 gives a half-second base, etc. Pitches are Hz. Set
|
||
pitch to 0 to produce a rest.
|
||
|
||
|
||
File: VasEBoot.info, Node: probe, Next: rdmsr, Prev: play, Up: Command-line commands
|
||
|
||
17.4.72 probe
|
||
-------------
|
||
|
||
-- Command: probe [--set var]
|
||
--driver|--partmap|--fs|--fs-uuid|--label|--part-uuid device
|
||
Retrieve device information. If option '--set' is given, assign
|
||
result to variable VAR, otherwise print information on the screen.
|
||
|
||
The option '--part-uuid' is currently only implemented for MSDOS
|
||
and GPT formatted disks.
|
||
|
||
|
||
File: VasEBoot.info, Node: rdmsr, Next: read, Prev: probe, Up: Command-line commands
|
||
|
||
17.4.73 rdmsr
|
||
-------------
|
||
|
||
-- Command:: rdmsr 0xADDR [-v VARNAME]
|
||
Read a model-specific register at address 0xADDR. If the parameter
|
||
'-v' is used and an environment variable VARNAME is given, set that
|
||
environment variable to the value that was read.
|
||
|
||
Please note that on SMP systems, reading from a MSR that has a
|
||
scope per hardware thread, implies that the value that is returned
|
||
only applies to the particular cpu/core/thread that runs the
|
||
command.
|
||
|
||
Also, if you specify a reserved or unimplemented MSR address, it
|
||
will cause a general protection exception (which is not currently
|
||
being handled) and the system will reboot.
|
||
|
||
|
||
File: VasEBoot.info, Node: read, Next: reboot, Prev: rdmsr, Up: Command-line commands
|
||
|
||
17.4.74 read
|
||
------------
|
||
|
||
-- Command: read [-s] [var]
|
||
Read a line of input from the user. If an environment variable VAR
|
||
is given, set that environment variable to the line of input that
|
||
was read, with no terminating newline. If the parameter '-s' is
|
||
used, enable silent mode where input is not printed to the
|
||
terminal.
|
||
|
||
|
||
File: VasEBoot.info, Node: reboot, Next: regexp, Prev: read, Up: Command-line commands
|
||
|
||
17.4.75 reboot
|
||
--------------
|
||
|
||
-- Command: reboot
|
||
Reboot the computer.
|
||
|
||
|
||
File: VasEBoot.info, Node: regexp, Next: rmmod, Prev: reboot, Up: Command-line commands
|
||
|
||
17.4.76 regexp
|
||
--------------
|
||
|
||
-- Command: regexp [--set [number:]var] regexp string
|
||
Test if regular expression REGEXP matches STRING. Supported
|
||
regular expressions are POSIX.2 Extended Regular Expressions. If
|
||
option '--set' is given, store NUMBERth matched subexpression in
|
||
variable VAR. Subexpressions are numbered in order of their
|
||
opening parentheses starting from '1'. NUMBER defaults to '1'.
|
||
|
||
|
||
File: VasEBoot.info, Node: rmmod, Next: save_env, Prev: regexp, Up: Command-line commands
|
||
|
||
17.4.77 rmmod
|
||
-------------
|
||
|
||
-- Command: rmmod module
|
||
Remove a loaded MODULE.
|
||
|
||
|
||
File: VasEBoot.info, Node: save_env, Next: search, Prev: rmmod, Up: Command-line commands
|
||
|
||
17.4.78 save_env
|
||
----------------
|
||
|
||
-- Command: save_env [--file file] var ...
|
||
Save the named variables from the environment to the environment
|
||
block file. *Note Environment block::.
|
||
|
||
The '--file' option overrides the default location of the
|
||
environment block.
|
||
|
||
This command will operate successfully even when environment
|
||
variable 'check_signatures' is set to 'enforce' (*note
|
||
check_signatures::), since it writes to disk and does not alter the
|
||
behavior of VAS_EBOOT based on any contents of disk that have been read.
|
||
It is possible to modify a digitally signed environment block file
|
||
from within VAS_EBOOT using this command, such that its signature will
|
||
no longer be valid on subsequent boots. Care should be taken in
|
||
such advanced configurations to avoid rendering the system
|
||
unbootable. *Note Using GPG-style digital signatures::, for more
|
||
information.
|
||
|
||
|
||
File: VasEBoot.info, Node: search, Next: sendkey, Prev: save_env, Up: Command-line commands
|
||
|
||
17.4.79 search
|
||
--------------
|
||
|
||
-- Command: search [--file|--label|--fs-uuid] [--set [var]]
|
||
[--no-floppy|--efidisk-only|--cryptodisk-only] name
|
||
Search devices by file ('-f', '--file'), filesystem label ('-l',
|
||
'--label'), or filesystem UUID ('-u', '--fs-uuid').
|
||
|
||
If the ('-s', '--set') option is used, the first device found is
|
||
set as the value of environment variable VAR. The default variable
|
||
is 'root'.
|
||
|
||
The ('-n', '--no-floppy') option prevents searching floppy devices,
|
||
which can be slow.
|
||
|
||
The ('--efidisk-only') option prevents searching any other devices
|
||
then EFI disks. This is typically used when chainloading to local
|
||
EFI partition.
|
||
|
||
The ('--cryptodisk-only') option prevents searching any devices
|
||
other than encrypted disks. This is typically used when booting
|
||
from an encrypted file system to ensure that no code gets executed
|
||
from an unencrypted device having the same filesystem UUID or
|
||
label.
|
||
|
||
This option implicitly invokes the command 'cryptocheck', if it is
|
||
available (*note cryptocheck:: for additional information).
|
||
|
||
The 'search.file', 'search.fs_label', and 'search.fs_uuid' commands
|
||
are aliases for 'search --file', 'search --label', and 'search
|
||
--fs-uuid' respectively.
|
||
|
||
Also hints as to which device may be the most likely to contain the
|
||
item searched for may be given via the ('-h', '--hint') option with
|
||
a device name as an argument. If the argument ends with a comma,
|
||
then partitions on the device are also searched. Furthermore,
|
||
platform specific hints may be given via the options
|
||
'--hint-ieee1275', '--hint-bios', '--hint-baremetal', '--hint-efi',
|
||
and '--hint-arc'. When specified, these options take an argument
|
||
and operate like '--hint', but only on the specified platform.
|
||
|
||
|
||
File: VasEBoot.info, Node: sendkey, Next: set, Prev: search, Up: Command-line commands
|
||
|
||
17.4.80 sendkey
|
||
---------------
|
||
|
||
-- Command: sendkey
|
||
[--num|--caps|--scroll|--insert|--pause|--left-shift|--right-shift|--sysrq|--numkey|--capskey|--scrollkey|--insertkey|--left-alt|--right-alt|--left-ctrl|--right-ctrl
|
||
on|off]... [no-led] keystroke
|
||
Insert keystrokes into the keyboard buffer when booting. Sometimes
|
||
an operating system or chainloaded boot loader requires particular
|
||
keys to be pressed: for example, one might need to press a
|
||
particular key to enter "safe mode", or when chainloading another
|
||
boot loader one might send keystrokes to it to navigate its menu.
|
||
|
||
Note: This command is currently only available on the i386-pc
|
||
target.
|
||
|
||
You may provide up to 16 keystrokes (the length of the BIOS
|
||
keyboard buffer). Keystroke names may be upper-case or lower-case
|
||
letters, digits, or taken from the following table:
|
||
|
||
Name Key
|
||
-------------------------------------------------------------------
|
||
escape Escape
|
||
exclam !
|
||
at @
|
||
numbersign #
|
||
dollar $
|
||
percent %
|
||
caret ^
|
||
ampersand &
|
||
asterisk *
|
||
parenleft (
|
||
parenright )
|
||
minus -
|
||
underscore _
|
||
equal =
|
||
plus +
|
||
backspace Backspace
|
||
tab Tab
|
||
bracketleft [
|
||
braceleft {
|
||
bracketright ]
|
||
braceright }
|
||
enter Enter
|
||
control press and release Control
|
||
semicolon ;
|
||
colon :
|
||
quote '
|
||
doublequote "
|
||
backquote '
|
||
tilde ~
|
||
shift press and release left Shift
|
||
backslash \
|
||
bar |
|
||
comma ,
|
||
less <
|
||
period .
|
||
greater >
|
||
slash /
|
||
question ?
|
||
rshift press and release right Shift
|
||
alt press and release Alt
|
||
space space bar
|
||
capslock Caps Lock
|
||
F1 F1
|
||
F2 F2
|
||
F3 F3
|
||
F4 F4
|
||
F5 F5
|
||
F6 F6
|
||
F7 F7
|
||
F8 F8
|
||
F9 F9
|
||
F10 F10
|
||
F11 F11
|
||
F12 F12
|
||
num1 1 (numeric keypad)
|
||
num2 2 (numeric keypad)
|
||
num3 3 (numeric keypad)
|
||
num4 4 (numeric keypad)
|
||
num5 5 (numeric keypad)
|
||
num6 6 (numeric keypad)
|
||
num7 7 (numeric keypad)
|
||
num8 8 (numeric keypad)
|
||
num9 9 (numeric keypad)
|
||
num0 0 (numeric keypad)
|
||
numperiod . (numeric keypad)
|
||
numend End (numeric keypad)
|
||
numdown Down (numeric keypad)
|
||
numpgdown Page Down (numeric keypad)
|
||
numleft Left (numeric keypad)
|
||
numcenter 5 with Num Lock inactive (numeric
|
||
keypad)
|
||
numright Right (numeric keypad)
|
||
numhome Home (numeric keypad)
|
||
numup Up (numeric keypad)
|
||
numpgup Page Up (numeric keypad)
|
||
numinsert Insert (numeric keypad)
|
||
numdelete Delete (numeric keypad)
|
||
numasterisk * (numeric keypad)
|
||
numminus - (numeric keypad)
|
||
numplus + (numeric keypad)
|
||
numslash / (numeric keypad)
|
||
numenter Enter (numeric keypad)
|
||
delete Delete
|
||
insert Insert
|
||
home Home
|
||
end End
|
||
pgdown Page Down
|
||
pgup Page Up
|
||
down Down
|
||
up Up
|
||
left Left
|
||
right Right
|
||
|
||
As well as keystrokes, the 'sendkey' command takes various options
|
||
that affect the BIOS keyboard status flags. These options take an
|
||
'on' or 'off' parameter, specifying that the corresponding status
|
||
flag be set or unset; omitting the option for a given status flag
|
||
will leave that flag at its initial state at boot. The '--num',
|
||
'--caps', '--scroll', and '--insert' options emulate setting the
|
||
corresponding mode, while the '--numkey', '--capskey',
|
||
'--scrollkey', and '--insertkey' options emulate pressing and
|
||
holding the corresponding key. The other status flag options are
|
||
self-explanatory.
|
||
|
||
If the '--no-led' option is given, the status flag options will
|
||
have no effect on keyboard LEDs.
|
||
|
||
If the 'sendkey' command is given multiple times, then only the
|
||
last invocation has any effect.
|
||
|
||
Since 'sendkey' manipulates the BIOS keyboard buffer, it may cause
|
||
hangs, reboots, or other misbehaviour on some systems. If the
|
||
operating system or boot loader that runs after VAS_EBOOT uses its own
|
||
keyboard driver rather than the BIOS keyboard functions, then
|
||
'sendkey' will have no effect.
|
||
|
||
This command is only available on PC BIOS systems.
|
||
|
||
|
||
File: VasEBoot.info, Node: set, Next: sha1sum, Prev: sendkey, Up: Command-line commands
|
||
|
||
17.4.81 set
|
||
-----------
|
||
|
||
-- Command: set [envvar=value]
|
||
Set the environment variable ENVVAR to VALUE. If invoked with no
|
||
arguments, print all environment variables with their values. For
|
||
the list of environment variables currently used by VAS_EBOOT itself see
|
||
the relevant section *note Environment::.
|
||
|
||
|
||
File: VasEBoot.info, Node: sha1sum, Next: sha256sum, Prev: set, Up: Command-line commands
|
||
|
||
17.4.82 sha1sum
|
||
---------------
|
||
|
||
-- Command: sha1sum arg ...
|
||
Alias for 'hashsum --hash sha1 arg ...'. See command 'hashsum'
|
||
(*note hashsum::) for full description.
|
||
|
||
|
||
File: VasEBoot.info, Node: sha256sum, Next: sha512sum, Prev: sha1sum, Up: Command-line commands
|
||
|
||
17.4.83 sha256sum
|
||
-----------------
|
||
|
||
-- Command: sha256sum arg ...
|
||
Alias for 'hashsum --hash sha256 arg ...'. See command 'hashsum'
|
||
(*note hashsum::) for full description.
|
||
|
||
|
||
File: VasEBoot.info, Node: sha512sum, Next: sleep, Prev: sha256sum, Up: Command-line commands
|
||
|
||
17.4.84 sha512sum
|
||
-----------------
|
||
|
||
-- Command: sha512sum arg ...
|
||
Alias for 'hashsum --hash sha512 arg ...'. See command 'hashsum'
|
||
(*note hashsum::) for full description.
|
||
|
||
|
||
File: VasEBoot.info, Node: sleep, Next: smbios, Prev: sha512sum, Up: Command-line commands
|
||
|
||
17.4.85 sleep
|
||
-------------
|
||
|
||
-- Command: sleep [--verbose] [--interruptible] count
|
||
Sleep for COUNT seconds. If option '--interruptible' is given,
|
||
allow pressing <ESC>, <F4> or holding down <SHIFT> to interrupt
|
||
sleep. With '--verbose' show countdown of remaining seconds. Exit
|
||
code is set to 0 if timeout expired and to 1 if timeout was
|
||
interrupted using any of the mentioned keys.
|
||
|
||
|
||
File: VasEBoot.info, Node: smbios, Next: source, Prev: sleep, Up: Command-line commands
|
||
|
||
17.4.86 smbios
|
||
--------------
|
||
|
||
-- Command: smbios [--type TYPE] [--handle HANDLE] [--match MATCH]
|
||
(--get-byte | --get-word | --get-dword | --get-qword |
|
||
--get-string | --get-uuid) OFFSET [--set VARIABLE]
|
||
Retrieve SMBIOS information.
|
||
|
||
The 'smbios' command returns the value of a field in an SMBIOS
|
||
structure. The following options determine which structure to
|
||
select.
|
||
|
||
* Specifying '--type' will select structures with a matching
|
||
TYPE. The type can be any integer from 0 to 255.
|
||
* Specifying '--handle' will select structures with a matching
|
||
HANDLE. The handle can be any integer from 0 to 65535.
|
||
* Specifying '--match' will select structure number MATCH in the
|
||
filtered list of structures; e.g. 'smbios --type 4 --match 2'
|
||
will select the second Process Information (Type 4) structure.
|
||
The list is always ordered the same as the hardware's SMBIOS
|
||
table. The match number must be a positive integer. If
|
||
unspecified, the first matching structure will be selected.
|
||
|
||
The remaining options determine which field in the selected SMBIOS
|
||
structure to return. Only one of these options may be specified at
|
||
a time.
|
||
|
||
* When given '--get-byte', return the value of the byte at
|
||
OFFSET bytes into the selected SMBIOS structure. It will be
|
||
formatted as an unsigned decimal integer.
|
||
* When given '--get-word', return the value of the word (two
|
||
bytes) at OFFSET bytes into the selected SMBIOS structure. It
|
||
will be formatted as an unsigned decimal integer.
|
||
* When given '--get-dword', return the value of the dword (four
|
||
bytes) at OFFSET bytes into the selected SMBIOS structure. It
|
||
will be formatted as an unsigned decimal integer.
|
||
* When given '--get-qword', return the value of the qword (eight
|
||
bytes) at OFFSET bytes into the selected SMBIOS structure. It
|
||
will be formatted as an unsigned decimal integer.
|
||
* When given '--get-string', return the string with its index
|
||
found at OFFSET bytes into the selected SMBIOS structure.
|
||
* When given '--get-uuid', return the value of the UUID (sixteen
|
||
bytes) at OFFSET bytes into the selected SMBIOS structure. It
|
||
will be formatted as lower-case hyphenated hexadecimal digits,
|
||
with the first three fields as little-endian, and the rest
|
||
printed byte-by-byte.
|
||
|
||
The default action is to print the value of the requested field to
|
||
the console, but a variable name can be specified with '--set' to
|
||
store the value instead of printing it.
|
||
|
||
For example, this will store and then display the system
|
||
manufacturer's name.
|
||
|
||
smbios --type 1 --get-string 4 --set system_manufacturer
|
||
echo $system_manufacturer
|
||
|
||
|
||
File: VasEBoot.info, Node: source, Next: stress_big_allocs, Prev: smbios, Up: Command-line commands
|
||
|
||
17.4.87 source
|
||
--------------
|
||
|
||
-- Command: source file
|
||
Read FILE as a configuration file, as if its contents had been
|
||
incorporated directly into the sourcing file. Unlike 'configfile'
|
||
(*note configfile::), this executes the contents of FILE without
|
||
changing context: any environment variable changes made by the
|
||
commands in FILE will be preserved after 'source' returns, and the
|
||
menu will not be shown immediately.
|
||
|
||
|
||
File: VasEBoot.info, Node: stress_big_allocs, Next: test, Prev: source, Up: Command-line commands
|
||
|
||
17.4.88 stress_big_allocs
|
||
-------------------------
|
||
|
||
-- Command: stress_big_allocs
|
||
Stress test large memory allocations.
|
||
|
||
|
||
File: VasEBoot.info, Node: test, Next: tpm2_key_protector_init, Prev: stress_big_allocs, Up: Command-line commands
|
||
|
||
17.4.89 test
|
||
------------
|
||
|
||
-- Command: test expression
|
||
Evaluate EXPRESSION and return zero exit status if result is true,
|
||
non zero status otherwise.
|
||
|
||
EXPRESSION is one of:
|
||
|
||
STRING1 '==' STRING2
|
||
the strings are equal
|
||
STRING1 '!=' STRING2
|
||
the strings are not equal
|
||
STRING1 '<' STRING2
|
||
STRING1 is lexicographically less than STRING2
|
||
STRING1 '<=' STRING2
|
||
STRING1 is lexicographically less or equal than STRING2
|
||
STRING1 '>' STRING2
|
||
STRING1 is lexicographically greater than STRING2
|
||
STRING1 '>=' STRING2
|
||
STRING1 is lexicographically greater or equal than STRING2
|
||
INTEGER1 '-eq' INTEGER2
|
||
INTEGER1 is equal to INTEGER2
|
||
INTEGER1 '-ge' INTEGER2
|
||
INTEGER1 is greater than or equal to INTEGER2
|
||
INTEGER1 '-gt' INTEGER2
|
||
INTEGER1 is greater than INTEGER2
|
||
INTEGER1 '-le' INTEGER2
|
||
INTEGER1 is less than or equal to INTEGER2
|
||
INTEGER1 '-lt' INTEGER2
|
||
INTEGER1 is less than INTEGER2
|
||
INTEGER1 '-ne' INTEGER2
|
||
INTEGER1 is not equal to INTEGER2
|
||
PREFIXINTEGER1 '-pgt' PREFIXINTEGER2
|
||
INTEGER1 is greater than INTEGER2 after stripping off common
|
||
non-numeric PREFIX.
|
||
PREFIXINTEGER1 '-plt' PREFIXINTEGER2
|
||
INTEGER1 is less than INTEGER2 after stripping off common
|
||
non-numeric PREFIX.
|
||
FILE1 '-nt' FILE2
|
||
FILE1 is newer than FILE2 (modification time). Optionally
|
||
numeric BIAS may be directly appended to '-nt' in which case
|
||
it is added to the first file modification time.
|
||
FILE1 '-ot' FILE2
|
||
FILE1 is older than FILE2 (modification time). Optionally
|
||
numeric BIAS may be directly appended to '-ot' in which case
|
||
it is added to the first file modification time.
|
||
'-d' FILE
|
||
FILE exists and is a directory
|
||
'-e' FILE
|
||
FILE exists
|
||
'-f' FILE
|
||
FILE exists and is not a directory
|
||
'-s' FILE
|
||
FILE exists and has a size greater than zero
|
||
'-n' STRING
|
||
the length of STRING is nonzero
|
||
STRING
|
||
STRING is equivalent to '-n STRING'
|
||
'-z' STRING
|
||
the length of STRING is zero
|
||
'(' EXPRESSION ')'
|
||
EXPRESSION is true
|
||
'!' EXPRESSION
|
||
EXPRESSION is false
|
||
EXPRESSION1 '-a' EXPRESSION2
|
||
both EXPRESSION1 and EXPRESSION2 are true
|
||
EXPRESSION1 EXPRESSION2
|
||
both EXPRESSION1 and EXPRESSION2 are true. This syntax is not
|
||
POSIX-compliant and is not recommended.
|
||
EXPRESSION1 '-o' EXPRESSION2
|
||
either EXPRESSION1 or EXPRESSION2 is true
|
||
|
||
|
||
File: VasEBoot.info, Node: tpm2_key_protector_init, Next: tpm2_key_protector_clear, Prev: test, Up: Command-line commands
|
||
|
||
17.4.90 tpm2_key_protector_init
|
||
-------------------------------
|
||
|
||
-- Command: tpm2_key_protector_init [--mode | -m mode] | [--pcrs | -p
|
||
pcrlist] | [--bank | -b pcrbank] | [--cap-pcrs | -c pcrlist] |
|
||
[ [--tpm2key | -T tpm2key_file] | [--keyfile | -k keyfile] ] |
|
||
[--srk | -s handle] | [--asymmetric | -a srk_type] |
|
||
[--nvindex | -n nv_index]
|
||
Initialize the TPM2 key protector to unseal the key for the
|
||
'cryptomount' (*note cryptomount::) command. There are two
|
||
supported modes, SRK('srk') and NV index('nv'), to be specified by
|
||
the option '-m'. The default mode is SRK. The main difference
|
||
between SRK mode and NV index mode is the storage of the sealed
|
||
key. For SRK mode, the sealed key is stored in a file while NV
|
||
index mode stores the sealed key in the non-volatile memory inside
|
||
TPM with a given NV index.
|
||
|
||
The '-p' and '-b' options are used to supply the PCR list and bank
|
||
that the key is sealed with. The PCR list is a comma-separated
|
||
list, e.g., '0,2,4,7,9', to represent the involved PCRs, and the
|
||
default is '7'. The PCR bank is chosen by selecting a hash
|
||
algorithm. The current supported PCR banks are SHA1, SHA256,
|
||
SHA384, and SHA512, and the default is SHA256.
|
||
|
||
The '-c' option is introduced to enable the "capping" of a
|
||
specified list of PCRs. This feature addresses scenarios where a
|
||
user wants to ensure a sealed key cannot be unsealed again after
|
||
its initial use. When the '-c' option is employed, and the key is
|
||
successfully unsealed, the TPM2 key protector automatically extends
|
||
the selected PCRs with an EV_SEPARATOR event. This action
|
||
cryptographically alters the PCR values, thereby preventing the
|
||
associated key from being unsealed in any subsequent attempts until
|
||
those specific PCRs are reset to their original state, which
|
||
typically occurs during a system reboot. In general, it is
|
||
sufficient to extend one associated PCR to cap the key.
|
||
|
||
It's noteworthy that a key sealed against PCR 8 naturally
|
||
incorporates a "capping" behavior, even without explicitly using a
|
||
'-c' option. This is because VAS_EBOOT measures all commands into PCR
|
||
8, including those from configuration files. As a result, the
|
||
value of PCR 8 changes with virtually every command execution
|
||
during the boot process. Consequently, a key sealed against PCR 8
|
||
can only be unsealed once in a given boot session, as any
|
||
subsequent VAS_EBOOT command will alter PCR 8, invalidating the
|
||
unsealing policy and effectively "capping" the key.
|
||
|
||
Some options are only available for the specific mode. The
|
||
SRK-specific options are '-T', '-k', '-a', and '-s'. On the other
|
||
hand, the NV index-specific option is '-n'.
|
||
|
||
The key file for SRK mode can be supplied with either '-T' or '-k'.
|
||
Those two options were used to distinguish the file formats but are
|
||
same now. There are two supported file formats: raw format and TPM
|
||
2.0 Key File format. When using the key file in the raw format,
|
||
the '-p' and '-b' options are necessary for the non-default PCR
|
||
list or bank. On the other hand, when using the key file in TPM
|
||
2.0 Key File format, the the parameters for the TPM commands are
|
||
written in the file, and there is no need to set the PCR list('-p')
|
||
and bank('-b'). In general, TPM 2.0 Key File format is preferred
|
||
due to the simplified VAS_EBOOT command options and the authorized
|
||
policy support
|
||
|
||
Besides the key file, there are two options, '-a' and '-s', to
|
||
tweak the TPM Storage Root Key (SRK). The SRK can be either created
|
||
at runtime or stored in the non-volatile memory. When creating SRK
|
||
at runtime, VAS_EBOOT provides the SRK template to the TPM to create the
|
||
key. There are two SRK templates for the '-a' option, ECC and RSA,
|
||
and the default is ECC. If the SRK is stored in a specific handle,
|
||
e.g. '0x81000001', the '-s' option can be used to set the handle
|
||
to notify VAS_EBOOT to load the SRK from the given handle.
|
||
|
||
The only NV index-specific option is the '-n' option which is used
|
||
to set the NV index containing the sealed key. Then VAS_EBOOT can load
|
||
the sealed key and unseal it with the given PCR list and bank.
|
||
|
||
|
||
File: VasEBoot.info, Node: tpm2_key_protector_clear, Next: tpm2_dump_pcr, Prev: tpm2_key_protector_init, Up: Command-line commands
|
||
|
||
17.4.91 tpm2_key_protector_clear
|
||
--------------------------------
|
||
|
||
-- Command: tpm2_key_protector_clear
|
||
Clear the TPM2 key protector if previously initialized.
|
||
|
||
|
||
File: VasEBoot.info, Node: tpm2_dump_pcr, Next: true, Prev: tpm2_key_protector_clear, Up: Command-line commands
|
||
|
||
17.4.92 tpm2_dump_pcr
|
||
---------------------
|
||
|
||
-- Command: tpm2_dump_pcr [BANK]
|
||
Print all PCRs of the specified TPM 2.0 BANK. The supported banks
|
||
are 'sha1', 'sha256', 'sha384', and 'sha512'. If BANK is not
|
||
specified, 'sha256' is chosen by default.
|
||
|
||
Since VAS_EBOOT measures every command into PCR 8, invoking
|
||
'tpm2_dump_pcr' also extends PCR 8, so PCR 8 will not be a stable
|
||
value in VAS_EBOOT shell.
|
||
|
||
|
||
File: VasEBoot.info, Node: true, Next: trust, Prev: tpm2_dump_pcr, Up: Command-line commands
|
||
|
||
17.4.93 true
|
||
------------
|
||
|
||
-- Command: true
|
||
Do nothing, successfully. This is mainly useful in control
|
||
constructs such as 'if' and 'while' (*note Shell-like scripting::).
|
||
|
||
|
||
File: VasEBoot.info, Node: trust, Next: uki, Prev: true, Up: Command-line commands
|
||
|
||
17.4.94 trust
|
||
-------------
|
||
|
||
-- Command: trust [--skip-sig] pubkey_file
|
||
Read public key from PUBKEY_FILE and add it to VAS_EBOOT's internal list
|
||
of trusted public keys. These keys are used to validate digital
|
||
signatures when environment variable 'check_signatures' is set to
|
||
'enforce'. Note that if 'check_signatures' is set to 'enforce'
|
||
when 'trust' executes, then PUBKEY_FILE must itself be properly
|
||
signed. The '--skip-sig' option can be used to disable
|
||
signature-checking when reading PUBKEY_FILE itself. It is expected
|
||
that '--skip-sig' is useful for testing and manual booting. *Note
|
||
Using GPG-style digital signatures::, for more information.
|
||
|
||
|
||
File: VasEBoot.info, Node: uki, Next: unset, Prev: trust, Up: Command-line commands
|
||
|
||
17.4.95 uki
|
||
-----------
|
||
|
||
-- Command: uki [-p|--path dir] [-f|--enable-fallback]
|
||
[-d|--show-default] [-n|--show-non-default] [-e|--entry file]
|
||
Load Unified Kernel Image (UKI) files into the VAS_EBOOT menu. Boot
|
||
entries generated from 'uki' won't interfere with entries from
|
||
'VasEBoot.cfg' appearing in the VAS_EBOOT menu. Also, entries generated
|
||
from 'uki' exists only in memory and don't update 'VasEBoot.cfg'.
|
||
|
||
By default, the UKI files are stored in the '/EFI/Linux' directory
|
||
in the EFI system partition. If UKI files are stored elsewhere,
|
||
the '--path' option can be used to check a different directory
|
||
instead of the default location. If no UKI files are found while
|
||
using the '--path' option, the '--enable-fallback' option can be
|
||
used to check for files in the default location.
|
||
|
||
The '--show-default' option allows the default boot entry to be
|
||
added to the VAS_EBOOT menu from the UKI files.
|
||
|
||
The '--show-non-default' option allows non-default boot entries to
|
||
be added to the VAS_EBOOT menu from the UKI files.
|
||
|
||
The '--entry' option allows specific boot entries to be added to
|
||
the VAS_EBOOT menu from the UKI files.
|
||
|
||
The '--entry', '--show-default', and '--show-non-default' options
|
||
are used to filter which UKI files are added to the VAS_EBOOT menu. If
|
||
none are used, all files in the default location or the location
|
||
specified by '--path' will be added to the VAS_EBOOT menu.
|
||
|
||
For more information on UKI, see: The Unified Kernel Image
|
||
Specification
|
||
(https://uapi-group.org/specifications/specs/unified_kernel_image/)
|
||
|
||
|
||
File: VasEBoot.info, Node: unset, Next: verify_detached, Prev: uki, Up: Command-line commands
|
||
|
||
17.4.96 unset
|
||
-------------
|
||
|
||
-- Command: unset envvar
|
||
Unset the environment variable ENVVAR.
|
||
|
||
|
||
File: VasEBoot.info, Node: verify_detached, Next: videoinfo, Prev: unset, Up: Command-line commands
|
||
|
||
17.4.97 verify_detached
|
||
-----------------------
|
||
|
||
-- Command: verify_detached [--skip-sig] file signature_file
|
||
[pubkey_file]
|
||
Verifies a GPG-style detached signature, where the signed file is
|
||
FILE, and the signature itself is in file SIGNATURE_FILE.
|
||
Optionally, a specific public key to use can be specified using
|
||
PUBKEY_FILE. When environment variable 'check_signatures' is set
|
||
to 'enforce', then PUBKEY_FILE must itself be properly signed by an
|
||
already-trusted key. An unsigned PUBKEY_FILE can be loaded by
|
||
specifying '--skip-sig'. If PUBKEY_FILE is omitted, then public
|
||
keys from VAS_EBOOT's trusted keys (*note list_trusted::, *note trust::,
|
||
and *note distrust::) are tried.
|
||
|
||
Exit code '$?' is set to 0 if the signature validates successfully.
|
||
If validation fails, it is set to a non-zero value. *Note Using
|
||
GPG-style digital signatures::, for more information.
|
||
|
||
|
||
File: VasEBoot.info, Node: videoinfo, Next: wrmsr, Prev: verify_detached, Up: Command-line commands
|
||
|
||
17.4.98 videoinfo
|
||
-----------------
|
||
|
||
-- Command: videoinfo [[WxH]xD]
|
||
List available video modes. If resolution is given, show only
|
||
matching modes.
|
||
|
||
|
||
File: VasEBoot.info, Node: wrmsr, Prev: videoinfo, Up: Command-line commands
|
||
|
||
17.4.99 wrmsr
|
||
-------------
|
||
|
||
-- Command:: wrmsr 0xADDR 0xVALUE
|
||
Write a 0xVALUE to a model-specific register at address 0xADDR.
|
||
|
||
Please note that on SMP systems, writing to a MSR that has a scope
|
||
per hardware thread, implies that the value that is written only
|
||
applies to the particular cpu/core/thread that runs the command.
|
||
|
||
Also, if you specify a reserved or unimplemented MSR address, it
|
||
will cause a general protection exception (which is not currently
|
||
being handled) and the system will reboot.
|
||
|
||
Note: The command is not allowed when lockdown is enforced (*note
|
||
Lockdown::). This is done to prevent subverting various security
|
||
mechanisms.
|
||
|
||
|
||
File: VasEBoot.info, Node: Networking commands, Next: Undocumented commands, Prev: Command-line commands, Up: Commands
|
||
|
||
17.5 Networking commands
|
||
========================
|
||
|
||
* Menu:
|
||
|
||
* net_add_addr:: Add a network address
|
||
* net_add_dns:: Add a DNS server
|
||
* net_add_route:: Add routing entry
|
||
* net_bootp:: Perform a bootp/DHCP autoconfiguration
|
||
* net_del_addr:: Remove IP address from interface
|
||
* net_del_dns:: Remove a DNS server
|
||
* net_del_route:: Remove a route entry
|
||
* net_dhcp:: Perform a DHCP autoconfiguration
|
||
* net_get_dhcp_option:: Retrieve DHCP options
|
||
* net_ipv6_autoconf:: Perform IPv6 autoconfiguration
|
||
* net_ls_addr:: List interfaces
|
||
* net_ls_cards:: List network cards
|
||
* net_ls_dns:: List DNS servers
|
||
* net_ls_routes:: List routing entries
|
||
* net_nslookup:: Perform a DNS lookup
|
||
* net_set_vlan:: Set vlan id on an interface
|
||
|
||
|
||
File: VasEBoot.info, Node: net_add_addr, Next: net_add_dns, Up: Networking commands
|
||
|
||
17.5.1 net_add_addr
|
||
-------------------
|
||
|
||
-- Command: net_add_addr INTERFACE CARD ADDRESS
|
||
Configure additional network INTERFACE with ADDRESS on a network
|
||
CARD. ADDRESS can be either IP in dotted decimal notation, or
|
||
symbolic name which is resolved using DNS lookup. If successful,
|
||
this command also adds local link routing entry to the default
|
||
subnet of ADDRESS with name INTERFACE':local' via INTERFACE.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_add_dns, Next: net_add_route, Prev: net_add_addr, Up: Networking commands
|
||
|
||
17.5.2 net_add_dns
|
||
------------------
|
||
|
||
-- Command: net_add_dns SERVER
|
||
Resolve SERVER IP address and add to the list of DNS servers used
|
||
during name lookup.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_add_route, Next: net_bootp, Prev: net_add_dns, Up: Networking commands
|
||
|
||
17.5.3 net_add_route
|
||
--------------------
|
||
|
||
-- Command: net_add_route SHORTNAME IP[/PREFIX] [INTERFACE | gw
|
||
GATEWAY]
|
||
Add route to network with address IP as modified by PREFIX via
|
||
either local INTERFACE or GATEWAY. PREFIX is optional and defaults
|
||
to 32 for IPv4 address and 128 for IPv6 address. Route is
|
||
identified by SHORTNAME which can be used to remove it (*note
|
||
net_del_route::).
|
||
|
||
|
||
File: VasEBoot.info, Node: net_bootp, Next: net_del_addr, Prev: net_add_route, Up: Networking commands
|
||
|
||
17.5.4 net_bootp
|
||
----------------
|
||
|
||
-- Command: net_bootp [CARD]
|
||
Alias for net_dhcp, for compatibility with older VasEBoot versions.
|
||
Will perform the same DHCP handshake with potential fallback to
|
||
BOOTP as the net_dhcp command (*note net_dhcp::).
|
||
|
||
|
||
File: VasEBoot.info, Node: net_del_addr, Next: net_del_dns, Prev: net_bootp, Up: Networking commands
|
||
|
||
17.5.5 net_del_addr
|
||
-------------------
|
||
|
||
-- Command: net_del_addr INTERFACE
|
||
Remove configured INTERFACE with associated address.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_del_dns, Next: net_del_route, Prev: net_del_addr, Up: Networking commands
|
||
|
||
17.5.6 net_del_dns
|
||
------------------
|
||
|
||
-- Command: net_del_dns ADDRESS
|
||
Remove ADDRESS from list of servers used during name lookup.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_del_route, Next: net_dhcp, Prev: net_del_dns, Up: Networking commands
|
||
|
||
17.5.7 net_del_route
|
||
--------------------
|
||
|
||
-- Command: net_del_route SHORTNAME
|
||
Remove route entry identified by SHORTNAME.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_dhcp, Next: net_get_dhcp_option, Prev: net_del_route, Up: Networking commands
|
||
|
||
17.5.8 net_dhcp
|
||
---------------
|
||
|
||
-- Command: net_dhcp [CARD]
|
||
Perform configuration of CARD using DHCP protocol. If no card name
|
||
is specified, try to configure all existing cards. Falls back to
|
||
the BOOTP protocol, if needed. If configuration was successful,
|
||
interface with name CARD':dhcp' and configured address is added to
|
||
CARD. Additionally the following DHCP options are recognized and
|
||
processed:
|
||
|
||
'1 (Subnet Mask)'
|
||
Used to calculate network local routing entry for interface
|
||
CARD':dhcp'.
|
||
'3 (Router)'
|
||
Adds default route entry with the name CARD':dhcp:default' via
|
||
gateway from DHCP option. Note that only option with single
|
||
route is accepted.
|
||
'6 (Domain Name Server)'
|
||
Adds all servers from option value to the list of servers used
|
||
during name resolution.
|
||
'12 (Host Name)'
|
||
Sets environment variable 'net_'<CARD>'_dhcp_hostname' (*note
|
||
net_<INTERFACE>_hostname::) to the value of option.
|
||
'15 (Domain Name)'
|
||
Sets environment variable 'net_'<CARD>'_dhcp_domain' (*note
|
||
net_<INTERFACE>_domain::) to the value of option.
|
||
'17 (Root Path)'
|
||
Sets environment variable 'net_'<CARD>'_dhcp_rootpath' (*note
|
||
net_<INTERFACE>_rootpath::) to the value of option.
|
||
'18 (Extensions Path)'
|
||
Sets environment variable 'net_'<CARD>'_dhcp_extensionspath'
|
||
(*note net_<INTERFACE>_extensionspath::) to the value of
|
||
option.
|
||
'66 (TFTP Server Name)'
|
||
Sets environment variable 'net_'<CARD>'_dhcp_server_name'
|
||
(*note net_<INTERFACE>_dhcp_server_name::) to the value of
|
||
option.
|
||
'67 (Filename)'
|
||
Sets environment variable 'net_'<CARD>'_boot_file' (*note
|
||
net_<INTERFACE>_boot_file::) to the value of option.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_get_dhcp_option, Next: net_ipv6_autoconf, Prev: net_dhcp, Up: Networking commands
|
||
|
||
17.5.9 net_get_dhcp_option
|
||
--------------------------
|
||
|
||
-- Command: net_get_dhcp_option VAR INTERFACE NUMBER TYPE
|
||
Request DHCP option NUMBER of TYPE via INTERFACE. TYPE can be one
|
||
of 'string', 'number' or 'hex'. If option is found, assign its
|
||
value to variable VAR. Values of types 'number' and 'hex' are
|
||
converted to string representation.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_ipv6_autoconf, Next: net_ls_addr, Prev: net_get_dhcp_option, Up: Networking commands
|
||
|
||
17.5.10 net_ipv6_autoconf
|
||
-------------------------
|
||
|
||
-- Command: net_ipv6_autoconf [CARD]
|
||
Perform IPv6 autoconfiguration by adding to the CARD interface with
|
||
name CARD':link' and link local MAC-based address. If no card is
|
||
specified, perform autoconfiguration for all existing cards.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_ls_addr, Next: net_ls_cards, Prev: net_ipv6_autoconf, Up: Networking commands
|
||
|
||
17.5.11 net_ls_addr
|
||
-------------------
|
||
|
||
-- Command: net_ls_addr
|
||
List all configured interfaces with their MAC and IP addresses.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_ls_cards, Next: net_ls_dns, Prev: net_ls_addr, Up: Networking commands
|
||
|
||
17.5.12 net_ls_cards
|
||
--------------------
|
||
|
||
-- Command: net_ls_cards
|
||
List all detected network cards with their MAC address.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_ls_dns, Next: net_ls_routes, Prev: net_ls_cards, Up: Networking commands
|
||
|
||
17.5.13 net_ls_dns
|
||
------------------
|
||
|
||
-- Command: net_ls_dns
|
||
List addresses of DNS servers used during name lookup.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_ls_routes, Next: net_nslookup, Prev: net_ls_dns, Up: Networking commands
|
||
|
||
17.5.14 net_ls_routes
|
||
---------------------
|
||
|
||
-- Command: net_ls_routes
|
||
List routing entries.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_nslookup, Next: net_set_vlan, Prev: net_ls_routes, Up: Networking commands
|
||
|
||
17.5.15 net_nslookup
|
||
--------------------
|
||
|
||
-- Command: net_nslookup NAME [SERVER]
|
||
Resolve address of NAME using DNS server SERVER. If no server is
|
||
given, use default list of servers.
|
||
|
||
|
||
File: VasEBoot.info, Node: net_set_vlan, Prev: net_nslookup, Up: Networking commands
|
||
|
||
17.5.16 net_set_vlan
|
||
--------------------
|
||
|
||
-- Command: net_set_vlan INTERFACE VLANID
|
||
Set the 802.1Q VLAN identifier on INTERFACE to VLANID. For
|
||
example, to set the VLAN identifier on interface 'efinet1' to
|
||
'100':
|
||
|
||
net_set_vlan efinet1 100
|
||
|
||
The VLAN identifier can be removed by setting it to '0':
|
||
|
||
net_set_vlan efinet1 0
|
||
|
||
|
||
File: VasEBoot.info, Node: Undocumented commands, Prev: Networking commands, Up: Commands
|
||
|
||
17.6 Commands currently undocumented
|
||
====================================
|
||
|
||
Unfortunately, not all VAS_EBOOT commands are documented at this time due to
|
||
developer resource constraints. One way to contribute back to the VAS_EBOOT
|
||
project would be to help document these commands, and submit patches or
|
||
ideas to the mailing list. The following is a (most likely incomplete)
|
||
list of undocumented or poorly documented commands and not all of them
|
||
are allowed for all platforms. Running the command help from within the
|
||
VAS_EBOOT shell may provide more information on parameters and usage.
|
||
|
||
* 'all_functional_test' - Run all functional tests.
|
||
* 'backtrace' - Print backtrace.
|
||
* 'boottime' - Show boot time statistics.
|
||
* 'cacheinfo' - Get disk cache info.
|
||
* 'cbmemc' - Show CBMEM console content.
|
||
* 'cmosset' - Set bit at BYTE:BIT in CMOS.
|
||
* 'coreboot_boottime' - Show coreboot boot time statistics.
|
||
* 'dump' - Show memory contents.
|
||
* 'efiemu_loadcore' - Load and initialize EFI emulator.
|
||
* 'efiemu_prepare' - Finalize loading of EFI emulator.
|
||
* 'efiemu_unload' - Unload EFI emulator.
|
||
* 'exit' - Exit from VAS_EBOOT.
|
||
* 'extract_entries_configfile' - Load another config file but take
|
||
only menu entries.
|
||
* 'extract_entries_source' - Load another config file without
|
||
changing context but take only menu entries.
|
||
* 'extract_legacy_entries_configfile' - Parse legacy config in new
|
||
context taking only menu entries
|
||
* 'extract_legacy_entries_source' - Parse legacy config in same
|
||
context taking only menu entries
|
||
* 'extract_syslinux_entries_configfile' - Execute syslinux config in
|
||
new context taking only menu entries
|
||
* 'extract_syslinux_entries_source' - Execute syslinux config in same
|
||
context taking only menu entries
|
||
* 'fakebios' - Create BIOS-like structures for backward compatibility
|
||
with existing OS.
|
||
* 'fix_video' - Fix video problem.
|
||
* 'fpswa' - Display FPSWA version.
|
||
* 'functional_test' - Run all loaded functional tests.
|
||
* 'gdbstub_break' - Break into GDB
|
||
* 'gdbstub' - Start GDB stub on given port
|
||
* 'gdbstub_stop' - Stop GDB stub
|
||
* 'hdparm' - Get/set ATA disk parameters.
|
||
* 'hexdump_random' - Hexdump random data.
|
||
* 'inb' - Read 8-bit value from PORT.
|
||
* 'inl' - Read 32-bit value from PORT.
|
||
* 'inw' - Read 16-bit value from PORT.
|
||
* 'jpegtest' - Tests loading of JPEG bitmap.
|
||
* 'keymap' - Load a keyboard layout.
|
||
* 'legacy_check_password' - Simulate VasEBoot-legacy 'password' command
|
||
in menu entry mode
|
||
* 'legacy_configfile' - Parse legacy config in new context
|
||
* 'legacy_password' - Simulate VasEBoot-legacy 'password' command
|
||
* 'legacy_source' - Parse legacy config in same context
|
||
* 'loadbios' - Load BIOS dump.
|
||
* 'lsacpi' - Show ACPI information.
|
||
* 'lsapm' - Show APM information.
|
||
* 'lscoreboot' - List coreboot tables.
|
||
* 'lsdev' - List devices.
|
||
* 'lsefi' - Display EFI handles.
|
||
* 'lsefimmap' - Display EFI memory map.
|
||
* 'lsefisystab' - Display EFI system tables.
|
||
* 'lsmmap' - List memory map provided by firmware.
|
||
* 'lspci' - List PCI devices.
|
||
* 'lssal' - Display SAL system table.
|
||
* 'lsspd' - Print Memory information.
|
||
* 'macppcbless' - Bless DIR of HFS or HFS+ partition for PPC macs.
|
||
* 'mactelbless' - Bless FILE of HFS or HFS+ partition for intel macs.
|
||
* 'net_set_vlan' - Set an interface's vlan id.
|
||
* 'outb' - Write 8-bit VALUE to PORT.
|
||
* 'outl' - Write 32-bit VALUE to PORT.
|
||
* 'outw' - Write 16-bit VALUE to PORT.
|
||
* 'pcidump' - Show raw dump of the PCI configuration space.
|
||
* 'pngtest' - Tests loading of PNG bitmap.
|
||
* 'read_byte' - Read 8-bit value from ADDR.
|
||
* 'read_dword' - Read 32-bit value from ADDR.
|
||
* 'read_word' - Read 16-bit value from ADDR.
|
||
* 'setpci' - Manipulate PCI devices.
|
||
* 'suspend' - Return to IEEE1275 prompt.
|
||
* 'syslinux_configfile' - Execute syslinux config in new context
|
||
* 'syslinux_source' - Execute syslinux config in same context
|
||
* 'test_blockarg' - Print and execute block argument., 0
|
||
* 'testload' - Load the same file in multiple ways.
|
||
* 'testspeed' - Test file read speed.
|
||
* 'tgatest' - Tests loading of TGA bitmap.
|
||
* 'time' - Measure time used by COMMAND
|
||
* 'tr' - Translate SET1 characters to SET2 in STRING.
|
||
* 'usb' - Test USB support.
|
||
* 'vbeinfo' - List available video modes. If resolution is given
|
||
show only modes matching it.
|
||
* 'vbetest' - Test video subsystem.
|
||
* 'videotest' - Test video subsystem in mode WxH.
|
||
* 'write_byte' - Write 8-bit VALUE to ADDR.
|
||
* 'write_dword' - Write 32-bit VALUE to ADDR.
|
||
* 'write_word' - Write 16-bit VALUE to ADDR.
|
||
* 'xen_cat' - List Xen storage.
|
||
* 'xen_ls' - List Xen storage.
|
||
* 'xnu_devprop_load' - Load 'device-properties' dump.
|
||
* 'xnu_uuid' - Transform 64-bit UUID to format suitable for XNU. If
|
||
-l is given keep it lowercase as done by blkid.
|
||
* 'zfs-bootfs' - Print ZFS-BOOTFSOBJ or store it into VARIABLE
|
||
* 'zfsinfo' - Print ZFS info about DEVICE.
|
||
* 'zfskey' - Import ZFS wrapping key stored in FILE.
|
||
|
||
|
||
File: VasEBoot.info, Node: Internationalisation, Next: Security, Prev: Commands, Up: Top
|
||
|
||
18 Internationalisation
|
||
***********************
|
||
|
||
18.1 Charset
|
||
============
|
||
|
||
VAS_EBOOT uses UTF-8 internally other than in rendering where some
|
||
VAS_EBOOT-specific appropriate representation is used. All text files
|
||
(including config) are assumed to be encoded in UTF-8.
|
||
|
||
18.2 Filesystems
|
||
================
|
||
|
||
NTFS, JFS, UDF, HFS+, exFAT, long filenames in FAT, Joliet part of
|
||
ISO9660 are treated as UTF-16 as per specification. AFS and BFS are
|
||
read as UTF-8, again according to specification. BtrFS, cpio, tar,
|
||
squash4, minix, minix2, minix3, ROMFS, ReiserFS, XFS, EROFS, ext2, ext3,
|
||
ext4, FAT (short names), F2FS, RockRidge part of ISO9660, nilfs2, UFS1,
|
||
UFS2 and ZFS are assumed to be UTF-8. This might be false on systems
|
||
configured with legacy charset but as long as the charset used is
|
||
superset of ASCII you should be able to access ASCII-named files. And
|
||
it's recommended to configure your system to use UTF-8 to access the
|
||
filesystem, convmv may help with migration. ISO9660 (plain) filenames
|
||
are specified as being ASCII or being described with unspecified escape
|
||
sequences. VAS_EBOOT assumes that the ISO9660 names are UTF-8 (since any
|
||
ASCII is valid UTF-8). There are some old CD-ROMs which use CP437 in
|
||
non-compliant way. You're still able to access files with names
|
||
containing only ASCII characters on such filesystems though. You're
|
||
also able to access any file if the filesystem contains valid Joliet
|
||
(UTF-16) or RockRidge (UTF-8). AFFS, SFS and HFS never use unicode and
|
||
VAS_EBOOT assumes them to be in Latin1, Latin1 and MacRoman respectively.
|
||
VAS_EBOOT handles filesystem case-insensitivity however no attempt is
|
||
performed at case conversion of international characters so e.g. a file
|
||
named lowercase greek alpha is treated as different from the one named
|
||
as uppercase alpha. The filesystems in questions are NTFS (except POSIX
|
||
namespace), HFS+ (configurable at mkfs time, default insensitive), SFS
|
||
(configurable at mkfs time, default insensitive), JFS (configurable at
|
||
mkfs time, default sensitive), HFS, AFFS, FAT, exFAT and ZFS
|
||
(configurable on per-subvolume basis by property "casesensitivity",
|
||
default sensitive). On ZFS subvolumes marked as case insensitive files
|
||
containing lowercase international characters are inaccessible. Also
|
||
like all supported filesystems except HFS+ and ZFS (configurable on
|
||
per-subvolume basis by property "normalization", default none) VAS_EBOOT
|
||
makes no attempt at check of canonical equivalence so a file name
|
||
u-diaresis is treated as distinct from u+combining diaresis. This
|
||
however means that in order to access file on HFS+ its name must be
|
||
specified in normalisation form D. On normalized ZFS subvolumes
|
||
filenames out of normalisation are inaccessible.
|
||
|
||
18.3 Output terminal
|
||
====================
|
||
|
||
Firmware output console "console" on ARC and IEEE1275 are limited to
|
||
ASCII.
|
||
|
||
BIOS firmware console and VGA text are limited to ASCII and some
|
||
pseudographics.
|
||
|
||
None of above mentioned is appropriate for displaying international
|
||
and any unsupported character is replaced with question mark except
|
||
pseudographics which we attempt to approximate with ASCII.
|
||
|
||
EFI console on the other hand nominally supports UTF-16 but actual
|
||
language coverage depends on firmware and may be very limited.
|
||
|
||
The encoding used on serial can be chosen with 'terminfo' as either
|
||
ASCII, UTF-8 or "visual UTF-8". Last one is against the specification
|
||
but results in correct rendering of right-to-left on some readers which
|
||
don't have own bidi implementation.
|
||
|
||
On emu VAS_EBOOT checks if charset is UTF-8 and uses it if so and uses
|
||
ASCII otherwise.
|
||
|
||
When using gfxterm or gfxmenu VAS_EBOOT itself is responsible for
|
||
rendering the text. In this case VAS_EBOOT is limited by loaded fonts. If
|
||
fonts contain all required characters then bidirectional text, cursive
|
||
variants and combining marks other than enclosing, half (e.g. left half
|
||
tilde or combining overline) and double ones. Ligatures aren't
|
||
supported though. This should cover European, Middle Eastern (if you
|
||
don't mind lack of lam-alif ligature in Arabic) and East Asian scripts.
|
||
Notable unsupported scripts are Brahmic family and derived as well as
|
||
Mongolian, Tifinagh, Korean Jamo (precomposed characters have no
|
||
problem) and tonal writing (2e5-2e9). VAS_EBOOT also ignores deprecated (as
|
||
specified in Unicode) characters (e.g. tags). VAS_EBOOT also doesn't handle
|
||
so called "annotation characters" If you can complete either of two
|
||
lists or, better, propose a patch to improve rendering, please contact
|
||
developer team.
|
||
|
||
18.4 Input terminal
|
||
===================
|
||
|
||
Firmware console on BIOS, IEEE1275 and ARC doesn't allow you to enter
|
||
non-ASCII characters. EFI specification allows for such but author is
|
||
unaware of any actual implementations. Serial input is currently
|
||
limited for latin1 (unlikely to change). Own keyboard implementations
|
||
(at_keyboard and usb_keyboard) supports any key but work on
|
||
one-char-per-keystroke. So no dead keys or advanced input method. Also
|
||
there is no keymap change hotkey. In practice it makes difficult to
|
||
enter any text using non-Latin alphabet. Moreover all current input
|
||
consumers are limited to ASCII.
|
||
|
||
18.5 Gettext
|
||
============
|
||
|
||
VAS_EBOOT supports being translated. For this you need to have language *.mo
|
||
files in $prefix/locale, load gettext module and set "lang" variable.
|
||
|
||
18.6 Regexp
|
||
===========
|
||
|
||
Regexps work on unicode characters, however no attempt at checking
|
||
canonical equivalence has been made. Moreover the classes like
|
||
[:alpha:] match only ASCII subset.
|
||
|
||
18.7 Other
|
||
==========
|
||
|
||
Currently VAS_EBOOT always uses YEAR-MONTH-DAY HOUR:MINUTE:SECOND [WEEKDAY]
|
||
24-hour datetime format but weekdays are translated. VAS_EBOOT always uses
|
||
the decimal number format with [0-9] as digits and . as descimal
|
||
separator and no group separator. IEEE1275 aliases are matched
|
||
case-insensitively except non-ASCII which is matched as binary. Similar
|
||
behaviour is for matching OSBundleRequired. Since IEEE1275 aliases and
|
||
OSBundleRequired don't contain any non-ASCII it should never be a
|
||
problem in practice. Case-sensitive identifiers are matched as raw
|
||
strings, no canonical equivalence check is performed. Case-insensitive
|
||
identifiers are matched as RAW but additionally [a-z] is equivalent to
|
||
[A-Z]. VAS_EBOOT-defined identifiers use only ASCII and so should
|
||
user-defined ones. Identifiers containing non-ASCII may work but aren't
|
||
supported. Only the ASCII space characters (space U+0020, tab U+000b,
|
||
CR U+000d and LF U+000a) are recognised. Other unicode space characters
|
||
aren't a valid field separator. 'test' (*note test::) tests <, >, <=,
|
||
>=, -pgt and -plt compare the strings in the lexicographical order of
|
||
unicode codepoints, replicating the behaviour of test from coreutils.
|
||
environment variables and commands are listed in the same order.
|
||
|
||
|
||
File: VasEBoot.info, Node: Security, Next: Platform limitations, Prev: Internationalisation, Up: Top
|
||
|
||
19 Security
|
||
***********
|
||
|
||
* Menu:
|
||
|
||
* Authentication and authorisation:: Users and access control
|
||
* Using GPG-style digital signatures:: Booting digitally signed code
|
||
* Using appended signatures:: An alternative approach to booting digitally signed code
|
||
* UEFI secure boot and shim:: Booting digitally signed PE files
|
||
* Secure Boot Advanced Targeting:: Embedded information for generation number based revocation
|
||
* Measured Boot:: Measuring boot components
|
||
* Lockdown:: Lockdown when booting on a secure setup
|
||
* TPM2 key protector:: Managing disk key with TPM2 key protector
|
||
* Signing certificate and hash files:: Certificate and hash file signing
|
||
* Signing VAS_EBOOT itself:: Ensuring the integrity of the VAS_EBOOT core image
|
||
* Hardening:: Configuration and customization to maximize security
|
||
|
||
|
||
File: VasEBoot.info, Node: Authentication and authorisation, Next: Using GPG-style digital signatures, Up: Security
|
||
|
||
19.1 Authentication and authorisation in VAS_EBOOT
|
||
=============================================
|
||
|
||
By default, the boot loader interface is accessible to anyone with
|
||
physical access to the console: anyone can select and edit any menu
|
||
entry, and anyone can get direct access to a VAS_EBOOT shell prompt. For
|
||
most systems, this is reasonable since anyone with direct physical
|
||
access has a variety of other ways to gain full access, and requiring
|
||
authentication at the boot loader level would only serve to make it
|
||
difficult to recover broken systems.
|
||
|
||
However, in some environments, such as kiosks, it may be appropriate
|
||
to lock down the boot loader to require authentication before performing
|
||
certain operations.
|
||
|
||
The 'password' (*note password::) and 'password_pbkdf2' (*note
|
||
password_pbkdf2::) commands can be used to define users, each of which
|
||
has an associated password. 'password' sets the password in plain text,
|
||
requiring 'VasEBoot.cfg' to be secure; 'password_pbkdf2' sets the password
|
||
hashed using the Password-Based Key Derivation Function (RFC 2898),
|
||
requiring the use of 'VasEBoot-mkpasswd-pbkdf2' (*note Invoking
|
||
VasEBoot-mkpasswd-pbkdf2::) to generate password hashes.
|
||
|
||
In order to enable authentication support, the 'superusers'
|
||
environment variable must be set to a list of usernames, separated by
|
||
any of spaces, commas, semicolons, pipes, or ampersands. Superusers are
|
||
permitted to use the VAS_EBOOT command line, edit menu entries, and execute
|
||
any menu entry. If 'superusers' is set, then use of the command line
|
||
and editing of menu entries are automatically restricted to superusers.
|
||
Setting 'superusers' to empty string effectively disables both access to
|
||
CLI and editing of menu entries. Building a VasEBoot image with
|
||
'--disable-cli' option will also disable access to CLI and editing of
|
||
menu entries, as well as disabling rescue mode. Note: The environment
|
||
variable needs to be exported to also affect the section defined by the
|
||
'submenu' command (*note submenu::).
|
||
|
||
Other users may be allowed to execute specific menu entries by giving
|
||
a list of usernames (as above) using the '--users' option to the
|
||
'menuentry' command (*note menuentry::). If the '--unrestricted' option
|
||
is used for a menu entry, then that entry is unrestricted. If the
|
||
'--users' option is not used for a menu entry, then that only superusers
|
||
are able to use it.
|
||
|
||
Putting this together, a typical 'VasEBoot.cfg' fragment might look like
|
||
this:
|
||
|
||
set superusers="root"
|
||
password_pbkdf2 root VasEBoot.pbkdf2.sha512.10000.biglongstring
|
||
password user1 insecure
|
||
|
||
menuentry "May be run by any user" --unrestricted {
|
||
set root=(hd0,1)
|
||
linux /vmlinuz
|
||
}
|
||
|
||
menuentry "Superusers only" --users "" {
|
||
set root=(hd0,1)
|
||
linux /vmlinuz single
|
||
}
|
||
|
||
menuentry "May be run by user1 or a superuser" --users user1 {
|
||
set root=(hd0,2)
|
||
chainloader +1
|
||
}
|
||
|
||
The 'VasEBoot-mkconfig' program does not yet have built-in support for
|
||
generating configuration files with authentication. You can use
|
||
'/etc/VasEBoot.d/40_custom' to add simple superuser authentication, by
|
||
adding 'set superusers=' and 'password' or 'password_pbkdf2' commands.
|
||
|
||
|
||
File: VasEBoot.info, Node: Using GPG-style digital signatures, Next: Using appended signatures, Prev: Authentication and authorisation, Up: Security
|
||
|
||
19.2 Using GPG-style digital signatures in VAS_EBOOT
|
||
===============================================
|
||
|
||
VAS_EBOOT's 'core.img' can optionally provide enforcement that all files
|
||
subsequently read from disk are covered by a valid digital signature.
|
||
This section does *not* cover how to ensure that your platform's
|
||
firmware (e.g., Coreboot) validates 'core.img'.
|
||
|
||
If environment variable 'check_signatures' (*note check_signatures::)
|
||
is set to 'enforce', then every attempt by the VAS_EBOOT 'core.img' to load
|
||
another file 'foo' implicitly invokes 'verify_detached foo foo.sig'
|
||
(*note verify_detached::). 'foo.sig' must contain a valid digital
|
||
signature over the contents of 'foo', which can be verified with a
|
||
public key currently trusted by VAS_EBOOT (*note list_trusted::, *note
|
||
trust::, and *note distrust::). If validation fails, then file 'foo'
|
||
cannot be opened. This failure may halt or otherwise impact the boot
|
||
process.
|
||
|
||
An initial trusted public key can be embedded within the VAS_EBOOT
|
||
'core.img' using the '--pubkey' option to 'VasEBoot-install' (*note Invoking
|
||
VasEBoot-install::).
|
||
|
||
VAS_EBOOT uses GPG-style detached signatures (meaning that a file
|
||
'foo.sig' will be produced when file 'foo' is signed), and currently
|
||
supports the DSA and RSA signing algorithms. A signing key can be
|
||
generated as follows:
|
||
|
||
gpg --gen-key
|
||
|
||
An individual file can be signed as follows:
|
||
|
||
gpg --detach-sign /path/to/file
|
||
|
||
For successful validation of all of VAS_EBOOT's subcomponents and the
|
||
loaded OS kernel, they must all be signed. One way to accomplish this
|
||
is the following (after having already produced the desired 'VasEBoot.cfg'
|
||
file, e.g., by running 'VasEBoot-mkconfig' (*note Invoking VasEBoot-mkconfig::):
|
||
|
||
# Edit /dev/shm/passphrase.txt to contain your signing key's passphrase
|
||
for i in `find /boot -name "*.cfg" -or -name "*.lst" -or \
|
||
-name "*.mod" -or -name "vmlinuz*" -or -name "initrd*" -or \
|
||
-name "VasEBootenv"`;
|
||
do
|
||
gpg --batch --detach-sign --passphrase-fd 0 $i < \
|
||
/dev/shm/passphrase.txt
|
||
done
|
||
shred /dev/shm/passphrase.txt
|
||
|
||
See also: *note check_signatures::, *note verify_detached::, *note
|
||
trust::, *note list_trusted::, *note distrust::, *note load_env::, *note
|
||
save_env::.
|
||
|
||
Note that internally signature enforcement is controlled by setting
|
||
the environment variable 'check_signatures' equal to 'enforce'. Passing
|
||
one or more '--pubkey' options to 'VasEBoot-mkimage' implicitly defines
|
||
'check_signatures' equal to 'enforce' in 'core.img' prior to processing
|
||
any configuration files.
|
||
|
||
Note that signature checking does *not* prevent an attacker with
|
||
(serial, physical, ...) console access from dropping manually to the
|
||
VAS_EBOOT console and executing:
|
||
|
||
set check_signatures=no
|
||
|
||
To prevent this, password-protection (*note Authentication and
|
||
authorisation::) is essential. Note that even with VAS_EBOOT password
|
||
protection, VAS_EBOOT itself cannot prevent someone with physical access to
|
||
the machine from altering that machine's firmware (e.g., Coreboot or
|
||
BIOS) configuration to cause the machine to boot from a different
|
||
(attacker-controlled) device. VAS_EBOOT is at best only one link in a secure
|
||
boot chain.
|
||
|
||
|
||
File: VasEBoot.info, Node: Using appended signatures, Next: UEFI secure boot and shim, Prev: Using GPG-style digital signatures, Up: Security
|
||
|
||
19.3 Using appended signatures in VAS_EBOOT
|
||
======================================
|
||
|
||
VAS_EBOOT supports verifying Linux-style 'appended signatures' for Linux on
|
||
Power LPAR secure boot. Appended signatures are PKCS#7 messages
|
||
containing a signature over the contents of a file, plus some metadata,
|
||
appended to the end of a file. A file with an appended signature ends
|
||
with the magic string:
|
||
|
||
~Module signature appended~\n
|
||
|
||
where '\n' represents the line feed character, '0x0a'.
|
||
|
||
Linux on Power LPAR secure boot is controlled by *'ibm,secure-boot'*
|
||
device tree property and if this property is set to '2' ('enforce'),
|
||
VAS_EBOOT enters lockdown mode. There are three secure boot modes. They are
|
||
|
||
* '0 - disabled': Secure boot is disabled. This is the default.
|
||
* '1 - audit': Enforce signature verification by setting
|
||
'check_appended_signatures' (*note check_appended_signatures::) to
|
||
'yes' and do not enter lockdown mode. Signature verification is
|
||
performed and if signature verification fails, display the errors
|
||
and allow the boot to continue.
|
||
* '2 - enforce': Enter lockdown mode and enforce signature
|
||
verification by setting 'check_appended_signatures' (*note
|
||
check_appended_signatures::) to 'yes'.
|
||
|
||
Note that Linux on Power LPAR only supports '0 - disabled' and '2 -
|
||
enforce', and '1 - audit' is considered as secure boot being disabled.
|
||
|
||
Enforcement of signature verification is controlled by the
|
||
environment variable 'check_appended_signatures' (*note
|
||
check_appended_signatures::).
|
||
|
||
* 'no': No verification is performed. This is the default.
|
||
* 'yes': Signature verification is performed and if signature
|
||
verification fails, display the errors and stop the boot.
|
||
Signature verification cannot be disabled by setting the
|
||
'check_appended_signatures' variable back to 'no'.
|
||
|
||
To enable appended signature verification, load the appendedsig
|
||
module and an X.509 certificate for verification. It is recommended to
|
||
build the appendedsig module into the core VAS_EBOOT image.
|
||
|
||
Key management is controlled by the environment variable
|
||
'appendedsig_key_mgmt' (*note appendedsig_key_mgmt::).
|
||
|
||
* 'static': Enforce static key management signature verification.
|
||
This is the default. When VAS_EBOOT is in lockdown mode, then the user
|
||
cannot change the value of the 'appendedsig_key_mgmt'.
|
||
* 'dynamic': Enforce dynamic key management signature verification.
|
||
When VAS_EBOOT is in lockdown mode, then the user cannot change the
|
||
value of the 'appendedsig_key_mgmt'.
|
||
|
||
In static key management mode, certificates will be built into the
|
||
core image using the '--x509' parameter to 'VasEBoot-mkimage'. The list of
|
||
trusted certificates available at boot time can be shown using
|
||
'append_list_db' (*note append_list_db::). Distrusted certificates can
|
||
be explicitly removed from the db using 'append_add_dbx_cert' (*note
|
||
append_add_dbx_cert::). Also, trusted certificates can be explicitly
|
||
added to the db using 'append_add_db_cert' (*note append_add_db_cert::).
|
||
|
||
In dynamic key management mode, db and dbx are read from the Platform
|
||
KeyStore (PKS). If db does not exist in PKS, static keys (built-in keys)
|
||
are used as the default keys. The list of trusted certificates and
|
||
binary hashes available at boot time can be shown using 'append_list_db'
|
||
(*note append_list_db::) and the list of distrusted certificates and
|
||
binary/certificate hashes available at boot time can be shown using
|
||
'append_list_dbx' (*note append_list_dbx::). The trusted certificates
|
||
and binary hashes can be explicitly added to the db using
|
||
'append_add_db_cert' (*note append_add_db_cert::) and
|
||
'append_add_db_hash' (*note append_add_db_hash::). Distrusted
|
||
certificates can be explicitly added to the dbx using
|
||
'append_add_dbx_cert' (*note append_add_dbx_cert::) and distrusted
|
||
certificate/binary hashes can be explicitly added to the dbx using
|
||
'append_add_dbx_hash' (*note append_add_dbx_hash::).
|
||
|
||
A file can be explicitly verified using 'append_verify' (*note
|
||
append_verify::).
|
||
|
||
Note that when the environment variable 'check_appended_signatures'
|
||
is set to 'yes', the 'append_add_db_cert' and 'append_add_dbx_cert'
|
||
commands only accept the file 'X509_CERTIFICATE' that is signed with an
|
||
appended signature (*note Signing certificate and hash files::), and the
|
||
'append_add_db_hash' and 'append_add_dbx_hash' commands only accept the
|
||
file 'HASH_FILE' that is signed with an appended signature (*note
|
||
Signing certificate and hash files::). The signature is verified by the
|
||
appendedsig module. When the environment variable
|
||
'check_appended_signatures' is set to 'no', these commands accept files
|
||
without an appended signature.
|
||
|
||
Also, note that 'X509_CERTIFICATE' should be in DER-format and
|
||
'HASH_FILE' should be in binary format. Only SHA-256, SHA-384, or
|
||
SHA-512 hashes of binary/certificate are allowed. Certificates/hashes
|
||
of certificates/binaries added through 'append_add_db_cert',
|
||
'append_add_dbx_cert', 'append_add_db_hash', and 'append_add_dbx_hash'
|
||
will not be persisted across boots.
|
||
|
||
Only signatures created using SHA-256 or SHA-512 hash algorithm along
|
||
with RSA keys of size 2048, 3072, or 4096 bits are supported.
|
||
|
||
A file can be signed with the 'sign-file' utility supplied with the
|
||
Linux kernel source. For example, if you have 'signing.key' as the
|
||
private key and 'certificate.der' as the X.509 certificate containing
|
||
the public key:
|
||
|
||
sign-file SHA256 signing.key certificate.der vmlinux vmlinux.signed
|
||
|
||
Once signature verification is turned on, the following file types
|
||
must carry appended signatures:
|
||
|
||
1. Linux kernels
|
||
2. VAS_EBOOT modules, except those built in to the core image
|
||
3. Any new certificate or binary hash files to be trusted
|
||
4. Any new certificate/binary hash files to be distrusted
|
||
|
||
When VAS_EBOOT is in lockdown mode (when secure boot mode is set to
|
||
'enforce'), signature verification cannot be *disabled* by setting the
|
||
'check_appended_signatures' (*note check_appended_signatures::) variable
|
||
to 'no' or using the 'load_env' (*note load_env::) command from the VAS_EBOOT
|
||
console.
|
||
|
||
|
||
File: VasEBoot.info, Node: UEFI secure boot and shim, Next: Secure Boot Advanced Targeting, Prev: Using appended signatures, Up: Security
|
||
|
||
19.4 UEFI secure boot and shim support
|
||
======================================
|
||
|
||
The VAS_EBOOT works with UEFI secure boot and the shim. This functionality
|
||
is provided by the shim_lock verifier. It is built into the 'core.img'
|
||
and is registered if the UEFI secure boot is enabled. The 'shim_lock'
|
||
variable is set to 'y' when shim_lock verifier is registered. If it is
|
||
desired to use UEFI secure boot without shim, one can disable shim_lock
|
||
by disabling shim verification with MokSbState UEFI variable or by
|
||
building VasEBoot image with '--disable-shim-lock' option.
|
||
|
||
All VAS_EBOOT modules not stored in the 'core.img', OS kernels, ACPI
|
||
tables, Device Trees, etc. have to be signed, e.g, using PGP.
|
||
Additionally, the commands that can be used to subvert the UEFI secure
|
||
boot mechanism, such as 'iorw' and 'memrw' will not be available when
|
||
the UEFI secure boot is enabled. This is done for security reasons and
|
||
are enforced by the VAS_EBOOT Lockdown mechanism (*note Lockdown::).
|
||
|
||
|
||
File: VasEBoot.info, Node: Secure Boot Advanced Targeting, Next: Measured Boot, Prev: UEFI secure boot and shim, Up: Security
|
||
|
||
19.5 Embedded information for generation number based revocation
|
||
================================================================
|
||
|
||
The Secure Boot Advanced Targeting (SBAT) is a mechanism to allow the
|
||
revocation of components in the boot path by using generation numbers
|
||
embedded into the EFI binaries. The SBAT metadata is located in an
|
||
.sbat data section that has set of UTF-8 strings as comma-separated
|
||
values (CSV). See <https://github.com/rhboot/shim/blob/main/SBAT.md> for
|
||
more details.
|
||
|
||
To add a data section containing the SBAT information into the
|
||
binary, the '--sbat' option of 'VasEBoot-mkimage' command should be used.
|
||
The content of a CSV file, encoded with UTF-8, is copied as is to the
|
||
.sbat data section into the generated EFI binary. The CSV file can be
|
||
stored anywhere on the file system.
|
||
|
||
VasEBoot-mkimage -O x86_64-efi -o VasEBootx64.efi -p '(tftp)/VasEBoot' --sbat sbat.csv efinet tftp
|
||
|
||
|
||
File: VasEBoot.info, Node: Measured Boot, Next: Lockdown, Prev: Secure Boot Advanced Targeting, Up: Security
|
||
|
||
19.6 Measuring boot components
|
||
==============================
|
||
|
||
If the tpm module is loaded and the platform has a Trusted Platform
|
||
Module installed, VAS_EBOOT will log each command executed and each file
|
||
loaded into the TPM event log and extend the PCR values in the TPM
|
||
correspondingly. All events will be logged into the PCR described below
|
||
with a type of EV_IPL and an event description as described below.
|
||
|
||
Event type PCR Description
|
||
---------------------------------------------------------------------------
|
||
Command 8 All executed commands (including those
|
||
from configuration files) will be logged
|
||
and measured as entered with a prefix of
|
||
"VasEBoot_cmd: "
|
||
Kernel command line 8 Any command line passed to a kernel will
|
||
be logged and measured as entered with a
|
||
prefix of "kernel_cmdline: "
|
||
Module command line 8 Any command line passed to a kernel
|
||
module will be logged and measured as
|
||
entered with a prefix of "module_cmdline:
|
||
"
|
||
Files 9 Any file read by VAS_EBOOT will be logged and
|
||
measured with a descriptive text
|
||
corresponding to the filename.
|
||
|
||
VAS_EBOOT will not measure its own 'core.img' - it is expected that
|
||
firmware will carry this out. VAS_EBOOT will also not perform any
|
||
measurements until the tpm module is loaded. As such it is recommended
|
||
that the tpm module be built into 'core.img' in order to avoid a
|
||
potential gap in measurement between 'core.img' being loaded and the tpm
|
||
module being loaded.
|
||
|
||
Measured boot is currently only supported on EFI and IBM IEEE1275
|
||
PowerPC platforms.
|
||
|
||
|
||
File: VasEBoot.info, Node: Lockdown, Next: TPM2 key protector, Prev: Measured Boot, Up: Security
|
||
|
||
19.7 Lockdown when booting on a secure setup
|
||
============================================
|
||
|
||
The VAS_EBOOT can be locked down when booted on a secure boot environment,
|
||
for example if UEFI or Power secure boot is enabled. On a locked down
|
||
configuration, the VAS_EBOOT will be restricted and some operations/commands
|
||
cannot be executed. This also includes limiting which filesystems are
|
||
supported to those thought to be more robust and widely used within
|
||
VAS_EBOOT.
|
||
|
||
The filesystems currently allowed in lockdown mode include:
|
||
* BtrFS
|
||
* cpio
|
||
* exFAT
|
||
* Enhanced Read-Only File System (EROFS)
|
||
* Linux ext2/ext3/ext4
|
||
* F2FS
|
||
* DOS FAT12/FAT16/FAT32
|
||
* HFS+
|
||
* ISO9660
|
||
* Squash4
|
||
* tar
|
||
* XFS
|
||
* ZFS
|
||
|
||
The filesystems currently not allowed in lockdown mode include:
|
||
* Amiga Fast FileSystem (AFFS)
|
||
* AtheOS File System (AFS)
|
||
* Bee File System (BFS)
|
||
* Coreboot File System (CBFS)
|
||
* Hierarchical File System (HFS)
|
||
* Journaled File System (JFS)
|
||
* Minix filesystem
|
||
* New Implementation of Log filesystem (nilfs2)
|
||
* Windows New Technology File System (NTFS)
|
||
* ReiserFS
|
||
* Read-Only Memory File System (ROMFS)
|
||
* Amiga Smart File System (SFS)
|
||
* Universal Disk Format (UDF)
|
||
* Unix File System (UFS)
|
||
|
||
The 'lockdown' variable is set to 'y' when the VAS_EBOOT is locked down.
|
||
Otherwise it does not exist.
|
||
|
||
|
||
File: VasEBoot.info, Node: TPM2 key protector, Next: Signing certificate and hash files, Prev: Lockdown, Up: Security
|
||
|
||
19.8 TPM2 key protector in VAS_EBOOT
|
||
===============================
|
||
|
||
TPM2 key protector extends measured boot to unlock the encrypted
|
||
partition without user intervention. It uses the TPM Storage Root Key
|
||
(SRK) to seal the disk key with a given set of PCR values. If the
|
||
system state matches, i.e. PCR values match the sealed PCR set, TPM2
|
||
key protector unseals the disk key for 'cryptomount' (*note
|
||
cryptomount::) to unlock the encrypted partition. In case the unsealed
|
||
key fails to unlock the partition, 'cryptomount' falls back to the
|
||
passphrase prompt.
|
||
|
||
Please note that TPM2 key protector uses the SRK in the owner
|
||
hierarchy _without_ authorization. If the owner hierarchy is
|
||
password-protected, TPM2 key protector may fail to unseal the key due to
|
||
the absence of the password. For the systems that already enable the
|
||
password protection for the owner hierarchy, the following command
|
||
removes the password protection with the existing password.
|
||
|
||
# tpm2_changeauth -c owner -p password
|
||
|
||
There are two supported modes to store the sealed key, SRK and NV
|
||
index. The details will be addressed in later sections.
|
||
|
||
TPM2 key protector is currently only supported on EFI and EMU
|
||
platforms.
|
||
|
||
19.8.1 TPM PCR usage
|
||
--------------------
|
||
|
||
Since TPM2 key protector relies on PCRs to check the system state, it is
|
||
important to decide which PCRs to seal the key with. The following
|
||
table lists uses of PCRs and the measured objects on EFI platforms.
|
||
|
||
PCR Used by Measured Objects
|
||
--------------------------------------------------------------------------
|
||
0 Firmware Core system firmware executable code
|
||
1 Firmware Core system firmware data/host platform
|
||
configuration; typically contains serial and
|
||
model numbers
|
||
2 Firmware Extended or pluggable executable code; includes
|
||
option ROMs on pluggable hardware
|
||
3 Firmware Extended or pluggable firmware data; includes
|
||
information about pluggable hardware
|
||
4 Firmware Boot loader and additional drivers; binaries and
|
||
extensions loaded by the boot loader
|
||
5 Firmware GPT/Partition table
|
||
7 Firmware SecureBoot state
|
||
8 VAS_EBOOT Commands and kernel command line
|
||
9 VAS_EBOOT All files read (including kernel image)
|
||
9 Linux Kernel All passed initrds (when the new LOAD_FILE2
|
||
initrd protocol is used)
|
||
10 Linux Kernel Protection of the IMA measurement log
|
||
14 shim “MOK” certificates and hashes
|
||
|
||
PCR 0, 2, 4, and 7 can be used to check the integrity of the firmware
|
||
code and bootloaders. PCR 8 and 9 are useful to check the file and data
|
||
processed by VAS_EBOOT. PCRs 10, 11, 12, 13, and 15 are controlled by the
|
||
operating system, so those PCRs are usually still in the initial state
|
||
when VAS_EBOOT is running.
|
||
|
||
In general, it is nice to include PCR 0, 2, 4, and 7 to ensure the
|
||
integrity of the firmware and bootloaders. For PCR 8 and 9, a
|
||
sophisticated tool is required to examine the VAS_EBOOT configuration files
|
||
and the files to be loaded to calculate the correct PCR values.
|
||
|
||
Please note that PCRs are sensitive to any change, so an update of a
|
||
component could invalidate the sealed key, due to the so-called PCR
|
||
brittleness. For the bootloader update, PCR 4 may be affected. This
|
||
can be mitigated by extracting the events from the TPM event log and
|
||
predict the value with the updated bootloader binary. On the other
|
||
hand, it is difficult to predict PCR 0~7 after a firmware update since
|
||
the content of the code and the order of drivers may not follow the TPM
|
||
event log from the previous firmware version, so it is necessary to
|
||
reboot the system to update the measurement results of PCR 0~7 and seal
|
||
or sign the sealed key again.
|
||
|
||
Reference: Linux TPM PCR Registry
|
||
(https://uapi-group.org/specifications/specs/linux_tpm_pcr_registry/)
|
||
|
||
19.8.2 Setting up the extra disk key
|
||
------------------------------------
|
||
|
||
Instead of using the existing password, it is recommended to seal a new
|
||
random disk key and use the existing password for recovery.
|
||
|
||
Here are the sample commands to create a 128 random bytes key file
|
||
and enroll the key into the target partition (sda2).
|
||
|
||
# dd if=/dev/urandom of=luks.key bs=1 count=128
|
||
# cryptsetup luksAddKey /dev/sda2 luks.key --pbkdf=pbkdf2 --hash=sha512
|
||
|
||
19.8.3 SRK mode
|
||
---------------
|
||
|
||
To unlock the partition with SRK mode, assume that the sealed key is in
|
||
'(hd0,gpt1)/efi/VasEBoot/sealed.tpm', the following VAS_EBOOT commands unseal the
|
||
disk key with SRK mode and supply it to 'cryptomount'.
|
||
|
||
VasEBoot> tpm2_key_protector_init -T (hd0,gpt1)/efi/VasEBoot/sealed.tpm
|
||
VasEBoot> cryptomount -u <UUID> -P tpm2
|
||
|
||
There are two programs to create the sealed key for SRK mode:
|
||
'VasEBoot-protect' and 'pcr-oracle'
|
||
(<https://github.com/okirch/pcr-oracle>).
|
||
|
||
The following sample command uses 'VasEBoot-protect' to seal the random
|
||
key, 'luks.key', with PCR 0, 2, 4 and 7 in TPM 2.0 Key File format.
|
||
|
||
# VasEBoot-protect --action=add \
|
||
--protector=tpm2 \
|
||
--tpm2-pcrs=0,2,4,7 \
|
||
--tpm2key \
|
||
--tpm2-keyfile=luks.key \
|
||
--tpm2-outfile=/boot/efi/efi/VasEBoot/sealed.tpm
|
||
|
||
'VasEBoot-protect' only seals the key with the current PCR values.
|
||
Therefore, when a boot component, such as shim or VAS_EBOOT, is updated, it
|
||
is necessary to reboot the system to update the measurement results and
|
||
seal the key again. That means the random disk key has to be stored in
|
||
cleartext for the next key sealing. Besides this, the measurement
|
||
result of some PCRs may differ between boot time and OS runtime. For
|
||
example, PCR 9 measures the files loaded by VAS_EBOOT including the Linux
|
||
kernel and initrd. To unlock the disk containing the kernel and initrd,
|
||
the key has to be sealed with PCR 9 value before loading the kernel and
|
||
initrd. However, PCR 9 changes after VAS_EBOOT loading the kernel and
|
||
initrd, so PCR 9 at OS runtime cannot be used directly for key sealing.
|
||
|
||
To solve these problems, 'pcr-oracle' takes a different approach. It
|
||
reads the TPM eventlog and predicts the PCR values. Besides,
|
||
'pcr-oracle' also supports "authorized policy" which allows the PCR
|
||
policy to be updated with a valid signature, so that the user only seals
|
||
the random disk key once. If at some later time the PCR values change
|
||
due to an update of the system firmware, bootloader, or config file, the
|
||
user just needs to update the signature of the PCR policy.
|
||
|
||
To seal the key with the authorized policy, the first thing is to
|
||
generate the RSA policy key, 'policy-key.pem', and the authorized policy
|
||
file, 'authorized.policy'. In this example, PCR 0, 2, 4, 7 and 9 are
|
||
chosen for key sealing.
|
||
|
||
# pcr-oracle --rsa-generate-key \
|
||
--private-key policy-key.pem \
|
||
--auth authorized.policy \
|
||
create-authorized-policy 0,2,4,7,9
|
||
|
||
Then, we seal the random disk key, 'luks.key', with the authorized
|
||
policy file and save the sealed key in 'sealed.key'.
|
||
|
||
# pcr-oracle --key-format tpm2.0 \
|
||
--auth authorized.policy \
|
||
--input luks.key \
|
||
--output sealed.key \
|
||
seal-secret
|
||
|
||
Since we now have the sealed key, we can remove the random disk key
|
||
file 'luks.key'.
|
||
|
||
The last step is to sign the predicted PCR policy and save the final
|
||
key file, 'sealed.tpm'.
|
||
|
||
# pcr-oracle --key-format tpm2.0 \
|
||
--private-key policy-key.pem \
|
||
--from eventlog \
|
||
--stop-event "VasEBoot-file=VasEBoot.cfg" \
|
||
--after \
|
||
--input sealed.key \
|
||
--output /boot/efi/efi/VasEBoot/sealed.tpm \
|
||
sign 0,2,4,7,9
|
||
|
||
Here we also set a stop event for the prediction. With '--stop-event
|
||
VasEBoot-file=VasEBoot.cfg --after', 'pcr-oracle' stops the calculation of PCR
|
||
values right after VAS_EBOOT loads 'VasEBoot.cfg'.
|
||
|
||
When/After the shim or VAS_EBOOT are updated, it only requires to run the
|
||
last 'pcr-oracle' command to update the predicted PCR policy.
|
||
|
||
19.8.4 NV index mode
|
||
--------------------
|
||
|
||
Instead of storing the sealed key in a file, NV index mode uses the TPM
|
||
non-volatile memory to store the sealed key and could be useful when
|
||
accessing the file is not possible.
|
||
|
||
However, the Linux root user must be careful who she/he gives access
|
||
to the TPM (tss group) since those users will also be able to modify the
|
||
NV index that's holding the key.
|
||
|
||
There are two types of TPM handles supported by NV index mode:
|
||
persistent handle and NV index handle.
|
||
|
||
19.8.4.1 Persistent handle
|
||
..........................
|
||
|
||
The range of persistent handles is from '0x81000000' to '0x81FFFFFF'.
|
||
The persistent handle is designed to make TPM objects persistent through
|
||
power cycles, and only TPM objects, such as RSA or EC keys, are
|
||
accepted. Thus, only the raw format is supported by persistent handles.
|
||
The following shows the 'VasEBoot-protect' command to seal the disk key
|
||
'luks.key' into the persistent handle '0x81000000' with the PCRs
|
||
'0,2,4,7'.
|
||
|
||
# VasEBoot-protect \
|
||
--protector=tpm2 \
|
||
--action=add \
|
||
--tpm2-bank=sha256 \
|
||
--tpm2-pcrs=0,2,4,7 \
|
||
--tpm2-keyfile=luks.key \
|
||
--tpm2-nvindex=0x81000000
|
||
|
||
To unseal the key, we have to specify the mode 'nv', the persistent
|
||
handle '0x81000000', and the PCRs '0,2,4,7' for the
|
||
'tpm2_key_protector_init' command.
|
||
|
||
VasEBoot> tpm2_key_protector_init --mode=nv --nvindex=0x81000000 --pcrs=0,2,4,7
|
||
VasEBoot> cryptomount -u <UUID> --protector tpm2
|
||
|
||
If the key in the persistent handle becomes unwanted, the following
|
||
'VasEBoot-protect' command removes the specified persistent handle
|
||
'0x81000000'.
|
||
|
||
# VasEBoot-protect \
|
||
--protector=tpm2 \
|
||
--action=remove \
|
||
--tpm2-evict \
|
||
--tpm2-nvindex=0x81000000
|
||
|
||
19.8.4.2 NV index handle
|
||
........................
|
||
|
||
The range of NV index handles is from '0x1000000' to '0x1FFFFFF'.
|
||
Unlike the persistent handle, the NV index handle allows user-defined
|
||
data, so it can easily support both the TPM 2.0 Key File format as well
|
||
as the raw format.
|
||
|
||
The following 'VasEBoot-protect' command seals the disk key 'luks.key'
|
||
into the NV index handle '0x1000000' with the PCRs '0,2,4,7' while using
|
||
the TPM 2.0 Key File format.
|
||
|
||
# VasEBoot-protect \
|
||
--protector=tpm2 \
|
||
--action=add \
|
||
--tpm2key \
|
||
--tpm2-bank=sha256 \
|
||
--tpm2-pcrs=0,2,4,7 \
|
||
--tpm2-keyfile=luks.key \
|
||
--tpm2-nvindex=0x1000000
|
||
|
||
Furthermore, it is also possible to insert an existing key file,
|
||
'sealed.tpm', into a specific NV index handle using the following
|
||
tpm2-tools (<https://github.com/tpm2-software/tpm2-tools>) commands.
|
||
|
||
# tpm2_nvdefine -C o \
|
||
-a "ownerread|ownerwrite" \
|
||
-s $(stat -c %s sealed.tpm) \
|
||
0x1000000
|
||
# tpm2_nvwrite -C o -i sealed.tpm 0x1000000
|
||
|
||
When unsealing the key in TPM 2.0 Key File format, only the mode 'nv'
|
||
and the NV index handle '0x1000000' have to be specified for the
|
||
'tpm2_key_protector_init' command.
|
||
|
||
VasEBoot> tpm2_key_protector_init --mode=nv --nvindex=0x1000000
|
||
VasEBoot> cryptomount -u <UUID> --protector tpm2
|
||
|
||
The following 'VasEBoot-protect' command allows to remove the specified
|
||
NV index handle '0x1000000'.
|
||
|
||
# VasEBoot-protect \
|
||
--protector=tpm2 \
|
||
--action=remove \
|
||
--tpm2-evict \
|
||
--tpm2-nvindex=0x1000000
|
||
|
||
19.8.5 Setting up software TPM for EMU platform
|
||
-----------------------------------------------
|
||
|
||
In order to test TPM2 key protector and TPM2 Software Stack (TSS2), it
|
||
is useful to set up a software TPM (swtpm) instance and run the commands
|
||
on the EMU platform.
|
||
|
||
Here are the commands to start a swtpm instance which provides a
|
||
character device interface. To store the TPM states, the directory,
|
||
'swtpm-state', is created before the 'swtpm' command. All the messages
|
||
are stored in 'swtpm.log' including the name of the character device.
|
||
|
||
# mkdir swtpm-state
|
||
# swtpm chardev --vtpm-proxy --tpmstate dir=swtpm-state \
|
||
--tpm2 --ctrl type=unixio,path="swtpm-state/ctrl" \
|
||
--flags startup-clear --daemon > swtpm.log
|
||
|
||
Then, we extract the name of the character device from 'swtpm.log'
|
||
and save it to the variable, 'tpm2dev'.
|
||
|
||
# tpm2dev=$(grep "New TPM device" swtpm.log | cut -d' ' -f 4)
|
||
|
||
Now we can start 'VasEBoot-emu' with '--tpm-device $tpm2dev' to interact
|
||
with the swtpm instance.
|
||
|
||
# VasEBoot-emu --tpm-device $tpm2dev
|
||
|
||
On the host, the tpm2-tools commands can interact with the swtpm
|
||
instance by setting 'TPM2TOOLS_TCTI'.
|
||
|
||
# export TPM2TOOLS_TCTI="device:$tpm2dev"
|
||
|
||
When the test is done, use 'swtpm_ioctl' to send the shutdown command
|
||
through the swtpm control channel.
|
||
|
||
# swtpm_ioctl -s --unix swtpm-state/ctrl
|
||
|
||
19.8.6 Command line and menuentry editor protection
|
||
---------------------------------------------------
|
||
|
||
The TPM key protector provides full disk encryption support on servers
|
||
or virtual machine images, meanwhile keeping the boot process
|
||
unattended. This prevents service disruptions by eliminating the need
|
||
for manual password input during startup, improving system uptime and
|
||
continuity. It is achieved by TPM, which verifies the integrity of boot
|
||
components by checking cryptographic hashes against securely stored
|
||
values, to confirm the disks are unlocked in a trusted state.
|
||
|
||
However, for users to access the system interactively, some form of
|
||
authentication is still required, as the disks are not unlocked by an
|
||
authorized user. This raised concerns about using an unprotected
|
||
'command-line interface' (*note Command-line interface::), as anyone
|
||
could execute commands to access decrypted data. To address this issue,
|
||
the LUKS password is used to ensure that only authorized users are
|
||
granted access to the interface. Additionally, the 'menu entry editor'
|
||
(*note Menu entry editor::) is also safeguarded by the LUKS password, as
|
||
modifying a boot entry is effectively the same as altering the
|
||
'VasEBoot.cfg' file read from encrypted files.
|
||
|
||
It is worth mentioning that the built-in password support, as
|
||
described in 'Authentication and Authorization in VAS_EBOOT' (*note
|
||
Authentication and authorisation::), can also be used to protect the
|
||
command-line interface from unauthorized access. However, it is not
|
||
recommended to rely on this approach as it is an optional step. Setting
|
||
it up requires additional manual intervention, which increases the risk
|
||
of password leakage during the process. Moreover, the superuser list
|
||
must be well maintained, and the password used cannot be synchronized
|
||
with LUKS key rotation.
|
||
|
||
|
||
File: VasEBoot.info, Node: Signing certificate and hash files, Next: Signing VAS_EBOOT itself, Prev: TPM2 key protector, Up: Security
|
||
|
||
19.9 Signing certificate and hash files
|
||
=======================================
|
||
|
||
X.509 certificate (public key) files and hash files (binary/certificate
|
||
hash files) can be signed with a Linux kernel module-style appended
|
||
signature.
|
||
|
||
The signer.key is a private key used for signing and signer.der is
|
||
the corresponding public key (certificate) used for appended signature
|
||
verification. Note that the signer.der (certificate) should exist in
|
||
the db (*note Using appended signatures::).
|
||
|
||
* Signing the X.509 certificate file using 'sign-file'. The
|
||
kernel.der is an X.509 certificate file.
|
||
|
||
sign-file SHA256 signer.key signer.der kernel.der \
|
||
kernel.der.signed
|
||
|
||
* Signing the hash file using 'sign-file'. The binary_hash.bin is a
|
||
binary hash file.
|
||
|
||
sign-file SHA256 signer.key signer.der binary_hash.bin \
|
||
binary_hash.signed
|
||
|
||
|
||
|
||
File: VasEBoot.info, Node: Signing VAS_EBOOT itself, Next: Hardening, Prev: Signing certificate and hash files, Up: Security
|
||
|
||
19.10 Signing VAS_EBOOT itself
|
||
=========================
|
||
|
||
To ensure a complete secure-boot chain, there must be a way for the code
|
||
that loads VAS_EBOOT to verify the integrity of the core image. This is
|
||
ultimately platform-specific and individual platforms can define their
|
||
own mechanisms. However, there are general-purpose mechanisms that can
|
||
be used with VAS_EBOOT.
|
||
|
||
19.10.1 Signing VAS_EBOOT for UEFI secure boot
|
||
-----------------------------------------
|
||
|
||
On UEFI platforms, 'core.img' is a PE binary. Therefore, it can be
|
||
signed with a tool such as 'pesign' or 'sbsign'. Refer to the
|
||
suggestions in *note UEFI secure boot and shim:: to ensure that the
|
||
final image works under UEFI secure boot and can maintain the
|
||
secure-boot chain. It will also be necessary to enroll the public key
|
||
used into a relevant firmware key database.
|
||
|
||
19.10.2 Signing VAS_EBOOT with an appended signature
|
||
-----------------------------------------------
|
||
|
||
The 'core.elf' itself can be signed with a Linux kernel module-style
|
||
appended signature (*note Using appended signatures::). To support
|
||
IEEE1275 platforms where the boot image is often loaded directly from a
|
||
disk partition rather than from a file system, the 'core.elf' can
|
||
specify the size and location of the appended signature with an ELF Note
|
||
added by 'VasEBoot-install' or 'VasEBoot-mkimage'. An image can be signed this
|
||
way using the 'sign-file' command from the Linux kernel:
|
||
|
||
* Signing a VAS_EBOOT image using a single signer key. The VasEBoot.key is
|
||
your private key used for VAS_EBOOT signing, VasEBoot.der is a corresponding
|
||
public key (certificate) used for VAS_EBOOT signature verification, and
|
||
the kernel.der is your public key (certificate) used for kernel
|
||
signature verification.
|
||
# Determine the size of the appended signature. It depends on the
|
||
# signing key and the hash algorithm.
|
||
#
|
||
# Signing /dev/null with an appended signature.
|
||
|
||
sign-file SHA256 VasEBoot.key VasEBoot.der /dev/null ./empty.sig
|
||
|
||
# Build a VAS_EBOOT image for the signature.
|
||
|
||
VasEBoot-mkimage -O powerpc-ieee1275 -o core.elf.unsigned -x kernel.der \
|
||
-p /VasEBoot --appended-signature-size $(stat -c '%s' ./empty.sig) \
|
||
--modules="appendedsig ..." ...
|
||
|
||
# Remove the signature file.
|
||
|
||
rm ./empty.sig
|
||
|
||
# Signing a VAS_EBOOT image with an appended signature.
|
||
|
||
sign-file SHA256 VasEBoot.key VasEBoot.der core.elf.unsigned core.elf.signed
|
||
|
||
* Signing a VAS_EBOOT image using more than one signer key. The VasEBoot1.key
|
||
and VasEBoot2.key are private keys used for VAS_EBOOT signing, VasEBoot1.der and
|
||
VasEBoot2.der are corresponding public keys (certificates) used for
|
||
VAS_EBOOT signature verification. The kernel1.der and kernel2.der are
|
||
your public keys (certificates) used for kernel signature
|
||
verification.
|
||
# Generate a signature by signing /dev/null.
|
||
|
||
openssl cms -sign -binary -nocerts -in /dev/null -signer \
|
||
VasEBoot1.der -inkey VasEBoot1.key -signer VasEBoot2.der -inkey VasEBoot2.key \
|
||
-out ./empty.p7s -outform DER -noattr -md sha256
|
||
|
||
# To be able to determine the size of an appended signature, sign an
|
||
# empty file (/dev/null) to which a signature will be appended to.
|
||
|
||
sign-file -s ./empty.p7s sha256 /dev/null /dev/null ./empty.sig
|
||
|
||
# Build a VAS_EBOOT image for the signature.
|
||
|
||
VasEBoot-mkimage -O powerpc-ieee1275 -o core.elf.unsigned -x kernel1.der \
|
||
kernel2.der -p /VasEBoot --appended-signature-size $(stat -c '%s' ./empty.sig) \
|
||
--modules="appendedsig ..." ...
|
||
|
||
# Remove the signature files.
|
||
|
||
rm ./empty.sig ./empty.p7s
|
||
|
||
# Generate a raw signature for VAS_EBOOT image signing using OpenSSL.
|
||
|
||
openssl cms -sign -binary -nocerts -in core.elf.unsigned -signer \
|
||
VasEBoot1.der -inkey VasEBoot1.key -signer VasEBoot2.der -inkey VasEBoot2.key \
|
||
-out core.p7s -outform DER -noattr -md sha256
|
||
|
||
# Sign a VAS_EBOOT image to get an image file with an appended signature.
|
||
|
||
sign-file -s core.p7s sha256 /dev/null core.elf.unsigned core.elf.signed
|
||
|
||
* Don't forget to install the signed image as required (e.g. on
|
||
powerpc-ieee1275, to the PReP partition).
|
||
# Install signed VAS_EBOOT image to the PReP partition on powerpc-ieee1275
|
||
|
||
dd if=core.elf.signed of=/dev/sda1
|
||
|
||
|
||
As with UEFI secure boot, it is necessary to build-in the required
|
||
modules, or sign them if they are not part of the VAS_EBOOT image.
|
||
|
||
|
||
File: VasEBoot.info, Node: Hardening, Prev: Signing VAS_EBOOT itself, Up: Security
|
||
|
||
19.11 Hardening
|
||
===============
|
||
|
||
Security hardening involves additional / optional configuration and
|
||
customization steps to VAS_EBOOT to maximize security. The extent to which
|
||
hardening can be accomplished depends on the threats attempting to be
|
||
mitigated for a given system / device, the device architecture, and
|
||
number of VAS_EBOOT features required. The following is a listing of
|
||
hardening steps which may be considered:
|
||
|
||
* (EFI Only) Enable secure boot to enable lockdown mode. This will
|
||
limit the attack surface of VAS_EBOOT by limiting the commands and file
|
||
systems supported. (*note Lockdown::)
|
||
* (EFI Only) No-Execute capability of memory segments will be
|
||
configured by VAS_EBOOT as indicated by the UEFI. This makes some
|
||
classes of vulnerabilities more difficult to exploit by providing
|
||
support for marking memory as either writable or executable.
|
||
* (EFI Only) While building VAS_EBOOT, the stack protector feature may be
|
||
enabled during the configuration step. This feature can make
|
||
certain vulnerabilities caused by stack buffer overflows more
|
||
difficult to exploit. This can be enabled by including the
|
||
"-enable-stack-protector" flag to the configure script:
|
||
# ./configure --enable-stack-protector
|
||
Please reference the file 'INSTALL' for detailed instructions on
|
||
how to build VAS_EBOOT.
|
||
* Minimize the installed modules included with the VAS_EBOOT installation.
|
||
For instance, if a specific file system is used for a given system,
|
||
modules for other file systems may be excluded. *note Modules::
|
||
for a list of modules.
|
||
* Minimize boot sources. In the VAS_EBOOT configuration, reduce the
|
||
possible boot sources to the minimum needed for system operation.
|
||
For instance, if booting only from an internal drive, remove
|
||
support for network booting and booting from removable media.
|
||
* Disable network support in VAS_EBOOT if not required. Ensure network
|
||
interfaces are not configured in the VAS_EBOOT configuration and
|
||
consider setting environment variable 'feature_net_search_cfg' to
|
||
'n' in an embedded VAS_EBOOT config file in order to disable attempting
|
||
to use the network for obtaining a VAS_EBOOT config file.
|
||
|
||
|
||
File: VasEBoot.info, Node: Platform limitations, Next: Platform-specific operations, Prev: Security, Up: Top
|
||
|
||
20 Platform limitations
|
||
***********************
|
||
|
||
VAS_EBOOT2 is designed to be portable and is actually ported across
|
||
platforms. We try to keep all platforms at the level. Unfortunately
|
||
some platforms are better supported than others. This is detailed in
|
||
current and 2 following sections.
|
||
|
||
All platforms have an artificially VAS_EBOOT imposed disk size restriction
|
||
of 1 EiB. In some cases, larger disk sizes can be used, but access will
|
||
not be allowed beyond 1 EiB.
|
||
|
||
LUKS2 devices with size larger than 16 EiB are currently not
|
||
supported. They can not be created as crypto devices by cryptomount, so
|
||
can not even be partially read from. LUKS have no limitations other
|
||
than those imposed by the format.
|
||
|
||
ARC platform is unable to change datetime (firmware doesn't seem to
|
||
provide a function for it). EMU has similar limitation.
|
||
|
||
On EMU platform no serial port is available.
|
||
|
||
Console charset refers only to firmware-assisted console. gfxterm is
|
||
always Unicode (see Internationalisation section for its limitations).
|
||
Serial is configurable to UTF-8 or ASCII (see Internationalisation). In
|
||
case of qemu and coreboot ports the referred console is vga_text.
|
||
Loongson always uses gfxterm.
|
||
|
||
Most limited one is ASCII. CP437 provides additionally
|
||
pseudographics. VAS_EBOOT2 doesn't use any language characters from CP437 as
|
||
often CP437 is replaced by national encoding compatible only in
|
||
pseudographics. Unicode is the most versatile charset which supports
|
||
many languages. However the actual console may be much more limited
|
||
depending on firmware
|
||
|
||
On BIOS, network is supported only if the image is loaded through
|
||
network. On sparc64, VAS_EBOOT is unable to determine which server it was
|
||
booted from.
|
||
|
||
Direct ATA/AHCI support allows to circumvent various firmware
|
||
limitations but isn't needed for normal operation except on baremetal
|
||
ports.
|
||
|
||
AT keyboard support allows keyboard layout remapping and support for
|
||
keys not available through firmware. It isn't needed for normal
|
||
operation except baremetal ports.
|
||
|
||
Speaker allows morse and spkmodem communication.
|
||
|
||
USB support provides benefits similar to ATA (for USB disks) or AT
|
||
(for USB keyboards). In addition it allows USBserial.
|
||
|
||
Chainloading refers to the ability to load another bootloader through
|
||
the same protocol and on some platforms, like EFI, allow that bootloader
|
||
to return to the VAS_EBOOT.
|
||
|
||
Hints allow faster disk discovery by already knowing in advance which
|
||
is the disk in question. On some platforms hints are correct unless you
|
||
move the disk between boots. On other platforms it's just an educated
|
||
guess. Note that hint failure results in just reduced performance, not
|
||
a failure
|
||
|
||
BadRAM is the ability to mark some of the RAM as "bad". Note: due to
|
||
protocol limitations mips-loongson (with Linux protocol) and
|
||
mips-qemu_mips can use only memory up to first hole.
|
||
|
||
Bootlocation is ability of VAS_EBOOT to automatically detect where it
|
||
boots from. "disk" means the detection is limited to detecting the disk
|
||
with partition being discovered on install time. "partition" means that
|
||
disk and partiton can be automatically discovered. "file" means that
|
||
boot image file name as well as disk and partition can be discovered.
|
||
For consistency, default install ignores partition and relies solely on
|
||
disk detection. If no bootlocation discovery is available or boot and
|
||
VasEBoot-root disks are different, UUID is used instead. On ARC if no
|
||
device to install to is specified, UUID is used instead as well.
|
||
|
||
BIOS Coreboot Multiboot Qemu
|
||
video yes yes yes yes
|
||
console CP437 CP437 CP437 CP437
|
||
charset
|
||
network yes (*) no no no
|
||
ATA/AHCI yes yes yes yes
|
||
AT keyboard yes yes yes yes
|
||
Speaker yes yes yes yes
|
||
USB yes yes yes yes
|
||
chainloader local yes yes no
|
||
cpuid partial partial partial partial
|
||
rdmsr partial partial partial partial
|
||
wrmsr partial partial partial partial
|
||
hints guess guess guess guess
|
||
PCI yes yes yes yes
|
||
badram yes yes yes yes
|
||
compression always pointless no no
|
||
exit yes no no no
|
||
bootlocation disk no no no
|
||
|
||
ia32 EFI amd64 EFI ia32 Itanium
|
||
IEEE1275
|
||
video yes yes no no
|
||
console Unicode Unicode ASCII Unicode
|
||
charset
|
||
network yes yes yes yes
|
||
ATA/AHCI yes yes yes no
|
||
AT keyboard yes yes yes no
|
||
Speaker yes yes yes no
|
||
USB yes yes yes no
|
||
chainloader local local no local
|
||
cpuid partial partial partial no
|
||
rdmsr partial partial partial no
|
||
wrmsr partial partial partial no
|
||
hints guess guess good guess
|
||
PCI yes yes yes no
|
||
badram yes yes no yes
|
||
compression no no no no
|
||
exit yes yes yes yes
|
||
bootlocation file file file, file
|
||
ignored
|
||
|
||
Loongson sparc64 Powerpc ARC
|
||
video yes no yes no
|
||
console N/A ASCII ASCII ASCII
|
||
charset
|
||
network no yes (*) yes no
|
||
ATA/AHCI yes no no no
|
||
AT keyboard yes no no no
|
||
Speaker no no no no
|
||
USB yes no no no
|
||
chainloader yes no no no
|
||
cpuid no no no no
|
||
rdmsr no no no no
|
||
wrmsr no no no no
|
||
hints good good good no
|
||
PCI yes no no no
|
||
badram yes (*) no no no
|
||
compression configurable no no configurable
|
||
exit no yes yes yes
|
||
bootlocation no partition file file (*)
|
||
|
||
MIPS qemu emu xen
|
||
video no yes no
|
||
console CP437 Unicode (*) ASCII
|
||
charset
|
||
network no yes no
|
||
ATA/AHCI yes no no
|
||
AT keyboard yes no no
|
||
Speaker no no no
|
||
USB N/A yes no
|
||
chainloader yes no yes
|
||
cpuid no no yes
|
||
rdmsr no no yes
|
||
wrmsr no no yes
|
||
hints guess no no
|
||
PCI no no no
|
||
badram yes (*) no no
|
||
compression configurable no no
|
||
exit no yes no
|
||
bootlocation no file no
|
||
|
||
|
||
File: VasEBoot.info, Node: Platform-specific operations, Next: Supported kernels, Prev: Platform limitations, Up: Top
|
||
|
||
21 Platform-specific operations
|
||
*******************************
|
||
|
||
Some platforms have features which allow implementation of certain
|
||
commands that cannot be implemented on others.
|
||
|
||
Quick summary:
|
||
|
||
Information retrieval:
|
||
|
||
* mipsel-loongson: lsspd
|
||
* mips-arc: lsdev
|
||
* efi: lsefisystab, lssal, lsefimmap, lsefi
|
||
* i386-pc: lsapm
|
||
* i386-coreboot: lscoreboot, coreboot_boottime, cbmemc
|
||
* acpi-enabled (i386-pc, i386-coreboot, i386-multiboot, *-efi):
|
||
lsacpi
|
||
|
||
Workarounds for platform-specific issues:
|
||
* i386-efi/x86_64-efi: loadbios, fakebios, fix_video
|
||
* acpi-enabled (i386-pc, i386-coreboot, i386-multiboot, *-efi): acpi
|
||
(override ACPI tables)
|
||
* i386-pc: drivemap
|
||
* i386-pc: sendkey
|
||
|
||
Advanced operations for power users:
|
||
* x86: iorw (direct access to I/O ports)
|
||
|
||
Miscellaneous:
|
||
* cmos (x86-*, ieee1275, mips-qemu_mips, mips-loongson): cmostest
|
||
(used on some laptops to check for special power-on key), cmosclean
|
||
* i386-pc: play
|
||
|
||
|
||
File: VasEBoot.info, Node: Supported kernels, Next: Troubleshooting, Prev: Platform-specific operations, Up: Top
|
||
|
||
22 Supported boot targets
|
||
*************************
|
||
|
||
X86 support is summarised in the following table. "Yes" means that the
|
||
kernel works on the given platform, "crashes" means an early kernel
|
||
crash which we hope will be fixed by concerned kernel developers. "no"
|
||
means VAS_EBOOT doesn't load the given kernel on a given platform.
|
||
"headless" means that the kernel works but lacks console drivers (you
|
||
can still use serial or network console). In case of "no" and "crashes"
|
||
the reason is given in footnote.
|
||
BIOS Coreboot
|
||
BIOS chainloading yes no (1)
|
||
NTLDR yes no (1)
|
||
Plan9 yes no (1)
|
||
Freedos yes no (1)
|
||
FreeBSD bootloader yes crashes (1)
|
||
32-bit kFreeBSD yes crashes (5)
|
||
64-bit kFreeBSD yes crashes (5)
|
||
32-bit kNetBSD yes crashes (1)
|
||
64-bit kNetBSD yes crashes
|
||
32-bit kOpenBSD yes yes
|
||
64-bit kOpenBSD yes yes
|
||
Multiboot yes yes
|
||
Multiboot2 yes yes
|
||
32-bit Linux (legacy protocol) yes no (1)
|
||
64-bit Linux (legacy protocol) yes no (1)
|
||
32-bit Linux (modern protocol) yes yes
|
||
64-bit Linux (modern protocol) yes yes
|
||
32-bit XNU yes ?
|
||
64-bit XNU yes ?
|
||
32-bit EFI chainloader no (2) no (2)
|
||
64-bit EFI chainloader no (2) no (2)
|
||
Appleloader no (2) no (2)
|
||
|
||
Multiboot Qemu
|
||
BIOS chainloading no (1) no (1)
|
||
NTLDR no (1) no (1)
|
||
Plan9 no (1) no (1)
|
||
FreeDOS no (1) no (1)
|
||
FreeBSD bootloader crashes (1) crashes (1)
|
||
32-bit kFreeBSD crashes (5) crashes (5)
|
||
64-bit kFreeBSD crashes (5) crashes (5)
|
||
32-bit kNetBSD crashes (1) crashes (1)
|
||
64-bit kNetBSD yes yes
|
||
32-bit kOpenBSD yes yes
|
||
64-bit kOpenBSD yes yes
|
||
Multiboot yes yes
|
||
Multiboot2 yes yes
|
||
32-bit Linux (legacy protocol) no (1) no (1)
|
||
64-bit Linux (legacy protocol) no (1) no (1)
|
||
32-bit Linux (modern protocol) yes yes
|
||
64-bit Linux (modern protocol) yes yes
|
||
32-bit XNU ? ?
|
||
64-bit XNU ? ?
|
||
32-bit EFI chainloader no (2) no (2)
|
||
64-bit EFI chainloader no (2) no (2)
|
||
Appleloader no (2) no (2)
|
||
|
||
ia32 EFI amd64 EFI
|
||
BIOS chainloading no (1) no (1)
|
||
NTLDR no (1) no (1)
|
||
Plan9 no (1) no (1)
|
||
FreeDOS no (1) no (1)
|
||
FreeBSD bootloader crashes (1) crashes (1)
|
||
32-bit kFreeBSD headless headless
|
||
64-bit kFreeBSD headless headless
|
||
32-bit kNetBSD crashes (1) crashes (1)
|
||
64-bit kNetBSD yes yes
|
||
32-bit kOpenBSD headless headless
|
||
64-bit kOpenBSD headless headless
|
||
Multiboot yes yes
|
||
Multiboot2 yes yes
|
||
32-bit Linux (legacy protocol) no (1) no (1)
|
||
64-bit Linux (legacy protocol) no (1) no (1)
|
||
32-bit Linux (modern protocol) yes yes
|
||
64-bit Linux (modern protocol) yes yes
|
||
32-bit XNU yes yes
|
||
64-bit XNU yes (4) yes
|
||
32-bit EFI chainloader yes no (3)
|
||
64-bit EFI chainloader no (3) yes
|
||
Appleloader yes yes
|
||
|
||
ia32 IEEE1275
|
||
BIOS chainloading no (1)
|
||
NTLDR no (1)
|
||
Plan9 no (1)
|
||
FreeDOS no (1)
|
||
FreeBSD bootloader crashes (1)
|
||
32-bit kFreeBSD crashes (5)
|
||
64-bit kFreeBSD crashes (5)
|
||
32-bit kNetBSD crashes (1)
|
||
64-bit kNetBSD ?
|
||
32-bit kOpenBSD ?
|
||
64-bit kOpenBSD ?
|
||
Multiboot ?
|
||
Multiboot2 ?
|
||
32-bit Linux (legacy protocol) no (1)
|
||
64-bit Linux (legacy protocol) no (1)
|
||
32-bit Linux (modern protocol) ?
|
||
64-bit Linux (modern protocol) ?
|
||
32-bit XNU ?
|
||
64-bit XNU ?
|
||
32-bit EFI chainloader no (2)
|
||
64-bit EFI chainloader no (2)
|
||
Appleloader no (2)
|
||
|
||
1. Requires BIOS
|
||
2. EFI only
|
||
3. 32-bit and 64-bit EFI have different structures and work in
|
||
different CPU modes so it's not possible to chainload 32-bit
|
||
bootloader on 64-bit platform and vice-versa
|
||
4. Some modules may need to be disabled
|
||
5. Requires ACPI
|
||
|
||
PowerPC, IA64 and Sparc64 ports support only Linux. MIPS port
|
||
supports Linux and multiboot2.
|
||
|
||
22.1 Boot tests
|
||
===============
|
||
|
||
As you have seen in previous chapter the support matrix is pretty big
|
||
and some of the configurations are only rarely used. To ensure the
|
||
quality bootchecks are available for all x86 targets except EFI
|
||
chainloader, Appleloader and XNU. All x86 platforms have bootcheck
|
||
facility except ieee1275. Multiboot, multiboot2, BIOS chainloader,
|
||
ntldr and freebsd-bootloader boot targets are tested only with a fake
|
||
kernel images. Only Linux is tested among the payloads using Linux
|
||
protocols.
|
||
|
||
Following variables must be defined:
|
||
|
||
VAS_EBOOT_PAYLOADS_DIR directory containing the required kernels
|
||
VAS_EBOOT_CBFSTOOL cbfstool from Coreboot package (for coreboot
|
||
platform only)
|
||
VAS_EBOOT_COREBOOT_ROM empty Coreboot ROM
|
||
VAS_EBOOT_QEMU_OPTS additional options to be supplied to QEMU
|
||
|
||
Required files are:
|
||
|
||
kfreebsd_env.i386 32-bit kFreeBSD device hints
|
||
kfreebsd.i386 32-bit FreeBSD kernel image
|
||
kfreebsd.x86_64, same from 64-bit kFreeBSD
|
||
kfreebsd_env.x86_64
|
||
knetbsd.i386 32-bit NetBSD kernel image
|
||
knetbsd.miniroot.i386 32-bit kNetBSD miniroot.kmod.
|
||
knetbsd.x86_64, same from 64-bit kNetBSD
|
||
knetbsd.miniroot.x86_64
|
||
kopenbsd.i386 32-bit OpenBSD kernel bsd.rd image
|
||
kopenbsd.x86_64 same from 64-bit kOpenBSD
|
||
linux.i386 32-bit Linux
|
||
linux.x86_64 64-bit Linux
|
||
|
||
|
||
File: VasEBoot.info, Node: Troubleshooting, Next: User-space utilities, Prev: Supported kernels, Up: Top
|
||
|
||
23 Error messages produced by VAS_EBOOT
|
||
**********************************
|
||
|
||
* Menu:
|
||
|
||
* VAS_EBOOT only offers a rescue shell::
|
||
* Firmware stalls instead of booting VAS_EBOOT::
|
||
|
||
|
||
File: VasEBoot.info, Node: VAS_EBOOT only offers a rescue shell, Next: Firmware stalls instead of booting VAS_EBOOT, Up: Troubleshooting
|
||
|
||
23.1 VAS_EBOOT only offers a rescue shell
|
||
====================================
|
||
|
||
VAS_EBOOT's normal start-up procedure involves setting the 'prefix'
|
||
environment variable to a value set in the core image by 'VasEBoot-install',
|
||
setting the 'root' variable to match, loading the 'normal' module from
|
||
the prefix, and running the 'normal' command (*note normal::). This
|
||
command is responsible for reading '/boot/VasEBoot/VasEBoot.cfg', running the
|
||
menu, and doing all the useful things VAS_EBOOT is supposed to do.
|
||
|
||
If, instead, you only get a rescue shell, this usually means that
|
||
VAS_EBOOT failed to load the 'normal' module for some reason. It may be
|
||
possible to work around this temporarily: for instance, if the reason
|
||
for the failure is that 'prefix' is wrong (perhaps it refers to the
|
||
wrong device, or perhaps the path to '/boot/VasEBoot' was not correctly made
|
||
relative to the device), then you can correct this and enter normal mode
|
||
manually:
|
||
|
||
# Inspect the current prefix (and other preset variables):
|
||
set
|
||
# Find out which devices are available:
|
||
ls
|
||
# Set to the correct value, which might be something like this:
|
||
set prefix=(hd0,1)/VasEBoot
|
||
set root=(hd0,1)
|
||
insmod normal
|
||
normal
|
||
|
||
However, any problem that leaves you in the rescue shell probably
|
||
means that VAS_EBOOT was not correctly installed. It may be more useful to
|
||
try to reinstall it properly using 'VasEBoot-install DEVICE' (*note Invoking
|
||
VasEBoot-install::). When doing this, there are a few things to remember:
|
||
|
||
* Drive ordering in your operating system may not be the same as the
|
||
boot drive ordering used by your firmware. Do not assume that your
|
||
first hard drive (e.g. '/dev/sda') is the one that your firmware
|
||
will boot from. 'device.map' (*note Device map::) can be used to
|
||
override this, but it is usually better to use UUIDs or file system
|
||
labels and avoid depending on drive ordering entirely.
|
||
|
||
* At least on BIOS systems, if you tell 'VasEBoot-install' to install
|
||
VAS_EBOOT to a partition but VAS_EBOOT has already been installed in the
|
||
master boot record, then the VAS_EBOOT installation in the partition
|
||
will be ignored.
|
||
|
||
* If possible, it is generally best to avoid installing VAS_EBOOT to a
|
||
partition (unless it is a special partition for the use of VAS_EBOOT
|
||
alone, such as the BIOS Boot Partition used on GPT). Doing this
|
||
means that VAS_EBOOT may stop being able to read its core image due to a
|
||
file system moving blocks around, such as while defragmenting,
|
||
running checks, or even during normal operation. Installing to the
|
||
whole disk device is normally more robust.
|
||
|
||
* Check that VAS_EBOOT actually knows how to read from the device and file
|
||
system containing '/boot/VasEBoot'. It will not be able to read from
|
||
encrypted devices with unsupported encryption scheme, nor from file
|
||
systems for which support has not yet been added to VAS_EBOOT.
|
||
|
||
|
||
File: VasEBoot.info, Node: Firmware stalls instead of booting VAS_EBOOT, Prev: VAS_EBOOT only offers a rescue shell, Up: Troubleshooting
|
||
|
||
23.2 Firmware stalls instead of booting VAS_EBOOT
|
||
============================================
|
||
|
||
The EFI implementation of some older MacBook laptops stalls when it gets
|
||
presented a VasEBoot-mkrescue ISO image for x86_64-efi target on an USB
|
||
stick. Affected are models of year 2010 or earlier. Workaround is to
|
||
zeroize the bytes 446 to 461 of the EFI partition, where mformat has put
|
||
a partition table entry which claims partition start at block 0. This
|
||
change will not hamper bootability on other machines.
|
||
|
||
|
||
File: VasEBoot.info, Node: User-space utilities, Next: Obtaining and Building VAS_EBOOT, Prev: Troubleshooting, Up: Top
|
||
|
||
24 User-space utilities
|
||
***********************
|
||
|
||
* Menu:
|
||
|
||
* Invoking VasEBoot-install:: How to use the VAS_EBOOT installer
|
||
* Invoking VasEBoot-mkconfig:: Generate a VAS_EBOOT configuration file
|
||
* Invoking VasEBoot-mkpasswd-pbkdf2::
|
||
Generate VAS_EBOOT password hashes
|
||
* Invoking VasEBoot-mkrelpath:: Make system path relative to its root
|
||
* Invoking VasEBoot-mkrescue:: Make a VAS_EBOOT rescue image
|
||
* Invoking VasEBoot-mount:: Mount a file system using VAS_EBOOT
|
||
* Invoking VasEBoot-probe:: Probe device information for VAS_EBOOT
|
||
* Invoking VasEBoot-protect:: Protect a disk key with a key protector
|
||
* Invoking VasEBoot-script-check:: Check VAS_EBOOT script file for syntax errors
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-install, Next: Invoking VasEBoot-mkconfig, Up: User-space utilities
|
||
|
||
24.1 Invoking VasEBoot-install
|
||
==========================
|
||
|
||
The program 'VasEBoot-install' generates a VAS_EBOOT core image using
|
||
'VasEBoot-mkimage' and installs it on your system. You must specify the
|
||
device name on which you want to install VAS_EBOOT, like this:
|
||
|
||
VasEBoot-install INSTALL_DEVICE
|
||
|
||
The device name INSTALL_DEVICE is an OS device name or a VAS_EBOOT device
|
||
name.
|
||
|
||
'VasEBoot-install' accepts the following options:
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
'--boot-directory=DIR'
|
||
Install VAS_EBOOT images under the directory 'DIR/VasEBoot/' This option is
|
||
useful when you want to install VAS_EBOOT into a separate partition or a
|
||
removable disk. If this option is not specified then it defaults
|
||
to '/boot', so
|
||
|
||
VasEBoot-install /dev/sda
|
||
|
||
is equivalent to
|
||
|
||
VasEBoot-install --boot-directory=/boot/ /dev/sda
|
||
|
||
Here is an example in which you have a separate "boot" partition
|
||
which is mounted on '/mnt/boot':
|
||
|
||
VasEBoot-install --boot-directory=/mnt/boot /dev/sdb
|
||
|
||
'--recheck'
|
||
Recheck the device map, even if '/boot/VasEBoot/device.map' already
|
||
exists. You should use this option whenever you add/remove a disk
|
||
into/from your computer.
|
||
|
||
'--no-rs-codes'
|
||
By default on x86 BIOS systems, 'VasEBoot-install' will use some extra
|
||
space in the bootloader embedding area for Reed-Solomon
|
||
error-correcting codes. This enables VAS_EBOOT to still boot
|
||
successfully if some blocks are corrupted. The exact amount of
|
||
protection offered is dependent on available space in the embedding
|
||
area. R sectors of redundancy can tolerate up to R/2 corrupted
|
||
sectors. This redundancy may be cumbersome if attempting to
|
||
cryptographically validate the contents of the bootloader embedding
|
||
area, or in more modern systems with GPT-style partition tables
|
||
(*note BIOS installation::) where VAS_EBOOT does not reside in any
|
||
unpartitioned space outside of the MBR. Disable the Reed-Solomon
|
||
codes with this option.
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-mkconfig, Next: Invoking VasEBoot-mkpasswd-pbkdf2, Prev: Invoking VasEBoot-install, Up: User-space utilities
|
||
|
||
24.2 Invoking VasEBoot-mkconfig
|
||
===========================
|
||
|
||
The program 'VasEBoot-mkconfig' generates a configuration file for VAS_EBOOT
|
||
(*note Simple configuration::).
|
||
|
||
VasEBoot-mkconfig -o /boot/VasEBoot/VasEBoot.cfg
|
||
|
||
'VasEBoot-mkconfig' accepts the following options:
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
'-o FILE'
|
||
'--output=FILE'
|
||
Send the generated configuration file to FILE. The default is to
|
||
send it to standard output.
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-mkpasswd-pbkdf2, Next: Invoking VasEBoot-mkrelpath, Prev: Invoking VasEBoot-mkconfig, Up: User-space utilities
|
||
|
||
24.3 Invoking VasEBoot-mkpasswd-pbkdf2
|
||
==================================
|
||
|
||
The program 'VasEBoot-mkpasswd-pbkdf2' generates password hashes for VAS_EBOOT
|
||
(*note Security::).
|
||
|
||
VasEBoot-mkpasswd-pbkdf2
|
||
|
||
'VasEBoot-mkpasswd-pbkdf2' accepts the following options:
|
||
|
||
'-c NUMBER'
|
||
'--iteration-count=NUMBER'
|
||
Number of iterations of the underlying pseudo-random function.
|
||
Defaults to 10000.
|
||
|
||
'-l NUMBER'
|
||
'--buflen=NUMBER'
|
||
Length of the generated hash. Defaults to 64.
|
||
|
||
'-s NUMBER'
|
||
'--salt=NUMBER'
|
||
Length of the salt. Defaults to 64.
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-mkrelpath, Next: Invoking VasEBoot-mkrescue, Prev: Invoking VasEBoot-mkpasswd-pbkdf2, Up: User-space utilities
|
||
|
||
24.4 Invoking VasEBoot-mkrelpath
|
||
============================
|
||
|
||
The program 'VasEBoot-mkrelpath' makes a file system path relative to the
|
||
root of its containing file system. For instance, if '/usr' is a mount
|
||
point, then:
|
||
|
||
$ VasEBoot-mkrelpath /usr/share/VasEBoot/unicode.pf2
|
||
'/share/VasEBoot/unicode.pf2'
|
||
|
||
This is mainly used internally by other VAS_EBOOT utilities such as
|
||
'VasEBoot-mkconfig' (*note Invoking VasEBoot-mkconfig::), but may occasionally
|
||
also be useful for debugging.
|
||
|
||
'VasEBoot-mkrelpath' accepts the following options:
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-mkrescue, Next: Invoking VasEBoot-mount, Prev: Invoking VasEBoot-mkrelpath, Up: User-space utilities
|
||
|
||
24.5 Invoking VasEBoot-mkrescue
|
||
===========================
|
||
|
||
The program 'VasEBoot-mkrescue' generates a bootable VAS_EBOOT rescue image
|
||
(*note Making a VAS_EBOOT bootable CD-ROM::).
|
||
|
||
VasEBoot-mkrescue -o VasEBoot.iso
|
||
|
||
All arguments not explicitly listed as 'VasEBoot-mkrescue' options are
|
||
passed on directly to 'xorriso' in 'mkisofs' emulation mode. Options
|
||
passed to 'xorriso' will normally be interpreted as 'mkisofs' options;
|
||
if the option '--' is used, then anything after that will be interpreted
|
||
as native 'xorriso' options.
|
||
|
||
Non-option arguments specify additional source directories. This is
|
||
commonly used to add extra files to the image:
|
||
|
||
mkdir -p disk/boot/VasEBoot
|
||
(add extra files to 'disk/boot/VasEBoot')
|
||
VasEBoot-mkrescue -o VasEBoot.iso disk
|
||
|
||
'VasEBoot-mkrescue' accepts the following options:
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
'-o FILE'
|
||
'--output=FILE'
|
||
Save output in FILE. This "option" is required.
|
||
|
||
'--modules=MODULES'
|
||
Pre-load the named VAS_EBOOT modules in the image. Multiple entries in
|
||
MODULES should be separated by whitespace (so you will probably
|
||
need to quote this for your shell).
|
||
|
||
'--rom-directory=DIR'
|
||
If generating images for the QEMU or Coreboot platforms, copy the
|
||
resulting 'qemu.img' or 'coreboot.elf' files respectively to the
|
||
DIR directory as well as including them in the image.
|
||
|
||
'--xorriso=FILE'
|
||
Use FILE as the 'xorriso' program, rather than the built-in
|
||
default.
|
||
|
||
'--VasEBoot-mkimage=FILE'
|
||
Use FILE as the 'VasEBoot-mkimage' program, rather than the built-in
|
||
default.
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-mount, Next: Invoking VasEBoot-probe, Prev: Invoking VasEBoot-mkrescue, Up: User-space utilities
|
||
|
||
24.6 Invoking VasEBoot-mount
|
||
========================
|
||
|
||
The program 'VasEBoot-mount' performs a read-only mount of any file system
|
||
or file system image that VAS_EBOOT understands, using VAS_EBOOT's file system
|
||
drivers via FUSE. (It is only available if FUSE development files were
|
||
present when VAS_EBOOT was built.) This has a number of uses:
|
||
|
||
* It provides a convenient way to check how VAS_EBOOT will view a file
|
||
system at boot time. You can use normal command-line tools to
|
||
compare that view with that of your operating system, making it
|
||
easy to find bugs.
|
||
|
||
* It offers true read-only mounts. Linux does not have these for
|
||
journalling file systems, because it will always attempt to replay
|
||
the journal at mount time; while you can temporarily mark the block
|
||
device read-only to avoid this, that causes the mount to fail.
|
||
Since VAS_EBOOT intentionally contains no code for writing to file
|
||
systems, it can easily provide a guaranteed read-only mount
|
||
mechanism.
|
||
|
||
* It allows you to examine any file system that VAS_EBOOT understands
|
||
without needing to load additional modules into your running
|
||
kernel, which may be useful in constrained environments such as
|
||
installers.
|
||
|
||
* Since it can examine file system images (contained in regular
|
||
files) just as easily as file systems on block devices, you can use
|
||
it to inspect any file system image that VAS_EBOOT understands with only
|
||
enough privileges to use FUSE, even if nobody has yet written a
|
||
FUSE module specifically for that file system type.
|
||
|
||
Using 'VasEBoot-mount' is normally as simple as:
|
||
|
||
VasEBoot-mount /dev/sda1 /mnt
|
||
|
||
'VasEBoot-mount' must be given one or more images and a mount point as
|
||
non-option arguments (if it is given more than one image, it will treat
|
||
them as a RAID set), and also accepts the following options:
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
'-C'
|
||
'--crypto'
|
||
Mount encrypted devices, prompting for a passphrase if necessary.
|
||
|
||
'-d STRING'
|
||
'--debug=STRING'
|
||
Show debugging output for conditions matching STRING.
|
||
|
||
'-K prompt|FILE'
|
||
'--zfs-key=prompt|FILE'
|
||
Load a ZFS encryption key. If you use 'prompt' as the argument,
|
||
'VasEBoot-mount' will read a passphrase from the terminal; otherwise,
|
||
it will read key material from the specified file.
|
||
|
||
'-r DEVICE'
|
||
'--root=DEVICE'
|
||
Set the VAS_EBOOT root device to DEVICE. You do not normally need to
|
||
set this; 'VasEBoot-mount' will automatically set the root device to
|
||
the root of the supplied file system.
|
||
|
||
If DEVICE is just a number, then it will be treated as a partition
|
||
number within the supplied image. This means that, if you have an
|
||
image of an entire disk in 'disk.img', then you can use this
|
||
command to mount its second partition:
|
||
|
||
VasEBoot-mount -r 2 disk.img mount-point
|
||
|
||
'-v'
|
||
'--verbose'
|
||
Print verbose messages.
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-probe, Next: Invoking VasEBoot-protect, Prev: Invoking VasEBoot-mount, Up: User-space utilities
|
||
|
||
24.7 Invoking VasEBoot-probe
|
||
========================
|
||
|
||
The program 'VasEBoot-probe' probes device information for a given path or
|
||
device.
|
||
|
||
VasEBoot-probe --target=fs /boot/VasEBoot
|
||
VasEBoot-probe --target=drive --device /dev/sda1
|
||
|
||
'VasEBoot-probe' must be given a path or device as a non-option argument,
|
||
and also accepts the following options:
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
'-d'
|
||
'--device'
|
||
If this option is given, then the non-option argument is a system
|
||
device name (such as '/dev/sda1'), and 'VasEBoot-probe' will print
|
||
information about that device. If it is not given, then the
|
||
non-option argument is a filesystem path (such as '/boot/VasEBoot'),
|
||
and 'VasEBoot-probe' will print information about the device containing
|
||
that part of the filesystem.
|
||
|
||
'-m FILE'
|
||
'--device-map=FILE'
|
||
Use FILE as the device map (*note Device map::) rather than the
|
||
default, usually '/boot/VasEBoot/device.map'.
|
||
|
||
'-t TARGET'
|
||
'--target=TARGET'
|
||
Print information about the given path or device as defined by
|
||
TARGET. The available targets and their meanings are:
|
||
|
||
'fs'
|
||
VAS_EBOOT filesystem module.
|
||
'fs_uuid'
|
||
Filesystem Universally Unique Identifier (UUID).
|
||
'fs_label'
|
||
Filesystem label.
|
||
'drive'
|
||
VAS_EBOOT device name.
|
||
'device'
|
||
System device name.
|
||
'partmap'
|
||
VAS_EBOOT partition map module.
|
||
'abstraction'
|
||
VAS_EBOOT abstraction module (e.g. 'lvm').
|
||
'cryptodisk_uuid'
|
||
Crypto device UUID.
|
||
'msdos_parttype'
|
||
MBR partition type code (two hexadecimal digits).
|
||
'hints_string'
|
||
A string of platform search hints suitable for passing to the
|
||
'search' command (*note search::).
|
||
'bios_hints'
|
||
Search hints for the PC BIOS platform.
|
||
'ieee1275_hints'
|
||
Search hints for the IEEE1275 platform.
|
||
'baremetal_hints'
|
||
Search hints for platforms where disks are addressed directly
|
||
rather than via firmware.
|
||
'efi_hints'
|
||
Search hints for the EFI platform.
|
||
'arc_hints'
|
||
Search hints for the ARC platform.
|
||
'compatibility_hint'
|
||
A guess at a reasonable VAS_EBOOT drive name for this device, which
|
||
may be used as a fallback if the 'search' command fails.
|
||
'disk'
|
||
System device name for the whole disk.
|
||
|
||
'-v'
|
||
'--verbose'
|
||
Print verbose messages.
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-protect, Next: Invoking VasEBoot-script-check, Prev: Invoking VasEBoot-probe, Up: User-space utilities
|
||
|
||
24.8 Invoking VasEBoot-protect
|
||
==========================
|
||
|
||
The program 'VasEBoot-protect' protects a disk encryption key with a
|
||
specified key protector.
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
'-a add|remove'
|
||
'--action=add|remove'
|
||
Add or remove a key protector to or from a key.
|
||
|
||
'-p PROTECTOR'
|
||
'--protector=PROTECTOR'
|
||
Set the key protector. Currently, 'tpm2' is the only supported key
|
||
protector.
|
||
|
||
'--tpm2-asymmetric=TYPE'
|
||
Choose the the type of SRK. The valid options are 'RSA' ('RSA2048')
|
||
and 'ECC' ('ECC_NIST_P256').(default: 'ECC')
|
||
|
||
'--tpm2-bank=ALG'
|
||
Choose bank of PCRs used to authorize key release: 'SHA1',
|
||
'SHA256', 'SHA384', or 'SHA512'. (default: 'SHA256')
|
||
|
||
'--tpm2-device=DEVICE'
|
||
Set the path to the TPM2 device. (default: '/dev/tpm0')
|
||
|
||
'--tpm2-evict'
|
||
Evict a previously persisted SRK from the TPM, if any.
|
||
|
||
'--tpm2-keyfile=FILE'
|
||
Set the path to a file that contains the cleartext key to protect.
|
||
|
||
'--tpm2-outfile=FILE'
|
||
Set the path to the file that will contain the key after sealing
|
||
(must be accessible to VAS_EBOOT during boot).
|
||
|
||
'--tpm2-pcrs=PCRS'
|
||
Set a comma-separated list of PCRs used to authorize key release
|
||
e.g., '7,11'. Please be aware that PCR 0~7 are used by the
|
||
firmware and the measurement result may change after a firmware
|
||
update (for baremetal systems) or a package (OVMF/SLOF) update in
|
||
the VM host. This may lead to the failure of key unsealing.
|
||
(default: '7')
|
||
|
||
'--tpm2-srk=HANDLE'
|
||
Set the SRK handle, e.g. '0x81000000', if the SRK is to be made
|
||
persistent.
|
||
|
||
'--tpm2-nvindex=HANDLE'
|
||
Set the handle, e.g. '0x81000000' or '0x1000000', for NV index
|
||
mode.
|
||
|
||
'--tpm2key'
|
||
Use TPM 2.0 Key File format.
|
||
|
||
24.8.1 'Add' action
|
||
-------------------
|
||
|
||
Before sealing the key, please check the TPM PCR usage (*note TPM PCR
|
||
usage: TPM2 key protector.) to choose a proper set of PCRs.
|
||
|
||
Assume that there is a key file, 'luks.key', to be sealed with PCR 0,
|
||
2, 4, and 7, and here is the 'VasEBoot-protect' command to create the sealed
|
||
key file:
|
||
|
||
# VasEBoot-protect --action=add \
|
||
--protector=tpm2 \
|
||
--tpm2-pcrs=0,2,4,7 \
|
||
--tpm2key \
|
||
--tpm2-keyfile=luks.key \
|
||
--tpm2-outfile=/boot/efi/efi/VasEBoot/sealed.tpm
|
||
|
||
Then, VAS_EBOOT can unlock the target partition with the following
|
||
commands:
|
||
|
||
VasEBoot> tpm2_key_protector_init -T (hd0,gpt1)/efi/VasEBoot/sealed.tpm
|
||
VasEBoot> cryptomount -u <UUID> -P tpm2
|
||
|
||
Besides writing the PCR-sealed key into a file, 'VasEBoot-protect' can
|
||
write the sealed key into TPM non-volatile memory. Here is the
|
||
'VasEBoot-protect' command to write the sealed key into the NV index handle
|
||
'0x1000000'.
|
||
|
||
# VasEBoot-protect --action=add \
|
||
--protector=tpm2 \
|
||
--tpm2-pcrs=0,2,4,7 \
|
||
--tpm2key \
|
||
--tpm2-keyfile=luks.key \
|
||
--tpm2-nvindex=0x1000000
|
||
|
||
Later, VAS_EBOOT can fetch the key from '0x1000000'.
|
||
|
||
VasEBoot> tpm2_key_protector_init --mode=nv --nvindex=0x1000000
|
||
VasEBoot> cryptomount -u <UUID> -P tpm2
|
||
|
||
In most of cases, the user only needs to create the key with the
|
||
'add' action. If auto-unlocking is unwanted, just remove the file and
|
||
the 'tpm2_key_protector_init' command and invoke the 'cryptomount'
|
||
command without '-P tpm2'.
|
||
|
||
24.8.2 'Remove' action
|
||
----------------------
|
||
|
||
The 'remove' action is used to remove the handles for NV index mode and
|
||
the persistent SRK.
|
||
|
||
24.8.2.1 Handles for NV index mode
|
||
..................................
|
||
|
||
There are two types of TPM handles supported by NV index mode:
|
||
persistent handles and NV index handles, and 'tpm2_getcap' can be used
|
||
to check the existing handles.
|
||
|
||
To display the list of existing persistent handles:
|
||
|
||
# tpm2_getcap handles-persistent
|
||
- 0x81000000
|
||
|
||
Similarly, to display the list of existing NV index handles:
|
||
|
||
# tpm2_getcap handles-nv-index
|
||
- 0x1000000
|
||
|
||
If the sealed key at an NV index handle is not needed anymore, the
|
||
user can remove the handle with '--tpm2-nvindex' and '--tpm2-evict'.
|
||
For example, this command removes the data from NV index '0x1000000':
|
||
|
||
# VasEBoot-protect --action=remove \
|
||
--protector=tpm2 \
|
||
--tpm2-evict \
|
||
--tpm2-nvindex 0x1000000 \
|
||
|
||
24.8.2.2 Persistent SRK
|
||
.......................
|
||
|
||
There are two supported SRKs in 'VasEBoot-protect': 'RSA' and 'ECC'. Due to
|
||
slower key generation, some users of the 'RSA' SRK may prefer making it
|
||
persistent so that the TPM can skip the SRK generation when VAS_EBOOT tries
|
||
to unseal the key.
|
||
|
||
The available persistent handles can be checked with 'tpm2_getcap'.
|
||
|
||
# tpm2_getcap properties-variable
|
||
...
|
||
TPM2_PT_HR_PERSISTENT: 0x0
|
||
TPM2_PT_HR_PERSISTENT_AVAIL: 0x41
|
||
...
|
||
|
||
In this system, there is no persistent handle. A TPM handle is an
|
||
unsigned 32-bit integer, and the persistent handles starts with '0x81'.
|
||
Here we choose the well-known persistent handle: '0x81000000'.
|
||
|
||
# VasEBoot-protect --action=add \
|
||
--protector=tpm2 \
|
||
--tpm2-pcrs=0,2,4,7 \
|
||
--tpm2-asymmetric=RSA \
|
||
--tpm2-srk=0x81000000 \
|
||
--tpm2key \
|
||
--tpm2-keyfile=luks.key \
|
||
--tpm2-outfile=/boot/efi/efi/VasEBoot/sealed.tpm
|
||
|
||
The additional '--tpm2-asymmetric=RSA' and '--tpm2-srk=0x81000000'
|
||
options are used to make the key sealed with the RSA SRK and store the
|
||
SRK in '0x81000000'.
|
||
|
||
For the 'tpm2_key_protector_init' command, the additional '-s
|
||
0x81000000' informs the TPM2 key protector to fetch the SRK from
|
||
'0x81000000'.
|
||
|
||
VasEBoot> tpm2_key_protector_init -s 0x81000000 -T (hd0,gpt1)/efi/VasEBoot/sealed.tpm
|
||
VasEBoot> cryptomount -u <UUID> -P tpm2
|
||
|
||
After making the SRK handle persistent, we can check the status of
|
||
the persistent handles with 'tpm2_getcap'.
|
||
|
||
# tpm2_getcap properties-variable
|
||
...
|
||
TPM2_PT_HR_PERSISTENT: 0x1
|
||
TPM2_PT_HR_PERSISTENT_AVAIL: 0x40
|
||
...
|
||
# tpm2_getcap handles-persistent
|
||
- 0x81000000
|
||
|
||
The sealed key can be removed once the user does not want to use the
|
||
TPM2 key protector anymore. Here is the command to remove the
|
||
persistent SRK handle ('0x81000000') with '--tpm2-srk' and
|
||
'--tpm2-evict'.
|
||
|
||
# VasEBoot-protect --action=remove \
|
||
--protector=tpm2 \
|
||
--tpm2-srk 0x81000000 \
|
||
--tpm2-evict
|
||
|
||
|
||
File: VasEBoot.info, Node: Invoking VasEBoot-script-check, Prev: Invoking VasEBoot-protect, Up: User-space utilities
|
||
|
||
24.9 Invoking VasEBoot-script-check
|
||
===============================
|
||
|
||
The program 'VasEBoot-script-check' takes a VAS_EBOOT script file (*note
|
||
Shell-like scripting::) and checks it for syntax errors, similar to
|
||
commands such as 'sh -n'. It may take a PATH as a non-option argument;
|
||
if none is supplied, it will read from standard input.
|
||
|
||
VasEBoot-script-check /boot/VasEBoot/VasEBoot.cfg
|
||
|
||
'VasEBoot-script-check' accepts the following options:
|
||
|
||
'--help'
|
||
Print a summary of the command-line options and exit.
|
||
|
||
'--version'
|
||
Print the version number of VAS_EBOOT and exit.
|
||
|
||
'-v'
|
||
'--verbose'
|
||
Print each line of input after reading it.
|
||
|
||
|
||
File: VasEBoot.info, Node: Obtaining and Building VAS_EBOOT, Next: Reporting bugs, Prev: User-space utilities, Up: Top
|
||
|
||
Appendix A How to obtain and build VAS_EBOOT
|
||
***************************************
|
||
|
||
*Caution:* VAS_EBOOT requires binutils-2.9.1.0.23 or later because the
|
||
GNU assembler has been changed so that it can produce real 16bits
|
||
machine code between 2.9.1 and 2.9.1.0.x. See
|
||
<https://www.gnu.org/software/binutils/>, to obtain information on
|
||
how to get the latest version.
|
||
|
||
VAS_EBOOT is available from the GNU alpha archive site
|
||
<https://ftp.gnu.org/gnu/VasEBoot/> or any of its mirrors. The file will be
|
||
named VasEBoot-version.tar.gz. The current version is 2.14, so the file you
|
||
should grab is:
|
||
|
||
<https://ftp.gnu.org/gnu/VasEBoot/VasEBoot-2.14.tar.gz>
|
||
|
||
To unbundle VAS_EBOOT use the instruction:
|
||
|
||
zcat VasEBoot-2.14.tar.gz | tar xvf -
|
||
|
||
which will create a directory called 'VasEBoot-2.14' with all the
|
||
sources. You can look at the file 'INSTALL' for detailed instructions
|
||
on how to build and install VAS_EBOOT, but you should be able to just do:
|
||
|
||
cd VasEBoot-2.14
|
||
./configure
|
||
make install
|
||
|
||
Also, the latest version is available using Git. See
|
||
<https://www.gnu.org/software/VasEBoot/VasEBoot-download.html> for more
|
||
information.
|
||
|
||
|
||
File: VasEBoot.info, Node: Reporting bugs, Next: Future, Prev: Obtaining and Building VAS_EBOOT, Up: Top
|
||
|
||
Appendix B Reporting bugs
|
||
*************************
|
||
|
||
These are the guideline for how to report bugs. Take a look at this
|
||
list below before you submit bugs:
|
||
|
||
1. Before getting unsettled, read this manual through and through.
|
||
Also, see the GNU VAS_EBOOT FAQ
|
||
(https://www.gnu.org/software/VasEBoot/VasEBoot-faq.html).
|
||
|
||
2. Always mention the information on your VAS_EBOOT. The version number and
|
||
the configuration are quite important. If you build it yourself,
|
||
write the options specified to the configure script and your
|
||
operating system, including the versions of gcc and binutils.
|
||
|
||
3. If you have trouble with the installation, inform us of how you
|
||
installed VAS_EBOOT. Don't omit error messages, if any. Just 'VAS_EBOOT
|
||
hangs up when it boots' is not enough.
|
||
|
||
The information on your hardware is also essential. These are
|
||
especially important: the geometries and the partition tables of
|
||
your hard disk drives and your BIOS.
|
||
|
||
4. If VAS_EBOOT cannot boot your operating system, write down _everything_
|
||
you see on the screen. Don't paraphrase them, like 'The foo OS
|
||
crashes with VAS_EBOOT, even though it can boot with the bar boot loader
|
||
just fine'. Mention the commands you executed, the messages
|
||
printed by them, and information on your operating system including
|
||
the version number.
|
||
|
||
5. Explain what you wanted to do. It is very useful to know your
|
||
purpose and your wish, and how VAS_EBOOT didn't satisfy you.
|
||
|
||
6. If you can investigate the problem yourself, please do. That will
|
||
give you and us much more information on the problem. Attaching a
|
||
patch is even better.
|
||
|
||
When you attach a patch, make the patch in unified diff format, and
|
||
write ChangeLog entries. But, even when you make a patch, don't
|
||
forget to explain the problem, so that we can understand what your
|
||
patch is for.
|
||
|
||
7. Write down anything that you think might be related. Please
|
||
understand that we often need to reproduce the same problem you
|
||
encountered in our environment. So your information should be
|
||
sufficient for us to do the same thing--Don't forget that we cannot
|
||
see your computer directly. If you are not sure whether to state a
|
||
fact or leave it out, state it! Reporting too many things is much
|
||
better than omitting something important.
|
||
|
||
If you follow the guideline above, submit a report to the Bug
|
||
Tracking System (https://savannah.gnu.org/bugs/?group=VasEBoot).
|
||
Alternatively, you can submit a report via electronic mail to
|
||
<bug-VasEBoot@gnu.org>, but we strongly recommend that you use the Bug
|
||
Tracking System, because e-mail can be passed over easily.
|
||
|
||
Once we get your report, we will try to fix the bugs.
|
||
|
||
|
||
File: VasEBoot.info, Node: Future, Next: Copying This Manual, Prev: Reporting bugs, Up: Top
|
||
|
||
Appendix C Where VAS_EBOOT will go
|
||
*****************************
|
||
|
||
VAS_EBOOT 2 is now quite stable and used in many production systems. We are
|
||
currently working on the 2.x series.
|
||
|
||
If you are interested in the development of VAS_EBOOT 2, take a look at
|
||
the homepage (https://www.gnu.org/software/VasEBoot/VasEBoot.html).
|
||
|
||
|
||
File: VasEBoot.info, Node: Copying This Manual, Next: Index, Prev: Future, Up: Top
|
||
|
||
Appendix D Copying This Manual
|
||
******************************
|
||
|
||
* Menu:
|
||
|
||
* GNU Free Documentation License:: License for copying this manual.
|
||
|
||
|
||
File: VasEBoot.info, Node: GNU Free Documentation License, Up: Copying This Manual
|
||
|
||
D.1 GNU Free Documentation License
|
||
==================================
|
||
|
||
Version 1.2, November 2002
|
||
|
||
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||
|
||
Everyone is permitted to copy and distribute verbatim copies
|
||
of this license document, but changing it is not allowed.
|
||
|
||
0. PREAMBLE
|
||
|
||
The purpose of this License is to make a manual, textbook, or other
|
||
functional and useful document "free" in the sense of freedom: to
|
||
assure everyone the effective freedom to copy and redistribute it,
|
||
with or without modifying it, either commercially or
|
||
noncommercially. Secondarily, this License preserves for the
|
||
author and publisher a way to get credit for their work, while not
|
||
being considered responsible for modifications made by others.
|
||
|
||
This License is a kind of "copyleft", which means that derivative
|
||
works of the document must themselves be free in the same sense.
|
||
It complements the GNU General Public License, which is a copyleft
|
||
license designed for free software.
|
||
|
||
We have designed this License in order to use it for manuals for
|
||
free software, because free software needs free documentation: a
|
||
free program should come with manuals providing the same freedoms
|
||
that the software does. But this License is not limited to
|
||
software manuals; it can be used for any textual work, regardless
|
||
of subject matter or whether it is published as a printed book. We
|
||
recommend this License principally for works whose purpose is
|
||
instruction or reference.
|
||
|
||
1. APPLICABILITY AND DEFINITIONS
|
||
|
||
This License applies to any manual or other work, in any medium,
|
||
that contains a notice placed by the copyright holder saying it can
|
||
be distributed under the terms of this License. Such a notice
|
||
grants a world-wide, royalty-free license, unlimited in duration,
|
||
to use that work under the conditions stated herein. The
|
||
"Document", below, refers to any such manual or work. Any member
|
||
of the public is a licensee, and is addressed as "you". You accept
|
||
the license if you copy, modify or distribute the work in a way
|
||
requiring permission under copyright law.
|
||
|
||
A "Modified Version" of the Document means any work containing the
|
||
Document or a portion of it, either copied verbatim, or with
|
||
modifications and/or translated into another language.
|
||
|
||
A "Secondary Section" is a named appendix or a front-matter section
|
||
of the Document that deals exclusively with the relationship of the
|
||
publishers or authors of the Document to the Document's overall
|
||
subject (or to related matters) and contains nothing that could
|
||
fall directly within that overall subject. (Thus, if the Document
|
||
is in part a textbook of mathematics, a Secondary Section may not
|
||
explain any mathematics.) The relationship could be a matter of
|
||
historical connection with the subject or with related matters, or
|
||
of legal, commercial, philosophical, ethical or political position
|
||
regarding them.
|
||
|
||
The "Invariant Sections" are certain Secondary Sections whose
|
||
titles are designated, as being those of Invariant Sections, in the
|
||
notice that says that the Document is released under this License.
|
||
If a section does not fit the above definition of Secondary then it
|
||
is not allowed to be designated as Invariant. The Document may
|
||
contain zero Invariant Sections. If the Document does not identify
|
||
any Invariant Sections then there are none.
|
||
|
||
The "Cover Texts" are certain short passages of text that are
|
||
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
||
that says that the Document is released under this License. A
|
||
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
|
||
be at most 25 words.
|
||
|
||
A "Transparent" copy of the Document means a machine-readable copy,
|
||
represented in a format whose specification is available to the
|
||
general public, that is suitable for revising the document
|
||
straightforwardly with generic text editors or (for images composed
|
||
of pixels) generic paint programs or (for drawings) some widely
|
||
available drawing editor, and that is suitable for input to text
|
||
formatters or for automatic translation to a variety of formats
|
||
suitable for input to text formatters. A copy made in an otherwise
|
||
Transparent file format whose markup, or absence of markup, has
|
||
been arranged to thwart or discourage subsequent modification by
|
||
readers is not Transparent. An image format is not Transparent if
|
||
used for any substantial amount of text. A copy that is not
|
||
"Transparent" is called "Opaque".
|
||
|
||
Examples of suitable formats for Transparent copies include plain
|
||
ASCII without markup, Texinfo input format, LaTeX input format,
|
||
SGML or XML using a publicly available DTD, and standard-conforming
|
||
simple HTML, PostScript or PDF designed for human modification.
|
||
Examples of transparent image formats include PNG, XCF and JPG.
|
||
Opaque formats include proprietary formats that can be read and
|
||
edited only by proprietary word processors, SGML or XML for which
|
||
the DTD and/or processing tools are not generally available, and
|
||
the machine-generated HTML, PostScript or PDF produced by some word
|
||
processors for output purposes only.
|
||
|
||
The "Title Page" means, for a printed book, the title page itself,
|
||
plus such following pages as are needed to hold, legibly, the
|
||
material this License requires to appear in the title page. For
|
||
works in formats which do not have any title page as such, "Title
|
||
Page" means the text near the most prominent appearance of the
|
||
work's title, preceding the beginning of the body of the text.
|
||
|
||
A section "Entitled XYZ" means a named subunit of the Document
|
||
whose title either is precisely XYZ or contains XYZ in parentheses
|
||
following text that translates XYZ in another language. (Here XYZ
|
||
stands for a specific section name mentioned below, such as
|
||
"Acknowledgements", "Dedications", "Endorsements", or "History".)
|
||
To "Preserve the Title" of such a section when you modify the
|
||
Document means that it remains a section "Entitled XYZ" according
|
||
to this definition.
|
||
|
||
The Document may include Warranty Disclaimers next to the notice
|
||
which states that this License applies to the Document. These
|
||
Warranty Disclaimers are considered to be included by reference in
|
||
this License, but only as regards disclaiming warranties: any other
|
||
implication that these Warranty Disclaimers may have is void and
|
||
has no effect on the meaning of this License.
|
||
|
||
2. VERBATIM COPYING
|
||
|
||
You may copy and distribute the Document in any medium, either
|
||
commercially or noncommercially, provided that this License, the
|
||
copyright notices, and the license notice saying this License
|
||
applies to the Document are reproduced in all copies, and that you
|
||
add no other conditions whatsoever to those of this License. You
|
||
may not use technical measures to obstruct or control the reading
|
||
or further copying of the copies you make or distribute. However,
|
||
you may accept compensation in exchange for copies. If you
|
||
distribute a large enough number of copies you must also follow the
|
||
conditions in section 3.
|
||
|
||
You may also lend copies, under the same conditions stated above,
|
||
and you may publicly display copies.
|
||
|
||
3. COPYING IN QUANTITY
|
||
|
||
If you publish printed copies (or copies in media that commonly
|
||
have printed covers) of the Document, numbering more than 100, and
|
||
the Document's license notice requires Cover Texts, you must
|
||
enclose the copies in covers that carry, clearly and legibly, all
|
||
these Cover Texts: Front-Cover Texts on the front cover, and
|
||
Back-Cover Texts on the back cover. Both covers must also clearly
|
||
and legibly identify you as the publisher of these copies. The
|
||
front cover must present the full title with all words of the title
|
||
equally prominent and visible. You may add other material on the
|
||
covers in addition. Copying with changes limited to the covers, as
|
||
long as they preserve the title of the Document and satisfy these
|
||
conditions, can be treated as verbatim copying in other respects.
|
||
|
||
If the required texts for either cover are too voluminous to fit
|
||
legibly, you should put the first ones listed (as many as fit
|
||
reasonably) on the actual cover, and continue the rest onto
|
||
adjacent pages.
|
||
|
||
If you publish or distribute Opaque copies of the Document
|
||
numbering more than 100, you must either include a machine-readable
|
||
Transparent copy along with each Opaque copy, or state in or with
|
||
each Opaque copy a computer-network location from which the general
|
||
network-using public has access to download using public-standard
|
||
network protocols a complete Transparent copy of the Document, free
|
||
of added material. If you use the latter option, you must take
|
||
reasonably prudent steps, when you begin distribution of Opaque
|
||
copies in quantity, to ensure that this Transparent copy will
|
||
remain thus accessible at the stated location until at least one
|
||
year after the last time you distribute an Opaque copy (directly or
|
||
through your agents or retailers) of that edition to the public.
|
||
|
||
It is requested, but not required, that you contact the authors of
|
||
the Document well before redistributing any large number of copies,
|
||
to give them a chance to provide you with an updated version of the
|
||
Document.
|
||
|
||
4. MODIFICATIONS
|
||
|
||
You may copy and distribute a Modified Version of the Document
|
||
under the conditions of sections 2 and 3 above, provided that you
|
||
release the Modified Version under precisely this License, with the
|
||
Modified Version filling the role of the Document, thus licensing
|
||
distribution and modification of the Modified Version to whoever
|
||
possesses a copy of it. In addition, you must do these things in
|
||
the Modified Version:
|
||
|
||
A. Use in the Title Page (and on the covers, if any) a title
|
||
distinct from that of the Document, and from those of previous
|
||
versions (which should, if there were any, be listed in the
|
||
History section of the Document). You may use the same title
|
||
as a previous version if the original publisher of that
|
||
version gives permission.
|
||
|
||
B. List on the Title Page, as authors, one or more persons or
|
||
entities responsible for authorship of the modifications in
|
||
the Modified Version, together with at least five of the
|
||
principal authors of the Document (all of its principal
|
||
authors, if it has fewer than five), unless they release you
|
||
from this requirement.
|
||
|
||
C. State on the Title page the name of the publisher of the
|
||
Modified Version, as the publisher.
|
||
|
||
D. Preserve all the copyright notices of the Document.
|
||
|
||
E. Add an appropriate copyright notice for your modifications
|
||
adjacent to the other copyright notices.
|
||
|
||
F. Include, immediately after the copyright notices, a license
|
||
notice giving the public permission to use the Modified
|
||
Version under the terms of this License, in the form shown in
|
||
the Addendum below.
|
||
|
||
G. Preserve in that license notice the full lists of Invariant
|
||
Sections and required Cover Texts given in the Document's
|
||
license notice.
|
||
|
||
H. Include an unaltered copy of this License.
|
||
|
||
I. Preserve the section Entitled "History", Preserve its Title,
|
||
and add to it an item stating at least the title, year, new
|
||
authors, and publisher of the Modified Version as given on the
|
||
Title Page. If there is no section Entitled "History" in the
|
||
Document, create one stating the title, year, authors, and
|
||
publisher of the Document as given on its Title Page, then add
|
||
an item describing the Modified Version as stated in the
|
||
previous sentence.
|
||
|
||
J. Preserve the network location, if any, given in the Document
|
||
for public access to a Transparent copy of the Document, and
|
||
likewise the network locations given in the Document for
|
||
previous versions it was based on. These may be placed in the
|
||
"History" section. You may omit a network location for a work
|
||
that was published at least four years before the Document
|
||
itself, or if the original publisher of the version it refers
|
||
to gives permission.
|
||
|
||
K. For any section Entitled "Acknowledgements" or "Dedications",
|
||
Preserve the Title of the section, and preserve in the section
|
||
all the substance and tone of each of the contributor
|
||
acknowledgements and/or dedications given therein.
|
||
|
||
L. Preserve all the Invariant Sections of the Document, unaltered
|
||
in their text and in their titles. Section numbers or the
|
||
equivalent are not considered part of the section titles.
|
||
|
||
M. Delete any section Entitled "Endorsements". Such a section
|
||
may not be included in the Modified Version.
|
||
|
||
N. Do not retitle any existing section to be Entitled
|
||
"Endorsements" or to conflict in title with any Invariant
|
||
Section.
|
||
|
||
O. Preserve any Warranty Disclaimers.
|
||
|
||
If the Modified Version includes new front-matter sections or
|
||
appendices that qualify as Secondary Sections and contain no
|
||
material copied from the Document, you may at your option designate
|
||
some or all of these sections as invariant. To do this, add their
|
||
titles to the list of Invariant Sections in the Modified Version's
|
||
license notice. These titles must be distinct from any other
|
||
section titles.
|
||
|
||
You may add a section Entitled "Endorsements", provided it contains
|
||
nothing but endorsements of your Modified Version by various
|
||
parties--for example, statements of peer review or that the text
|
||
has been approved by an organization as the authoritative
|
||
definition of a standard.
|
||
|
||
You may add a passage of up to five words as a Front-Cover Text,
|
||
and a passage of up to 25 words as a Back-Cover Text, to the end of
|
||
the list of Cover Texts in the Modified Version. Only one passage
|
||
of Front-Cover Text and one of Back-Cover Text may be added by (or
|
||
through arrangements made by) any one entity. If the Document
|
||
already includes a cover text for the same cover, previously added
|
||
by you or by arrangement made by the same entity you are acting on
|
||
behalf of, you may not add another; but you may replace the old
|
||
one, on explicit permission from the previous publisher that added
|
||
the old one.
|
||
|
||
The author(s) and publisher(s) of the Document do not by this
|
||
License give permission to use their names for publicity for or to
|
||
assert or imply endorsement of any Modified Version.
|
||
|
||
5. COMBINING DOCUMENTS
|
||
|
||
You may combine the Document with other documents released under
|
||
this License, under the terms defined in section 4 above for
|
||
modified versions, provided that you include in the combination all
|
||
of the Invariant Sections of all of the original documents,
|
||
unmodified, and list them all as Invariant Sections of your
|
||
combined work in its license notice, and that you preserve all
|
||
their Warranty Disclaimers.
|
||
|
||
The combined work need only contain one copy of this License, and
|
||
multiple identical Invariant Sections may be replaced with a single
|
||
copy. If there are multiple Invariant Sections with the same name
|
||
but different contents, make the title of each such section unique
|
||
by adding at the end of it, in parentheses, the name of the
|
||
original author or publisher of that section if known, or else a
|
||
unique number. Make the same adjustment to the section titles in
|
||
the list of Invariant Sections in the license notice of the
|
||
combined work.
|
||
|
||
In the combination, you must combine any sections Entitled
|
||
"History" in the various original documents, forming one section
|
||
Entitled "History"; likewise combine any sections Entitled
|
||
"Acknowledgements", and any sections Entitled "Dedications". You
|
||
must delete all sections Entitled "Endorsements."
|
||
|
||
6. COLLECTIONS OF DOCUMENTS
|
||
|
||
You may make a collection consisting of the Document and other
|
||
documents released under this License, and replace the individual
|
||
copies of this License in the various documents with a single copy
|
||
that is included in the collection, provided that you follow the
|
||
rules of this License for verbatim copying of each of the documents
|
||
in all other respects.
|
||
|
||
You may extract a single document from such a collection, and
|
||
distribute it individually under this License, provided you insert
|
||
a copy of this License into the extracted document, and follow this
|
||
License in all other respects regarding verbatim copying of that
|
||
document.
|
||
|
||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||
|
||
A compilation of the Document or its derivatives with other
|
||
separate and independent documents or works, in or on a volume of a
|
||
storage or distribution medium, is called an "aggregate" if the
|
||
copyright resulting from the compilation is not used to limit the
|
||
legal rights of the compilation's users beyond what the individual
|
||
works permit. When the Document is included in an aggregate, this
|
||
License does not apply to the other works in the aggregate which
|
||
are not themselves derivative works of the Document.
|
||
|
||
If the Cover Text requirement of section 3 is applicable to these
|
||
copies of the Document, then if the Document is less than one half
|
||
of the entire aggregate, the Document's Cover Texts may be placed
|
||
on covers that bracket the Document within the aggregate, or the
|
||
electronic equivalent of covers if the Document is in electronic
|
||
form. Otherwise they must appear on printed covers that bracket
|
||
the whole aggregate.
|
||
|
||
8. TRANSLATION
|
||
|
||
Translation is considered a kind of modification, so you may
|
||
distribute translations of the Document under the terms of section
|
||
4. Replacing Invariant Sections with translations requires special
|
||
permission from their copyright holders, but you may include
|
||
translations of some or all Invariant Sections in addition to the
|
||
original versions of these Invariant Sections. You may include a
|
||
translation of this License, and all the license notices in the
|
||
Document, and any Warranty Disclaimers, provided that you also
|
||
include the original English version of this License and the
|
||
original versions of those notices and disclaimers. In case of a
|
||
disagreement between the translation and the original version of
|
||
this License or a notice or disclaimer, the original version will
|
||
prevail.
|
||
|
||
If a section in the Document is Entitled "Acknowledgements",
|
||
"Dedications", or "History", the requirement (section 4) to
|
||
Preserve its Title (section 1) will typically require changing the
|
||
actual title.
|
||
|
||
9. TERMINATION
|
||
|
||
You may not copy, modify, sublicense, or distribute the Document
|
||
except as expressly provided for under this License. Any other
|
||
attempt to copy, modify, sublicense or distribute the Document is
|
||
void, and will automatically terminate your rights under this
|
||
License. However, parties who have received copies, or rights,
|
||
from you under this License will not have their licenses terminated
|
||
so long as such parties remain in full compliance.
|
||
|
||
10. FUTURE REVISIONS OF THIS LICENSE
|
||
|
||
The Free Software Foundation may publish new, revised versions of
|
||
the GNU Free Documentation License from time to time. Such new
|
||
versions will be similar in spirit to the present version, but may
|
||
differ in detail to address new problems or concerns. See
|
||
<http://www.gnu.org/copyleft/>.
|
||
|
||
Each version of the License is given a distinguishing version
|
||
number. If the Document specifies that a particular numbered
|
||
version of this License "or any later version" applies to it, you
|
||
have the option of following the terms and conditions either of
|
||
that specified version or of any later version that has been
|
||
published (not as a draft) by the Free Software Foundation. If the
|
||
Document does not specify a version number of this License, you may
|
||
choose any version ever published (not as a draft) by the Free
|
||
Software Foundation.
|
||
|
||
D.1.1 ADDENDUM: How to use this License for your documents
|
||
----------------------------------------------------------
|
||
|
||
To use this License in a document you have written, include a copy of
|
||
the License in the document and put the following copyright and license
|
||
notices just after the title page:
|
||
|
||
Copyright (C) YEAR YOUR NAME.
|
||
Permission is granted to copy, distribute and/or modify this document
|
||
under the terms of the GNU Free Documentation License, Version 1.2
|
||
or any later version published by the Free Software Foundation;
|
||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
||
Texts. A copy of the license is included in the section entitled ``GNU
|
||
Free Documentation License''.
|
||
|
||
If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
||
Texts, replace the "with...Texts." line with this:
|
||
|
||
with the Invariant Sections being LIST THEIR TITLES, with
|
||
the Front-Cover Texts being LIST, and with the Back-Cover Texts
|
||
being LIST.
|
||
|
||
If you have Invariant Sections without Cover Texts, or some other
|
||
combination of the three, merge those two alternatives to suit the
|
||
situation.
|
||
|
||
If your document contains nontrivial examples of program code, we
|
||
recommend releasing these examples in parallel under your choice of free
|
||
software license, such as the GNU General Public License, to permit
|
||
their use in free software.
|
||
|
||
|
||
File: VasEBoot.info, Node: Index, Prev: Copying This Manual, Up: Top
|
||
|
||
Index
|
||
*****
|
||
|
||
|