Arquivo de dezembro \27\UTC 2008

Matando a saudade do MSX com o Ubuntu

Primeiro, não sou tão velho assim.
Mas acontece que as gerações 8bits como Apple, TRS-80 Color (CP-400) e MSX (hotbit e expert) me fascinavam, aqueles RPGs textuais/verbais faziam minha mente vibrar, pena meu inglês na época não estar a altura para jogar ‘The Hobbit‘. Enfim, novamente um passo a passo para instalar um emulador de MSX no sistema Ubuntu.

Antes de prosseguir, saiba que todos os comandos apt-get podem ser executados através de sua interface visual, o synaptic, eu uso o terminal porque é mais direto e rápido.

O OpenMSX é um excelente emulador de MSX *na minha opinião*, não devendo em nada para os outros emuladores, incluindo os comerciais. Também é multiplataforma e possui um frontend gráfico. Para instalar o OpenMSX e seu frontend OpenMSX Catapult :

sudo apt-get install openmsx-catapult

O comando acima descarregará todo os pacotes necessários para rodar o OpenMSX, incluindo até mesmo uma BIOS (C-BIOS) para MSX. Mas voce poderá encontrar dezenas de outras BIOS de MSX na internet, umas são mais completas que outras, por exemplo, a C-BIOS não suportar DSK(disk) e nem CAS (cassete).

O próximo passo é instalar um atalho no menu do sistema para carregar o frontend para o OpenMSX, visto que o empacotamento não faz isso e convenhamos, não é tão agradável chamar um frontend que é gráfico pela linha de comando. Dê um ALT+F2 e execute “gksu gedit /usr/share/applications/openmsx-catapult.desktop”. então cole o seguinte conteúdo :

[Desktop Entry]
Name=Emulador de MSX
GenericName=Emulador de MSX
Comment=openMSX catapult é um frontend gráfico para o emulador openMSX
Exec=/usr/bin/openmsx-catapult
Icon=/usr/share/openmsx-catapult/resources/bitmaps/tapeimage.png
Terminal=false
MultipleArgs=false
Type=Application
Encoding=UTF-8
Categories=GNOME;GTK;Game;Emulators

Salve o arquivo acima e feche o editor.

Há um manual offline do OpenMSX (incluindo o Catapult), se preferir estuda-lo antes de executa-lo então dê um ALT+F2 e execute “file:///usr/share/doc/openmsx-catapult/manual/index.html”, ou se preferir :
http://openmsx.sourceforge.net/catapult-manual/
http://openmsx.sourceforge.net/manual/faq.html
isso fará abrir o navegador com o conteúdo do manual.

Ok, o atalho para o OpenMSX está no menu do Gnome em Aplicativos->Jogos->Emulador de MSX, em sua primeira execução lhe será solicitado os seguintes parâmetros :
openmsx-firstscreen

Não é preciso alterar nada, apenas clique no botão [OK] e prossiga para a tela seguinte :
openmsx-checking-config
Que apenas faz uma conferencia de todos as roms e bios instaladas para o hardware a ser emulado, no final, clique no botão [Done].
O OpenMSX possui muitos controles e ajustes especiais, de forma que é impossível detalhar num artigo como esse muitas coisas, mas vou dar o passo inicial para a emulação de uma ROM.

Visite a página :

http://www.emulabr.com.br/knightmarerom_Rom_28087.html

E descarregue a ROM do jogo Knightmare, essa é uma ROM para MSX1, no entanto, já descarreguei e executei jogos para MSX2 e funciona perfeitamente. Você precisará descompactar a ROM que está em formato RAR.

No OpenMSX, vá na seção Cartridge e então clique em CART A ou B para selecionar a rom que acabou de descompactar :
openmsx-select-rom

Por fim, clique no botão [START] e…
openmsx-running-rom

Se descarregar arquivos .rom você usa as opções que lhe falei acima, mas se você encontrar formatos .dsk use a opção/seção DISK A ou DISK B para carrega-los, agora se for .cas então use a seção Cassette. Mas lembre-se que as opções de carga dependem da BIOS que estiver usando para emular o hardware de MSX.

Há várias versões de hardware que podem ser emulados como MSX1, MSX1+, Turbo, MSX2+,… e hardware exóticos que foram criados apenas para MSX. Há algumas raridades, por exemplo, descarregue esse jogo Knightmare aqui :

http://knightmaresaga.msxblue.com/knightmare/scc.htm

A diferença entre a primeira ROM do Knightmare e a rom acima é que apesar de ser o mesmo jogo, a segunda rom suporta um hardware de som chamado SCC+. Até onde eu entendo, SCC+ era um anabolizante FM para jogos da Konami, apenas jogos da Konami suportavam-no. Esse chip que dava uma qualidade excelente ao som [para a época].

