Instalação do FreeBSD 100% SHELL
Table of Contents
Início
Neste artigo irei abordar a instalação do FreeBSD em um ambiente 100% SHELL, sem utilizar a interface gráfica de instalação.
A criação da partição ZFS (OpenZFS) será tratado em outro artigo, e em breve linkado a este.
A criação da partição de root (/) criptografado com GELI também será tratado em outro artigo dedicado ao GELI, por envolver conceitos mais avançados.
No momento que escrevo este artigo, o FreeBSD 14.2 é a última versão estável.
Versões posteriores não devem modificar a forma e os comandos no qual os procedimentos descritos aqui são mencionados.
Então logo na instalação do FreeBSD, ao se depararem com essa tela (abaixo), basta escolher a opção SHELL.
1. Identificando o device
O primeiro passo é identificar qual o device que está conectado na máquina.
O FreeBSD diferencia os diferentes tipos de devices por letras:
Tipo de Disco | Identificação no /dev/ |
---|---|
Parallel Ata (PATA) e Serial Ata (SATA) | /dev/ada |
NVME (Non-Volatile Memory Express) | /dev/nvme |
Pendrives de armazenamento e Discos SCSI | /dev/da |
As informações gerais dos devices conectados na máquina, podem ser verificados com o comando geom(8):
geom disk list
# geom disk list
Geom name: ada0
Providers:
1. Name: ada0
Mediasize: 68719476736 (64G)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r4w3e9
descr: FreeBSD-0 SSD
ident: A11QNQ83RY64S2XYWQAJ
rotationrate: 0
fwsectors: 63
fwheads: 16
2. Verificando partições existentes
Obtendo o nome do device, iremos utilizar o gpart(8) para fazer a criação das partições.
Antes, verificamos se já existem partições no device:
gpart show <device>
Caso não houver nenhuma partição, será retornado um erro de que o geom não controla as partições do device.
# gpart show ada0
gpart: No such geom: ada0.
Caso contrário, aparecerá a lista de partições já existentes:
# gpart show ada0
=> 40 134217648 ada0 GPT (64G)
40 307200 1 efi (150M)
307240 8388608 2 freebsd-swap (4.0G)
8695848 41943040 3 freebsd-ufs (20G)
3. Excluindo o schema de partições
Não é necessario apagar as partições existentes um a um.
É possível apagar todo o leiaute (schema) de partições de uma única vez, utilizando o comando:
gpart destroy -F <device>
1
# gpart destroy -F ada0
ada0 destroyed
No entanto se já possuir partições no disco, as partições podem ser excluídas com:
gpart delete -i <indice> <device>
2
# gpart delete -i 1 ada0
ada0p1 deleted
4. Criando novo schema de partições
Para criar as partições necessárias, iremos primeiramente criar o leiaute de partições (schema).
Irei utilizar como schema o GPT (Guided Partition Table) por ser o schema mais moderno em comparação ao MBR (Master Boot Record).
Caso você não esteja familiarizado com o GPT, sugiro a leitura a seguir: Wikipedia - GPT
Primeiramente o schema GPT precisa ser criado no disco:
gpart create -s gpt <device>
3
# gpart create -s gpt ada0
ada0 created
Com o schema criado, as partições poderão ser criadas em seguida.
Começando pela partição de boot, irei abordar tanto máquinas com firmware Legacy BIOS como UEFI.
4.1.a Criando partição boot (APENAS para firmware legacy BIOS)
gpart add -t freebsd-boot -s 512K <device>
2
# gpart add -t freebsd-boot -s 512K ada0
ada0p1 added
Apenas para freebsd-boot (Legacy BIOS - MBR), o tamanho deve ser fixo em 512K.
Agora é necessário instalar o bootcode MBR na partição de boot.
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i <indice> <device>
4
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
partcode written to ada0p1
bootcode written to ada0
4.1.b Criando partição EFI (APENAS para firmware UEFI)
Para o FreeBSD, uma partição EFI de 150M é mais do que suficiente.
gpart add -t efi -l <rótulo> -s 150M <device>
2
# gpart add -t efi -l efifs -s 150M ada0
ada0 created
4.1.1 Inicializando a partição EFI
A partição EFI precisa obrigatoriamente ser inicializada em FAT
newfs_msdos -F 32 -c 1 <partição>
Com a partição EFI inicializada, já podemos montar a partição e copiar o bootloader.
mount -t msdosfs <partição> /mnt
Copiando o bootloader:
# mkdir /mnt/EFI
# mkdir /mnt/EFI/BOOT
# cp /boot/loader.efi /mnt/EFI/BOOT/BOOTX64.efi
Algumas considerações sobre o bootloader, é que no exemplo acima utilizei o bootloader BOOTX64.efi.
Mas o nome do bootloder pode variar, a depender da arquitetura do processador. Abaixo segue relação da arquitetura do processador com o nome do bootloader que deverá ser criado.
Arquitetura | Nome do Bootloader |
---|---|
x86_64 | BOOTX64.efi |
i386/i686 | BOOTIA32.efi |
ARM 32 bits | BOOTARM.efi |
ARM 64 bits | BOOTAA64.efi |
RISCV64 | BOOTRISCV64.efi |
Copiado o bootloader, o ponto de montagem já pode ser desmontado.
4.2 Criando a partição SWAP
A partição SWAP sempre é recomendável criar. Muitos usuários de Unix-like costumam criar arquivo de swap no lugar de partição swap.
Mas uma partição SWAP é sempre melhor, uma vez o acesso a ela é direto e não passa pelo sistema de arquivos (UFS).
Nas palavras de Linus Torvalds:
Até onde eu sei, todas as distribuições normais configuram a instalação do sistema com partições de swap, não arquivos swap, porque honestamente, arquivos de swap tendem a ser mais lentos e tem vários outros problemas de complexidade.
Não existe uma regra definida para o tamanho da partição swap. Isso vai depender de muitos fatores.
O conhecimento da máquina e conhecimento do uso das suas aplicações permitirá a você escolher o tamanho de swap ideal.
Caso você seja um usuário iniciante, existe uma convenção para ajudar na escolha do tamanho da swap ideal. Não é uma regra, e sim um parâmetro, caso você não tenha um.
- Até 8G de RAM, crie a swap com o dobro da RAM.
- Acima de 8G de RAM, crie a swap com a mesma quantidade da RAM
gpart add -t freebsd-swap -l <rótulo> -s <num>G <device>
# gpart add -t freebsd-swap -l swapfs -s 4G ada0
ada0p2 added
4.3 Criando a partição UFS do sistema
O sistema de arquivos root (/) já poderá ser criado agora no sistema de arquivos UFS (Unix File System). Vocês podem especificar um tamanho para ela (utilizando o parâmetro -s), ou simplesmente ignorando esse parâmetro, alocando todo o espaço restante do disco nesta partição.
gpart add -t freebsd-ufs -l <rótulo> -s <num>G <device>
# gpart add -t freebsd-ufs -l rootfs -s 20G ada0
ada0p3 added
Se desejar criar mais partições separadas para /home, /usr/local/, poderão fazê-lo criando estas partições no sistema de arquivos freebsd-ufs da mesma forma que foi demonstrado acima.
Após criado as partições, não é necessário efetivar a criação, pois ao criar, o procedimento de efetivação é automático.
4.4 Inicializando as partições
A(s) partições do tipo freebsd-ufs já podem ser inicializadas.
newfs <partição>
É possível que uma partição UFS seja inteiramente otimizada considerando os tipos de arquivos que comumente são armazenados nesta partição.
Será publicado um artigo sobre esta otimização e linkado a este artigo.
-
O comando gpart destroy com o parâmetro:
-F (forçar) indica que se existir partições, todas elas serão apagadas junto com o schema. ↩︎ -
gpart add/delete com o parâmetro:
-i indica o índice da partição que deseja manipular. Ex: no device ada0p3, o indice é 3.
-t indica o tipo da partição que será criada. Os mais comums (para não citar muito), são:
bios-boot, efi, freebsd-boot, freebsd-swap, freebsd-ufs, freebsd-zfs, apple-apfs.
-s indica o tamanho da partição que será criada. Os terminadores são em:
K (Kbytes), M (Megabytes), G (Gigabytes), T (Terabytes) ou Z (Zetabytes).
-l adiciona um rótulo na partição. ↩︎ ↩︎ ↩︎ -
gpart create com parâmetro:
-s indica o schema no qual o leiaute de partições será criado. ↩︎ -
gpart bootcode com parâmetro:
-b: instala o código de inicialização do bootcode no schema de particionamento.
-p: escreve o código de bootstrap do arquivo de partcode na partição do boot.
-i indica o índice da partição que deseja instalar o bootcode. Ex: no device ada0p3, o indice é 3. ↩︎