> For the complete documentation index, see [llms.txt](https://docs.platform9.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.platform9.com/private-cloud-director/2026.8/getting-started/platform9-os.md).

# Platform9 OS

## Overview

Platform9 OS is a purpose-built host operating system, powered by Rocky Linux by CIQ (RLC), delivered as a single self-contained ISO. One ISO installs the operating system and every <code class="expression">space.vars.product\_name</code> host dependency, and then lets you connect the host to your management plane. No separate operating system installation or manual agent setup is required.

Installing the operating system needs no network connectivity, because the <code class="expression">space.vars.product\_acronym</code> payload is carried on the ISO itself. Network connectivity is required only when you connect the host to your management plane, which is a separate step after installation.

You can connect an installed host to the management plane in either of two ways, and both are interchangeable: the **Host Boot Console**, a text interface on the host itself, or the **Cockpit** web console. This guide covers both.

The latest Platform9 OS ISO is available at [this link](http://artifacts.platform9.com/pcd/iso/latest/platform9-os-x86_64.iso).

In this guide, you will boot the Platform9 OS ISO, install the operating system with the on-screen wizard, connect the host to your <code class="expression">space.vars.product\_acronym</code> management plane, and authorize it for use.

{% hint style="info" %}
To install Platform9 OS across many hosts, see [Network Boot (PXE)](/private-cloud-director/2026.8/getting-started/platform9-os/network-boot-pxe.md) for booting the same ISO over the network, and [Unattended Installation (Kickstart)](/private-cloud-director/2026.8/getting-started/platform9-os/unattended-install-kickstart.md) for a fully hands-off install.
{% endhint %}

## Prerequisites

* **Firmware:** the host must boot in **UEFI** mode.
* **Target disk:** at least **100 GB**. The installer does not list disks smaller than 100 GB. A disk of **250 GB or larger is recommended**.
* **Network reachability for onboarding:** the host must be able to reach your <code class="expression">space.vars.product\_acronym</code> management plane over the network in order to connect to it. This is not required to install the operating system.
* **Account details for onboarding.** Collect these in the <code class="expression">space.vars.product\_acronym</code> UI under **Infrastructure > Cluster Hosts > Add New Hosts**:
  * **Account URL:** your region URL, for example `https://<your-org>.app.platform9.io`
  * **Username** and **Password**
  * **Region**
  * **Tenant**

All prerequisites noted on the [hypervisor configuration prerequisites page](/private-cloud-director/2026.8/getting-started/pre-requisites.md#general-hypervisor-configuration-pre-requisites) continue to apply to this installation mode.

## Install Platform9 OS From the ISO

### Boot the Installer

Attach the Platform9 OS ISO as virtual media or a bootable USB device and boot the host in **UEFI** mode. The **Platform9 OS Installer** launches automatically, and its header shows the build number of the ISO you booted (for example, `Build <version>`).

The installer is a guided text wizard with five steps, shown as a breadcrumb across the top:

```
Keyboard  ›  Root Password  ›  Target Disk  ›  Hostname  ›  Review
```

Navigate using the keys shown in the footer of each step: `Up`/`Down` to move within a list, `Tab` to move between fields, `Enter` to confirm, `Esc` to go back, and `Ctrl+C` to exit and reboot.

### Step 1: Select the Keyboard Layout

Select the keyboard layout for the server. English (US) is preselected. The layout applies immediately and is used by the installed system. Press `Enter` to continue.

### Step 2: Set the Root Password

Set and confirm the password for the **root** account on the installed system. It is stored in the install configuration as a hashed value.

The following requirements are enforced and shown on screen:

* At least 8 characters
* Upper and lower case
* At least one number
* At least one symbol

A strength meter and a **Passwords match** confirmation update as you type. Press `Tab` to move to the confirmation field, then `Enter` to continue.

### Step 3: Choose the Target Disk

Choose the disk to install onto. The selected disk **is erased**.

Two constraints apply on this step:

* Only disks of **100 GB or larger** are listed. The installer media and any disk under 100 GB are not shown, and other disks are left untouched.
* A `[!]` marker flags any disk below the recommended 250 GB size.

Select the disk and press `Enter`. A **Confirm Disk Erase** dialog appears, naming the disk and warning that the operation permanently erases all data on it. Press `Enter` to confirm.

### Step 4: Set the Hostname

Give the host a name that identifies it in the management plane and on the network. The default is `pcd-host-01`. Press `Enter` to continue.

### Step 5: Review the Summary and Install

Confirm the summary: keyboard layout, root password, target disk to be erased, and hostname. The screen notes that no network is required, because the installer partitions the disk and installs both the operating system and <code class="expression">space.vars.product\_name</code> from the ISO.

Press `Enter` to begin the install.

### Automated Installation and First Boot

The installer runs unattended from this point:

1. It partitions the target disk, using GPT with an LVM volume group named `pcd` and a grow-to-fill root volume, then installs the operating system and the <code class="expression">space.vars.product\_acronym</code> payload from the ISO. This takes a few minutes.
2. The host reboots into the **Host Boot Console**.
3. On first boot, the host automatically applies CIS Level 1 hardening.

{% hint style="warning" %}
As part of CIS hardening, direct root SSH access is disabled after the first boot. Administer the host from the boot console shell (`F12`) or from the Cockpit web console, neither of which is affected.
{% endhint %}

## The Host Boot Console

After installation, the host displays the <code class="expression">space.vars.product\_name</code> **Host Boot Console**, which summarizes the host and its connection state:

* **CPU** and **Memory**
* **Host Name**
* **Network:** the primary interface and its IP address, for example `ens3 · 172.16.122.85/24`
* **PCD Connectivity:** initially an amber **Not connected**

The console also shows the two ways to connect and the web console URL, which is `https://<host-ip>:9090`.

Two footer actions are available:

* `F2`: **Customize System**, which opens the System Customization menu.
* `F12`: **Exit to Shell**, which prompts for the root password.

### System Customization Menu (F2)

Pressing `F2` prompts for the root password before it opens the menu. After you authenticate, the **System Customization** menu offers three options:

* **Configure Management Network:** configure NICs, IPv4 and IPv6 addressing, VLAN tagging, and DNS for the host.
* **Connect to PCD Management Plane:** onboard the host, as described in the next section.
* **View PF9 Service Status:** view and restart the <code class="expression">space.vars.product\_acronym</code> host services.

## Connect the Host to the Management Plane

Connect the host in either of two ways: from the Host Boot Console or from the Cockpit web console. Both perform the same onboarding, so a host connected either way is configured identically. Use whichever fits your workflow.

Before you connect, make sure the host can reach the management plane. If it cannot (because there is no route, the host is on the wrong VLAN, or the environment requires a proxy), configure networking first, either from the boot console under `F2` > **Configure Management Network** or from the Cockpit **Networking** plugin.

Have the values from [Prerequisites](#prerequisites) ready: **Account URL**, **Username**, **Password**, **Region**, **Tenant**, and an optional **Proxy URL**.

### Option 1: Host Boot Console

1. At the boot console, press `F2` and enter the root password.
2. Select **Connect to PCD Management Plane**.
3. Complete the form:
   * **Account URL:** your region URL, for example `https://<your-org>.app.platform9.io`
   * **Username**
   * **Password:** press `F3` to show or hide the value
   * **Region**
   * **Tenant**
   * **Proxy URL:** optional, and only required if the host reaches the management plane through a proxy. To configure a proxy separately, use **Configure Network** > **Proxy Configuration**.
4. Press `Enter` to connect. The host authenticates and onboards, and the screen shows a **Connecting** message while it installs and starts the host agents. This takes a few minutes.
5. On success, the console returns to the dashboard and **PCD Connectivity** turns green and reads **Connected**.

### Option 2: Cockpit Web Console

1. In a browser, go to `https://<host-ip>:9090` (the URL shown on the boot console) and log in as **root**. The Cockpit web console opens with a left navigation containing **PCD Connection**, **Host Readiness**, **Storage**, **Networking**, **PCD Logs**, **OS Hardening**, and **Terminal**. **PCD Connection** is the default page.
2. On the **PCD Connection** page, complete the form (**Account URL**, **Username**, **Password**, **Region**, **Tenant**, and optional **Proxy URL**), then click **Connect**. Every field except the proxy is required.
3. A live log streams while the host authenticates and onboards, reporting each stage as it completes: setting the configuration, running `pcdctl prep-node`, loading the configuration, and running prerequisite checks while installing any missing operating system packages.
4. On success, the page switches to a **Connected to PCD Management Plane** view. This view shows the connection details (Account URL, Username, Region, Tenant, Web Portal, and Outbound Proxy), along with a **PCD Services** list containing **Network**, **Hostagent** (`pf9-hostagent`), **Comms** (`pf9-comms`), and **Sidekick** (`pf9-sidekick`). Each service reports **active** and offers **Restart** and **View logs** actions.

{% hint style="info" %}
The **Connected to PCD Management Plane** view also exposes a **Passwordless Root Access** toggle for Advanced Remote Support. It is disabled by default.
{% endhint %}

## Authorize and Verify the Host

After the host connects, it registers with the management plane and appears in the <code class="expression">space.vars.product\_acronym</code> UI under **Infrastructure** > **Cluster Hosts**.

A newly connected host is registered but unauthorized, because it has no roles yet. Until you authorize it, the host is registered but shows as **not responding**. Authorize the host and assign its roles in the <code class="expression">space.vars.product\_acronym</code> UI. See [Authorize Host And Assign Roles](/private-cloud-director/2026.8/virtualized-clusters/add-hosts-virtualized-cluster.md#authorize-host-and-assign-roles) for the full procedure.

Once the host is authorized and its agent is communicating, you can confirm that it is connected from any of three places:

1. <code class="expression">space.vars.product\_acronym</code> **UI:** the host shows **Connected** under **Infrastructure** > **Cluster Hosts**.
2. **Cockpit:** the **PCD Connection** page at `https://<host-ip>:9090` shows **Connected to PCD Management Plane**, with all services **active**.
3. **Host Boot Console:** **PCD Connectivity** shows green and reads **Connected**.

{% hint style="info" %}
The boot console reads its **PCD Connectivity** status when the home screen is drawn. If you onboarded the host from Cockpit, the console can still show **Not connected** until the screen is redrawn. Press `F2` and then `Esc` to return to the home screen and refresh the status.
{% endhint %}

At this point the host is a fully onboarded <code class="expression">space.vars.product\_acronym</code> host.

## Caveats and Troubleshooting

| Topic                                                     | Detail                                                                                                                                                                                                                                                                                                                                          |
| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Network for install compared with onboarding**          | Installing the operating system needs no network, because the operating system and the <code class="expression">space.vars.product\_acronym</code> payload are both on the ISO. Connecting to the management plane does require network reachability.                                                                                           |
| **Disk requirements**                                     | Only disks of 100 GB or larger are selectable, and 250 GB or larger is recommended. Disks below the recommended size are flagged with `[!]`.                                                                                                                                                                                                    |
| **UEFI**                                                  | Boot the installer in UEFI mode.                                                                                                                                                                                                                                                                                                                |
| **CIS hardening and root SSH**                            | The first boot applies CIS Level 1 hardening, after which direct root SSH is disabled. Use the boot console shell (`F12`) or the Cockpit console and terminal instead.                                                                                                                                                                          |
| **A `FATAL` configuration line appears while connecting** | On the Host Boot Console path only, a line such as `FATAL Could not load config: … config.json: no such file` can appear at the very start of onboarding. This is benign (it is the initial configuration probe running before the configuration is written), and onboarding continues normally. The Cockpit plugin does not surface this line. |
| **The host registers but stays "not responding"**         | A connected host that has not yet been authorized, and so has no role assigned, registers but shows as not responding until you authorize it in the <code class="expression">space.vars.product\_acronym</code> UI.                                                                                                                             |
| **Onboarding takes several minutes**                      | Connecting installs and starts the host agents and pulls host packages, so it legitimately takes a few minutes before the host shows as connected.                                                                                                                                                                                              |
| **The boot console still shows "Not connected"**          | The console refreshes its connectivity status when the home screen is drawn. Press `F2` and then `Esc` to redraw it.                                                                                                                                                                                                                            |

## Next Steps

* [Network Boot (PXE)](/private-cloud-director/2026.8/getting-started/platform9-os/network-boot-pxe.md): install the same ISO at scale over the network.
* [Unattended Installation (Kickstart)](/private-cloud-director/2026.8/getting-started/platform9-os/unattended-install-kickstart.md): run a hands-off install with a kickstart you supply.
* [Add Hosts to a Virtualized Cluster](/private-cloud-director/2026.8/virtualized-clusters/add-hosts-virtualized-cluster.md): authorize the host and assign it to a cluster.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.platform9.com/private-cloud-director/2026.8/getting-started/platform9-os.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
