Etapas de instalação do servidor de inicialização PXE na VM do Ubuntu Server


Respostas:


31

PXE (Ambiente de pré-inicialização do eXecution, pixie pronunciado)

Veja Wikipedia: PXE

Como funciona?

Este é o meu entendimento!

PXE_Diagram_en.png

  1. A máquina cliente está ligada. O BIOS procura dispositivos. Em seguida, tente carregar o carregador de inicialização do dispositivo necessário, conforme listado em Ordem / Sequência de Inicialização . Carrega o PXE da ROM da placa de rede.
  2. O PXE (lado do cliente) transmite uma solicitação para um IP. Resposta do servidor DHCP com as informações necessárias: IP, IP do próximo servidor (IP do servidor TFTP), pxelinux.0(nome do arquivo do carregador de inicialização PXE), ... etc

    PXE_Boot_1.png

  3. O PXE (lado do cliente) solicita o pxelinux.0arquivo do servidor TFTP, carrega-o na RAM e passa o controle para pxelinux.0.

    pxelinux.0obtém o arquivo de configuração de inicialização do servidor TFTP com o nome como:
    (se não existir, tenta com o próximo)

    • UUID
    • MAC
    • IP em Capital Hex
    • Uma parte do IP
    • Drops to defaultfile

    PXE_Boot_2.png

  4. Escolha do usuário ou entrada de menu padrão. pxelinux.0solicita o kernel correspondente e o RAMDisk do servidor TFTP e os carrega na RAM.

    Em seguida, passa os parâmetros de inicialização e o controle para o kernel carregado.

    PXE_Linux.png

  5. O kernel carrega as partes restantes do servidor TFTP ou de qualquer outro servidor de protocolo, dependendo de seus recursos / propriedades.

    Parted_Magic_1.png Parted_Magic_2.png

Configuração do servidor

Existem muitas maneiras de configurar o servidor PXE, essa é uma delas.

Essas instruções foram testadas no Ubuntu 9.10 e Ubuntu 10.04 em uma máquina real. Eles ainda devem ser válidos, com poucas alterações. (Atualizado e testado para o Ubuntu 14.04 no VirtualBox, verifique as revisões de edição para versões antigas)

Meu objetivo era o PartedMagic 4.5 , que deve ser semelhante ao Ubuntu ou a qualquer distribuição Linux.

  1. Instale pacotes DHCP e TFTP

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. Configuração DHCP

    • Editar /etc/default/isc-dhcp-server, interface Ethernet para serviço DHCP

      INTERFACES="eth0"
      
    • Editar /etc/dhcp/dhcpd.conf‬ou /etc/ltsp/dhcpd.confexistir, configuração do serviço DHCP

      Configurações específicas do 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;
      }
      
    • Configure um IP estático para eth0, 192.168.10.123no meu caso, usar o gerenciador de rede para a edição Desktop ou /etc/network/interfacesServer.

      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
      

      Reinicialize a interface de rede:

      sudo ifdown eth0
      sudo ifup eth0
      
    • Reinicie o serviço

      sudo service isc-dhcp-server restart
      

      Verificar status

      netstat -lu
      

      Resultado

      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      udp        0      0 *:bootpc                *:*                                
      
  3. Configuração TFTP

    • Edite ‪/etc/inetd.conf, remova #<off>#do início da tftplinha ou adicione se não estiver sob #:BOOT:comentário. (Ignore isso com systemd, 15.10 e posterior)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • Ative o serviço de inicialização para inetd

      sudo update-inetd --enable BOOT
      
    • Começar serviço

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

      Verificar status

      netstat -lu
      

      Resultado

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. Configuração de arquivos de inicialização PXE

    • Descompacte pmagic-pxe-4.5.zip. Se pxelinux.0não houver, obtenha-o do sysliux-commonpacote instalado em /usr/lib/syslinux/pxelinux.0, Syslinux Project ou Ubuntu Netboot Image .

      Coloque-os em estrutura semelhante.

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • Edite /var/lib/tftpboot/pxelinux.cfg/default, se necessário, caminhos de exemplo: 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
      
    • Configurar permissões corretas

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

Configuração do cliente

