anúncios

segunda-feira, 6 de outubro de 2014

Instalando ZSNES no Linux

Acredito que todos já tiveram um Super Nintendo (SNES) né, e pensa em recordar os jogos do SNES no computador com sistema operacional Linux.
Nesse caso é necessário instalar o ZSNES que é um emulador de Super Nintendo, assim pode fazer download das rooms [1] do jogo que tinha nas fitas do Super Nintendo.
Então nesse post, compartilho os procedimentos que realizei para instalar o ZSNES na distribuição Linux Debian.

No Slackware FULL, simplesmente executei $./configure && make; #make install e fez a instalação do ZSNES normalmente.
No Debian precisou fazer algumas configurações adicionais.
Download do ZSNES no site http://www.zsnes.com no link Linux, Download ZSNES Linux, será redirecionado o download do arquivo zsnes151src.tar.bz2.

Nota que optei por salvar o arquivo zsnes151src.tar.bz2 no diretório Downloads do meu /home, no seu caso escolha salvar onde achar melhor.
Antes de iniciar, é necessário instalar o compilador C e C++, se caso não tiver instalado no Debian.
#apt-get install gcc g++
Extrair o arquivo zsnes151src.tar.bz2 do download
reginaldo@Saitam:~/Downloads/$ tar -jxvf zsnes151src.tar.bz2
Acessar o diretório correspondente da extração
reginaldo@Saitam:~/Downloads$ cd zsnes_1_51/src
Executar o arquivo configure
reginaldo@Saitam:~/Downloads/zsnes_1_51/src$ ./configure
loading cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc -pipe -I. -Wall ) works... yes
checking whether the C compiler (gcc -pipe -I. -Wall ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for nasm... error:: command not found
checking for a BSD compatible install... /usr/bin/install -c
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking build system type... i686-pc-linux-gnu
checking how to run the C preprocessor... gcc -E
checking for X... libraries , headers
checking for sdl-config... /usr/bin/sdl-config
checking for SDL - version >= 1.2.0... no
*** Could not run SDL test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means SDL was incorrectly installed
*** or that you have moved SDL since it was installed. In the latter case, you
*** may want to edit the sdl-config script: /usr/bin/sdl-config
configure: error: SDL >= 1.2.0 is required


Solução: Instalar os pacotes Nasm e SDL correspondente.
root@Saitam:~/Downloads/zsnes_1_51/src# apt-get install nasm libsdl1.2-dev
Execute novamente o arquivo configure.
reginaldo@Saitam:~/Downloads/zsnes_1_51/src$ ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for nasm... nasm
checking for sdl-config... /usr/bin/sdl-config
checking for SDL - version >= 1.2.0... yes
checking for zlib - version >= 1.2.3... yes
checking for libpng - version >= 1.2.0... yes
checking if you want the zsnes debugger... yes
checking for initscr in -lcurses... no
checking for initscr in -lncurses... no
checking for initscr in -lpdcurses... no
configure: error: A curses library is required to use the debugger


Solução: Instalar os pacotes ncurses e libncurses5-dev como segue:
root@Saitam:~/Downloads/zsnes_1_51/src# apt-get install ncurses libncurses5-dev Execute novamente o arquivo configure. reginaldo@Saitam:~/Downloads/zsnes_1_51/src$ ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for nasm... nasm
checking for sdl-config... /usr/bin/sdl-config
checking for SDL - version >= 1.2.0... yes
checking for zlib - version >= 1.2.3... yes
checking for libpng - version >= 1.2.0... yes
checking if you want the zsnes debugger... yes
checking for initscr in -lcurses... yes
checking for initscr in -lncurses... yes
checking for initscr in -lpdcurses... no
checking if you want libao support... no
checking how to run the C preprocessor... gcc -E
checking for X... libraries , headers
checking for glGetError in -lGL... yes
checking for OpenGL... yes
checking for JMA support... yes
checking for cpu info... found
checking if you want gdb friendly executable... no
checking which cpu architecture to optimize for... native
checking if you want crazy optimizations... no
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether sys/types.h defines makedev... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
ZSNES v1.51
SDL support Version 1.2.15
NASM support NASM version 2.10.01 compiled on Jun 14 2012
zlib support Version 1.2.7
PNG support Yes, version 1.2.49
OpenGL support Yes
JMA support Yes
ZSNES debugger Enabled
The binary will be installed in /usr/local/bin
Configure complete, now type 'make' and pray.
Nota que agora a execução do configure está OK, execute o make.
reginaldo@Saitam:~/Downloads/zsnes_1_51/src$ make
g++ -pipe -I. -I/usr/local/include -I/usr/include -D__UNIXSDL__ -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -
D__OPENGL__ -march=native -O3 -fomit-frame-pointer -s -fno-rtti -o tools/strutil.o -c tools/strutil.cpp
In file included from tools/strutil.cpp:22:0:
tools/strutil.h: In static member function ‘static int ci_char_traits::compare(const char*, const char*, size_t)’:
tools/strutil.h:34:96: error: ‘strncasecmp’ was not declared in this scope
make: ** [tools/strutil.o] Erro 1


reginaldo@Saitam:~/Downloads/zsnes_1_51/src$ make
g++ -pipe -I. -I/usr/local/include -I/usr/include -D__UNIXSDL__ -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -
D__OPENGL__ -march=native -O3 -fomit-frame-pointer -s -fno-rtti -o tools/depbuild tools/depbuild.cpp tools/fileutil.o tools/strutil.o
tools/depbuild.cpp: In function ‘void dependency_calculate(const char*, stat&)’:
tools/depbuild.cpp:167:37: error: ‘F_OK’ was not declared in this scope
tools/depbuild.cpp:167:41: error: ‘access’ was not declared in this scope
tools/depbuild.cpp: At global scope:
tools/depbuild.cpp:186:5: warning: first argument of ‘int main(size_t, const char* const*)’ should be ‘int’ [-Wmain]
make: ** [tools/depbuild] Erro 1


Opa, erro de compilação, aqui nesse ponto, deve incluir diretamente no código fonte do ZSNES.
No fonte /src/tools/strutil.h incluir a biblioteca como segue.
#include < string.h >
No mesmo diretório acima, no fonte depbuild.cpp incluir a biblioteca e o argumento da função main, como segue. #include < cstdlib >
int main (int argc, const char *const *const argv)
No fonte /src/parsegen.cpp incluir as bibliotecas , e mesma modificação feita no passo anterior da função main, como segue.
#include < cstdlib >
#include < cstring >
...
int main (int argc, const char *const *const argv)

Com as alterações necessárias realizadas corretamente como descritas aqui, pode executar o ./configure, make e make install como segue.

Execute novamente o arquivo configure.
reginaldo@Saitam:~/Downloads/zsnes_1_51/src$ ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for nasm... nasm
checking for sdl-config... /usr/bin/sdl-config
checking for SDL - version >= 1.2.0... yes
checking for zlib - version >= 1.2.3... yes
checking for libpng - version >= 1.2.0... yes
checking if you want the zsnes debugger... yes
checking for initscr in -lcurses... yes
checking for initscr in -lncurses... yes
checking for initscr in -lpdcurses... no
checking if you want libao support... no
checking how to run the C preprocessor... gcc -E
checking for X... libraries , headers
checking for glGetError in -lGL... yes
checking for OpenGL... yes
checking for JMA support... yes
checking for cpu info... found checking if you want gdb friendly executable... no
checking which cpu architecture to optimize for... native
checking if you want crazy optimizations... no
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether sys/types.h defines makedev... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h

ZSNES v1.51

SDL support Version 1.2.15
NASM support NASM version 2.10.01 compiled on Jun 14 2012
zlib support Version 1.2.7
PNG support Yes, version 1.2.49
OpenGL support Yes
JMA support Yes
ZSNES debugger Enabled
The binary will be installed in /usr/local/bin
Configure complete, now type 'make' and pray.


Execute make para compilar.
reginaldo@Saitam:~/Downloads/zsnes_1_51/src$ make
Aguarde terminar compilação.

Execute make install como root para instalar
root@Saitam:~/Downloads/zsnes_1_51/src# make install

Procederá instalação, o binário do zsnes ficará em /usr/local/bin, utilize esse caminho para criar um atalho no menu.
Veja o resultado do room Top Gear clássico!


[1] Rooms SNES. http://www.roxdownload.net/roms/snes
Feito!

sábado, 27 de setembro de 2014

Corrigindo o bug Shellschock do Bash

Como muitos já sabem que no dia 25/09/2014 teve um alarde grande do bug Shellschock encontrado no Bash nos sistemas Linux e Unix-like.
Então, verifique se o seu Bash da sua distribuição Linux e atente aos resultados obtidos.

env x='() { :;}; echo vulnerável' bash -c "echo teste"
Se o resultado aparecer conforme abaixo, significa que o Bash está vulnerável, segue na próxima etapa deste post.
vulnerável
teste

Caso o resultado aparecer mensagem de erro conforme abaixo, significa que foi corrigido.
warning: x: ignoring function definition attempt
bash error importing function definition for 'x'teste

Atualizando o Bash e aplicando patches
Script fixbash.sh que baixa o Bash recente, patches e faz instalação do Bash aplicando os patches da correção.
Execute o script fixbash.sh e após faça o teste realizado anteriormente para verificar o resultado. Feito!

terça-feira, 26 de agosto de 2014

Utilizando VirtualBox no terminal

Se caso você instalou o VirtualBox no Servidor sem ambiente gráfico e não sabe como gerenciar VirtualBox pelo terminal ou queira aprender, então está no lugar certo.

Segue os procedimentos
Abre o terminal e siga uma das etapas adaptando para o seu cenário.
Para criar cria uma VM
VBoxManage createvm -name "nome-da-vm" -register

Para modificar uma VM
Memória de 2GB - 2*1024=2048MB
VBoxManage modifyvm "nome-da-vm" -memory "2048MB" -acpi on -boot1 dvd -nic1 nat
OU
VBoxManage modifyvm "nome-da-vm" -memory "2048MB" -acpi on -boot1 dvd -nic1 bridged

Para criar o disco da VM
Supondo que pretende criar um disco para VM de 100GB, então deve converter para Mb.
Disco: 100GB = 100*1024=102400Mb
VBoxManage createhd -filename "nome-da-vm-disco.vdi" -size 102400 -register

Para modificar o disco da VM
VBoxManage modifyvm "nome-da-vm" -hda "nome-vm-disco.vdi"
Registrar a mídia para instalação da distro na VM
VBoxManage registervm dvd /home/seuusuario/Downloads/VMs/distro.iso

Registrar alteração da mídia para instalação da distro na VM
VBoxManage modifyvm "nome-da-vm" -dvd /home/usuario/Downloads/VMs/distro.iso

Para exportar VM formato OVA
Nesse caso, tenho uma VM Debian e exportei para applianceDebian.ova
VBoxManage export Debian --output applianceDebian.ova

Para importar VM formato OVA
Utilizei a VM exportada acima para fazer a importação com nome da máquina bkpDebian
VBoxManage import applianceDebian.ova --vsys 0 --vmname bkpDebian

Para listar as VMs criadas
VBoxManage list vms

Para iniciar uma VM
VBoxManage startvm "nome_da_vm"

Para desligar uma VM
VBoxManage controlvm "nome-da-vm" poweroff
Feito!

quinta-feira, 21 de agosto de 2014

3 anos de blog

O blog esta completando hoje, dia 21 de Agosto de 2014, 3 anos!!!

Gostaria de agradecer a todos pelo prestígio e a paciência de ler os posts que são publicados. Espero continuar compartilhando conhecimentos no blog para nossos leitores. Continuem prestigiando e divulgando o blog Mundo da Computação Integral, assim aumentamos nossa comunidade.

quarta-feira, 20 de agosto de 2014

Colocando uma VM em NAT acessível na rede local

Esse método é útil quando a VM em bridge não for atribuído nenhum IP por DHCP, ou algum outro tipo de problema, então testando com VM em NAT para deixar acessível na rede local, segue os procedimentos para o correto funcionamento.

Com a interface de rede do VirtualBox em modo NAT, em redirecionamento de portas. Segue os screnshosts abaixo:



Exemplo com outro IP Hospedeiro
Protocolo IP Hospedeiro Porta Hospedeiro IP Convidado Porta Convidado
TCP 192.168.1.100 80 10.0.2.15 80
TCP 192.168.1.100 443 10.0.2.15 443

Dessa forma, mesmo a VM estando em NAT ficará acessível na rede local para acessar servidor de aplicação web da VM.

terça-feira, 19 de agosto de 2014

Importanto VM com formato .ova no VirtualBox

No post anterior foi explicado como importar o disco rígido da máquina virtual (formato VDI) no VirtualBox, mas se caso você tenha recebido a tarefa de importar a VM no formato OVA? Então esse é o objetivo deste post.

Quando a VM foi exportada com formato .ova, ou seja, que inclui já a VM pronta incluindo especificações de memória RAM, placa de rede e outros. Diferente da VM com formato .vdi que é apenas o disco rígido, tendo que criar a VM, especificar memória e apenas incluir o disco existente, no caso .vdi.

Chega de papo, e vamos na prática como importar VM.ova, segue os passos seguintes:

1. No VirtualBox, menu Arquivo>Importar Appliance o resultado é conforme a imagem abaixo:

2. O próximo passo é escolher o local onde você salvou a VM.ova e aguardar fazer a importação;

OBS: Esse procedimento é mais simples, pois o formato .ova é um clone da VM completa, diferente do formato .vdi que é apenas o disco rígido.
Feito!

segunda-feira, 18 de agosto de 2014

Importando VM no VirtualBox

Caso você tenha o arquivo com extensão .vdi e não sabe o que fazer com esse tipo de arquivo, então nesse post você irá aprender para que serve e os procedimentos necessários para usar esse tipo de arquivo.

O formato VDI significa Virtual Disk Image que é o disco virtual lido pelo VirtualBox. Então antes de seguir os passos seguintes é necessário instalar o VirtualBox no seu computador. Segue VirtualBox baixe de acordo com o sistema operacional e arquitetura do seu computador.

Após ter feito o download e instalado o VirtualBox, pode seguir os passos seguintes:

OBS: O cenário abaixo pode ser diferente no seu caso, por exemplo outra distribuição Linux ou outro sistema operacional em questão, mas os passos continua o mesmo.

1. Com VirtualBox aberto, clique em Novo para criar uma VM e em seguida no botão próximo, será exibida a tela seguinte.

2. O segundo passo é inserir o nome da distro da VM, conforme a tela seguinte;

3. O terceiro passo é inserir quanto de memória RAM a VM estará disponível, coloque de acordo com a quantidade de memória RAM da máquina física que tem disponível para usar;

4. O quarto passo como será utilizado uma VM já criada, então selecione usar disco rígido existente e indique o caminho onde você salvou a VM no seu computador;

5. Pronto, VM importada e será exibida a tela seguinte se fizer corretamente os passos anteriores;

6. Selecione a VM criada com disco já existente e clique em iniciar para carregar a VM, conforme a tela seguinte;

7. Feito corretamente os passos anteriores será visualizado conforme tela similar abaixo. Isso depende qual distro Linux e SO da VM você utilizou;

OBS: As imagens dos passos utilizados neste post, foram criadas para auxiliar no Treinamento Linux que ministrei na empresa.
Feito!