quinta-feira, 26 de junho de 2008

RESSALVAS... Sincronizando o Código Fonte do Sistema com o do Projeto sobre CVSUP.

Bom antes de começar as dicas sobre compilação do kernel do sistema em si,
seria bom já manter um vicio sobre a administração do sistema que é atualização do Codigo fonte.

Diferente de muitos sistemas em que para se ter que ter um sistema "livres" de bugs o maximo que se pode fazer é instalar uns updates que na maioria do caso corrige um problema e surge outro, com os sistema Open Sources uma atualização se tem como principal forma a reconstrução total ou parcial do sistema, sendo assim não degradando com a performace do sistema a longo prazo.
Bom diferente do Linux que o que se pode fazer é reinstalar o kernel e aplicar paths ou gastar horas a fio para reconstruir uma unica biblioteca do sistema com uma falha grave de seguraça, nos sistemas BSD em geral te oferece não só atualizar o Kernel como no linux mais sim todo o sistema, bom essa diferença se dá pela seguinte observação

{{ LINUX É SÓ UM KERNEL, SISTEMAS BSDs SÃO SISTEMAS OPERACIONAIS COMPLETOS }}

Mesmo o Linux possuindo creio eu a maior parte dos desenvolvedores open sources eles não consegue a qualidade de codigo nem a praticidade dos sistemas BSDs consegue com seu poucos mais dedicados e talentosos desenvolvedores, o susporte que os BSDs oferecem sobre linux é quase que esmagadora, quase todas as partes do sistema tem não uma pessoa mais um grupo de usuários destinados a orientar e resolver determinados problemas.
Bom mais saindo da filosofia, e falar de algo no momento mais interessante.

Por que atualizar o Codigo Fonte de sistema ?

Bom tem varios motivos os principais sobre meus olhos de Administrador de Sistemas "picareta"* entre os beneficios temos por prioridadde:

1= > Segurança, atualizando o codigo fonte apos o termino da compilação você terá um sistema corrigido e sem bugs, sendo esses os descobertos entre o periodo que você instalou o sistema até o momento a sincronização dos seus fontes com os disponibilizados pelo projeto.

2=> Estabilidade => Algumas atualizações são destinadas a partes do sistema que depois de liberadas se mostraram instaveis ou não testadas o suficiente, mesmo sendo raro, já que, BSDs no geral até ter uma RELEASE disponibilizada é subemetidas em laboratórios a testes que muitos sistema com raras, mais raras excessos mesmo outros sistemas suportaria, alguns até com trademark Unix no rotulo, não estou tirando aqui a qualidade desses sistemas mais é que em se tratando de BSDs, ele são estaveis muito antes de chegarem ao nivel de CURRENT na engenharia de releases. Tipo pode ter certeza BSDs no geral suporta acredito eu que entre 50% a 65% claro não são dados reais mais dentro de minha concepção e da quantidade de maquinas que já escaniei servidores para os mais diferentes ramos na internet e intranet rodam BSDs,

3=> Performace, muitas correções tem muito pouco haver em si com a segurança, pois o sistema em si já é consideravelmente bem projetado tendo poucas vunerabilidades, a maioria das atualização se refere a um driver ou outro ou rescrita de parte de um codigo que ficou lento, tais atualização saem para melhorar a performace do sistema. De vez enquando vejo pessoas dizendo que BSD é lento mais sinceramente não sei se falam que ele é lento ou se é por que tem digamos que preguiça de melhorar o desempenho... :D, quando puder darei umas dicas de tunning aqui.

4 = > Adcionamento de recursos , alguns recursos são tido estaveis apos o lançamento da RELEASE e então são liberado sobre a arvore para que já se passa a usufruir de tais recursos sem ter que esperar a proxima RELEASE a ser liberada, e olha como demora sair uma RELEASE. :D

Bom considerações aparte mãos a obra :D....

O CVSUP


O Cvsup é um utilitario disponivel no sistema para auxiliar o administrador na tarefa de sincronização das fonte do sistema com a do projeto, alem dele temos o CTM e o csup, o CTM é usado muito quando o link de conecção com a internet é muito restrito no quesito tempo, e o csup é o substituto do cvsup até onde sei.. o CTM quando puder coloco uma explicação aqui para a sua utilização quanto ao csup assim que usa-lo...

Bom primeiro um guia rapido depois destino um post para a especificação completa do cvsup.

