Gentoo - primeiros cumprimentos

Abril 11, 2007 at 8:48 pm | In linux, nerdices | 1 Comment

X

Estou me divertindo com o Gentoo há uma semana e o meu pensamento é: “Putz, não sei nada de linux”. O que no antigo Slack parecia tarefa rotineira, no Gentoo não sei nem por onde começar. Quando me deparei com os primeiros problemas com o Gentoo (coisas como falta de atenção na hora da instalação), não fazia a mínima idéia de como resolver.

Mais, a instalação é super-demorada. Estou há 5 dias brincando (cerca de 4 horas diárias de dedicação) e a instalação de programas ainda não acabou. Agora, tenho um ambiente X11 (7.1) com fluxbox rodando, o driver da nvidia instalado e fluxbox. O sistema é rápido, muito rápido. O Gentoo trabalha com código-fonte, isso significa que o sistema inteiro é compilado e otimizado para sua máquina. Lembra bem a propaganda do Itaú, é realmente “feito para você” (uma pena que eles não queiram otimizar o saldo da minha conta bancária).

Percebi que a questão de troubleshoot no Slackware é bastante complicada. A falta de padronização de certas coisas, adoção em massa de pacotes de terceiros e a reduzida comunidade internacional que se consolidou ao redor do Slack são os motivos que fazem com que alguns probleminhas no Slackware sejam praticamente impossíveis de sanar. Um exemplo é o synce (um programa pra fazer o Linux se comunicar com os Pocket PCs), que compilei perfeitamente no Slack, porém nunca funcionou.

Resolver algum problema, escrever algum arquivo de configuração nunca foi tão fácil. Sempre que precisei, achei as respostas em fóruns, mail-lists, wiki ou então no handbook via Google. A documentação é vasta e precisa, veja por exemplo como instalar e configurar o synce para sincronizar pocket pc com o Gentoo usando o Kontact.

É um sistema novo, com peculiaridades próprias e um sistema de gerenciamento de pacotes que nunca vi similar. Só lamento que, bem na semana em que o Patrick Volkerding liberou o xorg7 e o gcc4 oficial pro Slackware, eu tenha aderido ao Gentoo.

emerge bed && sleep a lot!

kde4 está chegando - figuras e idéias

Março 3, 2007 at 10:15 pm | In kde, linux, nerdices | 6 Comments

Recentemente foi lançado a 3a versão oficial de snapshot do KDE 3.80, a versão de testes da equipe do KDE para o que vai ser o kde4. Na época que compilei a versão 3.80.2, as diferenças pra versão 3.5.x eram mínimas. Agora, projetos como o plasma e decibel já estão em pleno desenvolvimento com direito até a lugar no snapshot oficial do kde4!

Quem sabe eu busque uma fonte de inspiração divina e compile este novo snapshot do KDE (ou ainda o SVN!). Uma vantagem do kde4 que eu já tinha observado no snapshot oficial 2, é que ele vai usar o novo Qt da versão 4.x e não a série 3.x que vem sendo usada atualmente. Uma consequência disso, é que as aplicações do KDE, como Amarok poderão funcionar em sistemas como o Windows e o Mac OS X. Ou seja, iTunes e WMP que se cuidem, pois o Amarok está chegando no pedaço e aí quero a lei de Darwin funcionar…

Voltando ao KDE4, o que mais tem me chamado atenção são os mockups que têm por aí, o projeto Oxygen e o novo K Menu, que pelo que dizem vai ser o menu do SuSE, o Kickoff. Pra se ter uma idéia, o principal desenvolvedor do conjunto baghira (screenshot de demonstração) abandonou o seu projeto e foi trabalhar para o oxygen. Veja um preview de como vão ser os ícones do kde4 aqui.

Com relação aos mockups, nem todos são screenshots verdadeiros (creio que mais de 90% não são). Mas ver o que pode nos esperar no futuro é excelente. Veja cada coisa magna que é idéia ou fato:

outro kicker legal

Kicker rox

KDE 3D. Será?

shot rox massa

Cada figura mais bonita que a outra. Ai se tudo isso fosse realmente incorporado ao KDE4… Agora, um vídeo do Konqueror Dolphin, um novo projeto para o kde4, ainda em processo de desenvolvimento. Veja que, como o screenshot sugere acima (o último), uma nova barra foi adicionada à esquerda com funções diversas e interessantes:

FLAGS para “compilação segura” com GCC 3.X

Janeiro 25, 2007 at 2:15 pm | In linux, nerdices, tecnologia | 10 Comments

 

Muita gente ouve falar sobre recompilar algum software otimizado para a sua CPU, mas não faz a mínima idéia do que se trata. Nesse artigo explicarei um pouco sobre como funciona a compilação usando” FLAGS” para otimizar o software.

Primeiro vamos aos pré-requisitos:

 

Ter o kernel otimizado para a arquitetura do seu processador e saber quais são as FLAGs a utilizar.

 

Para saber a versão de GCC, digite:

$ gcc –version

 

Para saber informação sobre o processador:

$ cat /proc/cpuinfo

Algumas informações sobre as FLAGs:

