Configurando o SDK para Android, no Linux com Netbeans.

Mais um ambiente para desenvolvimento, desenvolver para android é uma das melhores plataforma mobile para se desenvolver. 

O primeiro passo é baixar o SDK mais recente no site do android, e extrai-lo em uma pasta de fácil acesso. Para torna-lo disponivel como plataforma no netbeans é preciso criar alguns links simbólicos, na pasta do SDK, execute:

# ln -s platforms/android-1.5/android.jar android.jar 
# cd tools 
# ln -s ../platforms/android-1.5/tools/aapt aapt 
# ln -s ../platforms/android-1.5/tools/aidl aidl 
# ln -s ../platforms/android-1.5/tools/dexdump dexdump 
# ln -s ../platforms/android-1.5/tools/dx dx 
# cd lib 
# ln -s ../../platforms/android-1.5/tools/lib/dx.jar dx.jar

Depois basta instalar o plugin do netbeans, através do menu de preferências de plugins adcione o endereço do NBAndroid :

http://kenai.com/downloads/nbandroid/updates.xml . 

Agora em plugins disponiveis, procure por “android” e instale o pequeno plugin.

Em seguida temos que adcionar a plataforma do android, em Ferramentas >> Pataforma Java >> Adcionar Plataforma escolha a opção “Google Android Handheld Plataform” e aponte para o diretório do SDK, finalize a configuração.

Agora é só diversão :) 

O upgrade do etch quebrou meu X… denovo!

Esses dias fiz o "aptitude upgrade" no meu Debian Etch, que roda no notebook principal(no Mobile fica o Lenny, que esta precisando de um upgrade também), esse etch inclusive esta na hora de trocar já, devia estar usando o Lenny…,

Enfim, fiz o upgrade, já atrasado alguns dias(preciso lembrar de faze-lo mais frequentemente), e continuei usando normalmente, já que não preciso reboot para aplicar atualizações, e como é um sistema descente não preciso rebootar por vários dias o sistema ficou estável tranquilo.

Mas eis que resolvo dar um descanso para o note e quando volto… ele não volta! Ah não, não acredito! Pensei até em reinstalar logo o SO, mas isso não é coisa de geek. Um boot, olhar atento, e vejo que ele chega até carregar o KDM, depois "black screen of death", ou seja, nada mais funciona.

Bah, já vi isso antes, quebrou o delicado relacionamento entre o driver da ati(fglrx) e o Xorg… novamente! Da primeira vez fiz o downgrade do pacote xserver_xorg_core e esperei a atualização de correção, que não tardou.

Beleza, boot denovo, "single user/safe mode" e estou num terminal como root, vou conectar a internet, para pegar o pacote, e percebo: "PQP, a internet tá uma merda!". Ai complica muito, ela conecta um pouco, e cai, fica mais um pouco… Olho o diretório de cache, pff apenas o atual, e agora? Ainda tentei buscar o pacote, mas não sabia versão, rodei um pouco pelo lynx, mas a internet ruim dava nos nervos. Bom, para tudo da-se um jeito.

Vim /etc/X11/Xorg.conf , e mando usar o driver "ati" ao invés do "fglrx", seria bom também para confirmar, já que não havia erros nos logs(/var/log/Xorg*). Ctrl+d, deixo ele terminar o bomot e pimba! Lá esta o KDE. Sabe, o lynx é legal, mas abas fazem falta. Bom sem internet não poderia buscar o pacote e também estava cansado…

No dia seguinte, revigorado, a internet esta mais suportável, é hora de voltar a saga. Uma rápida navegada e lembro que poderia também reinstalar o driver do "fglrx", vi um relato que confirmou isso. Beleza pego o driver da ati(o antigo, já que a net estava sofrível) e começo a refazer o build.

Alguns 'dpkg' e 'm-a a-i' depos, volto o Xorg.conf ao normal, boot e pronto! Back on track! Bah, e pensar que quase adotei solução "windows" de reinstalar…

Nokia 5310 e o Linux

Como disse, adquiri um celular novo. Demorei um pouco para descobrir, mas é muito simples configurar o Nokia 5310 no Linux.Aqui faço apenas a conexão pelo cabo USB, para conexão por bluetooth procure por ai, ou espere eu tentar ;)

Acessando o Celular Nokia 5310 do Linux 

