2026年Ubuntu Server无头安装完整指南:自制无人值守ISO实现自动部署

我曾无数次安装过 Ubuntu Server,但不连接显示器进行安装完全是另一回事。常规的安装程序无法适用,必须采用不同的方法。接下来,我将一步步带你完成整个操作流程。
Ubuntu Server 的无头安装可以通过 autoinstall 配置文件实现,该文件包含分区、软件包选择、配置详情和网络设置等关键参数,无需任何人工操作即可完成部署。下面我带你走完整个 Ubuntu Server 无头安装过程,你还将了解如何提取和重新打包 Ubuntu ISO 文件,并最终体验到 Linux 服务器的自动化安装。
内容导航
- 前置准备:软硬件要求
- 理解 Ubuntu Server 自动安装机制
- 制作无头安装 ISO 的完整步骤
- 开始无人值守安装
前置准备:软硬件要求
以下是开始之前你需要准备的内容。
硬件与软件
- 下载 Ubuntu Server ISO:自动安装功能仅对 Ubuntu 20.04 LTS 及更高版本有效,建议选用最新发行版,例如 Ubuntu Server 26.04 LTS,以获得最佳兼容性与最新特性。
- Linux 发行版:文中操作步骤适用于大多数 Linux 发行版。我以 Ubuntu 为例进行自定义配置,但所使用的工具均可安装在 Arch 系、RHEL 系等其他发行版上。
若你使用 Windows 电脑,建议安装 Windows Subsystem for Linux(WSL)并选择 Ubuntu。如果你使用 macOS,本教程同样适用,仅在部分工具安装时可能存在细微差异。
- 7-zip:一个命令行工具,支持创建、修改和提取多种归档格式,包括常见的 .zip 和 .7z。
Ubuntu 上安装:
sudo apt install p7zip-full
macOS 上使用 Homebrew:
brew install p7zip
- xorriso:用于创建、操作和提取 ISO 镜像文件的命令行工具。
Ubuntu 上安装:
sudo apt install xorriso
macOS 上安装:
brew install xorriso
- 准备服务器硬件:完成本教程后,你将得到一个可用于无头安装的 ISO 文件。你可以在物理机或虚拟机上安装 Ubuntu Server。请确保目标平台已连接网络,并准备好用于安装的存储分区。
可选技能
- 基础命令行经验:配置 autoinstall 时会涉及一些技术操作,我们需要执行多条终端命令和 bash 脚本。本教程假定你已熟悉 Linux 终端命令,不必是专家,但有一些经验会让过程顺畅很多。你可以参考这份 Linux 命令速查表:https://raspberrytips.com/most-useful-linux-commands/
理解 Ubuntu Server 自动安装机制
autoinstall 功能让你无需键盘与显示器就能安装 Ubuntu Server。形象地说,这就像“即插即用”。这种安装方式通常也被称为“无人值守”、“免交互”或“预置”安装。该功能目前支持 Ubuntu Server 20.04 LTS 及以上版本,以及 Ubuntu Desktop 23.04 LTS 及以上版本。本文只涉及服务器安装,如果你对桌面版也尝试类似的流程,欢迎分享你的体验。
两种实现自动安装的方式
- 直接写入安装介质:将 autoinstall 配置直接集成到 ISO 中,在安装时自动执行设置。这正是本教程采用的方法。通常是将一个 YAML 格式的配置文件放入安装介质,其中包含 Ubuntu 安装过程中需要的各项配置指令。
- 通过 cloud-config 用户数据:在系统启动时传入 cloud-config 用户数据,由 cloud-init 负责处理,从而在初始化阶段自动化系统配置。这种方式常用于 AWS、Azure、GCP 等云环境,不在本文讨论范围内。
Autoinstall 配置文件结构解析
现在你已经知道两种配置方式。本文假设你打算在虚拟机或物理裸机上安装 Ubuntu Server,而非使用云平台。因此我们将采用第一种方式:创建一个含有所有安装指令的 autoinstall YAML 文件,这也叫预置文件。为了让你更好地理解,先看看我在 VirtualBox VM 上手动安装 Ubuntu Server 时自动生成的 autoinstall 文件。
是的!当你以常规(手动)方式安装 Ubuntu Server 时,系统会在 /var/log/installer 目录下生成一个名为 autoinstall-user-data 的 autoinstall 文件。

