跳转至

启动 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