NAME
  install - installs files from a source filesystem to a target filesystem

SYNOPSIS
  install [name] [OPTIONS]...

DESCRIPTION
  install builds a list of candidate source and target mounted filesystems. If there are multiple candidates, the user is prompted for selections. By default, install copies all files from the source filesystem's root to the target filesystem's root path. The source filesystem can define label, boot, and reboot behavior via .prop and a fully custom install experience via .install which supercedes install running cp from source to target filesystems. Developers creating their own .install files for devices should respect environment variables set by install as per options it is given, such as the root path. This manual page details those environment variables.

OPTIONS
  --from=ADDR
    Specifies the source filesystem or its root path. ADDR can be the device uuid or a directory path. If this is a directory path, it represents a root path to install from. This option can also be used to specify source paths that would otherwise be ignored, those being devfs, tmpfs, and the rootfs. e.g. --from=/tmp . Note that if both --from and --label are used, install expects the source path to have a .prop defining the same label. See .prop for more details.

  --to=ADDR
    Same as --from but specifies the target filesystem by uuid or its root path. This option can also be used to specify filesystems that are otherwise ignored including tmpfs. i.e. --to=ADDR where ADDR matches the tmpfs device address or its mount point path. e.g. --to=/tmp

  --fromDir=PATH
    Install PATH from source. PATH is relative to the root of the source filesystem or path given by --from. The default is .

  --root=PATH
    Same as --fromDir but for the target filesystem.

  --toDir=PATH
    Same as --root. Either can be used. It is meaningless to specify both and is not documented which takes precedence in such a case.

  -u, --update
    Indicates that install should prompt the user before modifying files. This invokes -i and -u for /bin/cp.

The following can override settings defined in .prop in the source filesystem.

  --label=LABEL
    use LABEL for label instead of any value specified by .prop

  --nosetlabel
    do not set target label. --nolabelset is deprecated

  --nosetboot
    do not set target as default boot device when rebooting. --noboot is deprecated

  --noreboot
    do not reboot after install

.prop
  .prop should have valid lua syntax for a table of keys and their values: e.g. "{label='OpenOS'}"
  All fields are optional, as is the .prop file

  label:string
    Declares an identifying name of the installation. This is displayed by install during source selection and also can be used on the commandline: e.g. (where {label="tape"} is given) `install tape`. If setlabel is true, this value is used for the target filesystem label. --label overrides this value. Note that install uses a case insensitive search: e.g. install TAPE works the same as install tape.

  setlabel:boolean
    Determines whether the install should set the target filesystem's label. If .prop does not define a label and the user does not define a command line --label=LABEL, setlabel has no action. --nosetlabel overrides this value

  setboot:boolean
    Determines if the target filesystem should be set as the machine's default boot device. Default is false, overriden by --nosetboot

  reboot:boolean
    Determines if the machine should reboot after the install completes. Overriden by --noreboot

  ignore:boolean
    If true, the installer will skip the source filesystem and not include it for selection

  EXAMPLE:
    {label='OpenOS', setlabel=true, setboot=true, reboot=true}

.install ENVIRONMENT
  A loot disc can optionally provide a custom installation script at the root of the source filesytem selected for installation. The script must be named ".install"
  When provided, the default install action is replaced by executation of this script. The default action is to copy all source files to the destination
  A table of configuration options, named `install`, is provided in _ENV
  These are the keys and their descriptions of that table

  _ENV.install.from:
    This is the path of the selected source filesystem to install from. It should be the path to the executing .install
    example: /mnt/ABC/.install is executing, thus _ENV.install.from is "/mnt/ABC/"

  _ENV.install.to:
    This is the path of the selected target filesystem to install to.
    example: "/"

  _ENV.install.fromDir
    This is the relative path to use in the source filesystem as passed by command line to install. If unspecified to install it defaults to "."
    example: Perhaps the user executed `install --fromDir="bin"` with the intention that only files under /mnt/ABC/bin would be copied to their rootfs

  _ENV.install.root
    This is the relative path to use in the target filesystem as passed by command line to install. If unspecified to install it defaults to "."
    example: The user prefers to install to usr/ and uses `install --root=usr` and here _ENV.install.root would be "usr"

  _ENV.install.update
    Assigned value of --update, see OPTIONS

  _ENV.install.label
    Assigned value of --label or .prop's label, see OPTIONS

  _ENV.install.setlabel
    Assigned value of .prop's setlabel unless --nosetlabel, see OPTIONS

  _ENV.install.setboot
    Assigned value of .prop's boot unless --nosetboot, see OPTIONS

  _ENV.install.reboot
    Assigned value of .prop's reboot unless --noreboot, see OPTIONS

EXAMPLES
  install
    Searches all non rootfs filesystems to install from, and all non tmpfs filesystems to install to. Prompts the user for a selection, and copies. If .prop is defined in source, sets label and will prompt for reboot when completed.

  install openos
    Searches candidates source filesystems that have .prop's that define label="OpenOS" and prompts the user to confirm install to candidate target filesystems.