O primeiro passo é desativar dois módulos que "quebravam" ao conectar o celular de modo diferente do armazenamento de dados. Remova os seguintes módulos:

# modprobe -r cdc_ehter
# modprobe -r rndis_host

Agora adcione-os ao arquivo /etc/modprobe.d/blacklist , assim: 

blacklist cdc_ether
blacklist rn
dis_host

Dessa forma eles não serão mais recarregados. E agora plugue o cabo usb do celular no computador e use o comando lsusb para saber o id dele, no meu caso retornou o seguinte:

Bus 001 Device 028: ID 0421:006b Nokia Mobile Phones

O "0421" é o "vendor", no caso nokia, e o "006b" é o produto. Levante então o módulo usbserial assim, substituindo onde necessário os numeros:

# modprobe usbserial vendor=0x0421 product=0x006b 

Agora configure o celular para perguntar qual tipo de conexão fazer pelo cabo usb toda a vez. As opções são:

  • Nokia PC Suite : Que vai dar acesso a agenda, calendario e ao modem
  • Impressão e Mídia : Vai atuar como pendrive para as mídias
  • Cartão de Memória : Vai dar acesso direto ao cartão de memória

Ou seja, bem óbvio o que escolher.Uma boa forma de acompanhar se tudo esta certo, e aonde o modem foi reconhecido é usando o comando "tail -f /var/log/messages".

Para acessar os contatos e usar o modem, escolha o Nokia PC Suite. Existem alguns programas compativeis para acessar os dados do celular, como o wammu e kmobiletools (que eu uso). Basta configura-los para acessar o celular, geralmente em /dev/ttyUSB0 (ou outro se este estiver em uso) ou /dev/ttyACM0 (caso o módulo cdc_acm).

Para usar o modem, acesse como Nokia PC Suite e configure o discador para usar o celular como modem, configure provedor e senha conforme indicado pelo prestador, no caso da vivo o usuario é o numero do telefone com ddd, como em 2199999999@vivozap.com.br e a senha vivo, e o número é *99# , diferente do #777 que uso no modem da vivo. Basta discar e ser feliz(se tiver 3G…) ;)

Primeiro de Abril atrasado?

Estamos mesmo em Julho, quase agosto, certo?

Hoje lendo meus feeds, cada noticia que abria era uma nova boa supresa… what the hell, april's 1st?

Para começar, grande revolução no driver da ati, com certeza um grande passo. A ati vem evoluindo bem seus drivers para linux, o que é ótimo, já que eu tenho um notebook (meu acer 5050 ), com ati xpress 1200 .

Proximo na lista, atheros esta mais próxima do linux . O suporte já é bom, apesar de "obscuro", agora prometo grande melhoria. Afinal, o meu acer 5050 também usa atheros para placa wireless.

Mais, mais… agora é a vez da VIA , do meu querido Positivo Mobo , que liberou documentação de varios dipositivos para ajudar no desenvolvimento Open source. Ótimo, melhores drivers virão deste lado também! 

E tem mais, mais Dell com Ubuntu! A empresa já havia começado um suporte ao linux em outras linhas(vostro pelo que lembro), mas quanto mais melhor. A escolha do Ubuntu é muito boa também. A HP também vai vir com linux no mini-notebook, o SuSe.

Looking GOOD!! O futuro(e o presente) parece sorrir ao linux.

Finalmente: Instalando o Linux no Positivo Mobo

Após duas semanas com o Positivo Mobo, finalmente comecei a instalar o Linux nele. O fato dele ser parente do espanhol(?) Airis Kira ajudou no processo. Aqui descrevo como deixa-lo funcionando com o suficiente para o dia-a-dia.

Ao terminar de escrever o artigo ainda vou refazer a instalação do sistema, para garantir que esteja correto.

A distribuição escolhida foi o Debian Lenny, por que eu gosto mais desta e para ter versões recentes dos pacotes, e o configurado foi:

  • ACPI para monitorar bateria

  • Resolução de Vídeo

  • Ambiente gráfico mínimo

  • Placa de rede Wireless

  • A webcam funcionou de bônus

  • Som

E o que eu não configurei/testei:

  • Hibernar e suspender

  • Modem 56k

  • Saída VGA

  • Leitor de cartões

     

Aviso, o método que usei não é recomendado para quem tem medo do terminal ;)

