Hydro Contest OS

Hydro Contest OS 是技术组面向 XCPC 现场赛维护的标准化比赛用机环境,统一编译器、IDE、桌面配置、用户权限和现场运维工具,方便赛站部署和跨赛季复用。

Hydro Contest OS 2025 部署教程

使用 CLI Deploy Toolkit 自动部署 2025 镜像,或通过 Calamares 完成手动安装。

启动与安装方式

2025 镜像的默认启动项会使用 CLI Deploy Toolkit,按照自动安装配置将系统部署到首个可用磁盘。安装过程不需要人工操作,完成后即可使用,这是推荐的部署方式。自动安装配置的自定义方法见下文。

磁盘安全提示: 默认自动部署会按照配置重建目标磁盘。批量部署前必须在同型号设备上验证启动项、目标磁盘和网络配置。

如果需要手动安装以配置双系统,或者有其他需要手动选择磁盘的场景,可以选择 Install ICPC Contest Image 启动项。该选项会进入 Live 环境,可以使用 Calamares 安装器手动安装。现场赛环境不建议使用该方式,因为每台机器都需要人工操作。

自动安装指南

自动安装功能是 Ubuntu Server 使用的 Subiquity 安装器功能子集,用于无人值守安装和系统配置。

2025 版本的 CLI Deploy Toolkit 仅支持有限的 networkuser-data 配置,其他 Subiquity 配置项将被忽略。

配置可以通过两种方式提供:

通过 cloud-config 自动安装

建议通过 cloud-init 提供自动安装配置,这样无需修改安装介质。cloud-init 配置方式很灵活,大多数场景可以通过 NoCloud 数据源提供 user data。

通过安装介质自动安装

也可以在安装介质中放置名为 autoinstall.yaml 的文件。安装器会在两个位置查找该文件:

  • 安装介质的根目录。将 ISO 写入 U 盘后,把 autoinstall.yaml 复制到包含 ISO 内容的分区,与 casper 目录位于同一级。
  • 安装系统的根文件系统。该方式通常需要修改 ISO,不建议使用。
#cloud-config
autoinstall:
  version: 1
  user-data:
    # 默认用户密码
    # 使用 "openssl passwd -6 passw0rd" 生成 SHA-512 密码哈希
    password: '$6$UKai2yFOPb8$KAVcYf7BkWWqxnyR24Is/1rvcSTfuOA3uiA65OszXtsmuo3kif4W6gdND0iclBS6ihrN2N5PoiObUVulfEOxg/'

    # 首次登录时不要强制密码过期
    chpasswd:
      expire: false

    # 为 root 和默认用户配置 SSH 公钥
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIElY6Wzp70KNeMRGDBsLMCfDIwe3qZ5lmpzFvAnrbLfr sysops

    # 为默认用户配置自动登录
    write_files:
      - path: /etc/gdm3/custom.conf
        content: |
          [daemon]
          AutomaticLoginEnable=true
          AutomaticLogin=icpc

          [security]

          [xdmcp]

          [chooser]

          [debug]
        owner: root:root
        permissions: '0644'

  network:
    version: 2
    wifis:
      # CLI Deploy Toolkit 扩展,不是标准 cloud-init 功能
      # __autodetect__ 会自动选择首个可用的 Wi-Fi 适配器
      __autodetect__:
        dhcp4: true
        dhcp-identifier: mac
        optional: true
        access-points:
          icpc-contest:
            password: 'p@s$w0rd'

__autodetect__ 是 CLI Deploy Toolkit 扩展,用于选择首个可用的 Wi-Fi 适配器并连接指定的无线网络。正式部署前应完整演练安装、首次启动、自动登录和网络连接。