Installing From OTP ISO

One Touch Provisioning (OTP)

The OTP installation process produces a system installed with 128T software set to its factory defaults. Upon completion of the OTP installation process, the default behavior is to provision the device to be configured with a DHCP client on the first ethernet port and DHCP server listening on all other ports. A user would then connect to the 128T via ethernet cable and use the QuickStart file generated by the Conductor to finalize the 128T configuration. After performing the QuickStart operation, the 128T will have connectivity to its Conductor and can download the latest configuration (if necessary) and begin operation. These defaults can be changed to suit your needs.

Installing 128T with the ISO

Bootable USB

For smaller deployments or proof of concepts each image can be loaded on to a bootable USB for installing the operating system and 128T software. Follow the instructions for installing from bootable media. After installation, the platform will power off.

Disk Cloning

Disk cloning will allow large distributors to take an ISO image, install it on to a platform, and create a master disk copy of the platform.


When using cloned images, the same exact hardware platform must be used. Create a new master disk image for each hardware variation.

This disk copy can then be used to quickly install platforms by copying the filesystem and 128T software from one platform to another. After the initial installation the platform will be powered off. At this point in time the platform is generic and not unique -- which is the proper time to create a disk clone of the hard drive.

The following procedure must be followed:

  1. Platform is installed using ISO image which powers down on success
  2. Use Clonezilla or other Live USB to take a disk copy of the platform
  3. Distribute disk clone using USB, multicast, or other technique
  4. Start each platform after installation
  5. Allow platform to bootstrap and then reboot
  6. Verify platform validation report


As mentioned above, the platform is generic after the initial installation and poweroff. However, once the platform is started again there is an automated script that does bootstrapping of the platform. This script is a one-shot service unit that only executes once during the first bootup. It will perform the following steps:

  1. Configure Hostname and Salt Minion Identifier
  2. Configure 128T and network interfaces
  3. Enable 128T and salt-minion service
  4. Write a Result Report
  5. Reboot

After rebooting the 128T service will be running with configuration.


It is worth noting that after the OS installation -- dhclient is configured across all network interfaces until the platform has completed Bootstrapping.

Hostname and Salt Minion Identifier

The hostname and salt minion identifier are set to the same value during the bootstrapping process.

  1. If the system serial number provisioned (which can be seen by dmidecode --string system-serial-number) this value will be used.
  2. Otherwise use the first MAC address found in the format of: mac-<address>

QuickStart Location

The Bootstrapper will set 128T configuration via a QuickStart file that can be present in a number of locations:

  1. The QuickStart file can be placed in the root of an attached USB drive. i.e. /bootstrap.quickstart
    The USB drive MUST be named "BOOTSTRAP" in all caps.

  2. If an attached USB drive is not found with the file in root, then the one-shot process will look for the QuickStart file /etc/128technology/bootstrap.quickstart.

  3. If no file source is present, the Bootstrapper will execute HTTP GET requests to the following endpoints in an attempt to download the QuickStart File from a server. The REST response is explained in REST details.

    1. http://quickstart.128t-bootstrap.local/quickstart/<identifier>

      Where <identifier> will be the minion-id as determined by the algorithm discussed in the above section. It will most likely be the system serial number.

  4. Else use OTP defaults, which sets up DHCP client on the first ethernet port and a DHCP server listening on all other ports.

Image Validation

Once the platform has been rebooted after bootstrapping has completed, there will be a bootstrap validation report that is located at the root filesystem (/root/128T-bootstrap.txt) that contains details about the steps taken. There is also the file /root/128T-bootstrap.json that contains the same information in JSON format. The report will contain a message that includes additional details for each step.

Shown below is the location of the bootstrap report as well as an example of the contents

[root@sn123456789 ~]# cat /root/128T-bootstrap.txt
| Label | Result | Message |
| Minion ID | True | mac-000000 |
| Hostname | True | mac-000000 |
| Clock Sync | True | |
| Initialize 128T | True | node.Router |
| Enable 128T | True | |
| Enable salt-minion | True | |
| Factory Defaults | True | |
| Ifgcfg files | True | |


In addition to the above steps, the Bootstrap utility supports executing pre- and post- scriptlets on a USB drive for further customisation of the platform. The scriptlets will be executed as the first step in the bootstrap process and as the last step.

The locations for the scriptlets are:

  • If scriptlet exists at the root of USB drive and is called “/pre-bootstrap”
    • Otherwise, try to use /etc/128technology/pre-bootstrap
  • If scriptlet exists at the root of USB drive and is called “/post-bootstrap”
    • Otherwise, try to use /etc/128technology/post-bootstrap

The scriptlets must have executable permissions to be executed properly.

Any stdout/stderr output generated from the scriptlets will be logged for you in /var/log/128T-bootstrap/<scriptlet-name>-scriptlet.log.

Bootstrapping Flow Chart

Below is a diagram of the procedure followed by the Bootstrapper software during first bootup of the platform. This occurs after the ISO installation when powered on for the first time.

QuickStart file via REST

If no bootstrap file is present on USB device or disk, the Bootstrapper will execute HTTP GET requests in an attempt to download the QuickStart file from a server.

The server must respond to the HTTP GET request with valid JSON data that is of format:

“quickstart”: “<quickstart-file-contents>”,
“password”: “this-is-my-password”

The response must be URL-encoded otherwise the client will not decode the data correctly.

The password data within the JSON is required if the QuickStart file was encrypted when exported from the 128T Conductor.


The bootstrap utility provides an entrypoint to test your own QuickStart Server. By executing the below command, the client will make requests to URLs and attempt to download and decode the QuickStart file. It will NOT apply the QuickStart to the platform -- only test the process.

$ bootstrap128t rest-test -i <test-identifier>

OR if you want to test a specific url.

$ bootstrap128t rest-test -i <test-identifier> --url <a-fully-qualified-url>
Last updated on