Instalação Remota do Sistema Operacional FreeBSD sem um Console Remoto

Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD.

trademarks

FreeBSD is a registered trademark of the FreeBSD Foundation.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.

Resumo

Este artigo documenta a instalação remota do sistema operacional FreeBSD quando o console do sistema remoto não está disponível. A ideia principal por trás deste artigo é o resultado de uma colaboração com Martin Matuska <mm@FreeBSD.org>, com valiosa contribuição fornecida por Paweł Jakub Dawidek <pjd@FreeBSD.org>.


1. Background

Existem muitos provedores de hospedagem de servidores no mundo, mas muito poucos deles oferecem suporte oficial para o FreeBSD. Geralmente, eles fornecem suporte para uma distribuição Linux® a ser instalada nos servidores que oferecem.

Em alguns casos, essas empresas podem instalar a distribuição FreeBSD se você solicitar, mesmo que normalmente só ofereçam suporte para distribuições Linux®. Em outros casos, elas podem oferecer um sistema de resgate que seria usado em uma emergência. É possível usar isso para nossos fins também.

Este artigo cobre os passos básicos de instalação e configuração necessários para inicializar uma instalação remota do FreeBSD com capacidades RAID-1 e ZFS.

2. Introdução

Esta seção resumirá o objetivo deste artigo e explicará melhor o que é abordado aqui. As instruções incluídas neste artigo beneficiarão aqueles que utilizam serviços fornecidos por provedores de colocation que não suportam o FreeBSD.

  1. Como mencionamos na seção Background, muitas das empresas de hospedagem de servidores respeitáveis fornecem algum tipo de sistema de resgate, que é iniciado a partir de sua LAN e acessível por SSH. Geralmente, eles fornecem esse suporte para ajudar seus clientes a corrigir sistemas operacionais com problemas. Como este artigo explicará, é possível instalar o FreeBSD com a ajuda desses sistemas de resgate.

  2. A próxima seção deste artigo descreverá como configurar e compilar um FreeBSD minimalista na máquina local. Essa versão será executada eventualmente na máquina remota a partir de um ramdisk, o que nos permitirá instalar um sistema operacional FreeBSD completo a partir de um espelho FTP usando a ferramenta sysinstall.

  3. O restante deste artigo descreverá o procedimento de instalação em si, bem como a configuração do sistema de arquivos ZFS.

2.1. Requisitos

Para continuar com sucesso, você deve:

  • Ter um sistema operacional acessível pela rede com acesso SSH

  • Entender o processo de instalação do FreeBSD

  • Esteja familiarizado com o utilitário sysinstall(8)

  • Tenha a imagem do sistema operacional de instalação do FreeBSD ou o CD em mãos

3. Preparação - mfsBSD

Antes que o FreeBSD possa ser instalado no sistema de destino, é necessário construir a imagem mínima do sistema operacional FreeBSD que será inicializada a partir do disco rígido. Dessa forma, o novo sistema pode ser acessado a partir da rede e o restante da instalação pode ser feito sem acesso remoto ao console do sistema.

A ferramenta mfsBSD pode ser utilizada para construir uma imagem mínima do FreeBSD. Como sugere o nome "mfsBSD" ("mfs" significa "sistema de arquivos de memória"), a imagem resultante é executada totalmente de um ramdisk. Graças a essa característica, a manipulação de discos rígidos não será limitada, tornando possível a instalação de um sistema operacional FreeBSD completo. A página inicial do mfsBSD inclui referências para a última versão do conjunto de ferramentas.

Por favor, note que os detalhes internos do mfsBSD e como tudo se encaixa estão além do escopo deste artigo. O leitor interessado deve consultar a documentação original do mfsBSD para mais detalhes.

Faça o download e extraia a última versão do mfsBSD e altere seu diretório de trabalho para o diretório onde os scripts do mfsBSD serão armazenados:

# fetch http://mfsbsd.vx.sk/release/mfsbsd-2.1.tar.gz
# tar xvzf mfsbsd-2.1.tar.gz
# cd mfsbsd-2.1/