O OpenMSX também tem dentro de si tem um poderoso debugger apropriado para você brincar de trapacear com alguns jogos [tecle F10 durante o jogo], o modelo de caça-trapaça é semelhante ao conhecidíssimo MAME, onde você rastreia qualquer numero, pode ser por exemplo, o numero de vidas=2 que há no jogo, daí você perde uma vida durante o jogo e pede para o debugger caça-trapaça procurar todos os endereços usados no jogo onde um valor=2 se transformou em valor=1, se houver apenas uma ocorrência então pimba, aquele endereço encontrado determina a quantidade de vidas, daí então você pede para ajustar aquele endereço com endereço=99 resultando então num jogo com 99 vidas. Existem diversos tipos de busca para trapaçear como : menor que, maior que, igual a, etc… que lhe dá a possibilidade de brincar de hackear qualquer jogo, talvez essa diversão até supere o próprio jogo. Esperto não ? Não é difícil encontrar endereços para trapacear, em menos de uma hora jogando Knightmare, já encontrei esses endereços :
Dê pausa durante o jogo [tecle F1], carregue o debugger [tecle F10] e execute essas instruções iniciando com a palavra debugger :
99 vidas->debug write memory 0xe060 99
invisibilidade->debug write memory 0xe60e 80 (pegue a primeira invisibilidade primeiro e depois aplique este endereço, você ganha 80 segundos de tempo de invisibilidade toda vez que aplica-lo)

Se você não entendeu como funciona esse debugger, então esquece, não use este tópico para realizar suas perguntas. O help, além da internet você encontrará informações de como o debugger funciona.

Só dou um aviso aos saudosistas, as vezes é melhor você ficar com a lembrança do jogo do que tentar revive-lo, eu digo isso porque fui matar a saudade dum jogo que me diverti muito na época [Camelot Warriors], quando fui joga-lo achei horrível e sinceramente, na época me parecia tão bom.

15 Comentários

Quem é o /etc/rc.local ?

Você conhece o arquivo /etc/rc.local ? ou para que serve ?

O arquivo /etc/rc.local é um script onde você instrui ao Linux o que deve ser executado logo após iniciar todos os serviços ou como se diz popularmente, o que deve ser executado após o boot.
Geralmente ele é um arquivo assim :

#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0” on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing

exit 0;

Vê a linha exit 0; ?
Pois bem, é antes dessa linha que adicionamos comandos que queremos que sejam executados logo após o boot (porém depois dos serviços iniciados) como por exemplo um script de firewall, montagem de discos remotos e assim por diante.

Eu tenho como hábito adicionar linhas assim :

# previne o fork-bomb
ulimit -u 1000

Existe em todas as linguagens de programação, independente de sistema operacional ou permissões de usuário, um recurso chamado fork que quebra o programa em um ou mais processos, este recurso se bem utilizado é primoroso, no entanto, se um bug ou má intenção de um programa (conhecido como fork-bomb) disparar fork’s a todo instante então em pouco tempo vai consumir todos os recursos da máquina até ela travar. O que a linha acima faz, é estabelecer um limite para a quantidade de processos que o kernel poderá processar, esse limite é arbitrário e relativo, para a maioria, 1.000 processos é um valor bastante razoável.

Outra linha que costumo adicionar :

# previne smurf-attack
echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_all

Você provavelmente já ouviu falar de ataques de negação de serviços (em inglês DoS-Denial of Service), o que a linha acima tenta prevenir. Eu não sei a história do nome “Smurf Attack”, mas provavelmente leva esse nome pela maneira como os Smurfs do desenho animado sempre atacavam seu oponente, nunca sozinhos porque era pequenos e frágeis, mas em conjunto com os seus amigos. Esse tipo de DoS funciona assim, o atacante sobreescreve o cabecalho do datagrama disfarçando seu IP com o IP da vitima e envia uma solicitação de broadcast para outra vítima, daí então a segunda vitima responderá o broadcast para a primeira vitima ao invés do atacante, fica parecendo dois navios atacando um ao outro com broadcasts intermináveis. A linha acima tenta evitar esse tipo de DoS.

Estes foram apenas dois exemplos, há muito mais que também incluo, eles podem estar num script único ou em forma de instruções separadas como foi exibida acima, mas o fato é demonstrar o uso do arquivo /etc/rc.local que agora você poderá utiliza-lo para incluir suas próprias instruções.

Algo que as vezes preocupa em usar o arquivo /etc/rc.local é o tempo de boot que é proporcional a quantidade de instruções que você for incluir nele. Além disso, o terminal texto ou gráfico só prosseguirá quando o /etc/rc.local tiver sido completamente executado. Por essa razão não é muito saudável você colocar nele o carregamento dum script de firewall que utilize resoluções de nomes DNS, pois se seu script tiver uma linha assim :