Como instalar o Debian GNU/Linux no Positivo Mobo, primeira prévia.

Primeiro, botando o instalador debian para boot através de pendrive, atráves desta referência e esta aqui :

É preciso obter dois arquivos, uma imagem de boot e uma imagem de netinst. Também precisa de ter instalado o syslinux , apt-get install syslinux.

Plugue o pendrive e veja aonde ele foi reconhecido , o comando fdisk -l pode ajuda-lo, assumindo aqui que foi em /dev/sdb1, faça o backup de tudo que tiver nele. Como root, e com o pendrive ainda desmontado, execute:

# zcat bootimage.gz > /dev/sdb
# mkdir pendrive
# mount /dev/sdb pendrive
# cp netinst*.iso pendrive
# umount pendrive
# syslinux -s /dev/sdb

Repare que é sempre sem o numero, é sdb ou sda. Plugue o pendrive no mobo, e de a partida. Proceda com a instalação padrão, repare que será apenas instalado o sistema base. Caso perguntado sobre o modo de vídeo, escolha 6. Caso não instale o grub, insista no grub, se ainda assim não funcionar, instale o lilo. A instalação vai proceder normalmente. Faça o reboot e logue como root.

Agora você esta num terminal, como root, em um sistema limpo e precisa instalar os programas necessário, ai entra uma dificuldade. Se você tiver acesso a rede via dhcp, bastara plugar o cabo e estará na rede. Caso seja preciso configurar algo, abra o google em um outro pc e configure, as ferramentas de rede são instaladas por padrão.

Caso tenha, como eu, um modem usb ou uma internet que precise discar(pppoe, pois o modem 56k não esta configurado) via rede pode-se obter o .deb do pppconfig ou pppoeconfig no packages.debian.org (lembrando de obter o pacote lenny) e configurar a internet.

Caso queira usar uma iso para buscar os pacotes, copie a iso para um pendrive, plugue o pendrive(ele será reconhecido ou em sda1 ou sdb1) e proceda da seguinte forma:

# ln -s /cdrom /media/cdrom
# mkdir /media/sda1
# mount /dev/sda1 /media/sda1
# mount /dev/sda1/debian*.iso /media/cdrom
# apt-cdrom -d /cdrom -m add

Agora a iso montada em /cdrom a partir da imagem no pendrive (debian*.iso) esta no sources.list. Caso tenha internet acrescente os repositórios padrões no /etc/apt/sources.list. O editor é o vi, resumindo o uso: INSERT entre em edição, ESC volta ao normal, :q<enter> sai, :w<enter> salva.

deb ftp://ftp.br.debian.org/debian testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free

Agora atualize a base de pacotes com:

# aptitude update
# aptitude safe-upgrade
# aptitude install tar bzip2 unzip unrar

Agora deves configurar o /etc/fstab para montar os dispositivos usb, acrescentes as seguintes linhas:

/dev/sda1 /media/sda1 auto rw,auto,user,defaults 0 0
/dev/sdb1 /media/sdb1 auto rw,auto,user,defaults 0 0

E em seguida execute os comandos:

# mkdir /media/sda1
# mkdir /media/sdb1

Legal, sistema base instalado e configurado, agora é instalar um ambiente gráfico mínimo.

Na realidade, basta fazer um aptitude install gnome-desktop-enviroment, mas vai ocupar cerca de 1.5GB dos poucos 2GB, por isso escolhi instalar o fluxbox. Vamos lá:

# aptitude install xserver-xorg-video-via xserver-xorg-core xserver-xorg fluxbox xdm
# startx

Se tudo deu certo você estará no fluxbox como root. Agora eis como configurar o fluxbox, deixando-o de uma forma um pouco mais agradável. Vamos instalar um monitor de sistema, principalmente para monitorar a bateria, instalar também um gerenciador de arquivos e configurar o tema e o menu. Instale os seguintes pacotes:

# aptitude install pcmanfm conky gnome-themes gnome-themes-extras fluxconf scite

O pcmanfm é um gerenciador de arquivos leve, o conky é o monitor de recursos e os themes são temas gtk. Fluxconf é um utilitário gráfico para configurar o fluxbox e o scite é um editor de texto(e muito mais coisas) leve. Para editar o menu do fluxbox, use o utilitário fluxmenu.

