Шаги установки загрузочного сервера PXE в виртуальной машине Ubuntu Server


Ответы:


31

PXE (Preboot eXecution Environment, ярко выраженный пикси)

Смотрите Википедию: PXE

Как это устроено?

Это моё понимание!

PXE_Diagram_en.png

  1. Клиентский компьютер включен. BIOS сканирует устройства. Затем следует попытаться загрузить загрузчик с требуемого устройства, как указано в разделе «Порядок / последовательность загрузки» . Он загружает PXE из ПЗУ сетевой карты.
  2. PXE (клиентская сторона) передает запрос на IP. Ответ DHCP-сервера с необходимой информацией: IP, IP-адрес следующего сервера (IP-адрес TFTP-сервера), pxelinux.0(имя файла загрузчика PXE), ... и т. Д.

    PXE_Boot_1.png

  3. PXE (на стороне клиента) запрашивает pxelinux.0файл с TFTP-сервера, загружает его в оперативную память и передает управление pxelinux.0.

    pxelinux.0получает файл конфигурации загрузки с TFTP-сервера с именем как:
    (если он не существует, он пытается со следующим)

    • UUID
    • MAC
    • IP в Capital Hex
    • Часть IP
    • Удаляет в defaultфайл

    PXE_Boot_2.png

  4. Выбор пользователя или запись по умолчанию. pxelinux.0запрашивает соответствующее ядро ​​и RAMDisk с TFTP-сервера и загружает их в RAM.

    Затем передает параметры загрузки и управление загруженному ядру.

    PXE_Linux.png

  5. Ядро загружает оставшиеся части с TFTP-сервера или любого другого протокольного сервера в зависимости от его функций / свойств.

    Parted_Magic_1.png Parted_Magic_2.png

Настройка сервера

Существует много способов настройки PXE-сервера, это один из них.

Эти инструкции были протестированы на Ubuntu 9.10 и Ubuntu 10.04 на реальной машине. Они должны быть действительны только с некоторыми изменениями. (Обновлен и протестирован для Ubuntu 14.04 на VirtualBox, проверьте редактирование версий для старых выпусков)

Моей целью был PartedMagic 4.5 , он должен быть похож на Ubuntu или любой дистрибутив Linux.

  1. Установите пакеты DHCP и TFTP

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. Настройка DHCP

    • Edit /etc/default/isc-dhcp-server, интерфейс Ethernet для службы DHCP

      INTERFACES="eth0"
      
    • Редактировать /etc/dhcp/dhcpd.conf‬или /etc/ltsp/dhcpd.confон существует, настройка службы DHCP

      Конфигурации PXE: filename&next-server

      default-lease-time 600;
      max-lease-time 7200;
      subnet 192.168.10.0 netmask 255.255.255.0 {
          range 192.168.10.50 192.168.10.100;
          option subnet-mask 255.255.255.0;
          option routers 192.168.10.123;
          option broadcast-address 192.168.10.255;
          filename "pxelinux.0";
          next-server 192.168.10.123;
      }
      
    • Установите статический IP-адрес для eth0, 192.168.10.123в моем случае, сетевого менеджера для версии для настольных компьютеров или /etc/network/interfacesдля версии для серверов.

      auto eth0
      iface eth0 inet static
      address 192.168.10.123
      netmask 255.255.255.0
      network 192.168.10.0
      broadcast 192.168.10.255
      

      Повторно инициализируйте сетевой интерфейс:

      sudo ifdown eth0
      sudo ifup eth0
      
    • Перезапустить сервис

      sudo service isc-dhcp-server restart
      

      Проверь состояние

      netstat -lu
      

      Выход

      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      udp        0      0 *:bootpc                *:*                                
      
  3. Настройка TFTP

    • Отредактируйте ‪/etc/inetd.conf, удалите #<off>#из начала tftpстроки или добавьте, если это не указано в #:BOOT:комментарии. (Пропустите это с systemd, 15.10 и позже)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • Включить службу загрузки для inetd

      sudo update-inetd --enable BOOT
      
    • Запустить сервис

      sudo service openbsd-inetd restart
      sudo service tftpd-hpa restart
      

      Проверь состояние

      netstat -lu
      

      Выход

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. Настройка загрузочных файлов PXE

    • Разархивируйте pmagic-pxe-4.5.zip. Если pxelinux.0нет, получить его из sysliux-commonпакета , установленного на /usr/lib/syslinux/pxelinux.0, Syslinux Project или Ubuntu образ сетевой .

      Поместите их в аналогичную структуру.

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • Отредактируйте /var/lib/tftpboot/pxelinux.cfg/default, если необходимо, пример пути: pmagic/bzimage&pmagic/initramfs

      DEFAULT partmagic 
      
      LABEL partmagic 
          MENU LABEL PartMagic 4.5 
          KERNEL pmagic/bzimage 
          APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
      
    • Настройте правильные разрешения

      sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \;
      sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
      

Настройка клиента

