# Preboot Execution Environment (Português)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Status de tradução: Esse artigo é uma tradução de Preboot Execution Environment. Data da última tradução: 2020-06-23. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Artigos relacionados

- Sistema sem disco

Do Wikipédia:

  O Ambiente de Pré-execução (PXE ou "pixie", ambos do inglês: Preboot eXecution Environment) é um ambiente para inicializar computadores usando a interface da placa de rede sem a dependência da disponibilidade de dispositivos de armazenamento (como disco rígidos) ou algum sistema operacional instalado.

Neste guia, o PXE é usado para inicializar a mídia de instalação com uma opção-rom apropriada que ofereça suporte ao PXE no destino. Isso funciona bem quando você já possui um servidor configurado.

## Preparação

Obtenha a mídia de instalação oficial mais recente da página de instalação.

Em seguida, monte a imagem:

    # mkdir -p /mnt/archiso
    # mount -o loop,ro archlinux-data_lançamento-x86_64.iso /mnt/archiso

sendo `data_lançamento` a data de lançamento no nome do arquivo ISO como, por exemplo, `2020.03.01`.

## Configuração do servidor

Você precisará configurar um DHCP (para atribuir endereços e anunciar a configuração), TFTP (para transferir pxelinux, kernel e initramfs) e um dos serviços para transferência do sistema de arquivos raiz: servidor HTTP, NFS ou NBD.

No momento, o Arch ISO possui suporte apenas à inicialização PXE no estilo do BIOS. Veja FS#50188 para mais informações.

Arch Netboot possui suporte a inicialização no estilo UEFI se você precisar. Porém, o resto dessa página tem foco na ISO.

### Rede

Ative sua interface de rede cabeada e atribua-lhe um endereço adequado para sua rede.

    # ip link set eth0 up
    # ip addr add 192.168.0.1/24 dev eth0

### DHCP + TFTP

Você precisará de um servidor DHCP e TFTP para configurar a rede no destino da instalação e facilitar a transferência de arquivos entre o servidor PXE e o cliente; O dnsmasq faz as duas coisas e é extremamente fácil de configurar.

Instale o pacote dnsmasq.

Configure o dnsmasq:

    # /etc/dnsmasq.conf

    port=0
    interface=eth0
    bind-interfaces
    dhcp-range=192.168.0.50,192.168.0.150,12h
    dhcp-boot=/arch/boot/syslinux/lpxelinux.0
    dhcp-option-force=209,boot/syslinux/archiso.cfg
    dhcp-option-force=210,/arch/
    dhcp-option-force=66,192.168.0.1
    enable-tftp
    tftp-root=/mnt/archiso

Inicie `dnsmasq.service`.

### Transferindo o sistema de arquivos raiz do archiso

Graças aos ganchos de initcpio `archiso_pxe_http`, `archiso_pxe_nfs` e `archiso_pxe_nbd` no archiso, é possível inicializar usando HTTP, NFS ou NBD. O tempo de inicialização é aproximadamente o mesmo nos três métodos, mas o método HTTP permite assistir a um estado de download do airootfs.sfs em porcentagens.

#### HTTP

Entre todas as alternativas, o darkhttpd é de longe o mais trivial de configurar (e o mais leve).

Primeiro, instale o pacote darkhttpd.

Então, inicie o darkhttpd usando `/mnt/archiso` como raiz de documentos:

    # darkhttpd /mnt/archiso

    darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic.
    listening on: http://0.0.0.0:80/

Atenção: É importante que o servidor esteja executando na porta `80`. Se você iniciar darkhttpd sem acesso root, o padrão será `8080`. O cliente tentará acessar a porta 80 e a inicialização falhará.

#### NFS

Você precisará configurar um servidor NFS com uma exportação na raiz da mídia de instalação montada, que seria `/mnt/archiso` caso você tenha seguido #Preparação. Depois de configurar o servidor, adicione a seguinte linha ao seu arquivo `/etc/exports`:

    /etc/exports

    /mnt/archiso 192.168.0.0/24(ro,no_subtree_check)

Se o servidor já estiver em execução, reexporte os sistemas de arquivos com `exportfs -r -a -v`.

As configurações padrão no instalador esperam encontrar o NFS em `/run/archiso/bootmnt`, então você precisará editar as opções de inicialização. Para fazer isso, pressione Tab na opção apropriada do menu de inicialização e edite a opção `archiso_nfs_srv` de acordo:

    archiso_nfs_srv=${pxeserver}:/mnt/archiso

Alternativamente, você pode usar `/run/archiso/bootmnt` para todo o processo.

