Executando aplicações gráficas do servidor.

O SSH é sem dúvida uma das ferramentas mais populares e utilizadas por desenvolvedores, sysadmins e entusiastas de informática, seja para cópia de arquivos (SCP, SFTP), login remoto ou redirecionamento de tráfego TCP (tunnels).

No entanto, muita gente não sabe que existe a possibilidade de executar aplicações gráficas do servidor no próprio cliente de maneira fácil e sem nenhuma ferramenta ou configuração adicional dependendo do sistema operacional.

X11 Forwarding

O X11 Forwarding é essa capacidade de redirecionamento das informações do servidor X remoto para o cliente que está efetuando a conexão.

Diferente do redirecionamento TCP (tunnelling), quando uma conexão é estabelecida com este recurso habilitado, o servidor recebe também as informações do display do cliente, possibilitando a renderização das janelas localmente.

Cliente OSX ou Linux

Para habilitar o redirecionamento do X11 no Linux ou no OSX, basta executar o comando ssh com o parâmetro -X:

E em seguida quando a conexão estiver estabelecida, executar os programas desejados:

Note que embora a aplicação esteja rodando no cliente, os recursos como discos, impressoras e unidades de rede são os presentes no servidor.

Cliente Windows

Para fazer o redirecionamento do X11 no Windows é preciso ter o XWin instalado. No Cygwin, instale o pacote xorg-server que já possui todas as dependências necessárias.

Aguarde até que o programa de instalação termine de baixar e descompactar os pacotes; em seguida, abra uma janela do Cygwin e execute:

XWin.exe -multiwindow

Um ícone do XWin aparecerá no tray indicando que o cliente está rodando.

Agora é a hora de configurar o PuTTY. Nas opções laterais, navegue até Connection > SSH > X11. Clique em ‘Enable X11 forwarding’ e preencha a caixa ‘X display location’ com ‘localhost

Abra a conexão com o servidor remoto e execute a o programa desejado.

É isso!

Dúvidas, problemas, críticas e sugestões são muito bem-vindas! Não deixe de postar um comentário que responderei assim que puder.

Até a próxima!

Atualização!
[07/03/2010]
* Inclusão do arquivo HDAEnabler.kext no pacote de drivers

Um pouco de história

osxHá cerca de 6 anos quando trabalhava com editoração de imagens, tive a oportunidade de realizar parte dos meus serviços usando um Mac G4, que na época rodava o OSX Panther (10.3).

Ali eu percebi que comparado ao Windows XP com as mesmas ferramentas, havia alguma coisa diferente e melhor! O hardware era inferior ao Pentium 4 HT que era “top” na época, mas eu sentia que o processamento era mais rápido e a qualidade de imagem na tela era superior. Talvez essa percepção pudesse ser só empolgação da minha parte por estar usando uma coisa que era novidade.

Infelizmente meu contato durou pouco mais de um ano, já que eu havia conseguido um estágio na área de desenvolvimento e nesse novo local eu usaria apenas PCs com Linux. A separação teve um bom motivo e desde então meu trabalho ficou todo concentrado em Linux na grande maioria das vezes, e em alguns casos bem específicos, no Windows (isso mudou de novo há 5 meses, mas não vem ao caso).

De um certo tempo pra cá tem havido um movimento migratório de desenvolvedores trocando de plataforma sem se arrependerem e falando muito bem de suas experiências.

Eu queria poder testar e ver se um Mac seria tão bom pra mim hoje como foi há 6 anos atrás. Acontece que eu não estou disposto a pagar o preço que a Apple cobra por um iMac/MacBook. Acho injusto o valor que é cobrado hoje pelo hardware, mas não quero discutir isso agora. Talvez em um outro post.

Felizmente existem alguns loucos por aí que desenvolveram soluções que possibilitam a instalação do sistema operacional em hardware “não carimbado” pela Apple. Pesquisando na internet, vi pelos comentários de quem já as usou que essas soluções estão bem estáveis e decidi que havia chegado a hora de tentá-las.

