Назад | Перейти на главную страницу

Загрузка PXE с Virtualbox

У меня есть гость Linux, и это мой сервер. Я также создал другого гостя в качестве клиента без диска.

Я хочу знать, какой тип сети и какой адаптер подходят? NAT или внутренняя сеть? Чипы AMD или Intel?

Согласно инструкции,

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, и я установил One linux (Scientific linux 6.3, который похож на redhat и centos 6) в качестве сервера, а другой бездисковый 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 

О, в разделе «Загрузка PXE с NAT» в руководстве это сказано, но не очень ясно.

"6.3.2. Загрузка PXE с NAT Загрузка PXE теперь поддерживается в режиме NAT. DHCP-сервер NAT предоставляет имя загрузочного файла в форме vmname.pxe если каталог TFTP существует в каталоге, где хранится пользовательский файл VirtualBox.xml. Ответственность за предоставление vmname.pxe лежит на пользователе ".

- Здесь в руководстве указано, кто предоставляет загрузочный файл: сервер NAT DHCP.
Хорошо, давайте зададимся вопросом: где находится сервер NAT DHCP?

- На хост-машине он интегрирован в программное обеспечение VirtualBox.
(6.3. Трансляция сетевых адресов (NAT): виртуальная машина получает свой сетевой адрес и конфигурацию в частной сети от DHCP-сервера, интегрированного в VirtualBox.)

Итак, где VirtualBox будет искать файл конфигурации? Конечно на хост-машине.
Это означает, что virtualbox попытается найти "vmname.pxe" на хост-машине. Не на вашем научном сервере Linux.

В руководстве говорится, что мы должны поместить каталог «tftp» помимо VirtualBox.xml.

В Windows 7 VirtualBox.xml находится в C: \ Users \ .VirtualBox \.
(VirtualBox версии 5.1.14, в руководстве не сказано, что расположение конфигурации по умолчанию изменено после 4.0)

Когда я читал этот раздел, я пытался установить систему Debian при загрузке PXE. Итак, я предположил, что vmname.pxe - это файл pxelinux.0, и переименовал его.

Я пытался несколько раз и обнаружил, что "vmname.pxe" должно быть "<vmname>.pxe", где <vmname> имя вашей виртуальной машины.

Наконец, моя успешная загрузка PXE с NAT такова:
На хосте (мой хост тоже 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 моя сетевая настройка - режим «NAT», сетевая карта - «Рабочий стол Intel PRO / 1000MT (82640EM)»

Моя версия VirtualBox - 5.1.14.

Нет необходимости устанавливать tftp-hpa, не нужен второй интерфейс или «Не использовать карты Intel», и он использует встроенную функцию PXE。

Бездисковая загрузка PXE должна быть аналогичной.

Проблема в том, что в руководстве полный беспорядок, загрузка PXE с NAT в Virtualbox на самом деле очень проста. Дело в том, что PXE-сервер - это программное обеспечение виртуального бокса вашего хоста.

Обновление о структуре каталогов 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.

Если это не работает, измените softlink на hardlink вручную с помощью Cygwin или просто скопируйте и переименуйте файлы.

Обновить:

После разъяснения, отказ от использования встроенной функции VirtualBox PXE вообще кажется правильным решением. Вместо этого назначьте вторичный сетевой адаптер с «только хостом» или «внутренней» сетью для сервера и клиента и привяжите DHCP-сервер к прослушиванию на втором интерфейсе. Не используйте карты Intel для второго интерфейса: PXE загрузка гостей Virtualbox в режиме внутренней сети?

Ответ на VirtualBox NAT и PXE:

vmname.pxe содержит код, который ваша виртуальная машина запускает после загрузки, так называемая NBP (Network Bootstrap Program)

Видеть Википедия для получения дополнительной информации о PXE.

Я цитирую пример использования PXELinux:

  1. получить tftp-hpa установлены. (вам не нужен демон. только программа)

  2. настроить корень каталога pxe.

    mkdir $HOME/.VirtualBox/TFTP
    mkdir $HOME/.VirtualBox/TFTP/pxelinux.cfg
    
  3. Копировать pxelinux.0 к $HOME/.VirtualBox/TFTP и сделать символическую ссылку на pxelinux.0 названный <guest-vmname>.pxe.

  4. скопируйте ядро ​​и, возможно, initrd в $HOME/.VirtualBox/TFTP

  5. редактировать $HOME/.VirtualBox/TFTP/pxelinux.cfg/default, образец:

    LABEL linux
    KERNEL vmlinuz
    APPEND root=/dev/sdxY
    

Источник: http://thegnar.org/sync/?p=68