Quando vc usa, por exemplo a FLAG “-march=athlon-xp -O3 -pipe -fomit-frame-pointer”

Você está informando ao compilador que o seu processador é um athlon-XP (-march=athlon-xp), que vc está querendo otimização máxima (-03), e que o uso de frame pointer não é necessário (-fomit-frame-pointer)

-O1 otimização leve

-O2 otimização segura

-O3 otimização extrema

PS: muitos softwares são compilados com a opção -02 pois é uma otimização segura.

Para mais informações sobre as funções de otimização veja o site

http://docs.freebsd.org/info//gcc/gcc.info.Optimize_Options.html

Para maiores informações sobre outras opções recomendo a leitura do manual do GCC:

$ man gcc

Escolha as FLAGs para o seu processador segundo a lista abaixo:

 

i386 (Intel)

CHOST=”i386-pc-linux-gnu”
CFLAGS=”-march=i386 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=i386 -O3 -pipe -fomit-frame-pointer”

i486 (Intel)

CHOST=”i486-pc-linux-gnu”
CFLAGS=”-march=i486 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=i486 -O3 -pipe -fomit-frame-pointer”

Pentium 1 (Intel)

CHOST=”i586-pc-linux-gnu”
CFLAGS=”-march=pentium -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium -O3 -pipe -fomit-frame-pointer”

Pentium MMX (Intel)

CHOST=”i586-pc-linux-gnu”
CFLAGS=”-march=pentium-mmx -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium-mmx -O3 -pipe -fomit-frame-pointer”

Pentium PRO (Intel)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentiumpro -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentiumpro -O3 -pipe -fomit-frame-pointer”

Pentium II (Intel)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentium2 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium2 -O3 -pipe -fomit-frame-pointer”

Celeron (Mendocino), aka Celeron1 (Intel)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentium2 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium2 -O3 -pipe -fomit-frame-pointer”

Pentium III (Intel)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentium3 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium3 -O3 -pipe -fomit-frame-pointer”

Celeron (Coppermine) aka Celeron2 (Intel)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentium3 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium3 -O3 -pipe -fomit-frame-pointer”

Celeron (Willamette?) (Intel)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentium4 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium4 -O3 -pipe -fomit-frame-pointer”

Pentium 4 (Intel)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentium4 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium4 -O3 -pipe -fomit-frame-pointer”

Eden C3/Ezra (Via)

CHOST=”i586-pc-linux-gnu”
CFLAGS=”-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer”

nota: o ezra não tem instruções especiais, é basicamente parecido com o K6-3… (p2 com 3dnow)

K6 (AMD)

CHOST=”i586-pc-linux-gnu”
CFLAGS=”-march=k6 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=k6 -O3 -pipe -fomit-frame-pointer”

K6-2 (AMD)

CHOST=”i586-pc-linux-gnu”
CFLAGS=”-march=k6-2 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=k6-2 -O3 -pipe -fomit-frame-pointer”

K6-3 (AMD)

CHOST=”i586-pc-linux-gnu”
CFLAGS=”-march=k6-3 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=k6-3 -O3 -pipe -fomit-frame-pointer”

Athlon (AMD)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=athlon -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=athlon -O3 -pipe -fomit-frame-pointer”

Athlon-tbird, aka K7 (AMD)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=athlon-tbird -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=athlon-tbird -O3 -pipe -fomit-frame-pointer”

Athlon-tbird XP (AMD)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer”

Athlon 4 (AMD)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=athlon-4 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=athlon-4 -O3 -pipe -fomit-frame-pointer”

Athlon XP (AMD)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer”

Athlon MP (AMD)

CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=athlon-mp -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=athlon-mp -O3 -pipe -fomit-frame-pointer”

603 (PowerPC)

CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-O3 -pipe
CXXFLAGS=”-O3 -pipe

603e (PowerPC)

CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-O3 -pipe
CXXFLAGS=”-O3 -pipe

604 (PowerPC)

CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-O3 -pipe
CXXFLAGS=”-O3 -pipe

604e (PowerPC)

CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-O3 -pipe
CXXFLAGS=”-O3 -pipe

750 conhecidos por G3 (PowerPC)

CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-mcpu=750 -O3 -pipe -mpowerpc-gfxopt”
CXXFLAGS=”-mcpu=750 -O3 -pipe -mpowerpc-gfxopt”

Nota: não usar -march=

7400, conhecidos por G4 (PowerPC)

CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-mcpu=7400 -O2 -pipe -maltivec -mabi=altivec -mpowerpc-gfxopt”
CXXFLAGS=”-mcpu=7400 -O2 -pipe -maltivec -mabi=altivec -mpowerpc-gfxopt -maltivec -mabi=altivec -mpowerpc-gfxopt”

Nota: do not use -march= ; -O3 is unstable on G4

7450, conhecidos por G4 na segunda geração (PowerPC)

CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-mcpu=7450 -O2 -pipe -maltivec -mabi=altivec -mpowerpc-gfxopt”
CXXFLAGS=”-mcpu=7450 -O2 -pipe -maltivec -mabi=altivec -mpowerpc-gfxopt”

