Ubuntu 在不断进化,从 20.04 开始,Ubuntu 决定更新实时服务器安装程序,只用 Subiquity 就能完全完成操作系统及附加程序的自动安装。以前用的 kickstart、debian-Installer 都不是 Ubuntu 自家技术,用起来也不是很方便。
同时,PXE 技术虽然出来很久了,但是整个安装过程还不是特别顺畅,随着 Ubuntu 升级到 20.04,使用 cloud-init 安装配置实现 Subiquity 参数的自动填写,整个过程变得些微优雅起来,让我有较大兴趣尝试使用 PXE 安装 Ubuntu 20.04 Server。
本文,我想讲的是在 Ubuntu 20.04 Server 上搭建一套自动安装 Ubuntu 20.04 Server 的部署环境,其主要内容有两部分:
第一部分所有操作系统应该都是一样的,第二部分和 Ubuntu 20.04 版本紧密相关,其他的操作系统需要考虑其他方法。
PXE 安装流程
PXE( 预启动执行环境 )的实现依赖于网卡,只有支持 PXE 客户端的网卡才能实现网络自动安装。这种网卡实现了 DHCP 客户端和 TFTP 客户端,在 BIOS 的引导下通过 DHCP 协议自动分配 IP 地址,通过 TFTP 获取最小内核,然后在最小内核环境下通过 HTTP 协议或 NFS 协议获取 Ubuntu 安装版本。之后最小内核引导进行 Ubuntu 20.04 的安装。
下图是详细的安装流程。
上图有几个前提:
安装必须的服务端软件
准备启动文件
创建 TFTP 文件夹
TFTP 文件夹是 TFTP 服务的根目录,PXE 启动过程中下载的文件都存在在该目录中:
说明:
创建目录
在
/home/mine
(可根据实际情况修改)目录下创建目录:
获取引导文件
获取内核镜像文件
系统会提示只读,不影响使用。
配置 dnsmasq
关键配置有以下几个:
修改配置后,重启服务才能生效。
创建 HTTP 文件夹
Apache2 的默认服务根目录是
/var/www/html
,在其下创建目录:
说明:
创建目录
拷贝 ISO 文件
到下载目录拷贝 ISO 文件:
创建参数自动配置文件
先创建空文件,无需修改,后续会详细描述配置。
配置 grub.cfg
之前是配置样式,也可以删除,重点关注
menuentry "Ubuntu server 20.04 autoinstall"
内的配置:
坑
网上很多文章配置是这么写的
ds=nocloud-net;s=,我试了很多次,都没有自动安装。
在网上查到,由于 UEFI 启动使用了 grub,它将识别为了特殊字符,所以要在前加转义。
配置 user-data
说明:
网络拓扑
配置静态 IP
在服务机开始服务前,需要在提供服务的网卡上配置静态 IP,Ubuntu 20.04 配置 netplan 即可,参考以下配置修改文件
/etc/netplan/00-installer-config.yaml
,修改完成后执行
netplan apply
配置即可生效。
鸣谢
原文链接:














发表评论