terça-feira, 24 de junho de 2008

Dicas simplificada para a compilação do kernel do FreeBSD v5.x/6.x/

Abordarei apenas essas duas séries do sistema pelo fato de não ter compilado o mesmo na sua serie atual 7.x

Essa postagem será uma de uma série um pouquinho longa....

A compilação do kernel "núcleo" do sistema só possivel em sistemas correlatos livre no qual se tem acesso ao codigo fonte do sistema, entre suas vantagens temos:

Estabilidade, pois somente o necessario para o seu hardware e aplicações realmente precisem para funcionar.
Velocidade, o kernel no qual integra um sistema de fabrica é de certa forma grande pelo fato dele ter que dar suporte nativo ao maior numero de hardware possivel para que sua instalação seja realizada, não tem como os desenvolvedores fazer uma versão para cada hardware especifico no qual o sistema irá rodar, na compilação do sistema será removido suporte a hardware que não se tem presente na maquina, suporte a protocolos de transporte, suporte a padrões no qual não se fará uso sendo assim deixará o núcleo consideravelmente compacto, salvo em alguns casos que acabada deixando o núcleo do sistema maior do que o de fabrica mais com susporte a bem mais funcionalidades nas quais são necessaria para determindas tarefas.
E no meu ponto de vista sendo ela o principal motivo "SEGURANÇA" :
Quando se compila um sistema pode anteriormente ter sincronizado a arcore do condigo fonte do seu sistema com a ultima versão disponivel nos servidores CVS do Projeto, irei em apos essas postagem colocar um simples guia sobre como fazer essa sincronização ou mais popularmente update do sistema, corrigindo assim bugs que surgiu no decorrer da imagem baixada até o momento da sincronização, esse bugs são tanto por parte de segurança tendo como alvo principal como tambem por parte de desempenho, suporte a novos tipos de hardware, suporte a novos protocolos enfim a lista é um pouquinho grande, depois mostrarei qual o arquivo consultar no sistema para saber o que foi atualizado.
Para se poder compilar o kernel primeiramente o que se necessita é ter pelo menos o GCC instalado no sistema alem do MAKE no caso o pacote DEVELOPED disponivel no cd de instalação, e alem é claro os fontes do sistema, no caso uma arvoré de diretórios sobre o "/usr/src/" .

VERIFICANDO A FERRAMENTAS DE DESENVOLVIMENTO NO SISTEMA.

no prompt de comando do sistema digite:
%gcc -v

vai ser apresentado como o seguinte exemplo:

soldier%gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.6 [FreeBSD] 20060305
soldier%

se tiver como retorno a seguinte expressão:

soldier%gcc -v
gcc: Command no found
soldier%

Significa que você não tem um ambiente DEVELOPED instalado no seu sistema, para instala-lo pasta seguir uns dos passos:

INSTALANDO A DISTRIBUIÇÃO DEVELOPED NO SISTEMA:

Com o CD 1 de instalação:
//como root:
soldier#sysinstall [enter]
///na tela do sysinstall e com o cd dentro do driver de cdrom.
Vai em:
{CUSTOM}
{DISTRIBUTIONS}
{DEVELOPED}
Marque a opção com "espaço"

Vai solicitar se deseja instalar a coleção de ports do sistema responde "NO" e depois:

{EXIT}
{MEDIA}
{1CD/DVD}
{COMMIT}

A distribuição DEVELOPED e suas depedências serão todas instaladas no sistema no caso se estiver com o CD1 de instalação.

Agora instalaremos os fontes do sistema:

INSTALAÇÃO DAS FONTES DO SISTEMA NO SISTEMA:

Para saber se tem as fontes do sistema instaladas execute o seguinte comando no terminal:

