#cloud-config # 顺序 early-commands > 安装系统 > late-commands > 重启进入系统 > cloud-init: runcmd > cloud-init: 其他 autoinstall: version: 1 apt: fallback: offline-install source: id: "@SOURCE_ID@" kernel: package: linux-generic timezone: Asia/Shanghai ssh: allow-pw: true authorized-keys: [] install-server: true early-commands: - | # 解决 20.04 不能识别硬盘 # https://askubuntu.com/questions/1302392/ubuntu-server-20-04-setup-stuck-at-block-probing-did-not-discover-any-disks mount | grep /isodevice && { losetup -d /dev/loop0; umount -l /isodevice; } || true # 提取 extra_confhome extra_kernel prefix=extra for var in $(grep -o "\b${prefix}_[^ ]*" /proc/cmdline | xargs); do eval "$(echo $var | sed -E "s/${prefix}_([^=]*)=(.*)/\1='\2'/")" done # 生成分区信息 xda=$(curl -L "$confhome/get-xda.sh" | sh -s) export xda curl -L "$confhome/ubuntu-storage-early.sh" | sh -s # 要安装的版本 # 有的镜像只有一个版本,没有 install-sources.yaml # 因此提取不到 $source_id,此时 $source_id 参数为空 if [ -n "$source_id" ]; then sed -i "s/@SOURCE_ID@/$source_id/" /autoinstall.yaml else sed -i "/@SOURCE_ID@/d" /autoinstall.yaml fi # 内核风味 # https://bugs.launchpad.net/subiquity/+bug/1989353 sed -i "s/generic/$kernel/" /run/kernel-meta-package sed -i "/package:/s/generic/$kernel/" /autoinstall.yaml # 跳过最后的更新 cp /usr/sbin/chroot /usr/sbin/chroot.bin cat >/usr/sbin/chroot <>/etc/hosts # sed -i -E 's/(^nameserver )/#\1/' /etc/resolv.conf late-commands: - | # root ssh 登录 echo "PermitRootLogin yes" >/target/etc/ssh/sshd_config.d/01-permitrootlogin.conf # 还原 DNS # sed -i -E 's/^#(nameserver )/\1/' /etc/resolv.conf # 提取 extra_confhome prefix=extra for var in $(grep -o "\b${prefix}_[^ ]*" /proc/cmdline | xargs); do eval "$(echo $var | sed -E "s/${prefix}_([^=]*)=(.*)/\1='\2'/")" done # 下载合并分区脚本 cd /target curl -LO $confhome/resize.sh # 升级 cloud-init # curtin in-target --target=/target -- apt update # curtin in-target --target=/target -- apt install --only-upgrade cloud-init user-data: runcmd: - | # 合并分区 bash /resize.sh disable_root: false users: - name: root lock_passwd: false chpasswd: expire: false # 20.04 arm 需要 list: | root:123@@@ users: - name: root password: 123@@@ type: text