Após o carregamento do kernel, a imagem de inicialização do Arch copiará o sistema de arquivos raiz via NFS para o host de inicialização. Isso pode demorar um pouco. Quando isso for concluído, você deverá ter um sistema em execução.

#### NBD

Instale o pacote nbd e configure-o:

    /etc/nbd-server/config

    [generic]
    [archiso]
        readonly = true
        exportname = /srv/archlinux-data_lançamento-x86_64.iso

sendo `data_lançamento` a data de lançamento no nome do arquivo ISO como, por exemplo, `2020.03.01`.

Inicie `nbd.service`.

### Servidor PXE existente

Se você já possui um servidor PXE com uma configuração de sistema PXELINUX (por exemplo, uma combinação de DHCP e TFTP), pode adicionar os seguintes itens de menu ao seu arquivo `/tftpboot/pxelinux.cfg/default` para inicializar o Arch através do seu método preferido:

    LABEL archlinux
            MENU LABEL Arch Linux x86_64
            LINUX /caminho/extração/Arch/ISO/arch/boot/x86_64/vmlinuz
            INITRD /caminho/extração/Arch/ISO/arch/boot/intel_ucode.img,/caminho/extração/Arch/ISO/arch/boot/amd_ucode.img,/caminho/extração/Arch/ISO/arch/boot/x86_64/archiso.img
            APPEND archisobasedir=arch archiso_http_srv=http://servidorhttp/caminho/extração/Arch/ISO/
            SYSAPPEND 3
            TEXT HELP
            Arch Linux 2018.09.01 x86_64
            ENDTEXT

Você pode substituir `archiso_http_srv` por `archiso_nfs_srv` para NFS ou `archiso_nbd_srv` para NBD (consulte exemplos de uso no arquivo `arch/boot/syslinux/archiso_pxe.cfg` que resido na ISO do Arch). Seja qual for o método escolhido, você deve passar o parâmetro `ip=` para instruir o kernel a abrir a interface de rede antes de tentar montar a mídia de instalação na rede. É necessário passar `BOOTIF=` quando houver várias interfaces com fio no lado do cliente e/ou você desejar que o resolv.conf já esteja configurado no archiso inicializado. Você pode usar máscara de sysappend 3 (que é 1+2) para passar esses parâmetros automaticamente. Para obter os parâmetros de inicialização disponíveis, consulte README.bootparams.

## Instalação

Para esta parte, você precisará descobrir como informar o cliente para tentar uma inicialização do PXE; no canto da tela, junto com as mensagens normais de postagem, geralmente haverá alguma dica sobre qual tecla pressionar para tentar inicializar o PXE primeiro. Em um IBM x3650, o `F12` exibe um menu de inicialização, cuja primeira opção é Network; em um Dell PE 1950/2950, pressionar `F12` entra na inicialização do PXE diretamente.

### Inicialização

Examinar journald no servidor PXE fornecerá algumas informações adicionais sobre o que exatamente está acontecendo durante os estágios iniciais do processo de inicialização do PXE:

    # journalctl -u dnsmasq.service -f

    dnsmasq-dhcp[2544]: DHCPDISCOVER(eth1) 00:1a:64:6a:a2:4d
    dnsmasq-dhcp[2544]: DHCPOFFER(eth1) 192.168.0.110 00:1a:64:6a:a2:4d
    dnsmasq-dhcp[2544]: DHCPREQUEST(eth1) 192.168.0.110 00:1a:64:6a:a2:4d
    dnsmasq-dhcp[2544]: DHCPACK(eth1) 192.168.0.110 00:1a:64:6a:a2:4d
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/pxelinux.0 to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso.cfg to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/whichsys.c32 to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe_choose.cfg to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/ifcpu64.c32 to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe_both_inc.cfg to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_head.cfg to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe32.cfg to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe64.cfg to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_tail.cfg to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/vesamenu.c32 to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/splash.png to 192.168.0.110

Depois de carregar o `pxelinux.0` e o `archiso.cfg` via TFTP, esperamos que você seja apresentado a um menu de inicialização syslinux com várias opções, onde é possível selecionar Boot Arch Linux (x86_64) (HTTP).

Em seguida, o kernel e o initramfs (apropriados para a arquitetura que você selecionou) serão transferidos, novamente via TFTP:

    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/x86_64/vmlinuz to 192.168.0.110
    dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/x86_64/archiso.img to 192.168.0.110