Para começar pode usar meus arquivos base de tema para o fluxbox. Baixe o BlueFlux alterado e estes arquivos. Seguem os passos para usa-los, como usuário normal:

$ tar -jxvf BlueFlux.tar.bz2
$ tar -jxvf config_files.tar.bz2
$ mv init .fluxbox/init
$ mv conkyrc .conkyrc
$ mv startup .fluxbox/startup

E como root

# mv BlueFlux/ /usr/share/fluxbox/styles

Caso neste ponto podes também instalar um navegador. Eu uso o Opera, pegue o pacote para debian, sua dependência é a libqt3-mt. Ou então o firefox, que pode ser instalado via aptitude install firefox ou download e desempacotando (tar -jxvf firefox*).

Você pode então reiniciar o fluxbox usando ctrl+alt+backspace. Agora começamos a configurar os dispositivos. As seguintes fontes foram consultadas no processo:

http://www.pervasive-network.org/SPIP/Airis-Kira-300-merci-Generation
http://foro.airiskira.com/otras-distribuciones-de-linux-f3/
http://www.a110wiki.de/wiki/LCD

Primeiro atualizamos o kernel com:

# aptitude install linux-image-2.6.25-2-486

Depois faça o reboot para começar a usar o novo kernel ao construir os drivers necessários, pode também desinstalar o kernel antigo:

# aptitude remove linux-image-2.6.24-1-486

Configurando a resolução de tela, usando o driver binário: 

Faça o download deste arquivo, e execute os seguintes comandos, como root: 

# tar -jxvf VGA*.tar.bz2
# cd VGA*
# cp via_drv.so /usr/lib/xorg/modules/drivers
# cp libddmpeg.so /usr/lib

Em seguida pegue meu xorg.conf como base o substitua o do sistema:

# cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bkp
# cp mobo_xorg.conf /etc/X11/xorg.conf

Agora basta reiniciar o X. ctrl+alt+backspace, caso algo de errado, restaure o xorg antigo:

# cp /etc/X11/xorg.conf.bkp /etc/X11/xorg.conf

Instalando o wireless:

Instalar os pacotes necessários:

# aptitude install linux-headers-2.6.25-2-486 linux-source-2.6.25 wireless-tools wpasupplicant module-assistant ndiswrapper-common ndiswrapper-source ndiswrapper-utils-1.9

É bastante download, há ainda algumas dependências que ele vai resolver.

Construindo o ndiswrapper:

# m-a prepare
# m-a a-i ndiswrapper
# modprobe ndiswrapper

Agora baixe nesta pagina os drivers da placa RTL8187B(final da pagina) para windows da placa, Parece que o pacote não contém mais os drivers para Win98, então pegue do pacote antigo, e siga estes passos:

# unzip RT*
# cd RT*
# cd Win98
# ndiswrapper -i net8187b.inf
# ndiswrapper -m ; ndiswrapper -ma ; ndiswrapper -mi
# modprobe ndiswrapper

Depois disso, para ter funcionando o wireless é necessário reiniciar o notebook.

Após reiniciar você pode verificar sua rede wireless com os comandos iwconfig e iwlist wlan0 scan. Caso não esteja a vontade para configurar sua rede sem fio via terminal, você pode instalar o networkmanager (aptitude install networkmanager), mas como ele também é um tanto "bloated", eu recomendo o wicd. Para instalar o wicd, adcione as seguintes linhas no arquivo /etc/apt/sources.list:

deb http://apt.wicd.net debian extras

Em seguida:

# aptitude update
# aptitude install wicd

O lançador do wicd fica em /opt/wicd/tray.py, basta adcionao ao  menu do fluxbox com o flux menu ou configura-lo para iniciar automaticamete no arquivo ~/.fluxbox/startup assim como o conky.

Webcam:

Ainda com os kernel-headers, source e etc instalados instale também:

# aptitude install linux-uvc-source luvcview

Agora é facil:

# m-a a-i uvcvideo
# modprobe uvcvideo
# luvcview

Som:

Bem simples também:

# aptitude install alsa-base alsa-util
# alsaconf

Aproveite e desabilite o beep chato, adcione a seguinte linha ao arquivo /etc/inputrc:

set bell-style none

Acabou!

Ao menos por enquanto. Pacotes/programas que sugiro instalar ainda: 

