我一直无法通过 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 添加到组合中的过程如下:
- 将实时 CD 安装为 ISO 映像。
- 将 ISO 映像中的所有文件复制到硬盘上。
- 将 ISO 内容中的 vmlinuz 和 initrd.lz 文件复制到 TFTP 服务器可访问的区域。
initramfs.conf
通过修改然后update-initramfs
在 chroot 内 运行来重建 initrd.lz 以支持 PXE 启动:- 模块=网络启动
- 启动=nfs
- NFSROOT=192.168.xy:/路径/到/提取的/iso/内容
- DEVICE=eth0 // 之前没有这样做过,现在按照说明尝试这里由于麻烦,但仍然没有骰子;反正只有单个 NIC
- 在TFTP服务器中的boot.txt中添加项目。
- 在 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 开发有关)
答案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