3.1. Configuração do mfsBSD

Antes de iniciar o mfsBSD, algumas opções de configuração importantes devem ser definidas. A mais importante que devemos acertar é, naturalmente, a configuração de rede. O método mais adequado para configurar as opções de rede depende se sabemos de antemão o tipo de interface de rede que usaremos e o driver de interface de rede a ser carregado para nosso hardware. Veremos como o mfsBSD pode ser configurado em ambos os casos.

Outro ponto importante a ser definido é a senha do root. Isso pode ser feito editando o arquivo conf/loader.conf. Por favor, consulte os comentários incluídos.

3.1.1. O método conf/interfaces.conf

Quando a placa de rede instalada é desconhecida, é possível usar os recursos de detecção automática do mfsBSD. Os scripts de inicialização do mfsBSD podem detectar o driver correto a ser usado, com base no endereço MAC da interface, se definirmos as seguintes opções em conf/interfaces.conf:

mac_interfaces="ext1"
ifconfig_ext1_mac="00:00:00:00:00:00"
ifconfig_ext1="inet 192.168.0.2/24"

Não se esqueça de adicionar as informações do defaultrouter no conf/rc.conf:

defaultrouter="192.168.0.1"

3.1.2. O Método conf/rc.conf

Quando o driver da interface de rede é conhecido, é mais conveniente usar o arquivo conf/rc.conf para as opções de rede. A sintaxe deste arquivo é a mesma usada no arquivo padrão rc.conf(5) do FreeBSD.

Por exemplo, se você sabe que uma interface de rede re(4) estará disponível, você pode definir as seguintes opções no conf/rc.conf:

defaultrouter="192.168.0.1"
ifconfig_re0="inet 192.168.0.2/24"

3.2. Construindo uma imagem mfsBSD

O processo de construir uma imagem mfsBSD é bastante simples.

O primeiro passo é montar o CD de instalação do FreeBSD, ou a imagem ISO de instalação, no diretório /cdrom. Para fins de exemplo, neste artigo vamos supor que você tenha baixado a imagem ISO do FreeBSD 10.1-RELEASE. Montar esta imagem ISO no diretório /cdrom é fácil com o utilitário mdconfig(8):

# mdconfig -a -t vnode -u 10 -f FreeBSD-10.1-RELEASE-amd64-disc1.iso
# mount_cd9660 /dev/md10 /cdrom

Como as versões recentes do FreeBSD não contêm conjuntos de distribuição regulares, é necessário extrair os arquivos de distribuição do FreeBSD dos arquivos de distribuição localizados na imagem ISO:

# mkdir DIST
# tar -xvf /cdrom/usr/freebsd-dist/base.txz -C DIST
# tar -xvf /cdrom/usr/freebsd-dist/kernel.txz -C DIST

Em seguida, crie a imagem de inicialização do mfsBSD:

# make BASE=DIST

A instrução make acima deve ser executada a partir do nível superior da árvore de diretórios do mfsBSD, por exemplo, ~/mfsbsd-2.1/.

3.3. Inicializando o mfsBSD

Agora que a imagem mfsBSD está pronta, ela deve ser enviada para o sistema remoto que está executando um sistema de resgate ou a distribuição Linux® pré-instalada. A ferramenta mais adequada para essa tarefa é o scp:

# scp disk.img root@192.168.0.2:.

Para inicializar a imagem do mfsBSD corretamente, ela deve ser colocada no primeiro dispositivo (inicializável) da máquina em questão. Isso pode ser feito usando o seguinte exemplo, supondo que o sda seja o primeiro dispositivo de disco inicializável:

# dd if=/root/disk.img of=/dev/sda bs=1m

Se tudo correu bem, a imagem agora deve estar no MBR do primeiro dispositivo e a máquina pode ser reiniciada. Verifique se a máquina está iniciando corretamente com a ferramenta ping(8). Depois que a máquina voltar on-line, deve ser possível acessá-la via ssh(1) como usuário root com a senha configurada.

