我有一个Linux的客人,那是我的服务器。 我也创build了另一个客户端作为没有磁盘的客户端。
我想知道,哪种networkingtypes和适配器是正确的? NAT或内部networking? AMD或英特尔芯片?
根据手册,
PXE booting is now supported in NAT mode. The NAT DHCP server provides a boot file name of the form vmname.pxe if the directory TFTP exists in the directory where the user's VirtualBox.xml file is kept. It is the responsibility of the user to provide vmname.pxe
vmname.pxe的内容是什么? 这是一个空文件?
Virtualbox在Windows 7上运行,我已经安装了一个Linux(类似于redhat和centos 6的科学linux 6.3)作为服务器,另一个无盘Linux作为客户端。
在服务器上,我已经安装了tftp相关的文件。
# ls /var/lib/tftpboot/ -R /var/lib/tftpboot/: menu.c32 pxelinux.0 pxelinux.cfg sl6 /var/lib/tftpboot/pxelinux.cfg: default /var/lib/tftpboot/sl6: initrd.img vmlinuz # cat /var/lib/tftpboot/pxelinux.cfg/default timeout 100 default menu.c32 menu title ########## PXE Boot Menu ########## label 1 menu label ^1) Install Scientific Linux 6 kernel sl6/vmlinuz append initrd=sl6/initrd.img method=http://10.0.2.51/sl6 devfs=nomount label 2 menu label ^2) Boot from local drive localboot
更新:
澄清之后,根本没有使用VirtualBox的内置PXEfunction。 而是将具有“仅主机”或“内部”networking的辅助NIC分配给服务器和客户端,并绑定DHCP服务器以在第二个接口上侦听。 不要使用英特尔卡作为第二个接口: PXE在内部networking模式下引导Virtualbox来宾?
回答VirtualBox NAT和PXE:
vmname.pxe包含您的虚拟机下载后运行的代码,即所谓的NBP(networking引导程序)
有关PXE的更多信息,请参阅Wikipedia 。
我用PXELinux引用了一个例子:
安装tftp-hpa 。 (你不需要守护进程,只是程序)
设置pxe目录的根目录。
mkdir $ HOME / .VirtualBox / TFTP mkdir $ HOME / .VirtualBox / TFTP / pxelinux.cfg
将pxelinux.0复制到$HOME/.VirtualBox/TFTP并创build名为<guest-vmname>.pxe pxelinux.0符号链接。
拷贝内核或者initrd到$HOME/.VirtualBox/TFTP
编辑$HOME/.VirtualBox/TFTP/pxelinux.cfg/default ,示例:
LABEL linux内核vmlinuz APPEND root = / dev / sdxY
资料来源: http : //thegnar.org/sync/?p = 68
呵呵,手册中的“PXE启动”部分已经说过了,但不是很清楚。
“6.3.2。使用NAT进行PXE引导现在,NAT模式支持PXE引导,如果目录TFTP存在于用户的VirtualBox.xml文件所在的目录中,则NAT DHCP服务器会提供vmname.pxe格式的引导文件名。提供vmname.pxe是用户的责任。“
– 这里,手册告诉我们谁提供启动文件:NAT DHCP服务器。
好的,让我们来看一个问题:NAT DHCP服务器在哪里?
– 在主机上,它集成在VirtualBox软件中。
(6.3。networking地址转换(NAT):虚拟机从集成到VirtualBox的DHCP服务器接收其专用networking上的networking地址和configuration。)
那么,VirtualBox将在哪里searchconfiguration文件? 当然在主机上。
这意味着virtualbox将尝试search主机上的“vmname.pxe”。 不在你的科学Linux服务器上。
手册告诉我们除了VirtualBox.xml之外,还应该放一个“tftp”目录。
在Windows 7上,VirtualBox.xml位于C:\ Users \ .VirtualBox \中。
(VirtualBox版本5.1.14,手册没有说默认的configuration位置是在4.0之后改变的)
当我阅读本节时,我试图用PXE启动安装Debian系统。 所以我有一个猜测,“vmname.pxe”是文件pxelinux.0并重命名。
我尝试了几次,发现“vmname.pxe”应该是“ <vmname>.pxe ”,其中<vmname>是您的虚拟机的名称。
最后,我用NAT成功启动的PXE是这样的:
在主机(我的主机也是Windows 7),目录结构是:
%USERPROFILE% (mostly it is C:\Users\<username>\) |-.VirtualBox |-VirtualBox.xml |-tftp | |-pxelinux.cfg | | |-default-> ..\debian-installer\amd64\boot-screens\syslinux.cfg | |-DebianSid.pxe->pxelinux.0 (DebianSid is my virtual machine's name) | |-pxelinux.0 | |-ldlinux.c32 | |-version.info | |-debian-installer\ |-other files
在VirtualBox guest上,我的networking设置是“NAT”模式,网卡是“Intel PRO / 1000MT desktop(82640EM)”
我的VirtualBox版本是5.1.14。
不需要tftp-hpa安装,不需要第二个界面,也不需要“不要使用英特尔卡”,而是使用内置的PXEfunction。
无盘PXE启动应该是类似的。
所以问题在于手册完全是一团糟,在Virtualbox中使用NAT进行PXE启动其实很简单。 关键是,PXE服务器是您的主机virtualbox软件。
关于tftp目录结构的更新:(通过@codeshot在注释中提出的问题)tftp启动文件是从(debian sid例如)下载的: https://<debian-mirror>/debian/dists/sid/main/installer-<arch>/current/images/netboot/netboot.tar.gz
(如果你不使用sid,请改变它)。 Ubuntu是相似的。
tar xvf netboot.tar.gz并将目录重命名为“tftp”,并将其作为VirtualBox demonds移动到适当的位置。
如果这不起作用,然后用Cygwin手动更改软链接到硬链接,或只是简单地复制和重命名文件。