pidgin – para mensageiro instantaneo
Skype – para quem precisa, vai reclamar de biblioteca: aptitude install libqt4-gui
Java e Flash –  Tem bastante tutorial pela internet
VLC – para videos
Audacious – para player de músicas

A minha principal dica é ficar sempre de olho no espaço em disco, afinal são apenas 2GB. Após instalar, limpe o cache do apt-get (aptitude clean) e desisntale algumas coisas como o linux-source, headers e etc para liberar espaço. Aqui mais umas dicas de otimização.

Acredito que as dicas aqui não diferem muito do necessário para outras distros como ubuntu, kurumin e etc 

Agora me resta reinstalar o sistema para confirmar que o tutorial esta ok.

Pequena história no Linux: aventura e erro no INIT

 

 

Abaixo historinha no mundo linux:

Fica a dica para quem tiver problemas para iniciar o Linux: chroot salva.

Ontem após desligar o computador, em ato de insônia resolvi liga-lo novamente. Qual minha surpresa ao perceber que ele parava durante parte processo de INIT.

Como minha instalação não é muito padrão, haviam muitas opções, e também como uso o texas flood (o que alias o processo de INIT não é feito mais pelo INT) eu não tinha muitas mensagens para identificar o erro. Nota, uso Debian Etch.

Apenas tudo parava após iniciar o Network-Manager, eu eu não chegava sequer a um login em terminal, muito menos a interface gráfica XDM. O único comando funcionou é o ctrl+alt+del para reiniciar. Reiniciei algumas vezes apenas para confirmar o problema.

Sem saber aonde era o erro coloquei o LiveCD do Ubuntu 7.10 que estava empoeirado aqui em casa, e após muita espera por uma interface gráfica lá estava ele disposto a me ajudar. Terminal, montei a partição em que fica o sistema base("/" ou root) do debian e fui fuçar sistema adentro.

Para poder realmente usar o sistema por dentro entrei com "chroot" no sistema. O chroot permite que você utilize um sistema a partir de uma pasta, com recursos obviamente limitados. Alterei a entrada no grub para tentar um failsafe e , como não gostaria de esperar garregar o ubuntu de novo, desinstalei o NetworkManager via "dpkg". Viva o chroot!

Reiniciei o computador, e então… nada! parava no mesmo lugar.

Eu não queria reinstalar o sistema, por mais que meus dados não seriam perdidos (partições separadas para /home e /opt(tralhas…) ), o linux permite ir mais afundo. <humor>Reinstalar a cada problema é coisa para windows…</humor>. E era madrugada, eu queria ir dormir e precisaria do PC 100% ao acordar.

Vamos partir para briga então, desta vez com o DamnSmallLinux, que carrega super rápido e tem muitas ferramentas, resolvi procurar melhor o problema. Na verdade o DSL-N, para ter suporte ao SATA. E como o DSL carrega rápido(muito!) a sequencia reiniciar/carregar/testar era indolor.

Primeira tentativa, vamos remover o texasflood e fuçar um pouco no init. Chrrot, Texasflood removido , /etc/inittab possui algumas configurações do seu INIT. Lá alterei para init 2 , de modo a carregar menos serviços. Fuçando o /etc/rc1.d (pasta em que estão os serviços que vão ao ser carregados ao init) removi alguns serviços que poderiam estar causando problemas.

Reiniciei e… cai na instalação do texasflood antigo! Aff, já tinha até esquecido disso. Mas algo de diferente aconteceu, como as versão tinham grande diferenças, a antiga ainda me permitiu um ctrl+c caindo em um login de um sistema limitado, mas uma série de erros que não me permitiam trabalhar.

DSL-N devolta e vamos lá, chroot.

Remover texasflood de novo, conferir inittab (devolta para 5) e dessa vez alterando rc5.d , removi quase tudo (remover neste caso não é literal, altere o nome com mv de S* para K*, S é para serviços que serão "start"). E testemos de novo.

Desta vez de fato houve mudanças, sem o texasflood o INIT voltou a lentamente carregar seus scripts e serviços, e assim pude ver onde era o erro. Na verdade não havia erro, durante a inicialização dos serviços o serviço de rede tentava o dhcpclient (que procura rede e receber ip com discovery) ficava lá procurando em todos os ips possíveis… detalhe, nem cabo de rede nem rede sem fio eu tinha ligado ou plugado. Ctrl+c pode para-lo o sistema continuou o boot normalmente(e lentamente) até o XDM.