Primeiro verifique se tem ele instalado no sistema caso contrário instalei atravez dos port. o seu diretório de compilação no ports é:
/usr/ports/net/cvsup-without-gui
ou
/usr/ports/net/cvsup
No caso o primeiro não compila e instala a parte destinada ao X11 pois o cvsup em si é um aplicativo para uso junto com o servidor X, o segundo já compila com a gui dele.
Pode usar tambem o "add_pkg" para isso basta:

add_pkg -r cvsup-without-gui ou
add_pkg -r cvsup
Se tiver o CD de instalação ele está no CD1 do FreeBSD no caso o mesmo que se encontra as distribuições base para o sistema funcionar.

Bom seguindo ...
no diretório /usr/share/examples/cvsup temos alguns exemplos, o conteudo do mesmo é:

soldier# cd /usr/share/examples/cvsup/
soldier# ls -l
total 36
-r--r--r-- 1 root wheel 1180 24 Jun 14:57 README
-r--r--r-- 1 root wheel 5225 24 Jun 14:57 cvs-supfile
-r--r--r-- 1 root wheel 2636 24 Jun 14:57 doc-supfile
-r--r--r-- 1 root wheel 2290 24 Jun 14:57 gnats-supfile
-r--r--r-- 1 root wheel 3814 24 Jun 14:57 ports-supfile
-r--r--r-- 1 root wheel 367 24 Jun 14:57 refuse
-r--r--r-- 1 root wheel 1949 24 Jun 14:57 refuse.README
-r--r--r-- 1 root wheel 3889 24 Jun 14:57 stable-supfile
-r--r--r-- 1 root wheel 3053 24 Jun 14:57 standard-supfile
-r--r--r-- 1 root wheel 2361 24 Jun 14:57 www-supfile

no caso vamos apenas fazer de momento referencia ao arquivo standart-supfile
copie-o para o /etc e adciona permição de escrita nele, basta para isso seguir o seguinte comando.

soldier# cd /usr/share/examples/cvsup/standart-supfile /etc & chmod u+w /etc/standart-supfile

Bom apos isso com um editor qualquer tipo o ee ou vi abra esse arquivo e vamos ao conteudo do mesmo.

soldier# ee /etc/standart-supfile
# $FreeBSD: src/share/examples/cvsup/standard-supfile,v 1.23.4.4.2.1 2007/11/25 06:32:51 kensmith Exp $
#
# This file contains all of the "CVSup collections" that make up the
# FreeBSD 6.x-STABLE source tree.
#
# CVSup (CVS Update Protocol) allows you to download the latest CVS
# tree (or any branch of development therefrom) to your system easily
# and efficiently (far more so than with sup, which CVSup is aimed
# at replacing). If you're running CVSup interactively, and are
# currently using an X display server, you should run CVSup as follows
# to keep your CVS tree up-to-date:
#
# cvsup standard-supfile
#
# If not running X, or invoking cvsup from a non-interactive script, then
# run it as follows:
#
# cvsup -g -L 2 standard-supfile
#
# You may wish to change some of the settings in this file to better
# suit your system:
#
# host=CHANGE_THIS.FreeBSD.org
# This specifies the server host which will supply the
# file updates. You must change it to one of the CVSup
# mirror sites listed in the FreeBSD Handbook at
# http://www.freebsd.org/doc/handbook/mirrors.html.
# You can override this setting on the command line
# with cvsup's "-h host" option.
#
# base=/var/db
# This specifies the root where CVSup will store information
# about the collections you have transferred to your system.
# A setting of "/var/db" will generate this information in
# /var/db/sup. You can override the "base" setting on the
# command line with cvsup's "-b base" option. This directory
# must exist in order to run CVSup.
#
# prefix=/usr
# This specifies where to place the requested files. A
# setting of "/usr" will place all of the files requested
# in "/usr/src" (e.g., "/usr/src/bin", "/usr/src/lib").
# The prefix directory must exist in order to run CVSup.

# Defaults that apply to all the collections
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=cvsup12.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_6_3
*default delete use-rel-suffix

# If you seem to be limited by CPU rather than network or disk bandwidth, try
# commenting out the following line. (Normally, today's CPUs are fast enough
# that you want to run compression.)
*default compress

## Main Source Tree.
#
# The easiest way to get the main source tree is to use the "src-all"
# mega-collection. It includes all of the individual "src-*" collections.
#src-all

