启动 Ubuntu Live 光盘¶
要能够启动进入 Ubuntu 发行版的 Live 光盘,有几个前提条件:
- Ubuntu ISO
- 一个 NFS 守护进程
- 典型的网络启动基础设施,包括但不限于:
- 物理层
- DHCP
- DNS
由于 Ubuntu 各变体之间的文件结构相似,本指南也应适用于 Edubuntu、Xubuntu、Kubuntu 等。不保证适用于基于 Ubuntu 的衍生版。
注意:虽然本指南能够启动 live 环境,但从此环境进行的安装与从实际光盘进行安装相比,并不能完全按预期工作。简而言之,如果尝试从此环境进行安装,网络将无法立即正常工作。
准备文件结构¶
首先,下载最新版本的你选择的 Ubuntu 变体。使用你选择的压缩软件解压 ISO 文件。ISO 文件的所有内容都是必需的,因为每当客户端启动到 Ubuntu 环境时,这整个目录都将被挂载到客户端。
你的目录结构可能如下所示:
# ls -alFh ubuntu-14.04.1-desktop-amd64
total 2.6M
drwxrwxrwx 13 root root 4.0K Jan 30 16:21 ./
drwxrwxrwx 6 root root 4.0K Jan 30 17:30 ../
-rwxrwxrwx 1 root root 134 Jul 22 2014 autorun.inf*
drwxrwxrwx 3 root root 4.0K Jan 30 16:20 boot/
drwxrwxrwx 2 root root 4.0K Jan 30 16:21 [BOOT]/
drwxrwxrwx 2 root root 4.0K Jan 30 16:21 casper/
drwxrwxrwx 2 root root 4.0K Jan 30 16:20 .disk/
drwxrwxrwx 3 root root 4.0K Jan 30 16:21 dists/
drwxrwxrwx 3 root root 4.0K Jan 30 16:20 EFI/
drwxrwxrwx 2 root root 4.0K Jan 30 16:21 install/
drwxrwxrwx 2 root root 4.0K Jan 30 16:21 isolinux/
-rwxrwxrwx 1 root root 21K Jul 22 2014 md5sum.txt*
drwxrwxrwx 2 root root 4.0K Jan 30 16:21 pics/
drwxrwxrwx 4 root root 4.0K Jan 30 16:21 pool/
drwxrwxrwx 2 root root 4.0K Jan 30 16:21 preseed/
-rwxrwxrwx 1 root root 231 Jul 22 2014 README.diskdefines*
-rwxrwxrwx 1 root root 2.5M Apr 14 2014 wubi.exe*
此结构稍后将被复制到 NFS 位置。
准备 NFS 共享¶
安装软件包¶
必须按照你的发行版的说明安装 NFS 守护进程软件包。
配置共享¶
使用你选择的编辑器编辑 /etc/exports 文件。应用以下行,替换为你将托管 Ubuntu 文件结构的路径:
/path/to/ubuntu/files *(ro,sync,no_wdelay,insecure_locks,no_root_squash,insecure)
注意:这些选项前面的 * 前缀指定此共享可被任何能访问该网络资源的人公开访问。这可以更改以满足任何安全要求。
重启守护进程¶
在大多数情况下,编辑 /etc/exports 文件后,你需要重启守护进程才能使更改生效。遵循你的发行版的文档。
把所有内容组合起来¶
复制目录结构¶
把之前解压的 Ubuntu ISO 内容复制到服务器的 /etc/exports 文件中指定的路径。
注意:这可以放在一个子文件夹中。一个导出适用于该导出的所有子文件夹。
iPXE 启动¶
要进行启动,必须提供以下各项:
- 内核
- 初始内存盘
- NFS 选项
- 客户端 IP 信息
注意:此配置假定你使用的 iPXE 启动文件已启用 DOWNLOAD_PROTO_NFS 选项。如果没有,你必须更改 kernel 和 initrd 行,以通过你的环境中支持的协议启动。或者,你可以重新构建你的 iPXE 启动文件。
amd64¶
#!ipxe
set server_ip 192.168.100.1
set nfs_path /srv/nfs/ubuntu-14.04.1-desktop-amd64
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz.efi || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz.efi initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet -- || read void
boot || read void
i386¶
#!ipxe
set server_ip 192.168.100.1
set nfs_path /srv/nfs/ubuntu-14.04.1-desktop-i386
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet -- || read void
boot || read void