Измените порядок загрузки BIOS за один раз, используя F9или F12, для постоянной настройки из конфигурации BIOS DEL, F2или F12. (В зависимости от марки машины)

Перейти к началу страницы: [PXE | NIC | LAN | Ethernet | Network].

Примечания

  • inetutils-inetdили xinetdмогут быть использованы вместо openbsd-inetd, некоторые inetdшаги отличаются.

  • Корневой каталог TFTP может быть изменен с /etc/default/tftpd-hpa. Не забудьте обновить ‪/etc/inetd.confтоже.

  • Многие дистрибутивы поддерживают загрузку RAMDisk через множество протоколов: SSH (SFTP), SMB, NFS ... Пример Ubuntu с поддержкой NFS.

  • Некоторые старые сетевые карты не поддерживают PXE, можно использовать iPXE ( например, gPXE или Etherboot ) на дискете, USB-накопителе, жестком диске (в /bootразделе) или даже в виде флэш-памяти на ПЗУ (поддерживается только несколько сетевых карт ). GRUB2 имеет модуль для поддержки загрузки с использованием PXE.

    Смотрите также Википедия: gPXE и ROM-O-matic .

  • Ubuntu Netboot Image с сайта cdimage.ubuntu.com/netboot/ обеспечивает установку Ubuntu из сети и будет запрашивать загрузку всех необходимых пакетов с официального или локального зеркала, если оно у вас есть.

    Большинство пользователей ищут загрузку живого изображения через PXE. Этот вопрос был только для настройки PXE-сервера. Смотрите Ubuntu Wiki: Установка - LocalNet

    Ubuntu NetBoot - Официальное архивное зеркало Ubuntu NetBoot - Пользовательский / Локальный архив зеркал

  • Меню PXE можно настроить, лучший шаблон для изучения - Ubuntu NetBoot . Смотрите Pxeboot Несколько изображений

    PXE_Linux_Menu.png

  • memdiskможет использоваться для прямой загрузки образов ISO или гибких дисков через PXE. syslinux-commonПакет имеет копию. Клиент должен иметь достаточно ОЗУ для хранения образа плюс часть для запуска загруженной ОС.

    Пример конфигурации:

    /var/lib/tftpboot/
    |-- FDSTD.144
    |-- memdisk
    |-- pxelinux.0
    |-- slitaz-cooking.iso
    |-- pxelinux.cfg
    |   `-- default
    `-- pmagic/
        |-- bzimage
        `-- initramfs
    

    /pxelinux.cfg/default

    DEFAULT partmagic
    
    LABEL partmagic
        MENU LABEL PartMagic 4.5
        KERNEL pmagic/bzimage
        APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
    
    LABEL slitaz
        MENU LABEL ^Slitaz.iso
        TEXT HELP
    Testing boot from iso.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=slitaz-cooking.iso
    
    LABEL freedos_std
        MENU LABEL ^FreeDOS STD
        TEXT HELP
    Testing boot from Floppy IMG.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=FDSTD.144
    
  • Пакеты PartedMagic были удалены с официального сайта после того, как оригинальный разработчик решил сделать его коммерческим, некоторые выпуски можно было найти через торрент-сеть. Мой ответ здесь - резюме первой установки PXE, которая работала для меня. Ubuntu Netboot Image должен работать с теми же инструкциями.


Друзья, на самом деле я работаю над Pxeboot. Я установил эти пакеты на одной виртуальной машине (Oracle Virtualbox), apt-get установил nfs-kernel-server apt-get установил tftpd-hpa inetutils-inetd apt-get установил syslinux apt-get установил isc-dhcp-сервер Я редактирую dhcpd файл .conf и запущенный сервер dhcp
начинающих

@Sneetsher: Привет, я использую tftpd-hda, настроенный со значениями по умолчанию. А netstat -lu | grep tftpпоказывает это в режиме прослушивания. Папка / tftpboot - 777, однако, если я пытаюсь сделать tftp> get pxelinux.0это с клиента, я всегда получаю tftp: pxelinux.0: Ошибка отказа в разрешении . У вас есть идея отладить это? Заранее спасибо.
Danduk82

@ Danduk82, /var/lib/tftpboot/с 755 (по умолчанию) должно быть в порядке. Проверьте, pxelinux.0есть ли у 644 или запустить, sudo chmod -R +r /var/lib/tftpboot/чтобы сделать все его содержимое для чтения.
user.dz

1
Привет, на самом деле я решил проблему: на самом деле я (тупо) забыл перезапустить службу DHCP после добавления filename "pxelinux.0";... без комментариев; P ... спасибо за ваш ответ и за этот отличный (и полный) ответ. Приветствия
Danduk82

1
@Matthieu, Вы можете найти некоторые выпуски через торрент-сеть, пакеты были удалены с официального сайта после того, как оригинальный разработчик решил сделать его коммерческим. Также вы можете использовать cdimage.ubuntu.com/netboot, если хотите впервые протестировать или настроить PXE.
user.dz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.