我正在通过 PXE 从另一个 virtualbox VM(使用 cobbler)启动一个 virtualbox VM。两台机器都有 2 个适配器:1) 外部网络和 2) 仅主机网络。
“客户端”虚拟机通过 PXE 成功启动到安装程序(使用仅主机网络适配器),但安装程序甚至没有尝试下载预置文件(根据服务器日志)或获取 IP 地址(再次根据服务器日志 - 这做显示之前的TFTP请求)。
我进入 shell 并看到:
- “ip a”仅显示环回适配器
- 读取 dmesg 显示显然没有找到适配器
- lsmod 似乎也没有显示网络适配器模块的迹象
- 串行通信做显示两个网络控制器。
- /lib/modules/...../kernel/drivers/net 中基本上没有驱动程序(可能这就是原因?)
如何让安装程序看到我的网络适配器,或者至少如何找到此问题的原因?
这是 PXE 菜单项:
default linux
prompt 0
timeout 1
label linux
kernel /images/ubuntu-10.04-server-x86_64/vmlinuz
ipappend 2
append initrd=/images/ubuntu-10.04-server-x86_64/initrd.gz locale= interface=auto text root=/dev/sda1 priority=critical auto url=http://192.168.56.101/cblr/svc/op/ks/system/pierrot hostname=pierrot domain=local.lan suite=lucid
答案1
好的,我明白了。
事实证明,我使用的 Ubuntu ISO 中有两个 initrd 映像:
[jkff@localhost tmp]$ find /mnt/ubuntu-server/ -name 'initrd.gz'
/mnt/ubuntu-server/install/initrd.gz
/mnt/ubuntu-server/install/netboot/ubuntu-installer/amd64/initrd.gz
第一个不包括网络驱动程序。第二个包括。Cobbler 选择了第一个(因为这),因此,如果没有网络驱动程序,它当然无法找到网卡并下载预置。
现在我必须想办法让 Cobbler 使用正确的 initrd...
答案2
我通过编辑发行版来指向正确的 initrd,从而使 cobbler 使用正确的 initrd,在我的情况下,它位于 /var/www/cobbler/ks_mirror/ubuntu-12.04.1-server-amd64-x86_64/install/netboot/ubuntu-installer/amd64/initrd.gz