Introduction
SetupOS is an operating system designed specifically for installing both HostOS and GuestOS onto new Internet Computer nodes. It enables Node Providers to independently onboard their nodes without external assistance.SetupOS runs from a bootable USB drive and performs hardware validation, system preparation, and installation of both operating systems.
Purpose
SetupOS serves as the bootstrapping mechanism for IC nodes:Hardware Validation
Verifies system hardware meets IC requirements
Network Verification
Tests connectivity and NNS reachability
Disk Preparation
Prepares storage with proper partitioning
OS Installation
Installs HostOS and GuestOS to disk
Installation Process
Node Providers follow these steps to onboard a new node:Add Configuration
Mount the USB drive and add necessary configuration files:
config.ini: Network and node settingsnode_operator_private_key.pem: Node operator credentials- Other bootstrap configuration
Automatic Installation
SetupOS boots and automatically:
- Validates hardware
- Checks network connectivity
- Prepares disk storage
- Installs HostOS
- Installs GuestOS
- Configures the system
Hardware Requirements
For detailed hardware and networking requirements, visit the Node Provider Onboarding Wiki.Minimum Requirements
- CPU: x86-64 with virtualization support (Intel VT-x or AMD-V)
- Memory: Sufficient RAM for both HostOS and GuestOS
- Storage: SSD with adequate space for dual-boot partitions
- Network: IPv6 connectivity to the Internet Computer network
Under the Hood
SetupOS uses a systemd-based installation process:Installation Service
The installation is initiated by the systemd service unit filesetupos.service:
- Service Type:
idle(starts after all other units) - Purpose: Ensures system is fully ready before installation
- Location: Systemd unit file
Installation Scripts
The installation process consists of multiple Shell and Python scripts located in/opt/ic/bin:
check-hardware.sh
Hardware VerificationValidates system hardware components:
- CPU features and capabilities
- Memory capacity
- Storage devices
- Network interfaces
- Virtualization support
check-network.sh
Network ConnectivityTests network connectivity:
- IPv6 configuration
- Internet connectivity
- NNS (Network Nervous System) reachability
- DNS resolution
setup-disk.sh
Disk PreparationPrepares the storage device:
- Purges existing LVM configurations
- Removes existing partitions
- Creates new partition table
- Sets up partition structure
install-hostos.sh
HostOS InstallationInstalls and configures HostOS:
- Writes HostOS image to appropriate partitions
- Configures bootloader
- Sets up initial HostOS configuration
- Prepares for GuestOS VM management
install-guestos.sh
GuestOS InstallationInstalls and configures GuestOS:
- Writes GuestOS image to appropriate partitions
- Configures VM settings
- Sets up initial GuestOS configuration
- Prepares IC runtime environment
Script Execution Flow
The main installation scriptsetupos.sh orchestrates the execution of all scripts in the correct order, with error handling and logging at each step.
Node Provider Roles
Understanding the different roles in node management:- Node Provider
- Node Technician
- Node Operator
Entity that owns the hardware
- Purchases and owns the physical node hardware
- Receives rewards for the node’s useful work
- Responsible for overall node operation
- Registers with the Network Nervous System (NNS)
Node Onboarding Flow
The complete process for onboarding nodes:Create Node Operator Record
Node Provider creates a Node Operator record in the NNS containing:
- Node Operator public key
- Node Provider identity
- Node allowance
- Other metadata
Share Private Key
Node Provider shares the Node Operator private key with their Node Technician, enabling the technician to onboard nodes on behalf of the Node Provider.
NNS Verification
Before approving onboarding, the NNS verifies:
- Node Operator record exists and is valid
- Node Provider is authorized to onboard nodes
- Node Provider has not exceeded their node allotment
- Cryptographic signature is valid
Configuration Files
SetupOS requires specific configuration files on the USB drive:config.ini
Main configuration file containing:Node Operator Private Key
The private key file (node_operator_private_key.pem) used for:
- Authenticating with the NNS
- Signing node registration requests
- Proving authorization to onboard nodes
Bootstrap Package
Optionalic-bootstrap.tar containing:
- Initial IC configuration
- SSH authorized keys
- Network settings
- Custom configuration
Troubleshooting
Installation Failures
Hardware validation fails
Hardware validation fails
Common causes:
- CPU lacks virtualization support
- Insufficient memory
- Storage device too small
- Missing network interfaces
Network check fails
Network check fails
Common causes:
- No IPv6 connectivity
- Firewall blocking NNS access
- DNS resolution issues
- Network misconfiguration
Installation hangs
Installation hangs
Common causes:
- Slow storage device
- Hardware issues
- Corrupted image
Node doesn't register with NNS
Node doesn't register with NNS
Common causes:
- Incorrect Node Operator private key
- Node allowance exceeded
- Invalid configuration
- Network issues
Viewing Installation Logs
SetupOS logs are available through systemd:Manual Intervention
If automatic installation fails, you can access the SetupOS system:For development images, the root account is enabled with username and password both set to
root.Building SetupOS
To build a SetupOS image, refer to the Building IC-OS guide.Next Steps
Build SetupOS
Learn how to build SetupOS images
HostOS
Understand what happens after installation
Node Provider Onboarding
Complete onboarding documentation
IC-OS Overview
Return to IC-OS overview