Atenção

Não me responsabilizo por eventuais danos e/ou perda de informações. Siga o roteiro de instalação por sua conta e risco. As informações do roteiro a seguir foram escritas baseadas na minha instalação em um notebook Dell Inspiron 1525 com processador Core 2 Duo e chipset Mobile Intel GM965 Express. Caso você tenha um hardware diferente, sugiro que busque por um roteiro específico de sua configuração. Existe bastante material por aí detalhando os passos para diferentes tipos de máquinas e configurações. No final deste post há uma lista com links que podem ser úteis.

Instalação

A instalação é relativamente simples e não requer conhecimentos avançados de informática.

Estes são os passos para instalar o Snow Leopard como único sistema operacional. Fazer o multiboot não é impossível, mas a coisa é um pouco mais complicada e não irei cobrir este tópico agora.

Requisitos

Você irá precisar dos seguintes itens:

- DVD do Snow Leopard (consegui o meu aqui)
- Disco de boot (SL boot132)
- Os kexts (drivers) compatíveis e ferramentas

Passos

- Grave a imagem BootSLv3-wifi-noextra.iso em um CD e dê o boot na máquina através dele. Deverá aparecer uma tela semelhante à imagem abaixo:

chameleon boot loader

- Retire o CD, insira o DVD do Snow Leopard e espere alguns segundos. Em seguida, pressione F5 e aguarde até que o DVD seja reconhecido;

chameleon boot loader

- Digite “-v -x” (aparecerá no canto inferior esquerdo da tela), pressione Enter e aguarde o início do instalador;

chameleon boot loader

- Após carregar o instalador, abra o Disk Utility, particione seu HD, clique em Options… e selecione a tabela de partição do tipo GUID;

disk utility

- Aplique as alterações e feche o Disk Utility; prossiga normalmente com a instalação. Uma dica: para economizar espaço em disco, clique em Customize na tela de instalação e marque/desmarque as opções desejadas;

- Selecione o disco para a instalação e clique em Continue. A instalação levará cerca de 25 minutos para ser concluída (pode variar de acordo com a quantidade de itens selecionados);

- Após a conclusão da instalação, troque o DVD do Snow Leopard pelo disco de boot e reinicie a máquina. Aparecerá além do disco SL boot 132,  a unidade em que o sistema foi instalado. Selecione esta unidade, digite novamente os parâmetros “-v -x” e pressione Enter;

- O sistema será carregado e você será guiado na criação de uma conexão com rede sem fio (se houver alguma em sua região) e usuário local.

Embora o Snow Leopard já esteja instalado, o boot é possível apenas através do CD SL boot132 e no modo de segurança.

Pós instalação/Ajustes

- Copie o arquivo DellInspiron1525Hackbook.zip para o Desktop e descompacte-o com um clique duplo;

- Vá ao diretório Applications e instale o Chameleon 2 RC3. Ele é o firmware que fará o Snow Leopard “achar” que está rodando em um Mac verdadeiro e já possui um bootloader que eliminará a necessidade pelo disco SL boot132;

- Copie todo o conteúdo do diretório Extra para o diretório de mesmo nome que está no HD em que você instalou o Snow Leopard. Estes arquivos contêm as informações que o Chameleon usa para enganar o sistema e são carregados na inicialização;

- Volte ao diretório Applications e abra o Kext Helper. Arraste todos os arquivos .kext que estão no diretório Extensions, e o arquivo SleepEnabler.kext que está no diretório 10.6 para dentro dele; digite a senha do seu usuário, clique em Advanced e em Easy install. Você verá os comandos sendo executados e no final uma mensagem dizendo para reiniciar o sistema. Não reinicie ainda.

- Clique no botão kext permissions e feche o Kext Helper. Estes kexts são os drivers que habilitarão o som, o leitor de cartão e a hibernação;

