Hydro Contest OS

Hydro Contest OS is the standardized workstation environment maintained by the technical team for XCPC onsite contests, providing consistent compilers, IDEs, desktop settings, user restrictions, and onsite operations tools across venues and seasons.

Hydro Contest OS 2026 Installation Guide

Prepare installation media and deploy the 2026 environment using the graphical installer or a site-specific automated-install profile.

Prepare installation media

The ISO contains multiple squashfs layers, each below the FAT32 4 GB single-file limit. It can be extracted to a writable FAT32 drive for UEFI deployment, or written as a hybrid image for BIOS and UEFI boot.

  1. Back up important files on the USB drive and create one FAT32 partition.
  2. Extract every file from the ISO into the partition root. The label ICPC is optional.
  3. Boot the target machine in UEFI mode.

The resulting layout includes:

/
├── autoinstall/
│   └── default.yaml
├── casper/
├── EFI/
└── boot/grub/

The partition remains writable, so you can edit the site-specific profile described below.

BIOS and UEFI installation media

For machines requiring BIOS (Legacy) boot, use Ventoy, Rufus, or dd. When writing the ISO as a block image, its hybrid boot record is preserved, but the ISO9660 filesystem is read-only and retains the public automated-install profile.

To use private settings with a read-only ISO, remaster it and replace /autoinstall/default.yaml. The remastered image contains secrets and must be handled as private installation media.

Install the system

The image boots into a live environment using ubuntu-desktop-bootstrap and Subiquity. The boot menu provides:

  • Try or Install Ubuntu: starts the live desktop and graphical installer.
  • Ubuntu (safe graphics): starts the same environment with nomodeset.
  • Automated Install: performs an unattended installation using /autoinstall/default.yaml.

The first two entries are interactive. Only Automated Install selects the automated-install profile. Automated installation rebuilds the target disk according to the profile; verify disk selection before deployment.

Configure automated installation

The published image has a public profile with the account icpc / passw0rd. It contains no private passwords, WiFi credentials, or SSH keys.

For contest deployment, extract the ISO onto a FAT32 drive and edit autoinstall/default.yaml. Replace the public identity with the site’s hostname, username, and SHA-512 password hash, then add WiFi and SSH settings if needed. Once private values are added, handle the entire drive as installation media containing secrets.

Installation variants

Set source.id to select the software set:

  • icpc-ubuntu-desktop-minimal: compilers, editors, and contest tools.
  • icpc-ubuntu-desktop: the minimal set plus IDEs.
  • icpc-ubuntu-desktop-full: the standard set plus streaming, monitoring, and first-boot setup support.

Public profile example

The published image contains the following profile. Omitting WiFi or SSH settings leaves those features unconfigured. When changing the account name, update all corresponding icpc values, including the late commands.

version: 1
source:
  id: icpc-ubuntu-desktop-full
  search_drivers: false
apt:
  fallback: offline-install
  geoip: false
locale: en_US.UTF-8
keyboard:
  layout: us
timezone: Asia/Shanghai
identity:
  realname: ICPC
  hostname: icpc
  username: icpc
  # Public password: passw0rd
  password: '$6$rounds=656000$0bffae792a4e9fb5$VgTE6Ko/.d4ZqxVUQvQM1BKgmhPFoylMANIABvSDOGVqy7VneTejUWScDR6.S9zUtw/ShmlZVY3gFkBusQhWP/'
storage:
  swap:
    size: 0
  layout:
    name: direct
    sizing-policy: all
late-commands:
  - echo 'icpc ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/icpc-nopasswd
  - chmod 440 /target/etc/sudoers.d/icpc-nopasswd
  - touch /target/icpc/.machine-setup

This profile controls the software variant, locale, keyboard, timezone, identity, storage layout, and optional network access. The late commands grant the operator passwordless sudo and activate the first-boot machine-setup wizard. SSH authorized keys can be supplied through user-data.ssh_authorized_keys.

See the Subiquity autoinstall reference for the full schema. After installation, follow the administration guide to create contestant accounts.