Se tudo correr bem, você deverá ver a atividade no darkhttpd vinda do destino PXE; nesse ponto, o kernel seria carregado no destino PXE e no init:

    1348347586 192.168.0.110 "GET /arch/aitab" 200 678 "" "curl/7.27.0"
    1348347587 192.168.0.110 "GET /arch/x86_64/root-image.fs.sfs" 200 107860206 "" "curl/7.27.0"
    1348347588 192.168.0.110 "GET /arch/x86_64/usr-lib-modules.fs.sfs" 200 36819181 "" "curl/7.27.0"
    1348347588 192.168.0.110 "GET /arch/any/usr-share.fs.sfs" 200 63693037 "" "curl/7.27.0"

Após o download do sistema de arquivos raiz via HTTP, você acabará no prompt normal de raiz do sistema ativo zsh.

### Pós-inicialização

A menos que você deseje que todo o tráfego seja roteado através do servidor PXE (que não funcionará de qualquer maneira, a menos que você configure corretamente, você pode querer parar `dnsmasq.service` e obter uma nova concessão no alvo da instalação, conforme apropriado para a disposição da sua rede.

Você também pode matar darkhttpd; o alvo já baixou o sistema de arquivos raiz, portanto, não é mais necessário. Enquanto você está nisso, também pode desmontar a imagem de instalação:

    # umount /mnt/archiso

Neste ponto, você pode seguir o guia de instalação.

### Sistemas com pouca memória

A opção `copytoram` do initramfs pode ser usada para controlar se o sistema de arquivos raiz deve ser copiado para RAM na sua totalidade na inicialização antecipada.

É altamente recomendável deixar essa opção em branco e só deve ser desativada se for totalmente necessário (sistemas com menos de ~256MB de memória física). Acrescente `copytoram=n` à sua linha do kernel, se desejar.

Nota: Como isso requer squashfs em montagem de loop a partir de um sistema de arquivos remoto montado, `copytoram=n` e `archiso_pxe_http` são mutuamente exclusivos.

### Compartilhando internet com clientes PXE

Se sua rede para clientes PXE for privada (por exemplo, 192.168.1.0/24) e você desejar que eles possam acessar a Internet (por exemplo, para instalação de pacotes), configure o mascaragem/NAT de origem corretamente. Seu servidor PXE deve ter uma interface de rede separada conectada à Internet. Você pode usar esse comando para passar pela Internet para os clientes:

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

Para tornar essa regra persistente após a reinicialização, execute o seguinte comando:

    iptables-save -f /etc/iptables/iptables.rules

e habilite `iptables.service`.

Consulte Simple stateful firewall#Setting up a NAT gateway e Internet sharing#Enable NAT para mais informações.

## Solução de problemas

### Bug ao renomear interface DHCP

FS#36749 faz com que a renomeação previsível da interface de rede padrão falhe e, em seguida, o cliente DHCP falhe por causa disso. Uma solução alternativa é adicionar o parâmetro de inicialização do kernel `net.ifnames=0` para desativar os nomes de interface previsíveis.

### VirtualBox não consegue inicializar enquanto a máquina física consegue

Ao usar o VirtualBox para testar sua configuração, a máquina virtual pode ficar travada em:

    Probing EDD (edd=off to disable)... ok

Mas a inicialização por PXE com uma máquina real funciona bem. O problema pode ser porque você configurou vários núcleos de CPU para a máquina cliente e definiu o tipo como Other e a versão como Other/Unknown (64 bit). Então, o VirtualBox não sabe qual interface de paravirtualização usar por padrão.

Adicionar o parâmetro do kernel `loglevel=7` permite que você veja que máquina realmente estava travada em:

    [    0.063697] smp: Bringing up secondary CPUs...
    [    0.103768] x86: Booting SMP configuration:

Para resolver isso, use um núcleo da CPU ou acesse Máquina > Configurações > Sistema > Aceleração e defina uma das seguintes interfaces de paravirtualização: Mínima, Hyper-V ou KVM.

### VirtualBox cai no shell do EFI

This article or section is out of date.

Reason: Isso ainda é um problema? VirtualBox possui suporte a inicialização EFI desde a versão 6.1, de acordo com VirtualBox (Português)#Instalação no modo EFI. (Discuss in talk:PXE)

Atualmente, o VirtualBox não oferece suporte à inicialização PXE no modo UEFI. Veja isto. Você pode tentar o QEMU. Como alternativa, você pode usar o VMware Workstation 15.0.2 (ele suporta inicialização UEFI PXE) ou apenas um hardware real.

Categories:

- Installation process (Português)
- Networking (Português)
- Boot process (Português)

Hidden category:

- Pages or sections flagged with Template:Out of date