Já no sistema carregado achei estranho pois a retirada dos serviços do rc5.d não fez diferença, foi ai que me toquei do rcS.d, que aonde esta tudo na verdade. Fui lá, retirei o que achei desnecessário(e algumas coisas a mais por diversão) e o sistema passou a carregar normalmente.

Reinstalei o texasflood, "tunei" mais um pouco o sistema de init e tudo voltou ao seu eixo.

Isso me fez perceber também quanta porcaria havia instalado no sistema, aproveitei para fuçar nos pacotes e serviços instalados o que poderia ser retirado e assim o fiz.

Antes disso ainda já havia trocado o gnome pelo fluxbox e o gdm pelo xdm. Performance bem melhor agora e o tempo até carregar o ambiente é quase nulo.

Fica ai o relato, caso alguém tenha uma história "emocionante" para contar, conte!

Monitorando recursos, com conky

Navegando pelo orkut(…) encontrei na comunidade do Damn Small Linux um tópico falando sobre o torsmo , o monitor de sistema (tipo o gkrellm ) que vem no DSL. 

Eu usei por um tempo os desklets do gdesklets, que são muito bonitos mas levam muito tempo para carregar e consomem bastante recursos. Já usei também o superkaramba, que é muito bom também mas não ficou redondo na época com o gnome. E por isso deixei de usar estes monitores de recursos.

Quando vi o tópico lembrei do torsmo, que é extremamente prático e leve e customizavel, e fui atrás do mesmo. Triste supresa ver que não é mais mantido! Pena, nem nos repositórios do debian está mais(apenas no sarge).

Porem surgio um fork deste para cobrir a falta e corrigir os bugs, o conky. Estou usando agora este conky que esta em ativo desenvolvimento. Continua leve, customizado e com bastante recursos.

Após instalar (apt-get install conky ou make install) para personliza-lo copie o arquivo /usr/share/doc/conky/examples/conkyrc.sample.gz  para sua pasta, extraia-o e renomei para .conkyrc :

cp /usr/share/doc/conky/examples/conkyrc.sample.gz  ~/

gunzip -d conkyrc.sample.gz

mv conkyrc.sample .conkyrc

E agora o edite para ficar como preferir. Eu pessoalmente não achei que ele roda muito redondo no gnome, comparado a fluxbox. Alguns detalhes sobre o arquivo de configuração:

update_interval 2.0 # tempo para update, o padrão é 5 , eu uso  2 ou 1.

own_window yes # para ele rodar em uma janela propria, vc vai querer isso no gnome/kde

own_window_type override # o modo de janela, troque até achar um que fique bom sem "lag"

own_window_transparent no # achei que ficou muito lento com yes

own_window_colour black # puts o padrão é PINK huahuahua

Na hora de configurar o output ele é bem simples trabalha com variaveis como no shell, você pode ainda usar a saida de algum comando com ${comando}. É tudo bem auto explicativo.

Para rodar o conky, basta chama-lo no terminal, eis algumas opções:

-d para rodar como daemon, liberando o terminal e rodando em background

-a define o alinhamento como bottom_left ou top_right etc

Na verdade tudo isso também esta disponivel no .conkyrc. Agora coloque-o para iniciar junto ao ambiente gráfico como daemon. No gnome basta abrir o painel de controle ( ou menu Desktop) ir em sessões, segunda aba e adionar "conky -d" a lista.

É isso. Eis minha tela atual.

Compilando um kernel do jeito debian

Hoje descrevo compilar o kernel de forma prática no debian, primeiro instale as ferramentas necessárias:

# apt-get install gcc g++ lbncurses-dev kernel-package

Agora faça o download da versão de kernel desejada de kernel.org , e mova-o para a pasta de sistema /usr/src .  Extra-o e crie um link para linux:

# cd /usr/src

# tar xjf linux-2.6.24.1.tar.bz2 

# ln -slinux-2.6.24.1 linux

Agora basta entrar em linux e fazer as alerações, aplicar patches… o que for necessário. Após rode o make para configurar:

# make menuconfig

Neste faça as alterações, com cuidados, e optimizações do sistema.  Agora o processo, sempre demorado, de compilação e criação dos pacotes:

# make-kpgk clean

# make-kpkg –initrd kernel_image kernel_headers

Após, basta instalar o kernel devido com:

# dpkg -i  linux-image-(versão do kernel).deb

# dpkg -i  linux-headers-(versão do kernel).deb 

 

 

Simples assim.

Como criar pacotes Debian

Agora descrevo como criar pacotes debian, os famosos .deb. Muito uteis para facilitar a instalação de seus programas e scripts, para compartilhar configurações  e distribuir seus pacotes de forma a ficarem integrados ao sistema.

Neste processo farei como exemplo a criação de um pacote para o Qfacul, minha interface gráfica para o qemu.

O Primeiro passo é criar uma pasta para tomar como base do pacote, no caso criarei a pasta "pacote" dentro do diretório de arquivos temporários "tmp":

# mkdir /tmp/pacote

# cd /tmp/pacote

Dentro desta pasta deve existir também uma outro pasta chamada DEBIAN (tuda em maiuscula), que guardará a configuração de seu pacote:

# mkdir DEBIAN

Dentro deste diretório deve ter três arquivos:

  • control : Responsável pela configuração do pacote
  • postinst : Script que será executado após a instalação do pacote, para, por exemplo, configurar o sistema com o pacote.
  • prerm : Script que será executado antes da remoção do pacote, por exemplo, para remover arquivos temporários.

Eis o exemplo do arquivo control do pacote Qfacil:

Package: qfacil
Priority: optional
Version: 0.4
Architecture: all
Maintainer: Diogo Souza da Silva <manifesto@manifesto.blog.br>
Depends: qemu , python-gtk2
Recommends: kqemu-common
Description: Interface gráfica para o uso do Qemu.

Onde:

  • Package : Descreve o nome do pacote
  • Priority : A prioridade
  • Version : A versão deste pacote
  • Architecture : A arquiterura de processador a qual se destina
  • Maintainer : O responsável pelo pacote
  • Depends : As depêndecias
  • Recommends : Recomendações
  • Description : Descrição geral.

O postinst e prerm são scripts comuns, podem ser escritos em qualquer linguagem, sendo mais comum em pearl e shell/bash.

Este pacote servirá para instalar o QFacil, e para isso colocara o programa em /usr/bin/qfacil , logo não é um caso onde o postinst é necessário, mas por exemplo, podemos fazer assim um postinst:

#!/bin/sh

chmod 755 /usr/bin/qfacil

Na verdade não seria necessário, mas fica só de exemplo. O prerm pode ser feito qualquer coisa também.

Para copiar o arquivo para o devido lugar devemos recriar a estrutura de pastas aonde o arquivo deverá ser criado tendo como raiz, base, o diretorio do pacote.

Neste caso o diretorio do pacote é /tmp/pacote e o diretorio em que quero o script é /usr/bin, com isso crio a pasta /tmp/pacote/usr/bin. 

# cd /tmp/pacote

# mkdir -p /usr/bin

Agora dentro de /tmp/pacote/usr/bin coloco o conteúdo que quero que seja copiado para esta pasta, no caso o programa qfacil. Agora geramanos o pacote:

# dpkg-deb -b /tmp/pacote /tmp

Isto irá criar o pacote na pasta tmp, no caso exemplo o arquivo gerado será "qfacil_0.4_all.deb". Basta distribuir seu pacote, espero que seja útil. 

Tutorial Instalando o JBOSS no Linux

Instalando o JBOSS No Linux. 

As versões usadas aqui foram escolhidas propositadamente mesmo havendo versão mais recente, que não funcionaram comigo. Em especial o jdk60 e o ejb3 no jboss tem uma serie de problemas com acesso remotos. Usemos a versão JDk50.

O processo consiste em, instalar o Jboss através do JEMS, instalar o patch para EJB3 e é isso ai!

Vou instala-lo na pasta /opt/jboss, o servidor deve ser iniciado como root. Com a pasta /opt/jboss devidamente criada, baixa-se o JEMS installer, versão 1.2.0.GA, eis o link:

http://labs.jboss.com/jemsinstaller/downloads/

Terminado, execute, como root :

# java -jar jems*.jar

Siga os passos na interface que vai surgir, escolha a pasta a ser instalada (no meu caso /opt/jboss) e escolha a opção ejb3 quando for perguntado, informe e se lembre de seu password e vai clicando next até chegar no done.

