通过 ipxe 启动自定义精确 Live CD

通过 ipxe 启动自定义精确 Live CD

我配置了 isc-dhcp、ipxe 和 tftpboot,这样我就可以通过 PXE 通过网络启动了。ubuntu netinstall 映像使用 pxelinux.0 顺利启动。

我使用本教程创建了一个自定义 Live CDhttps://help.ubuntu.com/community/LiveCDCustomizationFromScratch。它在虚拟机中顺利启动。

现在我想将此映像连接到我的 pxe 环境。最好的方法是通过 http 启动并附加磁盘。有很多教程。但我无法挂载 squashfs。最好的方法是什么。我需要 pxelinux 吗?我需要 NFS 吗?我对所有不同的引导加载程序感到困惑。

非常感谢您的帮助。谢谢。

dhcpd.conf 的一部分

next-server 10.1.1.1;
if exists user-class and option user-class = "iPXE" {
   filename "menu.ipxe";
} else {
   filename "undionly.kpxe";
}

和 menu.ipxe

#!ipxe

set smartos-build 20121004T212912Z

######## MAIN MENU ###################
:start
menu Welcome
item
item --gap -- ------------------------- Operating systems ------------------------------
item cellos-storage     Boot CellOS
item smartos    Boot SmartOS (${smartos-build})
item ubuntu     Boot Ubuntu Precise 12.04 netinstall
item --gap -- ------------------------------ Utilities ---------------------------------
item shell      Enter iPXE shell
item reboot     Reboot
item
item exit       Exit (boot local disk)
choose --default cellos-storage --timeout 5000 target && goto ${target}




########## UTILITY ITEMS ####################
:shell
echo Type exit to get the back to the menu
shell
set menu-timeout 0
goto start

:reboot
reboot

:exit
exit

########## MENU ITEMS #######################


:cellos-storage
kernel /cellos/storage/cellos-latest/casper/vmlinuz
initrd /cellos/storage/cellos-latest/casper/initrd.lz
#chain http://10.1.1.1/boot/cellos/storage/cellos-latest.iso
boot

# SmartOS Root shadow is "root"
:smartos
kernel /smartos/${smartos-build}/platform/i86pc/kernel/amd64/unix -B root_shadow='$5$2HOHRnK3$NvLlm.1KQBbB0WjoP7xcIwGnllhzp2HnT.mDO7DpxYA'
initrd /smartos/${smartos-build}/platform/i86pc/amd64/boot_archive
boot
:ubuntu
kernel /ubuntu/precise/netinstall/ubuntu-installer/amd64/linux
initrd /ubuntu/precise/netinstall/ubuntu-installer/amd64/initrd.gz
boot
goto start

答案1

使用 Linux Mint 13 执行此操作,但应该与 Ubuntu 12.04 相同。我使用 mintconstructor 自定义我的 live-dvd,但应该使用 LiveCDCustomizationFromScratch。

我可以仅使用 iPXE(无 pxelinux)从实时 DVD 配置网络启动。

为此,我配置了一个 http 服务器(使用 apache)来发布 /var/www 中的内容。这是必要的,因为 initrd 和 vmlinuz 需要通过 http 访问。

我从 live-dvd 中取出 initrd.lz 和 vmlinuz 并将其放入 /var/www 中

将 /casper 中的所有文件(来自 live-dvd)放入 /var/www/casper。

在您的 Web 服务器上,还发布 /var/www 的 NFS 共享,以便文件也可通过 NFS 访问。这对于通过网络访问 squashfs(casper 文件夹)是必要的(似乎无法通过 http 访问)。

这是我的 /etc/exports (NFS)

/var/www *(ro,async)

你的 iPXE 脚本看起来应该像这样(相应地替换 IP):

#!ipxe
initrd http://10.54.9.43/initrd.lz
chain http://10.54.9.43/vmlinuz boot=casper netboot=nfs nfsroot=10.54.9.43:/var/www/ initrd=initrd.lz

这将通过 http 加载内核和 initrd,并通过 NFS 加载 squashfs...

关于 DHCP 部分,我使用的是 Windows Server DHCP ... 所以我无法帮助您。请遵循 iPXE 的文档。对于其他人,我做了以下操作:我在同一台服务器 (linux) 上配置了一个 TFTP 服务器。我将选项 66 配置为该服务器的 IP(在 DHCP 服务器上)。我将 undionly.kpxe (iPXE) 放在我服务器的 TFTP 文件夹中以链式加载 iPXE(检查 iPXE 文档)。我按照 iPXE 文档中所述配置了选项 67,以防止无限循环(由于链式加载)。

对于我来说,这一切有点难以弄清楚,因为网络上没有太多关于这方面的文档。

相关内容