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
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 :D Senta e espera terminar de compilar .. :o
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.