自动安装可以通过自定义用户数据完美运行,但安装完成后不会自动重启。
我没有找到有关重启的文档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
)