如何使用交互部分自动重启?

如何使用交互部分自动重启?

自动安装可以通过自定义用户数据完美运行,但安装完成后不会自动重启。

我没有找到有关重启的文档https://ubuntu.com/server/docs/install/autoinstall-reference

我还在这里找到了一篇文章http://junyelee.blogspot.com/2021/05/subiquity.html

# use interactive-sections to avoid an automatic reboot

这是我的用户数据

#cloud-config
autoinstall:
  ### config storage and network manually
  interactive-sections:
    - storage
  # Swapfile on root volume
  swap:
    swap: 16GB
  late-commands:
    - curtin in-target --target=/target -- apt-get --purge -y --quiet=2 remove byobu
    - curtin in-target --target=/target -- apt-get install -y git wget curl rsync net-tools ssh ubuntu-desktop plymouth-theme-ubuntu-logo grub-gfxpayload-lists mailutils
    - curtin in-target --target=/target -- hostnamectl set-hostname ubuntu-jammy.abc.com
  # Write a script that can take care of some post install setup "late-commands" cannot be interactive unfortunately"
    - |
      cat <<EOF | sudo tee /target/etc/finish-install-setup.sh
      #!/usr/bin/env bash
      echo *************************
      echo ****  Finish Setup   ****
      echo *************************
      echo 'Enter the hostname for this system: '
      read NEW_HOSTNAME
      hostnamectl set-hostname \${NEW_HOSTNAME}
      echo
      echo 'Enter the timezone for this system: '
      echo 'Asia/Taipei'
      read NEW_TIMEZONE
      timedatectl set-timezone \${NEW_TIMEZONE}
      echo *************************
      echo
      echo *************************
      echo 'Restarting to finish ...'
      shutdown -r 3
      EOF
    - curtin in-target --target /target chmod 744 /etc/finish-install-setup.sh
  apt:
    disable_components: []
    geoip: true
    preserve_sources_list: false
    primary:
    - arches:
      - amd64
      - i386
      uri: http://free.nchc.org.tw/ubuntu
    - arches:
      - default
      uri: http://ports.ubuntu.com/ubuntu-ports
  drivers:
    install: false
  identity:
    hostname: ubuntu-jammy
    password: somesupersecretpasswordhere
    realname: administrator
    username: administrator
  kernel:
    package: linux-generic
  keyboard:
    layout: us
    toggle: null
    variant: ''
  locale: en_US.UTF-8
  network:
    ethernets:
      ens18:
        dhcp4: true
    version: 2
  ssh:
    allow-pw: true
    authorized-keys: []
    install-server: true
  ### user-data , commands run during first boot
  user-data:
    runcmd:
      - rm -rf  /usr/bin/python
      - ln -s /usr/bin/python3.10 usr/bin/python
      - wget https://download.nomachine.com/download/7.8/Linux/nomachine_7.8.2_1_amd64.deb -O /opt/nomachine.deb
      - dpkg -i /opt/nomachine.deb
      #- /etc/finish-install-setup.sh
  version: 1

我必须在最后按下回车键来重新启动机器,我不认为这是一个好的“自动化”。

但是我需要手动配置存储布局,有没有解决方案可以在安装完成后强制重新启动?

答案1

如果您指定任何interactive-sections安装程序(下位性认为该装置是“互动的”。如果安装是“交互式”的,则安装程序将等待用户安装完成后点击重新启动。

无论如何,重新启动的简单方法是使用late-commands来调用/sbin/reboot。缺点是安装程序无法完成,并且之后执行的任何安装步骤late-commands都不会发生。我相信唯一会跳过的步骤是将安装程序日志复制到已安装的系统。

#cloud-config
autoinstall:
  late-commands:
    - |
      /sbin/reboot

一个更笨拙的方法是模拟“重启”点击。客户端下位性流程将此事件传达给服务器下位性使用 处的套接字来处理进程/run/subiquity/socket。下面是模拟客户端通信的示例late-command,因此服务器认为用户已请求重新启动。在此示例中,进程curl将阻塞,这就是使用 在后台运行它的原因screen

#cloud-config
autoinstall:
  late-commands:
    - |
      screen -dmS reboot curl --unix-socket /run/subiquity/socket -X POST http://a/shutdown?mode=%22REBOOT%22 --header "Content-Type:application/octet-stream"
      true

笔记

我使用 Ubuntu 22.04 进行了测试(subiquity 22.04.2

相关内容