了解这些之后,我们开始准备用于无头安装的 Ubuntu ISO。
制作无头安装 ISO 的完整步骤
本教程将按以下顺序操作:
- 第一步:提取 ISO – 解压原版 Ubuntu 镜像,为修改和添加自定义配置做准备
- 第二步:编写 autoinstall 配置 – 用所有自定义参数填写 YAML 文件
- 第三步:修改 GRUB 配置 – 编辑启动引导菜单,添加自定义选项
- 第四步:重新打包 ISO – 将修改后的文件打包为可用于无头安装的新 ISO
- 最后:开始安装 – 使用准备好的 ISO,在虚拟机或物理机上完成无人值守安装
下面逐一详细说明。
第一步:解压原始 ISO 文件
首先,我们需要解压原版 ISO 以编辑其中的文件。请确保你已经下载好 Ubuntu Server 26.04 LTS(或至少 20.04 LTS)的 ISO。接下来我们会进行一些技术性操作。打开终端,cd 进入 ISO 文件所在目录。
为了保持工作目录整洁,先创建一个存放所有提取文件的文件夹:
mkdir source-files

接下来,提取 ISO 文件。使用以下命令,记得替换尖括号中的内容:
7z -y x <Ubuntu-ISO-File-Name> -osource-files
命令解析:
7z: 压缩与解压工具-y: 对所有提示默认回答“是”x: 从归档中提取文件<Ubuntu-ISO-File-Name>: 你的 ISO 文件名,替换为实际名称-osource-files: 指定提取目标文件夹为 source-files

提取完成后,进入 source-files 目录。执行 ls 会看到许多文件和文件夹,其中最需要关注的是 [BOOT] 目录,它包含引导镜像。我们需要将它移动到上一级目录,稍后打包 ISO 时会用到:
cd source-files
mv '[BOOT]' ../BOOT
第二步:编写 autoinstall 配置文件
接下来是整篇教程最关键的部分:编写自动安装配置文件。该文件包含我们在常规安装中需要手动完成的所有设置。以下是我准备的一个示例配置,它基于我在 VirtualBox 上手动安装时自动生成的文件,并做了适当修改。
#cloud-config
autoinstall:
identity:
hostname: rpitips
password: $6$0pBFJFpldJ5c$8wHXpCwT3skkFsJ3Bg9c1lel3TQCr3Qn4U9n6HKucCN73MjKCGjMzv27P9eFw8Ow1uUdPFJy6.kW.GW97Yh.Z/
username: pat
kernel:
package: linux-generic
keyboard:
layout: us
toggle: null
variant: ''
locale: en_US.UTF-8
ssh:
allow-pw: true
install-server: true
updates: security
version: 1
shutdown: reboot
快速解读:
autoinstall: 自动化安装指令的根键identity: 身份设置(主机名、用户名、加密密码)password: 用户密码的哈希值(下文会说明生成方法)kernel: 指定安装的内核包,此处为 linux-generickeyboard: 键盘布局,设为美式locale: 系统区域语言ssh: 允许密码 SSH 认证,并在安装过程中开启 SSH 服务器updates: 更新策略,仅下载安全更新shutdown: 安装完成后自动重启
备注:你看到的密码是一串密文。Linux 将密码加密后存放在 shadow 文件中,因此这里显示的是我密码的加密版本。要生成自己的加密密码,可以按以下步骤操作:
sudo apt install whois # 安装 whois(包含 mkpasswd)
mkpasswd -m sha-512 # 根据提示输入你的密码

你可以直接使用上面的示例文件并按需修改,也可以前往 Ubuntu 官方文档了解 auto-config 的更多结构细节:https://canonical-subiquity.readthedocs-hosted.com/en/latest/intro-to-autoinstall.html#the-structure-of-an-autoinstall-configuration
现在,我们要把编写好的配置嵌入到解压后的 ISO 目录中。首先进入 source-files 目录:
cd source-files
在此目录下创建一个名为 server 的子目录,并新建 meta-data 和 user-data 两个文件。我们的配置就放在 user-data 中,meta-data 留空(用于高级用途)。
mkdir server
touch server/meta-data
touch server/user-data

