如何网络启动(PXE)Ubuntu LiveCD
随着Ubuntus最新版本的发布,我们想通过向我们展示如何通过使用网络启动(PXE)使它在网络上集中可用来庆祝。
说明
我们已经在"什么是网络启动(PXE)"中介绍了如何设置PXE服务器以及如何使用它?指南,在本指南中,我们将向我们展示如何将Ubuntu LiveCD添加到引导选项。
如果我们尚未使用Ubuntu作为排除故障,诊断和救援程序的第一工具,则它可能会取代我们当前正在使用的所有工具。另外,一旦计算机启动到Ubuntu live会话中,就可以像通常那样执行操作系统设置。通过网络使用Ubuntu的直接后果是,如果我们已经在使用CD版本,我们将再也不会在CD驱动器中寻找忘记的CD。
图片由Dryope提供。
准备工作
通常,众所周知,Ubuntu LiveCD引导过程如下所示:
我们将CD放入cdrom驱动器中,BIOS知道如何使用cdrom足以在cdrom(isolinux)上获取启动程序。
Isolinux负责菜单选项。选择启动或者安装Ubuntu之类的启动项后,它将调用kernal + initrd(初始ram磁盘)文件,将它们复制到内存中并将参数传递给它们。
现在,RAM和控制内核中的+ initrd将启动引导过程,同时使用传递给它们的参数来确定诸如以下内容:应该显示启动屏幕吗?输出应该详细吗?
当inirtrd脚本完成加载驱动程序和设备信息后,它们会寻找Ubuntu liveCD文件以继续启动过程。正常行为是查看本地物理cdrom驱动器。
对于网络启动:
客户端使用其网卡(PXE)引导,而不是CD等本地介质,并通过TFTP与PXElinux一起提供。
就像Isolinux一样,PXElinux负责菜单选项。选择启动项后,它将调用Ubuntu内核+ initrd文件,将它们复制到内存中并将参数传递给它们。
现在处于RAM中且处于控制内核+ initrd中的启动启动过程,并带有我们的其他信息,即他们不应在客户端本地物理cdrom驱动器中寻找启动文件,而应在FOG服务器上的NFS共享中寻找引导文件。
这是可能的,因为Ubuntu创建者已通过将网卡驱动程序和协议集成到内核+ initrd文件中来启用联网。对于这种行为,我们只能向Ubuntu团队表示感谢。
使Ubuntu文件在服务器上可用
第一步是使Ubuntu文件在服务器上可用。我们可以选择简单地从CD驱动器中复制它们,或者从ISO中提取它们,这样就可以正常工作。话虽如此,我们将使ISO自动挂载。虽然不是必须的,但是这样做将使我们能够使用我们的如何在不重新下载的情况下升级Ubuntu ISO指南,升级网络启动的Ubuntu版本,而无需从头开始进行所有操作,或者将单个文件替换为更新整个条目。
综上所述,本文作者喜欢保留几个以前的版本,直到新版本被证明绝对稳定且没有问题。这就是为什么我们将根据版本创建子目录和挂载点,但是知道我们可以绕过该目录以进行单点更新。
将ISO复制到/ tftpboot / theitroad / linux目录中
创建安装点:
sudo mkdir -p /tftpboot/theitroad/linux/ubuntu/<version-of-ubuntu>
- 编辑fstab文件以在引导时自动挂载ISO:
sudo vim /etc/fstab
- 将fstab添加到ISO挂载项:
/tftpboot/theitroad/linux/ubuntu-11.04-desktop-amd64.iso /tftpboot/theitroad/linux/ubuntu/11.04 udf,iso9660 user,loop 0 0
注意:尽管有代表性,但这是一条连续的线。
- 通过发出以下命令来测试安装点是否正常工作:
sudo mount -a
- 如果一切顺利,我们应该可以通过发出以下命令列出ISO的内容:
ls -lash /tftpboot/theitroad/linux/ubuntu/11.04/
创建一个NFS共享
当启动过程通过使用PXE启动时,实际的繁重工作由服务器上的NFS共享完成。当我们将本指南基于FOG服务器时,FOG团队已经为我们完成了NFS组件和一些配置,而我们要做的就是其中添加我们的Ubuntu份额。
- 编辑导出文件以添加新共享:
sudo vim /etc/exports
- 添加指向我们ISO挂载点的指针:
/tftpboot/theitroad/linux/ubuntu/11.04/ *(ro,sync,no_wdelay,insecure_locks,no_root_squash,insecure)
- 重新启动NFS服务以使设置生效:
sudo /etc/init.d/nfs-kernel-server restart
PXE菜单设置
编辑Linux填充菜单:
sudo vim /tftpboot/theitroad/menus/linux.cfg
添加以下内容:
LABEL Ubuntu Livecd 11.04 MENU DEFAULT KERNEL theitroad/linux/ubuntu/11.04/casper/vmlinuz APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=<YOUR-SERVER-IP>:/tftpboot/theitroad/linux/ubuntu/11.04 initrd=theitroad/linux/ubuntu/11.04/casper/initrd.lz quiet splash -
上面的内容乍看之下似乎很混乱,但是我们要做的就是用服务器NFS / PXE服务器的IP替换* <YOUR-SERVER-IP>。
为了更清楚地了解极客,上面的文本将是:
在名为Ubuntu 11.04的Linux子菜单中创建一个新的PXE条目。
由于MENU DEFAULT参数,进入Linux子菜单时将自动选择此条目。
指向客户端从theitroad / linux / ubuntu的/ tftproot目录中的相对路径获取内核+ initrd文件usinf TFTP
指向initrd脚本以将NFS共享中的根文件系统挂载在<YOUR-SERVER-IP>的绝对路径上:/ tftpboot / theitroad
注意:我已经尝试过(但失败了)为<YOUR-SERVER-IP>使用DNS名称而不是IP,我想在启动过程的那个阶段,仍然根本不支持DNS成功案例是:欢迎。
可能的程序
现在,我们应该能够从PXE(通常为F12)将客户端引导到Ubuntu。
在此阶段,我们建议我们花些时间回顾一下使用此出色工具可以完成的操作:
使用Linux修复Windows PC的10种最聪明的方法
Windows清除后重新安装Ubuntu Grub Bootloader
如何使用GParted iGiftIdea和使用GParted调整Windows 7或者Vista分区的大小在Ubuntu中格式化U盘
最后一件事,如果我们使用此在线生成器创建Ubuntu ISO,则可以将上述所有文章汇总到PXE可启动Ubuntu中。