Skip to content

Non-interactive Installation of SmartOS

SmartOS installation can be automated to be either fully or partially non-interactive. This is similar to kickstart, jumpstart, installerconfig, or other unattended installation methods used by many operating systems.

On SmartOS this is done with an answers.json file. The answer file must be placed at private/answers.json of the installation media and be valid JSON.

An example answers.json file looks like this:

  "config_console": true,
  "skip_instructions": true,
  "simple_headers": true,
  "admin_mac": "52:54:00:2f:61:34",
  "admin_ip": "dhcp",
  "headnode_default_gateway": "none",
  "dns_resolver1": "",
  "dns_resolver2": "",
  "dns_search": "",
  "ntp_host": "",
  "skip_ntp_check": true,
  "zpool_layout": "default",
  "zpool_confirm_layout": "yes",
  "bootpool": "none",
  "install_pkgsrc": "no",
  "root_password": "secret",
  "hostname": "brainiac",
  "skip_final_confirm": true

Supported Keys

The following keys are meaningful in an answer file on SmartOS. Keys other than the ones listed will be ignored. If a key is missing, setup will prompt for an answer.

After setup is finished the system will automatically reboot.

Valid config keys not listed here (e.g., additional NIC tags, VLANs, IPv6, etc.) must be done post-setup in /usbkey/config.


This key must be present to indicate non-interactive install is desired. If this key is missing, setup will silently block waiting for the user to press Enter. This can be useful if you want the system to boot up and be ready to install, but wait for an operator before proceeding.


If set to true setup will not display instructional text for each section of setup. If this key is not set true setup will block waiting for user input before beginning.


If set to true setup will display a brief header and will not clear the display between setup sections.


This must be a valid MAC address of a NIC that is attached to the system. If an invalid value is supplied the setup will fail.


This must be either dhcp or a valid IP address in dotted decimal form (e.g.,


If admin_ip is set to dhcp, this key is not needed.

This must be a valid subnet mask in dotted decimal form (e.g.,, not a prefix length (e.g., /24).


This key is required, even if admin_ip is set to dhcp.

If admin_ip is set to dhcp then this should be set to none.

If admin_ip is set to an IP address then this must be set to the correct gateway IP address.

dns_resolver1, dns_resolver2

These must be valid IP addresses that will act as recursive resolvers. DNS resolvers will be checked for connectivity.

This should be a valid domain name.


This is either an IP address or hostname of an NTP server. The NTP server will be checked for connectivity with ntpdate. Failure to contact the NTP server will not fail setup.


If this is set to true then the NTP server check will be skipped. The pool is run by volunteers, and sometimes individual IPs will be non-responsive. Skipping this check will avoid a delay in those cases.


This determines the zpool layout using the disklayout tool. You can use disklayout on a running SmartOS system to preview the layout that will be generated for various disk configurations.

The system will attempt to intelligently assign storage, spare, log, and cache devices automatically based on the specified layout type. See disklayout(8) for more information.

Not all values supported by disklayout are valid during setup. The only valid values recognizd by setup are:

default: The default layout suggested by SmartOS will be used. The actual layout will vary depending on the number and type of storage devices attached.

mirror: Requires a minimum of two devices. SmartOS will do its best to pair up devices into an array of mirrors. E.g., if there are four devices then there will be two, two-way mirrors. If there are six devices there will be three, two-way mirrors. If there is an odd number of devices then one device will be a spare.

raidz2: Requires a minimum of five devices. SmartOS will do its best to create an array of raidz2 vdevs. If there are sufficient devices, multiple raidz2 vdevs will be created.

manual: While technically a valid value, this will cause the installer to drop to a shell for the operator to create the pool using zpool create.


This must be set to yes or setup will block waiting for the user to confirm the layout.


This can be either none, or zones. Other values are legal, but a boot pool other than zones must be created manually.


If set to true or yes, the pkgsrc-setup command will be run and pkgsrc will be installed during setup.


This string will be used to generate a password hash added to the shadow file for the root user.

Note: Leaving the answer.json file on the USB with the root_password will expose the password to anyone who has access to the file.


The system hostname.


If set to true, setpu will skip the final confirmation. If missing or set to any other value setup will display a summary and prompt for confirmation before anything is applied.