Abra um terminal e vai até a pasta que instalou seu jboss:

# cd /opt/jboss

# cd bin

# ./run.sh

Virá um monte de coisas, mas se você chegar até uma mensagem semelhante a seguinte, tudo esta ok!

16:55:31,091 INFO [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 1m:8s:606ms

Pressione ctrl+c para encerrar o Jboss e espere ele terminar. Vamos agora integrar o EJB3, baixe o JBoss EJB 3.0 Preview RC9 de:

http://labs.jboss.com/jbossejb3/downloads/

O desconpacte, e vamos a sequencia de copias, deletes e etcs, defina o $JBOSS_HOME para a pasta do jboss, com:

# JBOSS_HOME=/opt/jboss

# export $JBOSS_HOME

e depois:

rm $JBOSS_HOME/server/default/deploy/jbossws14.sar

rm $JBOSS_HOME/server/default/deploy/jboss-aop.deployer -Rf

rm $JBOSS_HOME/server/default/deploy/jboss-aop-jdk50.deployer -Rf

rm $JBOSS_HOME/server/default/deploy/ejb3.deployer -Rf

rm $JBOSS_HOME/client/jbossws14-client.jar
 

cp lib/jbossws-client.jar $JBOSS_HOME/client

cp lib/hibernate-client.jar $JBOSS_HOME/client

cp lib/jboss-ejb3-client.jar $JBOSS_HOME/client

cp lib/ejb3-persistence.jar $JBOSS_HOME/client

cp lib/ejb3-persistence.jar $JBOSS_HOME/server/default/lib

cp lib/hibernate-entitymanager.jar $JBOSS_HOME/server/default/lib

cp lib/hibernate-annotations.jar $JBOSS_HOME/server/default/lib

cp lib/hibernate3.jar $JBOSS_HOME/server/default/lib

cp lib/javassist.jar $JBOSS_HOME/server/default/lib

cp lib/quartz-all-1.5.2.jar $JBOSS_HOME/server/default/lib

cp lib/ejb3.deployer $JBOSS_HOME/server/default/deploy -Rf

cp lib/*.xml $JBOSS_HOME/server/default/deploy -Rf

cp lib/jbossws.sar $JBOSS_HOME/server/default/deploy -Rf

cp lib/jboss-aop-jdk50.deployer $JBOSS_HOME/server/default/deploy -Rf

cp lib/jms-ra.rar $JBOSS_HOME/server/default/deploy/jms

cp lib/quartz-ra.rar $JBOSS_HOME/server/default/deploy

Agora é um pouco mais complicado, precisa abrir alguns jars e modificar alguns arquivos dentro desses jars, eu fiz isso graficamente usando o file-roller, mas pode ser o ark ou outro, basta abrir cada pacote, ir a pasta de destino e arrastar o arquivo novo para substituir o antigo e depois fechar o pacote, muito cuidado ao reenpacotar “na mão”. Eis as alterações, as classes estão na pasta “classes”:

jar: $JBOSS_HOME/server/default/lib/jboss-j2ee.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/client/jboss-j2ee.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/client/jbossall-client.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/server/default/lib/jboss-j2ee.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/server/default/lib/jboss.jar

alteração: org/jboss/ejb/*.class

E também é necessário um arquivo extra, apenas para as aplicações clientes, deve obter os arquivos, jboss-aop-jdk50-client.jar e jboss-aspect-jdk50-client.jar , pelo download de um dos pacotes disponíveis no site do jboss.org :

http://labs.jboss.com/jbossaop/downloads/

E copie os arquivos citados para a pasta client no diretório do Jboss.

Pronto! Rode o jboss de novo para ver se tudo funciona, e se não funcionar, ai complica e começa tudo de novo. Foi “apenas” isso tudo que tive de fazer para funcionar.

O diretório para publicar as aplicações é em $JBOSS_HOME/server/default.

As aplicações clientes que forem acessar os serviços do jboss necessitam ter o seguintes arquivos em seu classpath, todos disponíveis na pasta $JBOSS_HOME/client :

jbossall-client.jar

jboss-ejb3-client.jar

jboss-aop-jdk50-client.jar

jboss-aspect-jdk50-client.jar

Dúvidas os comentários estão abertos.