4. Instalação do Sistema Operacional FreeBSD

O mfsBSD foi iniciado com sucesso e deve ser possível fazer login por meio do ssh(1). Esta seção descreverá como criar e rotular slices, configurar o gmirror para RAID-1 e como usar o sysinstall para instalar uma distribuição mínima do sistema operacional FreeBSD.

4.1. Preparação dos Discos Rígidos

A primeira tarefa é alocar espaço em disco para o FreeBSD, ou seja, criar slices e partições. Obviamente, o sistema atualmente em execução está totalmente carregado na memória do sistema e, portanto, não haverá problemas com a manipulação de discos rígidos. Para concluir esta tarefa, é possível usar o sysinstall ou o fdisk(8) em conjunto com o bsdlabel(8).

No início, marque todos os discos do sistema como vazios. Repita o seguinte comando para cada disco rígido:

# dd if=/dev/zero of=/dev/ad0 count=2

O próximo passo é criar slices e rotulá-las com a ferramenta de sua preferência. Embora seja considerado mais fácil usar o sysinstall, um método poderoso e provavelmente com menos bugs é usar as ferramentas UNIX® padrão baseadas em texto, como o fdisk(8) e o bsdlabel(8), que também serão abordados nesta seção. A primeira opção está bem documentada no capítulo Instalando o FreeBSD do Handbook do FreeBSD. Como mencionado na introdução, este artigo apresentará como configurar um sistema com capacidades RAID-1 e ZFS. A nossa configuração consistirá em um pequeno gmirror(8) para o / (root), /usr e /var, e o restante do espaço em disco será alocado para um sistema de arquivos ZFS espelhado por meio do zpool(8). Por favor, note que o sistema de arquivos ZFS será configurado após a instalação e inicialização bem-sucedidas do sistema operacional FreeBSD.

O seguinte exemplo descreverá como criar slices e rótulos, inicializar o gmirror(8) em cada partição e como criar um sistema de arquivos UFS2 em cada partição espelhada:

# fdisk -BI /dev/ad0 (1)
# fdisk -BI /dev/ad1
# bsdlabel -wB /dev/ad0s1 (2)
# bsdlabel -wB /dev/ad1s1
# bsdlabel -e /dev/ad0s1 (3)
# bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /dev/ad1s1 /tmp/bsdlabel.txt (4)
# gmirror label root /dev/ad[01]s1a (5)
# gmirror label var /dev/ad[01]s1d
# gmirror label usr /dev/ad[01]s1e
# gmirror label -F swap /dev/ad[01]s1b (6)
# newfs /dev/mirror/root (7)
# newfs /dev/mirror/var
# newfs /dev/mirror/usr
1Crie uma slice cobrindo todo o disco e inicialize o código de inicialização contido no setor 0 do disco fornecido. Repita este comando para todos os discos rígidos no sistema.
2Escreva um label padrão para cada disco, incluindo o código de bootstrap.
3Agora, edite manualmente o label do disco. Consulte a página do manual bsdlabel(8) para descobrir como criar partições. Crie partições a para o sistema de arquivos / (raiz), b para swap, d para /var, e para /usr e, finalmente, f que será usado posteriormente para o ZFS.
4Importe o label recém-criado para o segundo disco rígido, para que ambos os discos sejam rotulados da mesma maneira.
5Inicialize o gmirror(8) em cada partição.
6Note que -F é usado para a partição swap. Isso instrui o gmirror(8) a assumir que o dispositivo está em um estado consistente após uma falha de energia/sistema.
7Crie um sistema de arquivos UFS2 em cada partição espelhada.

4.2. Instalação do sistema

Esta é a parte mais importante. Esta seção irá descrever como instalar a distribuição mínima do FreeBSD nos discos rígidos que preparamos na seção anterior. Para atingir este objetivo, todos os sistemas de arquivos precisam ser montados para que o sysinstall possa gravar o conteúdo do FreeBSD nos discos rígidos:

# mount /dev/mirror/root /mnt
# mkdir /mnt/var /mnt/usr
# mount /dev/mirror/var /mnt/var
# mount /dev/mirror/usr /mnt/usr

Quando terminar, inicie o sysinstall(8). Selecione a instalação Custom no menu principal. Selecione Opções e pressione Enter. Com a ajuda das teclas de seta, mova o cursor no item Install Root, pressione Espaço e altere-o para /mnt. Pressione Enter para enviar suas alterações e sair do menu Opções pressionando q.

Observe que este passo é muito importante e, se ignorado, o sysinstall será incapaz de instalar o FreeBSD.

Vá para o menu Distributions, mova o cursor com as teclas de seta para Minimal e marque-a pressionando Espaço. Este artigo utiliza a distribuição Minimal para economizar tráfego de rede, pois o próprio sistema será instalado via ftp. Saia deste menu escolhendo Exit.

Os menus Partition e Label serão ignorados, pois são inúteis neste momento.

Na tela do menu Media[/guimenuitem], selecione a opção "FTP". Escolha o espelho mais próximo e deixe que o sysinstall assuma que a rede já está configurada. Você será levado de volta ao menu Custom.

Por fim, execute a instalação do sistema selecionando a última opção, Commit. Saia do sysinstall quando a instalação for concluída.

4.3. Etapas pós-instalação

O sistema operacional FreeBSD deve estar instalado agora; no entanto, o processo ainda não está concluído. É necessário realizar algumas etapas pós-instalação para permitir que o FreeBSD seja inicializado no futuro e para poder fazer login no sistema.

Agora você deve executar o comando chroot(8) no sistema recém-instalado para concluir a instalação. Use o seguinte comando:

# chroot /mnt

Para completar nosso objetivo, execute estas etapas:

  • Copie o kernel GENERIC para o diretório /boot/kernel:

    # cp -Rp /boot/GENERIC/* /boot/kernel
  • Crie os arquivos /etc/rc.conf, /etc/resolv.conf e /etc/fstab. Não esqueça de definir corretamente as informações de rede e habilitar o sshd em /etc/rc.conf. O conteúdo do /etc/fstab será semelhante ao seguinte:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/mirror/swap        none            swap    sw              0       0
    /dev/mirror/root        /               ufs     rw              1       1
    /dev/mirror/usr         /usr            ufs     rw              2       2
    /dev/mirror/var         /var            ufs     rw              2       2
    /dev/cd0                /cdrom          cd9660  ro,noauto       0       0
  • Crie o arquivo /boot/loader.conf com o seguinte conteúdo:

    geom_mirror_load="YES"
    zfs_load="YES"
  • Execute o seguinte comando, que permitirá o ZFS ser utilizado no próximo boot:

    # sysrc zfs_enable="YES"
  • Adicione usuários adicionais ao sistema usando a ferramenta adduser(8). Não se esqueça de adicionar um usuário ao grupo wheel para que possa obter acesso de root após a reinicialização.

  • Verifique todas as suas configurações.

O sistema deve estar pronto para a próxima inicialização. Use o comando reboot(8) para reiniciar o sistema.

5. ZFS

Se o seu sistema sobreviveu ao reboot, agora deve ser possível fazer login. Bem-vindo à nova instalação do FreeBSD, realizada remotamente sem o uso de um console remoto!

O único passo restante é configurar o zpool(8) e criar alguns sistemas de arquivos zfs(8). Criar e administrar ZFS é muito simples. Primeiro, crie um pool espelhado:

# zpool create tank mirror /dev/ad[01]s1f

Em seguida, crie alguns sistemas de arquivos:

# zfs create tank/ports
# zfs create tank/src
# zfs set compression=gzip tank/ports
# zfs set compression=on tank/src
# zfs set mountpoint=/usr/ports tank/ports
# zfs set mountpoint=/usr/src tank/src

Isso é tudo. Se você estiver interessado em mais detalhes sobre o ZFS no FreeBSD, consulte a seção ZFS do Wiki do FreeBSD.


Última alteração em: 29 de abril de 2023 por Edson Brandi