Nota: não usar -march= ; -O3 é instável nos G4

PowerPC (Se desconheces a arquitectura)
CHOST=”powerpc-unknown-linux-gnu”
CFLAGS=”-O3 -pipe -mpowerpc-gfxopt”
CXXFLAGS=”-O3 -pipe -mpowerpc-gfxopt”

Sparc

CHOST=”sparc-unknown-linux-gnu”
CFLAGS=”-O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-O3 -pipe -fomit-frame-pointer”

Sparc 64

CHOST=”sparc-unknown-linux-gnu”
CFLAGS=”-O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-O3 -pipe -fomit-frame-pointer”

FLAGS para “compilação optimizada” com GCC 3.X

Pentium III (Intel)

CFLAGS=”-march=pentium3 -O3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays”
CXXFLAGS=”${CFLAGS}”

nota: optimizações -mmmx e -msse estão implícitas a -march=pentium3

Athlon (AMD)

CFLAGS=”-march=athlon -O3 -pipe -fomit-frame-pointer -ffast-math -funroll-loops -fforce-addr -falign-functions=4″
CXXFLAGS=”${CFLAGS}”

nota: optimizações -m3dnow e -mmmx estão implícitas a -march=athlon

Athlon-tbird, aka K7 (AMD)

CFLAGS=”-march=athlon-tbird -O3 -pipe -fforce-addr -fomit-frame-pointer -funroll-loops -falign-functions=4 -maccumulate-outgoing-args”
CXXFLAGS=”${CFLAGS}”

nota: optimizações -m3dnow e -mmmx estão implicitas a -march=athlon-tbird

Athlon XP 2000+

Há quem tenha reportado que tem um sistema estável num Athlon XP 2000+ com:
CFLAGS=”-march=athlon-xp -m3dnow -msse -mfpmath=sse -mmmx -O3 -pipe -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4 -maccumulate-outgoing-args -ffast-math -fprefetch-loop-arrays”
CXXFLAGS=”${CFLAGS}”

 

 

Compilar um Software usando FLAGs é muito simples, basta escolher a FLAG e usá-la na compilação.

 

Baixe o source do software e descompacte-o:

 

Para source em tar.gz:

tar -xzvf source.tar.gz

 

Para source em tar.bz2:

tar -xjvf source.tar.bz2

 

Entre no diretório descompactado, leia os READMEs e rode o ./configure com a FLAG:

 

PS: eu tenho um processador AthlonXP 2600+

 

CHOST=”i686-pc-linux-gnu” \

CFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \

CXXFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \

./configure

 

 

depois rode o $ make && make install

 

Pronto! você tem o software compilado e instalado para o seu pc.

 

Caso utilize a distribuição Slackware Linux siga as instruções abaixo para compilar o software otimizado e empacotar o software em um TGZ.

Crie um arquivo config.list, contendo todas as opções de configuração do software:
$ ./configure –help > config.list
$ vi config.list

Escreva o seu arquivo de configuração seguindo o exemplo:

CHOST=”i686-pc-linux-gnu” \
CFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \
CXXFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \
./configure \
–prefix=/usr \
–exec-prefix=/usr \

Agora, execute a configuração do código-fonte:
$ sh config.list

Agora, é hora de compilar. Para isso execute o comando:
$ make


Crie um diretório temporário para armazenar os arquivos que serão usados para a criação do pacote do Slackware:

$ mkdir /tmp/chemonz-slackware

Agora, execute a instalação para o diretório temporário:
$ su root
# DESTDIR=/tmp/chemonz-slackware make install
# cd /tmp/chemonz-slackware

Criando o script de instalação

Feito isso, crie o diretório install, onde serão colocados os arquivos de instalação
do pacote:

# mkdir install

Agora, crie e edite o arquivo doinst.sh, dentro do diretório install, que conterá os procedimentos a serem executados após a instalação do pacote:
# vi install/doinst.sh (substitua “vi” pelo editor de sua preferência)

Insira o seguinte conteúdo:
/sbin/ldconfig

Salve o arquivo e feche-o. Esse script será executado após a instalação do pacote.

Agora, crie e edite o arquivo slack-desc, que conterá as informações sobre o pacote, exibidas no momento da instalação:
# vi install/slack-desc

Insira o seguinte conteúdo:

chemonz: [nome do software]
chemonz:
chemonz: [descrição do software]
chemonz:
chemonz: [site, email ou qualquer informação sobre o desenvolvedor do software]
chemonz:

Salve o arquivo e feche-o, e está feito.

Agora, basta criar o pacote com o comando makepkg. Cuidado com o nome do pacote. Ele deve ser formado da seguinte forma:

# makepkg -c n -l n [nome]-[versão]-[arquitetura]-[revisão].tgz

Pronto!!! Você acaba de criar um pacote para o Slackware de um software otimizado para o seu processador.

Agora basta instalar o pacote ou atualizá-lo:

#installpkg pacote.tgz

#upgradepkg –install-new pacote.tgz

Qualquer dúvida mande um email para chemonz@bestlinux.com.br

Abraços

« Página anteriorPróxima Página »

Blog no WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.