PXE 启动最近的 Ubuntu Live CD

PXE 启动最近的 Ubuntu Live CD

我一直无法通过 PXE 启动最近的 Ubuntu Live CD。我的最终目标是使用较新的 Ubuntu 12.04.4 版本重建旧的 Ubuntu 9.04 无盘机。

当尝试启动我认为良好的配置时,我收到类似以下内容的输出:

Loading .../vmlinuz......

// --- lotsa good boot-up stuff ---

Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/casper-premount     ...
 [    6.336295] pcnet32 0000:02:01.0: eth0: link up
done.
done.
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 2 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 3 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 4 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 6 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 9 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 16 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 25 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 36 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 64 secs - giving up
IP-Config: eth0 hardware address xx:xx:xx:xx:xx:xx mtu 1500 DHCP RARP

我最初按照步骤操作这里。我目前有以下情况:

  • 运行 Tomato 1.21 的路由器(是的,我知道它很旧)
  • 包含 TFTP 服务器和实时 CD 文件的盒子(IP 地址 192.168.xy)

路由器有一个 Dnsmasq 自定义配置,包含以下几行:

dhcp-no-override
dhcp-boot=pxelinux.0,,192.168.x.y

完成这些设置后,当我想向我的 PXE 集合添加新内容时,我会将一些文件放在某些位置,向某些配置文件添加行,然后我就可以启动我的目标箱了。

我过去曾在多种启动情况下这样做过,包括:

  • Backtrack 4r2 i386
  • Debian Lenny、Squeeze 和 Wheezy
  • 该死的小型Linux
  • Fedora 18
  • 一些较旧的 Ubuntu Live CD
  • 一些较旧的 Ubuntu 安装

我当前将新的 Ubuntu Live CD 添加到组合中的过程如下:

  1. 将实时 CD 安装为 ISO 映像。
  2. 将 ISO 映像中的所有文件复制到硬盘上。
  3. 将 ISO 内容中的 vmlinuz 和 initrd.lz 文件复制到 TFTP 服务器可访问的区域。
  4. initramfs.conf通过修改然后update-initramfs在 chroot 内 运行来重建 initrd.lz 以支持 PXE 启动:
    • 模块=网络启动
    • 启动=nfs
    • NFSROOT=192.168.xy:/路径/到/提取的/iso/内容
    • DEVICE=eth0 // 之前没有这样做过,现在按照说明尝试这里由于麻烦,但仍然没有骰子;反正只有单个 NIC
  5. 在TFTP服务器中的boot.txt中添加项目。
  6. 在 pxelinux.cfg 目录下的文件中添加行。

完成这些操作后,我就可以重新启动了。为了试用它,我一直在使用一个基本的 VMware Player 虚拟机,它没有硬盘驱动器、没有 CD-ROM 驱动器、也没有软盘驱动器。它所做的只是从 PXE 启动。

在过去,这种方法效果非常好,然后我可以关闭它并以同样的方式通过 PXE 启动我想要的物理机。

我无法通过这种方式启动最后几个 Ubuntu Live CD,因为我收到如上所示的消息:

no response after xx secs - giving up` message

最后,我将 ISO 直接安装在我的 VMware VM 下,并将 Ubuntu 直接安装在 VM 上。安装完成后,我通过安装硬盘驱动器并复制出类似于上述步骤 1 和 2 的内容,将其制作成无盘映像,然后尝试从那里进行 PXE 启动。

此方法以前有效;然而,当我尝试使用我的 12.04 安装执行此操作时,我看到与我的 12.04 live CD 相同的症状:

no response after xx secs - giving up

我试过;它不起作用。以下是我的新旧 pxelinux.cfg/default 行:

label ubuntu_12.04.4-desktop-i386
         kernel /ubuntu/12.04.4-desktop-i386/vmlinuz nosplash
#         append boot=casper netboot=nfs nfsroot=192.168.0.99:/path/to/ubuntu-12.04.4-desktop-i386 initrd=/ubuntu/12.04.4-desktop-i386/initrd.lz
         append boot=nfs root=/dev/nfs nfsroot=192.168.0.99:/path/to/ubuntu-12.04.4-desktop-i386 initrd=/ubuntu/12.04.4-desktop-i386/initrd.lz

我将不胜感激任何人的见解。

谢谢。

答案1

我昨天在 Maxdata Server 上遇到了同样的问题。你遇到的问题也类似,所以我找到了你的问题。

我的服务器启动后过了一段时间,它溢出了许多这样的IP-Config: no response after xx secs - giving up消息,并在大约三分钟后导致内核崩溃。我花了几乎一整天的时间尝试解决这个问题,但我找不到任何直接的解决方案。

问题是有两个 DHCP 调用:一个是在启动时(就在 PXE 启动之前)调用的,这个调用是有效的,另一个是在两个节点都停止启动时调用的。第二个请求比第一个请求短,dnsmasq 出于未知原因没有应答。

基本上你可以尝试不同的方法:

使用不同的网络设备: 我使用了一台拥有两个物理网卡的真实服务器。切换到第二个网络接口立即解决了我的问题。

我必须承认,我不是虚拟机方面的专家,但 Oracle VM VirtualBox Manager 允许我在 VM 中安装最多 4 个不同的网络设备,甚至可以更改适配器类型。请务必尝试一下设置,因为我的设置不允许在这里测试这样的事情。

如果这不起作用,请修改default配置文件以明确使用 DHCP 进行网络配置

label ubuntu_12.04.4-desktop-i386
     kernel /ubuntu/12.04.4-desktop-i386/vmlinuz nosplash
     append boot=nfs root=/dev/nfs nfsroot=192.168.0.99:/path/to/ubuntu-12.04.4-desktop-i386 initrd=/ubuntu/12.04.4-desktop-i386/initrd.lz ip=:<server-ip>::::eth0:dhcp rw live-netdev=eth0 ethdevice-timeout=10

记得插入<server-ip>

但是,如果这些解决方案对你不起作用,你可以切换到静态 IP:

label ubuntu_12.04.4-desktop-i386
     kernel /ubuntu/12.04.4-desktop-i386/vmlinuz nosplash
     append boot=nfs root=/dev/nfs nfsroot=192.168.0.99:/path/to/ubuntu-12.04.4-desktop-i386 initrd=/ubuntu/12.04.4-desktop-i386/initrd.lz ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:static rw live-netdev=eth0 ethdevice-timeout=10

您必须为每个客户端创建一个额外的配置文件(PXE 启动应该显示它在启动时正在寻找哪些文件)。

答案2

这是 ipconfig 的一个错误,没有正确实现 DHCP 标准

快速解决方案查看/获取 Serva 制作的 INITRD_N11.GZ,其中包括已修复的 ipconfig(我与 serva 开发有关)

http://vercot.com/~serva/an/NonWindowsPXE3.html

答案3

我知道这是一个老问题,但它也困扰着我。

如果您有多个 NIC,这可能是由于 Linux 选择了一个未连接的 NIC 造成的。网络设备命名已重新设计,这可能在您使用的版本和您切换到的版本之间生效。

不过,我不确定重命名是否会影响到你,因为你显然没有使用

ip=昵称

答案4

该问题似乎在具有多个网络接口的设备上可重现。作为一种解决方法,尝试将“IPAPPEND 2”添加到 pxelinux.cfg 文件夹中的“默认”配置文件中

http://www.syslinux.org/wiki/index.php?title=SYSLINUX#IPAPPEND_flag_val_.5BPXELINUX_only.5D

相关内容