/sbin/iptables -t nat -A POSTROUTING -s $SUA_REDE -o eth0 -d br.ubuntu.com -j MASQUERADE

O tempo de boot do seu computador demorará proporcionalmente ao tempo que for para resolver o nome “br.ubuntu.com”. Isso traz algumas armadilhas, digamos que seu link fique fora do ar, o que acontece ? A resolução do nome acima vai levar uma eternidade, daí vai ficar louco da vida para acessar logo o terminal para resolver o problema, mas /etc/rc.local simplesmente demorará muito até liberar o terminal porque ficou num ciclo de resolução de nomes sem link para o servidor de DNS.

O exemplo ruim foi um script de firewall, mas tente entender que isso valha para qualquer processo que consuma tempo, quanto mais lingüiça colocarmos no /etc/rc.local mais tempo levará o boot, se uma dessas instruções travar, você simplesmente matou o boot.

É claro que existem meios de contornar a situação ao usar o /etc/rc.local, uma delas é o “&” no final de um comando a ser executado, isto fará com que comando seja executado em background e liberará o /etc/rc.local para prosseguir, por exemplo :

# montar a pasta sshfs com uso de chaves
sshfs root@ip.do.servidor:/home/pasta_compartilhada /media/pasta_local/ -o allow_other&

Notou o “& ” (E comercial) no final da linha ? Pois é, assim o comando será executado em background, e o arquivo /etc/rc.local prosseguirá com a próxima linha a ser executada.

Outro método, útil especialmente se você não abre mão de carregar um script longo no /etc/rc.local é usar o sistema de agendamento do Linux com o comando “at”. Digamos que você queira que o script de firewall seja executado 1 minuto após o boot inicial, basta acrescentar ao /etc/rc.local a instrução :

at now + 1 minute -f /carregar/meu/script/de/firewall.sh

O que a linha acima faz é rodar o script /carregar/meu/script/de/firewall.sh 1 minuto mais tarde. Assim o nosso querido /etc/rc.local não sofre nenhuma interrupção no momento de boot, ou ela será mínima. Se seu script tiver problemas com resoluções de nomes, seu terminal já estará liberado para você fazer qualquer acerto. A mesma idéia vale para qualquer script que possa comprometer o /etc/rc.local.
Nota: Para executar comandos “at”, o pacote “atd” precisa estar instalado.

É claro que essas dicas valem muito, você não as encontrará em Livros porque administradores de rede são como donos de veículos antigos, que muitas vezes são obrigados a construir suas próprias peças ou no nosso caso, nossas próprias soluções.

Talvez, na próxima oportunidade eu venha a falar do /etc/rc.d/ e como criar scripts auto-inicializáveis com start/stop.

9 Comentários

O`Ubuntu Perfeito` alterado – de novo #4

O script ‘Ubuntu Perfeito’ foi alterado novamente. Agora, os intervalos de tempos entre uma atualização e outra são menores, acho que estou chegando ao fim.

Para descarregar a nova versão acesse o link ao lado intitulado “Script Ubuntu Perfeito“.

Se estiver com dúvidas sobre a instalação do mesmo, apenas consulte a página de inauguração do script e o FAQ.

Desde a ultima atualização foram acrescidos as seguintes modificações :

* Novo tema Nimbus : É o tema do solaris portado para Ubuntu. Ele é também o novo tema padrão para o Ubuntu Perfeito. Se quiser experimentar este novo tema, mas não quer de recriar o menu inteiro do Ubuntu Perfeito então edite o arquivo /var/cache/ubuntuperfeito/menu.cat removendo a linha “Temas_com_aparencias_variadas”, isso fará com que a opção de instalação de temas reapareça no menu. O tema anterior – Black and White2 – continua sendo instalado, mas não é mais o padrão ao ser usado ao aplicar o tema do Ubuntu Perfeito, o nimbus foi colocado no seu lugar por ser um tema bonito, mas também performático, isto é, ele é mais rápido do que o Black and White2 no redraw das janelas e ícones.

* Nova opção “Descarregar novos papeis de parede” : Na realidade essa opção não é nova, antes ela estava associada a instalação de temas, isto é, quando se instalava os temas então os papeis de parede eram descarregados. Resolvi desmembrar em duas opções para que aqueles que não necessitam de descarregar papeis de parede ou se já estão contentes com os que possuem possam ignorar essa etapa, porém descarregando os novos temas.

* Novo motor GTK : graças ao repositório PPA do Pablo Castellazzi foram acrescentados os motores GTK : gtk2-engines-candido, gtk2-engines-aurora, gtk2-engines-nimbus

