Inicialização PXE com o Virtualbox

2

Eu tenho um convidado linux e esse é o meu servidor. Eu também criei outro convidado como o cliente sem disco.

Eu quero saber qual tipo de rede e adaptador está correto? NAT ou Rede Interna? Chips AMD ou Intel?

De acordo com o manual,

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

Qual é o conteúdo de vmname.pxe? é um arquivo vazio?

O Virtualbox está rodando no Windows 7 e eu instalei o One linux (scientific linux 6.3 que é similar a redhat e centos 6) como um servidor e outro diskless como o cliente.

No servidor, eu instalei arquivos relacionados ao 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 
    
por mahmood 02.08.2014 / 03:38

2 respostas

3

Atualização:

Após o esclarecimento, não usar o recurso PXE integrado do VirtualBox parece ser o caminho a ser seguido. Em vez disso, atribua um NIC secundário com rede "somente host" ou "interna" ao servidor e ao cliente e ligue o servidor DHCP para escutar na segunda interface. Não use placas Intel para a segunda interface: PXE Booting Virtualbox guests in internal modo de rede?

Responda ao VirtualBox NAT e PXE:

vmname.pxe contém o código que sua VM executa depois de baixá-la, o chamado NBP (Network Bootstrap Program)

Veja Wikipedia para mais informações sobre o PXE.

Estou citando um exemplo usando o PXELinux:

  1. obtenha tftp-hpa instalado. (você não precisa do daemon. apenas o programa)

  2. configure a raiz do diretório pxe.

    mkdir $HOME/.VirtualBox/TFTP
    mkdir $HOME/.VirtualBox/TFTP/pxelinux.cfg
    
  3. Copie pxelinux.0 para $HOME/.VirtualBox/TFTP e crie um link simbólico para pxelinux.0 chamado <guest-vmname>.pxe .

  4. copie o kernel e talvez inicie em $HOME/.VirtualBox/TFTP

  5. edite $HOME/.VirtualBox/TFTP/pxelinux.cfg/default , amostra:

    LABEL linux
    KERNEL vmlinuz
    APPEND root=/dev/sdxY
    

Fonte: link

    
por 02.08.2014 / 03:54
3

Ah, a seção "PXE inicializando com NAT" no manual disse isso, mas não muito clara.

"6.3.2. Inicialização PXE com NAT Inicialização PXE agora é suportada no modo NAT. O servidor DHCP NAT fornece um nome de arquivo de inicialização no formato vmname.pxe se o diretório TFTP existir no diretório onde o arquivo VirtualBox.xml do usuário é mantido. É de responsabilidade do usuário fornecer vmname.pxe. "

- Aqui, o manual diz-nos quem fornece o arquivo de inicialização: servidor DHCP NAT.
OK, vamos fazer uma pergunta: onde está o servidor DHCP NAT?

- Na máquina host, ele é integrado ao software VirtualBox.
 (6.3. Tradução de Endereço de Rede (NAT): A máquina virtual recebe seu endereço de rede e configuração na rede privada de um servidor DHCP integrado ao VirtualBox.)

Então, onde o VirtualBox pesquisará o arquivo de configuração? Claro que na máquina host.
Isso significa que o virtualbox tentará pesquisar o "vmname.pxe" na máquina host. Não no seu servidor linux científico.

E o manual nos diz que devemos colocar um diretório "tftp" além do VirtualBox.xml.

No windows 7, o VirtualBox.xml está em C: \ Users \ .VirtualBox \.
(VirtualBox versão 5.1.14, o manual não diz que o local de configuração padrão é alterado após o 4.0)

Quando eu li a seção, eu estava tentando instalar o PXE em um sistema Debian. Então eu acho que "vmname.pxe" é o arquivo pxelinux.0 e renomeado.

Eu tentei várias vezes e descobri que "vmname.pxe" deveria ser " <vmname>.pxe ", em que <vmname> é o nome da sua máquina virtual.

Por fim, minha inicialização bem-sucedida do PXE com o NAT é esta:
No host (meu host também é o windows 7), a estrutura do diretório é:

%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

No VirtualBox guest, minha configuração de rede é no modo "NAT", a placa de rede é "Intel PRO / 1000MT desktop (82640EM)"

Minha versão do VirtualBox é 5.1.14.

Não precisa de instalação do tftp-hpa, não precisa da segunda interface nem "Não use placas Intel", e está usando o recurso PXE integrado。

Uma inicialização PXE sem disco deve ser semelhante.

Então o problema é que o manual é totalmente uma bagunça, a inicialização do PXE com NAT no Virtualbox é realmente muito simples. O ponto é que o servidor PXE é o seu software de host virtualbox.

Atualize sobre a estrutura de diretórios do tftp: (question by @codeshot in comment) O arquivo de inicialização do tftp é baixado de (sid do debian por exemplo): https://<debian-mirror>/debian/dists/sid/main/installer-<arch>/current/images/netboot/netboot.tar.gz

(Se você não estiver usando sid, mude-o). O Ubuntu é semelhante.

tar xvf netboot.tar.gz e renomeie o diretório para "tftp" e mova para o local apropriado como o VirtualBox demonds.

Se isto não estiver funcionando, altere o softlink para hardlink manualmente com o Cygwin, ou simplesmente copie e renomeie os arquivos.

    
por 13.02.2017 / 16:08