- Para fazer a instalação do utilitário de configuração do trackpad, abra o Terminal localizado em Applications e digite os seguintes comandos (digite exatamente desta forma):

sudo -s [Enter] (entre com a senha)
rm -rf /System/Library/PreferencePanes/Trackpad.prefPane [Enter]
cd Desktop/DellInspiron1525Hackbook/PrefPanes [Enter]
cp -R Trackpad.prefPane /System/Library/PreferencePanes/Trackpad.prefPane [Enter]

- Reinicie a máquina e curta seu hackbook!

Problemas comuns

O computador liga, mas a tela fica preta

Embora a tela esteja preta, o sistema está rodando perfeitamente. Esse problema acontece por um erro de reconhecimento do driver de vídeo que na versão 10.6 do Snow Leopard não tem suporte à 64 bits.

Correção:

- Desligue o computador apertando o botão Power e em seguida, Enter. Você não verá, mas estará abrindo a janela abaixo e acionando o botão Shut Down;

shutdown window

- Reinicie a máquina com os parâmetros “-v -s” e aguarde até que a linha de comando seja carregada;

- Esta é uma solução paliativa: vamos remover os drivers de vídeo específicos do chipset, deixando o sistema usar o “fallback”. Para isso, digite os comandos abaixo:

/sbin/mount -uw / [Enter]
mkdir /Backup [Enter]
mv /System/Library/Extensions/IntelGMAX3100* /Backup [Enter]
reboot [Enter]

- Aguarde a reinicialização da máquina.

- Atualize o Snow Leopard para a versão 10.6.2 (veja a seção Atualização para a versão 10.6.2);

- Copie o arquivo dsdt.aml do diretório Intel GMA X3100 que veio no pacote de drivers, para o diretório Extra que está no HD da instalação;

- Reinicie a máquina e o problema estará corrigido.

Kernel panics

kernel panic

A maioria dos kernel panics que podem acontecer estão relacionados aos drivers seja pela falta de algum, incompatibilidade entre eles ou com o sistema.

Para corrigí-los você precisará saber exatamente qual o driver que está com problema. Reinicie a máquina com o parâmetro “-v” e quando o kernel panic acontecer no momento da inicialização, você verá o nome do driver e poderá buscar ajuda.

trace

Atualização para a versão 10.6.2

- Antes de atualizar é preciso remover o SleepEnabler.kext que é específico da versão 10.6, pois atualizar o sistema sem removê-lo pode causar um kernel panic. Para removê-lo, abra o terminal e execute os comandos:

sudo -s [Enter] (entre com a senha)
mv /System/Library/Extensions/SleepEnabler.kext /Backup

- Em seguida, abra o Software Update e instale o Mac OS X Update version 10.6.2:

update

- Após reiniciar a máquina a pedido do programa de atualização, execute o Kext Helper e instale o arquivo SleepEnabler.kext que está no diretório 10.6.2 do pacote de drivers.

Pronto!

Seguindo esses passos, você terá o Snow Leopard rodando perfeitamente em seu Dell como se estivesse usando um Macbook verdadeiro.

Até agora não tive nenhum problema com relação ao mau funcionamento de software ou hardware, e acredito que não virei a ter.

Sinta-se a vontade para postar nos comentários suas críticas, dúvidas e sugestões.

Até!

Links

Tutorial para Dell Inspiron 1525
Patch no DSDT para Intel GMA X3100
Prasys.co.cc – Vários artigos mais avançados sobre multiboot, problemas e EFIs

Forums

Project OS X
Insanely Mac
HMBT – Brazilian Hacintosh Team

greenfieldQuem nunca sentiu a tentação de reescrever algum script, classe, função ou sistema do zero? Eu já senti, já reescrevi e sei que não estou sozinho nessa.

Em um post relativamente antigo, Uncle Bob faz algumas considerações interessantes a respeito da reescrita de um sistema do zero, partindo do princípio que a motivação para isso vem do quão bagunçado um sistema pode ter se tornado ao longo do tempo.