* Mplayer com suporte ao Compiz : Nunca tive problemas com o mplayer+compiz, no entanto, o repositorio do Pablo Castellazzi inclui uma nova recompilação do mplayer com este suporte.

* Repositorio para o OpenOffice 3 : Sim, ele voltou a ficar online. Um problema que havia no OpenOffice3 que pude notar é os hints (balões com textos) eram semi-transparentes e causavam grande confusão. Nessa recompilação Ooo.org3, pelo que pude notar esse problema foi corrigido. Não me lembro mais, se no BrOffice3 esse problema ocorria, mas se ainda ocorre, então sugiro a remoção do broffice-3 para instalar o openoffice3.

* Atualizado o link para download do Deluge para usar a versão recentemente lançada (1.0.6 ).

* Novo item de menu : Foi acrescentando o item “SmartConect 3G, um assistente para configurar redes 3G”. Mais detalhes sobre este programa em http://smartconnect3g.wordpress.com/.

* Aplicação da profile compiz : Como já é de conhecimento, existe uma opção no menu de serviço que aplica ou configura o compiz para exibir certos efeitos especiais. Foi testado exaustivamente tanto a aplicação como a operação de restauração da profile anterior e estou convencido que funciona perfeitamente. No entanto, fiz modificações porque um usuário possa aplicar essa mesma opção mais de duas vezes, isto porque ao aplicar um segundo tema compiz, o backup anterior era sobreposto. Agora, toda vez que for aplicada a profile “ubuntu perfeito” ao compiz, será mantido o backup da anterior sempre com um nome diferente, assim poderá manter todas as profiles anteriores.

* Item do menu principal renomeado : O item “Suporte a impressoras” foi renomeado para “Suporte a impressoras jato de tintas (modelos variados)”. A razão dessa modificação é que alguns estavam associando os programas instalados a impressoras Epson, quando na realidade este suporte é extendido a marcas e modelos variados.

* Item do menu principal não é marcado como padrão : O item “Instalar temas para OpenOffice” não é mais marcado como padrão. Muitos mencionaram que isso é desnecessário porque poucos usuários efetivamente gostam de trocar o tema do OpenOffice. Eu concordo.

* Novo script : Foi acrescentado o script que testa o numero de ciclos do HD. Util especialmente para donos de notebooks que se preocupam o numero de ciclos usados em seus HDs, se este numero de ciclos estiver elevando então o proprio script sugere a correção. Se quiser saber mais sobre este bug, veja : http://alexblog.eeol.org/linux/aumentando-a-vida-util-dos-hds/

* Scripts adicionais : Nas versões anteriores, os scripts adicionais eram gerados em /usr/bin/ubuntuperfeito*, eles eram criados em tempo de execução do Ubuntu Perfeito e são utilizados pelo menu de serviços. Agora com o empacotamento não ví vantagens em fazê-lo desse modo, portanto descontinuei a criação desses scripts e eles passam a estar acrescentados ao empacotamento, assim será mais fácil rodar as correções e o script principal ficará menor.

* Ao aplicar o tema original do Ubuntu, o sistema irá desativar também o compiz, visto que no Ubuntu original o compiz só faz parte quando habilitado manualmente pelo usuário. No Intrepid, o tema sonoro voltará a ser o do Ubuntu. Mas só vale após o reinicio do computador.

* A variavel CONFIAR_DOWNLOAD_ANTERIOR=”N” : Agora poderá ser modificada visualmente pela opção “Sempre conferir na internet arquivos já baixados” no menu principal, o padrão dessa opção é ligada, assim todos os downloads mesmo os que já foram baixados serão conferidos se estão 100% confiáveis e se não estiverem então descarregar-se-á novamente. Se esta opção estiver desmarcada, então o Ubuntu Perfeito não irá conferir nada via internet quando os arquivos já se encontrarem gravados, isso é útil quando você confia plenamente nos arquivos já baixados anteriormente, de modo, a deixar a aplicação do Ubuntu Script mais rápido e com uma queda drástica no acesso a internet para buscar arquivos.

* Opcao de reempacotamento : Foi adicionado no menu de serviço a possibilidade de reempacotar do Ubuntu Perfeito aproveitando o repositório /var/cache/ubuntuperfeito já baixado pelo script, assim downloads feitos pelo script estarão dentro do pacote e ao ser reinstalado novamente noutro computador, tais arquivos não precisarão ser baixados novamente. Note, que pacotes baixados via synaptic que ficam em /var/cache/apt/archives não serão empacotados, pelo menos não tenho intenção de fazer isto, pois tornaria o .deb muito gigante para ser transportado em CDROM.

13 Comentários