Altere a ordem de inicialização do BIOS por uma vez usando F9ou F12, para configuração permanente da configuração do BIOS DEL, F2ou F12. (Dependendo da marca da máquina)

Ir para o topo: [PXE | NIC | LAN | Ethernet | Network].

Notas

  • inetutils-inetdou xinetdpode ser usado em vez de openbsd-inetd, algumas inetdetapas são diferentes.

  • O diretório raiz TFTP pode ser alterado de /etc/default/tftpd-hpa. Lembre-se de atualizar ‪/etc/inetd.conftambém.

  • Muitas distribuições suportam o carregamento do RAMDisk através de vários protocolos: SSH (SFTP), SMB, NFS ... Exemplo: Ubuntu suporta NFS.

  • Algumas placas de rede antigas não suportam PXE, o iPXE (por exemplo, gPXE ou Etherboot ) pode ser usado em disquete, unidade USB, disco rígido ( /bootpartição) ou até mesmo o flash na ROM (apenas poucas placas de rede suportadas). O GRUB2 possui um módulo para suportar a inicialização usando o PXE.

    Veja também Wikipedia: gPXE e ROM-O-matic .

  • O Ubuntu Netboot Image de cdimage.ubuntu.com/netboot/ fornece a instalação do Ubuntu da rede e solicitará o download de todos os pacotes necessários do espelho oficial ou local, se você tiver um.

    A maioria dos usuários está procurando inicializar imagens ao vivo através do PXE. Esta pergunta foi apenas para configurar um servidor PXE. Veja Ubuntu Wiki: Instalação - LocalNet

    Ubuntu NetBoot - Espelho oficial do arquivo Ubuntu NetBoot - Espelho de arquivo personalizado / local

  • O menu PXE pode ser personalizado, o melhor modelo para aprender é o Ubuntu NetBoot . Ver imagem Pxeboot Multiple

    PXE_Linux_Menu.png

  • memdiskpode ser usado para carregar diretamente as imagens ISO ou de disquete através do PXE. syslinux-commonpacote tem uma cópia. O cliente deve ter RAM suficiente para armazenar a imagem mais uma parte para executar o SO carregado.

    Exemplo de configuração:

    /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
    
  • Os pacotes PartedMagic foram retirados do site oficial depois que o desenvolvedor original decidiu torná-lo comercial. Alguns lançamentos podem ser encontrados através da rede torrent. Minha resposta aqui é um resumo da primeira instalação do PXE que funcionou para mim. O Ubuntu Netboot Image deve funcionar com as mesmas instruções.


Amigos, na verdade eu estou trabalhando no Pxeboot. Eu instalei esses pacotes em uma máquina virtual (Oracle Virtualbox), apt-get install nfs-kernel-server apt-get install tftpd-hpa inetutils-inetd apt-get install syslinux apt-get install isc-dhcp-server Edito o dhcpd arquivo .conf e se o servidor DHCP em execução
Beginner

@ Sneetsher: Oi, estou usando o tftpd-hda, configurado com valores padrão. A netstat -lu | grep tftpmostra no modo de escuta. A pasta / tftpboot é 777, no entanto, se eu tentar tftp> get pxelinux.0fazê - lo no cliente, sempre recebo um tftp: pxelinux.0: erro de permissão negada . Você tem uma ideia para depurar? Desde já, obrigado.
Danduk82

@ Danduk82, /var/lib/tftpboot/com 755 (padrão) deve estar ok. Verifique se pxelinux.0possui 644 ou execute sudo chmod -R +r /var/lib/tftpboot/para tornar todo o seu conteúdo legível.
user.dz

11
Oi, na verdade resolvi o problema: Na verdade, eu (estupidamente) esqueci de reiniciar o serviço DHCP depois de adicionar filename "pxelinux.0";... nenhum comentário; P ... obrigado pela sua resposta e por esta ótima (e completa) resposta. Cheers
Danduk82 /

11
@ Mattthieu, você pode encontrar alguns lançamentos através da rede torrent, os pacotes foram retirados do site oficial depois que o desenvolvedor original decidiu torná-lo comercial. Além disso, você pode usar o cdimage.ubuntu.com/netboot se estiver procurando apenas testar ou configurar o PXE pela primeira vez.
user.dz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.