进入 server 目录并用 nano 打开 user-data:
cd server
nano user-data
将上面准备好的示例配置粘贴进去,保存并退出(Ctrl+X)。

第三步:自定义 GRUB 启动菜单
在这一步中,我们将在引导加载器中添加新的菜单项,以便启动时自动执行自定义的无头安装,而非标准安装。在 source-files 目录中进入 boot/grub,执行 ls 应该能看到 grub.cfg 配置文件:
cd boot/grub
ls

⚠️ 警告:请务必输入 cd boot/grub,不要 写成 /boot/grub,否则你会误入当前运行系统的引导目录,可能损坏现有系统。
首先,修改 grub.cfg 的权限,它默认通常是只读的:
chmod 644 grub.cfg

然后用 nano(或你习惯的编辑器)打开它:
sudo nano grub.cfg
需要调整两个地方:
- 修改超时时间:找到
set timeout,将默认的 30 秒改为 5 秒,因为无头安装无需手动选择。
set timeout=5
- 添加新的菜单项:在
grub.cfg中最靠前的位置(即其他 menuentry 之前)插入以下内容,这样启动时会默认选中它。
menuentry "Autoinstall Ubuntu Server" {
set gfxpayload=keep
linux /casper/vmlinuz quiet autoinstall ds=nocloud\;s=/cdrom/server/ ---
initrd /casper/initrd
}
关键参数说明:
menuentry "Autoinstall Ubuntu Server":引导菜单中显示的条目名称linux /casper/vmlinuz quiet autoinstall ...:指定内核镜像(vmlinuz)及启动参数quiet:抑制大部分引导消息autoinstall:启用自动安装ds=nocloud\;s=/cdrom/server/:指定 cloud-init 从安装介质上的 /cdrom/server/ 目录加载用户数据
保存文件并退出。

第四步:重新打包生成自定义 ISO
配置全部就绪后,该将所有文件重新打包成一份可引导的自定义 ISO 了。进入 source-files 目录,运行以下命令(请注意最后有一个点 .):
xorriso -as mkisofs -r \
-V 'Ubuntu 26.04 LTS AUTO (EFIBIOS)' \
-o ../ubuntu-26.04-autoinstall.iso \
--grub2-mbr ../BOOT/1-Boot-NoEmul.img \
-partition_offset 16 \
--mbr-force-bootable \
-append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b ../BOOT/2-Boot-NoEmul.img \
-appended_part_as_gpt \
-iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
-c '/boot.catalog' \
-b '/boot/grub/i386-pc/eltorito.img' \
-no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \
-eltorito-alt-boot \
-e '--interval:appended_partition_2:::' \
-no-emul-boot \
.
部分参数作用:
-V:设置 ISO 卷标-o:指定输出文件名--grub2-mbr:指定主引导记录文件-c与-b:配置引导目录和引导镜像-no-emul-boot:不使用引导仿真.:表示将当前目录中的所有文件打包

这个过程需要一些时间。完成后,返回创建 source-files 的上级目录,运行 ls 就能看到新生成的 ubuntu-26.04-autoinstall.iso。

开始无人值守安装
至此,最繁琐的部分已经完成!你现在拥有一个可执行无人值守安装的 ISO 文件,可以用于物理服务器或虚拟机。
如果你想直接在 PC 上安装,需要将 ISO 烧录到 U 盘,推荐使用 Balena Etcher。如果你使用 VMware 或 VirtualBox 等虚拟机软件,则无需制作可引导 U 盘,直接挂载 ISO 文件即可。
提示:某些虚拟机软件(如 VirtualBox)自带了“无人值守”安装功能,但这可能会干扰我们定制 ISO 的引导流程。因此,请确保在创建虚拟机时勾选“跳过无人值守安装”(skip unattended installation)选项。

安装过程将从头到尾自动执行,无需任何输入。完成后,你会看到新系统的登录界面:

成功完成无头安装后,你可以像操作其他 Ubuntu 系统一样继续配置。首先确保所有软件包都是最新的:
sudo apt update
sudo apt upgrade
你还可以通过配置防火墙或切换到 SSH 密钥认证(而非密码)来增强安全性。如需进一步定制和优化服务器,还可以创建更多用户、安装特定软件包,或按需配置各类服务。