soldier# ls -l /usr/src
total 272
-rw-r--r-- 1 root wheel 6192 1 Jan 09:37 COPYRIGHT
-rw-r--r-- 1 root wheel 403 6 Fev 2006 LOCKS
-rw-r--r-- 1 root wheel 6683 9 Jul 2006 MAINTAINERS
-rw-r--r-- 1 root wheel 11161 28 Mar 2007 Makefile
-rw-r--r-- 1 root wheel 36318 25 Nov 2007 Makefile.inc1
-rw-r--r-- 1 root wheel 140746 20 Dez 2007 ObsoleteFiles.inc
-rw-r--r-- 1 root wheel 2816 4 Mar 2006 README
-rw-r--r-- 1 root wheel 22330 8 Mai 20:31 UPDATING
drwxr-xr-x 37 root wheel 1024 8 Mai 19:37 bin
drwxr-xr-x 55 root wheel 1024 8 Mai 19:36 contrib
drwxr-xr-x 5 root wheel 512 8 Mai 19:37 crypto
drwxr-xr-x 21 root wheel 2048 8 Mai 19:37 etc
drwxr-xr-x 13 root wheel 512 8 Mai 19:37 games
drwxr-xr-x 4 root wheel 512 8 Mai 19:37 gnu
drwxr-xr-x 6 root wheel 2048 8 Mai 19:37 include
drwxr-xr-x 9 root wheel 512 8 Mai 19:37 kerberos5
drwxr-xr-x 71 root wheel 1536 8 Mai 19:37 lib
drwxr-xr-x 33 root wheel 1024 8 Mai 19:37 libexec
drwxr-xr-x 13 root wheel 512 8 Mai 19:37 release
drwxr-xr-x 4 root wheel 512 8 Mai 19:37 rescue
drwxr-xr-x 94 root wheel 2048 8 Mai 19:37 sbin
drwxr-xr-x 6 root wheel 512 8 Mai 19:37 secure
drwxr-xr-x 25 root wheel 512 8 Mai 19:37 share
drwxr-xr-x 58 root wheel 1024 8 Mai 19:37 sys
drwxr-xr-x 12 root wheel 512 8 Mai 19:37 tools
drwxr-xr-x 224 root wheel 4096 8 Mai 19:37 usr.bin
drwxr-xr-x 193 root wheel 3584 8 Mai 19:37 usr.sbin
soldier#

No caso será retornado uma arvore de diretorios e arquivos, caso contratio não obter retorno é sinal que não possui as fontes instaladas. Para instalar as fontes segue os seguintes procedimentos:

soldier#sysinstall

{CONFIGURE}
{DISTRIBUTIONS}
{[ ] SRC}
{ALL}
{EXIT}
{EXIT}
{MEDIA}
{1- CD/DVD}
{OK}

No caso assim terá instalado todas as fontes do sistema.

DIRETÓRIOS DE TRABALHO NA COMPILAÇÃO DO KERNEL
ARQUITETURAS I386/X86-64

No caso essa postagem abordará apenas compilações para processadores de arquitetura CISC que são os mais comuns em computadores pessoais esse processadores são os seguintes, não listarei todos apenas alguns que lembro de mente no momento.

Intel 386, 386DX, 386SX no caso o suporte a 386 foi removido na RELEASE 5.x
Intel 486, 486DX, 486SX no caso o suporte a 486 foi removido na RELEASE 6.x
Intel Pentium, Pentium MMX, Pentium-PRO, Pentium II, Celeron, Pentium III, Pentium IV, Pentium D, Celeron D, Celeron M, Centrino, Centrino Duo, Core Duo, Core 2 Duo, Quad Core, Xeon, Xeon SMP, Xeon Serie 3000*¹, Xeon Serie 4000*¹, Xeon Serie 5000*¹
Amd 586, AMD Athlon, AMD Duron, AMD Athlon XP, AMD Sempron, AMD Athlon XP 64, AMD Athlon FX, AMD Athlon FX 64, ATHLON FX X2,
e correlatos alem dos AMD Opterons.
Obs:
A serie de processadores Xeon da Intel tem certos cuidados, pois algumas séries usando como nucleo outra arquitetura e não a x86-64, no caso eles são baseados no nucleo do Itanium2 que no caso sua arquitetura referente é a IA64 uma arquitetura 100% RISC. Caso possua um Xeon procure na documentação do seu hardware sobre qual tecnologia ele foi baseada, pode até ter instalado uma versão I386 mesmo ele sendo de arquitetura IA64 pois tal arquitetura oferece emulação para codigos de I386 mais não terá o desempenho que por sinal é muito superior quando executado com codigo sobre a arquitetura correta. no caso o FreeBSD oferece suporte para tal arquitetura, discutirei sobre ela quando possivel.

Bom no caso, voltando ao assunto:
Os diretorios de trabalho para no momento será o diretorio:
"/usr/src" => Diretorio contento fontes do sistema e documentação básica.
"/usr/src/UPDATING" => Arquivo contendo referências para possiveis atualizações.
"/usr/src/README" => Arquivo explicando demais arquivos e a tarefas empregadas na compilação do sistema.
"/usr/src/sys/i386/conf/" => Diretório contendo o arquivo de configuração do kernel para arquiteturas I386.
"/usr/scr/sys/amd64/conf/" => Diretório contendo o arquivo de configuração do kernel para arquiteturas x86-64 ou amd64.

No caso da arquitetura x86-64, aconselho baixar a versão do sistema para 64Bits pois até hoje já com varias tentativa não obtive sucesso na compilação do sistema sobre I386 para 64 bits, embora já li que é possivel, como não consegui então não aconselho a perder tempo tentando.

Bom. Deixarei por aqui no momento pois senão fica chato. assunto muito extença mais tambem muito lucrativo.

Um comentário:

fcatojo disse...

Opa , legal a dica, os kerneis da série 5x e 6x nem cheguei a compilar, só pra te contrariar compilei apenas o do FreeBSD 7 :D

Valeu o post paulo...