---
authors:
  - 
    author: 'Daniel Gerzo'
    email: danger@FreeBSD.org
copyright: '2008-2021 The FreeBSD Documentation Project'
description: 'Este documento descreve a instalação remota do sistema operacional FreeBSD quando o console do sistema remoto não está disponível'
tags: ["Remote", "Installation", "FreeBSD"]
title: 'Instalação Remota do Sistema Operacional FreeBSD sem um Console Remoto'
trademarks: ["freebsd", "general"]
---

= Instalação Remota do Sistema Operacional FreeBSD sem um Console Remoto
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/remote-install/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
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 `{mm}`, com valiosa contribuição fornecida por `{pjd}`.

'''

toc::[]

[[background]]
== 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(R) 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(R). 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.

[[intro]]
== 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.

[.procedure]
====
. 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.
+
. 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.
. O restante deste artigo descreverá o procedimento de instalação em si, bem como a configuração do sistema de arquivos ZFS.
====

[[requirements]]
=== 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 man:sysinstall[8]
* Tenha a imagem do sistema operacional de instalação do FreeBSD ou o CD em mãos

[[preparation]]
== 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 http://mfsbsd.vx.sk/[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:

[source, shell]
....
# fetch http://mfsbsd.vx.sk/release/mfsbsd-2.1.tar.gz
# tar xvzf mfsbsd-2.1.tar.gz
# cd mfsbsd-2.1/
....

[[mfsbsd-config]]
=== 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 [.filename]#conf/loader.conf#. Por favor, consulte os comentários incluídos.

==== O método [.filename]#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 [.filename]#conf/interfaces.conf#:

[.programlisting]
....
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 [.filename]#conf/rc.conf#:

[.programlisting]
....
defaultrouter="192.168.0.1"
....

==== O Método [.filename]#conf/rc.conf#

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

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

[.programlisting]
....
defaultrouter="192.168.0.1"
ifconfig_re0="inet 192.168.0.2/24"
....

[[mfsbsd-build]]
=== 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 [.filename]#/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 [.filename]#/cdrom# é fácil com o utilitário man:mdconfig[8]:

[source, shell]
....
# 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:

[source, shell]
....
# 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:

[source, shell]
....
# make BASE=DIST
....

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

=== 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(R) pré-instalada. A ferramenta mais adequada para essa tarefa é o scp:

[source, shell]
....
# 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 [.filename]#sda# seja o primeiro dispositivo de disco inicializável:

[source, shell]
....
# 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 man:ping[8]. Depois que a máquina voltar on-line, deve ser possível acessá-la via man:ssh[1] como usuário `root` com a senha configurada.

[[installation]]
== Instalação do Sistema Operacional FreeBSD

O mfsBSD foi iniciado com sucesso e deve ser possível fazer login por meio do man: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.

=== 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 man:fdisk[8] em conjunto com o man:bsdlabel[8].

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

[source, shell]
....
# 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(R) padrão baseadas em texto, como o man:fdisk[8] e o man:bsdlabel[8], que também serão abordados nesta seção. A primeira opção está bem documentada no capítulo extref:{handbook}[Instalando o FreeBSD, install-steps] 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 man:gmirror[8] para o [.filename]#/# (root), [.filename]#/usr# e [.filename]#/var#, e o restante do espaço em disco será alocado para um sistema de arquivos ZFS espelhado por meio do man: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 man:gmirror[8] em cada partição e como criar um sistema de arquivos UFS2 em cada partição espelhada:

[source, shell]
....
# fdisk -BI /dev/ad0 <.>
# fdisk -BI /dev/ad1
# bsdlabel -wB /dev/ad0s1 <.>
# bsdlabel -wB /dev/ad1s1
# bsdlabel -e /dev/ad0s1 <.>
# bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /dev/ad1s1 /tmp/bsdlabel.txt <.>
# gmirror label root /dev/ad[01]s1a <.>
# gmirror label var /dev/ad[01]s1d
# gmirror label usr /dev/ad[01]s1e
# gmirror label -F swap /dev/ad[01]s1b <.>
# newfs /dev/mirror/root <.>
# newfs /dev/mirror/var
# newfs /dev/mirror/usr
....

<.> Crie 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.

<.> Escreva um label padrão para cada disco, incluindo o código de bootstrap.

<.> Agora, edite manualmente o label do disco. Consulte a página do manual man:bsdlabel[8] para descobrir como criar partições. Crie partições `a` para o sistema de arquivos [.filename]#/# (raiz), `b` para swap, `d` para [.filename]#/var#, `e` para [.filename]#/usr# e, finalmente, `f` que será usado posteriormente para o ZFS.

<.> Importe o label recém-criado para o segundo disco rígido, para que ambos os discos sejam rotulados da mesma maneira.

<.> Inicialize o man:gmirror[8] em cada partição.

<.> Note que `-F` é usado para a partição swap. Isso instrui o man:gmirror[8] a assumir que o dispositivo está em um estado consistente após uma falha de energia/sistema.

<.> Crie um sistema de arquivos UFS2 em cada partição espelhada.

=== 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:

[source, shell]
....
# 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 man:sysinstall[8]. Selecione a instalação [.guimenuitem]#Custom# no menu principal. Selecione [.guimenuitem]#Opções# e pressione kbd:[Enter]. Com a ajuda das teclas de seta, mova o cursor no item `Install Root`, pressione kbd:[Espaço] e altere-o para [.filename]#/mnt#. Pressione kbd:[Enter] para enviar suas alterações e sair do menu [.guimenuitem]#Opções# pressionando kbd:[q].

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

Vá para o menu [.guimenuitem]#Distributions#, mova o cursor com as teclas de seta para `Minimal` e marque-a pressionando kbd:[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`.

[NOTE]
====
Os menus [.guimenuitem]#Partition# e [.guimenuitem]#Label# serão ignorados, pois são inúteis neste momento.
====

Na tela do menu [.guimenuitem]#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 [.guimenuitem]#Custom#.

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

=== 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 `man:chroot[8]` no sistema recém-instalado para concluir a instalação. Use o seguinte comando:

[source, shell]
....
# chroot /mnt
....

Para completar nosso objetivo, execute estas etapas:

* Copie o kernel `GENERIC` para o diretório [.filename]#/boot/kernel#:
+
[source, shell]
....
# cp -Rp /boot/GENERIC/* /boot/kernel
....

* Crie os arquivos [.filename]#/etc/rc.conf#, [.filename]#/etc/resolv.conf# e [.filename]#/etc/fstab#. Não esqueça de definir corretamente as informações de rede e habilitar o sshd em [.filename]#/etc/rc.conf#. O conteúdo do [.filename]#/etc/fstab# será semelhante ao seguinte:
+
[.programlisting]
....
# 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 [.filename]#/boot/loader.conf# com o seguinte conteúdo:
+
[.programlisting]
....
geom_mirror_load="YES"
zfs_load="YES"
....
* Execute o seguinte comando, que permitirá o ZFS ser utilizado no próximo boot:
+
[source, shell]
....
# sysrc zfs_enable="YES"
....

* Adicione usuários adicionais ao sistema usando a ferramenta man: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 man:reboot[8] para reiniciar o sistema.

[[zfs]]
== 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 man:zpool[8] e criar alguns sistemas de arquivos man:zfs[8]. Criar e administrar ZFS é muito simples. Primeiro, crie um pool espelhado:

[source, shell]
....
# zpool create tank mirror /dev/ad[01]s1f
....

Em seguida, crie alguns sistemas de arquivos:

[source, shell]
....
# 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 https://wiki.freebsd.org/ZFS[ZFS] do Wiki do FreeBSD.
