2023-05-03 22:22:21 +08:00
|
|
|
|
#cloud-config
|
|
|
|
|
# 顺序 early-commands > 安装系统 > late-commands > 重启进入系统 > cloud-init: runcmd > cloud-init: 其他
|
|
|
|
|
autoinstall:
|
|
|
|
|
version: 1
|
2023-08-15 11:26:52 +08:00
|
|
|
|
apt:
|
|
|
|
|
fallback: offline-install
|
2023-05-03 22:22:21 +08:00
|
|
|
|
source:
|
|
|
|
|
id: ubuntu-server-minimal
|
|
|
|
|
search_drivers: false
|
2023-08-28 19:33:53 +08:00
|
|
|
|
kernel:
|
|
|
|
|
package: linux-generic
|
2023-05-03 22:22:21 +08:00
|
|
|
|
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
|
|
|
|
|
|
2023-08-28 19:33:53 +08:00
|
|
|
|
# 提取 extra.confhome extra.kernel
|
2023-05-13 00:14:46 +08:00
|
|
|
|
prefix=extra
|
|
|
|
|
for var in $(grep -o "\b$prefix\.[^ ]*" /proc/cmdline | xargs); do
|
|
|
|
|
eval "$(echo $var | sed -E "s/$prefix\.([^=]*)=(.*)/\1='\2'/")"
|
|
|
|
|
done
|
2023-05-03 22:22:21 +08:00
|
|
|
|
|
|
|
|
|
# 生成分区信息
|
2024-02-01 00:59:34 +08:00
|
|
|
|
export main_disk
|
2023-05-03 22:22:21 +08:00
|
|
|
|
curl -L $confhome/ubuntu-storage-early.sh | bash -s
|
|
|
|
|
|
2023-08-28 19:33:53 +08:00
|
|
|
|
# 内核风味
|
|
|
|
|
# https://bugs.launchpad.net/subiquity/+bug/1989353
|
|
|
|
|
sed -i "s/generic/$kernel/" /run/kernel-meta-package
|
|
|
|
|
sed -i "/package:/s/generic/$kernel/" /autoinstall.yaml
|
|
|
|
|
|
2023-05-03 22:22:21 +08:00
|
|
|
|
# 禁用 DNS 强制离线安装内核和跳过最后的更新
|
|
|
|
|
# 但安装器会配置时区和写入最近的mirror到/etc/apt/sources.list 所以要提前解析
|
2023-07-15 23:39:45 +08:00
|
|
|
|
# dig会显示cname结果,cname会以.结尾,grep -v '\.$' 表示去除 cname 结果
|
2023-08-28 19:33:53 +08:00
|
|
|
|
# echo $(dig +short geoip.ubuntu.com | grep -v '\.$' | head -1) geoip.ubuntu.com >>/etc/hosts
|
|
|
|
|
# sed -i -E 's/(^nameserver )/#\1/' /etc/resolv.conf
|
2023-05-03 22:22:21 +08:00
|
|
|
|
late-commands:
|
|
|
|
|
- |
|
|
|
|
|
# root ssh 登录
|
|
|
|
|
echo "PermitRootLogin yes" >/target/etc/ssh/sshd_config.d/01-permitrootlogin.conf
|
|
|
|
|
|
|
|
|
|
# 还原 DNS
|
2023-08-28 19:33:53 +08:00
|
|
|
|
# sed -i -E 's/^#(nameserver )/\1/' /etc/resolv.conf
|
2023-05-03 22:22:21 +08:00
|
|
|
|
|
|
|
|
|
# 提取 extra.confhome
|
2023-05-13 00:14:46 +08:00
|
|
|
|
prefix=extra
|
|
|
|
|
for var in $(grep -o "\b$prefix\.[^ ]*" /proc/cmdline | xargs); do
|
|
|
|
|
eval "$(echo $var | sed -E "s/$prefix\.([^=]*)=(.*)/\1='\2'/")"
|
|
|
|
|
done
|
2023-05-03 22:22:21 +08:00
|
|
|
|
|
|
|
|
|
# 下载合并分区脚本
|
|
|
|
|
cd /target
|
|
|
|
|
curl -O $confhome/resize.sh
|
|
|
|
|
|
|
|
|
|
# 升级 cloud-init
|
|
|
|
|
# curtin in-target --target=/target -- apt update
|
2023-05-13 00:14:46 +08:00
|
|
|
|
# curtin in-target --target=/target -- apt install --only-upgrade cloud-init
|
2023-05-03 22:22:21 +08:00
|
|
|
|
user-data:
|
|
|
|
|
runcmd:
|
|
|
|
|
- |
|
|
|
|
|
# 合并分区
|
|
|
|
|
bash /resize.sh
|
|
|
|
|
disable_root: false
|
|
|
|
|
users:
|
|
|
|
|
- name: root
|
|
|
|
|
lock_passwd: false
|
|
|
|
|
chpasswd:
|
|
|
|
|
expire: false
|
|
|
|
|
# 20.04 arm 需要
|
|
|
|
|
list: |
|
2023-05-04 22:00:59 +08:00
|
|
|
|
root:123@@@
|
2023-05-03 22:22:21 +08:00
|
|
|
|
users:
|
|
|
|
|
- name: root
|
2023-05-04 22:00:59 +08:00
|
|
|
|
password: 123@@@
|
2023-05-03 22:22:21 +08:00
|
|
|
|
type: text
|