# These are the individual collections that make up "src-all". If you
# use these, be sure to comment out "src-all" above.
src-base
src-bin
src-cddl
src-contrib
src-etc
#src-games
src-gnu
src-include
#src-kerberos5
#src-kerberosIV
src-lib
src-libexec
src-release
src-rescue
src-sbin
src-share
src-sys
src-tools
src-usrbin
src-usrsbin
# These are the individual collections that make up FreeBSD's crypto
# collection. They are no longer export-restricted and are a part of
# src-all
src-crypto
src-eBones
src-secure
src-sys-crypto

###END-SUPFILE ###

Bom no caso o meu já se encontra modificado:
apenas o que temos de momento nos atentar é sobre as alterações das seguintes linhas :

*default host=cvsup12.FreeBSD.org

NO caso essa linha estará sem a parte "cvsup12" apenas coloca nesse trecho da linha o servidor cvsup do projeto que você irá se conectar para sincronizar as fontes. para mais informações por favor verifique a seguinte url contendo todos os servidores disponiveis ao redor do mundo.

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html#CVSUP-MIRRORS

Bom, apos isso a proxima linha a verificar é a seguinte:

*default release=cvs tag=RELENG_6_3

Verifique se a ultima entrada "RELENG_6_3" no caso estou sincronizando junto a release 6.3 que no caso é a atual do meus sistema, faça a modificação correta para o seu sistema, embora normalmente vai estar já corretamente configurado.

apos isso temos a linha

src-all e mais a baixo outras entradas parecidas, bom eu comento a linha src-all e descomento apenas as partes do sistema que me é interessante tipo games mesmo eu não uso então não preciso atualizar ela as linhas referentes a kerberos mesmo só atualizo quando o sistema vai servir de base para tais aplicações caso contrario tambem não atulizo tal parte assim economiso tempo, banda e dinheiro.

bom apos isso salva o arquivo e vamos atualizar os fontes do sistema.
como root rode o seguinte comando:
soldier#cvsup -g -L 2 /etc/standart-supfile
no caso o parametro "-g" é para rodar o cvsup em modo CLI e o parametro "-L 2" fala quanto ao nivel de debbuger no caso variando de 0-2..
bom se tudo ocorrer bem terá linhas parecidas com essas plotando no seu terminal:

soldier# cvsup -g -L 2 /etc/standard-supfile
Parsing supfile "/etc/standard-supfile"
Connecting to cvsup12.FreeBSD.org
Connected to cvsup12.FreeBSD.org
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection src-all/cvs

bom quando aparecer uma mensagem colocando que a atualização foi realizada com sucesso terá acabado a atualização e você terá o prompt devolvido para uso.

Bom, agora poderemos voltar a compilação do kernel...

Mais isso ficará para outras postagens...

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.

Motivos....

Bom, de principio, creio que seria mais didático colocar que esse blog será mais para divulgação e apresentação de novidades e informações sobre Sistemas baseados na licensa BSDs, não irei me fechar apenas em BSDs, terá sim, algumas paleadinhas em programação, Fisica Quântica, Psicologia humana, bom enfim pretende abordar parte de tudo que gosto.. menos porno porque não é permitido.

Para começar, creio que uma apresentação dos Sistemas BSDs seria interessante.

O que significa B.S.D ?
R: A sigla é usada em todo sistema que teve seu desenvolvimento dentro do Campus da Universidade americana Berkeley, e seu significado é Sistema Distribuido por Berkeley, no caso BSD é a licença que se aplica para tais sistemas.

Quais são os Principais Sistemas distribuidos sobre a Licença de Berkeley "BSD" ?

Atual como sistemas padrões de proposito "geral" temos os seguintes:

FreeBSD: O mais indicado para quem quer começar no mundo Unix/BSD.
OpenBSD: O mais seguro sistema operacional já desenvolvido pelo homem.
NetBSD: O sistema operacional que suporta o maior numero de arquiteturas já desenvolvido.
DarwinBSD: Até a versão 9.10 do MacOS X da Apple Inc. era baseado nele, o unico BSD que não leva a licença BSD no codigo e sim a licença da Apple Inc.
DragonFlyBSD: O Mais novo membro da familia BSD, tendo sua origem ramificado do Projeto OpenBSD.

Por quê usar um Sistema Unix/BSD ?

Bom, poderia colocar todas as vantagens aqui mais o que para mim pode ser vantagem para você pode não ser. Mas apenas generalizado. Por que Amo Unix e não gosto de ter que reiniciar minha maquina depois de uma semana de Up Time, adoro CLI, adoro decidir o que ter e o que não ter o que preciso e o que não preciso, por que gosto de ser livre, por que gosto de virus para estuda-los não para ser usado por eles, enfim por que para mim não tem desvantagens neles.