Compilando o FreeBSD: Parte 1

Primeiro de tudo, sei que o conteúdo propriamente dito de como baixar e compilar os fontes do sistema operacional do FreeBSD é algo que tem aos montes na Internet. Entretanto acredito que reativar tópicos interessantes ou transformar eles em um registro no feeds das notícias pode animar alguém a fazer estes testes.

Um aspecto é que, o objetivo deste texto é servir como base para a segunda parte que é compilar o sistema da nova maneira seguindo a proposta no livro de desenvolvimento do FreeBSD.

Menos papo e vamos ao assunto. Um aspecto interessante a se notar é que o código do FreeBSD ele fica localizado em /usr/src, para os mais desavisados e desconhecidos de onde colocar os fontes.

Primeiramente, vamos obter o código do FreeBSD. Podemos baixar ele por um pacote txz ou pegar ele direto do controle de versão, com SVN ou git.

Pegar direto do txz tomando como base o FreeBSD 10.2:

fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.2-RELEASE/src.txz

tar -C / -xvzf src.txz

Uma segunda opção é sincronizar via SVN. Caso não tenha o svn você pode instalar ele via o sistema de pacotes pkg subversion ou compilando cd /usr/ports/devel/subversion && make install. Vamos ao comando para sincronizar com o SVN do FreeBSD (Nota: espero que tão logo vire GIT no core).

svn checkout https://svn0.us-west.FreeBSD.org/base/releng/10.2/ /usr/src

svn1

Pressione ‘P’ para aceitar e espere a mágica acontecer 😉 .. Muitos minutos depois vamos acessar a pasta dos fontes do kernel e compilar:

cd /usr/src
make buildworld KERNCONF=MYKERNEL
make installworld

O buildworld é um prefixo do Makefile de compilação do sistema operacional FreeBSD para construir o código, o único parâmetro exigido é a localização da sua configuração do kernel.
Senta e espera… 😉

Mas pera aí Marco, mas onde está a configuração..? Tá bom vamos descrever como ajustar as configurações. Aos mais desavisados, para lerem o texto antes de sair colando os códigos, joguei essa trap…

O arquivo fica em /usr/src/sys/amd64/conf, para arquitetura amd64. Para outras arquiteturas basta mudar a pasta amd64 para arm ou i386.

E como alterar? Claro que com o seu editor predileto.

cd /usr/src/sys/amd64/conf/
cp GENERIC MYKERNEL
cd ../../../ ( vai para cd /usr/src/ )
make buildworld KERNCONF=MYKERNEL && make installworld

Agora funcionou 😀 Senta e espera terminar de compilar .. 😮

O arquivo de configuração GENERIC ele é bem detalhado e a parametrização simples, lembrando o par chave e valor. Neste ponto, por exemplo, podemos alterar o nome da build do nosso kernel. Este é o nome que aparece quando rodamos o comando uname -a

ident BaconBSD

Podemos incluir dispositivos com o parâmetro device, ou no caso excluir comentando a linha no dispositivo que não precisamos:

device vmx # VMware VMXNET3 Ethernet

Basicamente comente este se você não usa vmware. Se você tiver dúvida sobre algum dispositivo o clássico manual te ajuda:

# man vmx

Se mesmo assim os comentários do arquivo de configuração do GENERIC não foram o suficiente você pode expandir e conhecer mais das opções de parâmetros de configuração no arquivo de notas: /usr/src/sys/amd64/conf/NOTES

# emacs /usr/src/sys/amd64/conf/NOTES

Algo muito interessante ao se compilar o sistema operacional FreeBSD é perceber que programas como o heimdal e o ssh são partes do pacote do sistema. O FreeBSD, diferentemente do Linux, não é apenas um kernel, é um sistema operacional inteiro, tendo programas como tar, xz e outros.

  • Lukas Silva

    blz