所以问题来了,对于一个只有单硬盘,无法挂载外部存储设备的 VPS 来说,挂 iso 安装很明显是不现实的,独立于硬盘,可给对硬盘操作(格式化时硬盘不能自己操作自己)的存储设备就是内存,Debian、红帽系的网络安装都是基于加载在内存里的微缩系统来完成初始化,并往硬盘里写入系统、配置、启动的。既然 Ubuntu 暂时不提供网络安装选项,那么核心思路还是要先在内存里启动一个中介系统,才能保证后续操作最起码有可能。
煎饼哥的方式是采用 AlpineLinux 为中间系统,启动后用 AlpineLinux 给硬盘分区,预留一个存 Ubuntu iso 镜像的分区,然后给中间系统写入下一次从 Ubuntu iso 引导,再次重启后启动 Ubuntu 安装程序,读取 cloud init 配置完成后续安装,在新系统里还要埋一个自动扩展分区容量的脚本,否则新系统里会发现残留一个当时存储 iso 镜像的分区,以上步骤中,那个 iso 镜像分区就是“外部存储设备”,虽然它是虚拟的分区,不是额外的物理硬盘,也能完成预期效果。