Nele, ele fala que recomeçar um sistema do zero é uma das piores coisas que podem ser feitas; que todos os projetos começam como um “campo verde” onde as coisas são belas, mas que numa hora ou outra este campo estará cag… bagunçado. O software terá uma quantidade enorme de bugs; programar novas funcionalidades se tornará uma tarefa cada vez mais complicada e uma reescrita parecerá a solução ideal.

Faz todo sentido, certo?

Mas e quando você está trabalhando com um sistema todo ou parcialmente baseado em tecnologias antigas (algumas descontinuadas talvez), em que o esforço da reescrita compensa no final das contas?

Ok! Não é exatamente na questão do “compensa” ou “não compensa” que eu quero chegar, mas sim, em que focar no novo projeto. O quê fazer para o novo sistema não se tornar outro pesadelo demandando uma nova reescrita?

Talvez haja mais perguntas a serem feitas antes de iniciar o trabalho, mas acho que essas são bem importantes:

- Quais idéias podem-se aproveitar do sistema antigo?

- O quê deu certo ou errado nesse sistema?

- O quê deve ser feito para não errar novamente?

- O quê pode ser melhorado?

- Qual o grande diferencial dessa nova versão?

Seguir a mesma estratégia adotada anteriormente pode não ser o caminho mais correto a ser seguido e tentar identificar os pontos falhos pode ser a diferença entre um sistema de sucesso ou um novo fracasso.

Se você sabe, por exemplo, que o grande problema do seu sistema antigo é desempenho, tente fazer as coisas de forma diferente de modo que sua aplicação responda mais rapidamente (não estou falando de otimização prematura, mas de tentar identificar os pontos que são lentos por algum erro de programação ou falha de arquitetura).

Se o seu problema é a grande quantidade de bugs e dificuldade de corrigi-los, policie-se para não deixar seu código desestruturado, bagunçado e sem testes; escreva testes o tempo todo e sinta-se seguro.

Não tenha medo de se desapegar do código antigo; esqueça o copiar e colar!

Evite falhar no mesmo ponto novamente!

Hello world!

No comments

Hello worldPoxa! Quanto tempo pra iniciar esse blog!

Quando registrei esse domínio em fevereiro de 2006 sabia que ia demorar um pouco até fazer alguma coisa de útil com ele, mas não tinha ideia que demoraria tanto!

Muita coisa mudou durante esse tempo todo não só comigo, mas também com o mercado de TI em geral e de certa forma perdi a chance de mostrar minha postura em relação à essas mudanças.

Acho que estava mais do que na hora de pegar esse espaço que por tanto tempo foi um “repositório” abandonado de códigos antigos e obsoletos, e transformar em alguma coisa útil… ou, menos inútil.

Mas por quê tanto tempo assim pra iniciar um blog? Falta de tempo? Falta de motivação? Outras prioridades? Talvez um pouco de cada coisa ou mesmo só relaxo da minha parte.

Acho que essa não é uma propaganda muito positiva pra fazer de mim mesmo, ainda mais no começo disso aqui. Já imaginou se eu desisto do blog de vez e fico apenas com esse post estampado na tela principal, mostrando essa imagem? Vou dar um jeito de jogar esse post algumas páginas pra trás!

Quem me conhece sabe que gosto de tecnologia, principalmente coisas relacionadas à desenvolvimento de sistemas, e pretendo usar esse espaço pra falar um pouco do meu dia a dia no trabalho: as descobertas, frustrações, dicas, problemas e soluções que eu enfrento junto de meus colegas.

Tenho certeza que vou falar muita besteira também e espero que quem leia o que escrevo questione, opine e xingue quando for necessário. As críticas serão bem-vindas e benéficas para ambas as partes.

Não sei se está muito tarde pra correr atrás do prejuízo, mas antes tarde do que nunca, certo? :)