Inicializando sua Partição Windows via KVM

August 11th, 2011 1 comment

Ter uma máquina com dual-boot é muito bom. Sempre que precisamos utilizar um dos sistemas operacionais (SO) instalados nele, basta reiniciar a máquina e logar no sistema que deseja. O problema é quando você utiliza extensivamente um dos SOs e precisa reiniciar a máquina no meio do dia para executar apenas uma operação no outro SO, o que acontece muito comigo – utilizo Linux como ferramenta de trabalho, mas algumas operações que tenho que realizar são suportadas apenas no Windows.

Alternativa para esse problema existe: virtualização. Dessa forma, posso usar uma das diversas opções de virtualização disponíveis no mercado, VMWare, VirtualBox ou KVM (usando o qemu-kvm), para “executar o Windows dentro do Linux” sem problema algum. Mas o fato de eu ter que criar um disco virtual (entenda como sendo um arquivo) no sistema host (host é o SO verdadeiro que você está usando, no meu caso Linux, e guest é o sistema virtual) e realizar uma nova instalação do Windows sendo que já possuo uma instalação no meu disco, me incomoda e muito. Na verdade isso me incomodava, até que escutei alguêm no trabalho falar que o KVM inicializa um disco físico e executar qualquer  SO que nele está instalado. Resolvi pesquisar.

Pesquisando, realmente descobri que o KVM pode receber como argumento um device ao invéz de uma imagem. E descobri mais. Não somente o KVM faz isso como o VMWare também. Já com relação ao VirtualBox, não encontrei nenhuma indicação de que ele faça isso, mas existe no fórum oficial um procedimento de como exportar sua partição Windows para um disco virtual. A seguir, explico como inicializar o Windows no KVM.

Antes de mais nada é necessário saber se seu processador possui suporte a virtualização através das tecnologias Intel-VT e AMD-V. O KVM somente vai conseguir virtualizar seu disco local se seu processador for suportado. No Linux, para saber se seu processador possui o suporte a Intel-VT basta procurar pela flag ‘vmx’ no conteúdo do /proc/cpuinfo, e para AMD-V procure por ‘svm’:

# grep vmx /proc/cpuinfo –color -n
19:flags                : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat dts tpr_shadow vnmi flexpriority eptvpid

Caso seu processador suporte as tecnologias, basta instalar o KVM. No Debian (versão testing Wheezy), execute:

# apt-get install qemu-kvm kvm

Neste ponto você, teoricamente, já pode inicializar sua partição Windows usando o KVM. Para isso, basta passar o device de sua particão Windows (ou de onde o GRUB está instalado – não tive como confirmar isso pois todas máquinas que possuem suporte a virtualização as quais tenho acesso possuem somente um único disco físico) como argumento para o KVM. No meu caso, o Windows 7 que possuo está na partição /dev/sda1, então:

# kvm -hda /dev/sda

Neste ponto o KVM inicializa o sua BIOS virtual e o GRUB aparece. Selecionando a entrada relativa ao Windows, você verá a imagem gráfica do Windows na tela mas logo após aparecerá uma tela reportando que o processo de inicialização foi abortado. A figura abaixo é um exemplo que aconteceu com o Windows2008.

Windows crash

Windows crash

Isso ocorre pois o sistema de registro do Windows salva as informações da controlodara de IDE/SATA em que ele foi instalado. Sempre que você tentar utilizar o disco em que foi instalado o Windows em uma máquina com outra controladora, ele apresentará essa mensagem. No caso, como o KVM virtualiza as informações de hardware, o registro do Windows detecta que ele está inicializando em uma máquina com outra controlodara. Para solucionar este problema deve-se modificar algumas informações no registro do Windows e a forma mais fácil que achei foi seguir o procedimento descrito por Gary Hollands neste site. A própria Microsoft publicou uma solução contendo basicamente os mesmos passos (mas sem se responsabilizar pela consequências).

Assim, o procedimento que realizei foi:

  1. Reinicializar a máquina e acessar o Windows
  2. Fazer o download do arquivo Move XP Utility, decompactá-lo e executar o arquivo bat dele.
  3. Reinicializar a máquina e acessar o Linux

Apesar de o procedimento acima ser especifico para Windows XP, ele funcionou no Windows 7 (minha versão atual). Após esse procedimento você estará apto a executar o KVM novamente utilizando o comando citado acima, e então o Windows inicializará sem problemas e você terá acesso a todos os arquivos de sua partição Windows. Atente para o fato de que o Windows instalará novos drivers relativos ao “novo hardware”.

PS: Assim como a Microsoft, também não me responsabilizo por eventuais problema que você tenha ao executar os passos descritos neste artigo, principalmente os relacionados a alteração do registro do Windows.

Python e SVN no Eclipse IDE

April 23rd, 2011 No comments

Devido a uma necessidade de depurar um código feio (não que os meus sejam lindos) escrito em Python para o meu mestrado de forma rápida e gráfica para visualizar diversos dados ao mesmo tempo, decidi seguir a sugestão do meu orientador para tal tarefa e usar o Eclipse IDE. Confesso que já estava me rendendo a alguns encantos, melhor dizendo, comodismos que o Eclipse oferece a seus usuários antes mesmo de usá-lo no mestrado.

Então fiz o que deveria fazer, instalei o plugin de suporte a desenvolvimento Python, chamado PyDev, e o plugin de suporte a controle de versão do SVN, o Subversive. Segue minha experiência de como instalar tais plugins no Eclipse.

1. Instalação dos plugins

Hoje em dia é relativamente fácil instalar um plugin no Eclipse, uma vez que ele possua o sistema  hoje em dia é bem fácil com a história dos repositórios (principalmente os Web) de plugins através do Update Manager. Para instalar qualquer plugin, basta seguir os passos:

  1. Clique em Help -> Install New Software
  2. Clicar no botão Add do campo Work with
  3. Preencher o campo Name com qualquer nome que deseje) e inserir o link do repositório
  4. Selecionar o novo repositório na lista Work with se isso não aconteceu automaticamente
  5. Selecionar os plugins que deseja instalar e clicar em Next
  6. Clique em Next na tesla de detalhes de instalação
  7. Aceite a licença do plugin e clique em Finish
  8. Caso apareça uma tela de certificado, aceite-o(s), selecionando o(s) certificado(s) e clicando em OK

Para instalar o plugin do PyDev utilizei o link oficial de updates do projeto [1]. Selecionei somente o plugin PyDev for Eclipse (existe também o plugin PyDev Mylyn Integration). No caso do Subversive, os plugins necessários (plugin Subversive e o plugin Subversive SVN Connector) já fazem parte da release do Eclipse desde a versão Helios – 3.6.0 (se não me engano). Sendo assim, para instalar o Subversive você deve selecionar no campo Work with o repositório oficial da release do Eclipse [2] e instalar o plugin Subversive SVN Team Provider dentro do grupo Collaboration.

[1] http://pydev.org/updates
[2] http://download.eclipse.org/releases/helios

A partir da versão 0.7.8.I20090808-1900 os SVN Connectors não precisam ser instalados utilizando outros repositórios. Basta instalar somente o plugin Subversive SVN Team Provider e utilizar o Connector Discovery (veja a cara dele abaixo) para selecionar e instalar o SVN Connector que desejar. As versões disponíveis são JavaHL e SVNKit e suas diferenças podem ser consultadas aqui.

Connector Discovery

Connector Discovery

Para acessar o Connector Discovery, eu tive que mudar minha visão para o plugin do SVN em Window->Open Perspective->Others->SVN Repository Exploration. Uma vez na tela (que apareceu automaticamente) do Connector Discovery, eu selecionei a opção SVNKit 1.3.5 e cliquei em Finish. Na tela de instalação segui basicamente os mesmos passos de uma instalação normal de plugin (passo-a-passo acima, a partir do item 5).

Neste ponto, todos os plugins estão instalados.

2. Uso inicial dos plugins

Vamos começar com a utilização do Subversive. Para acessar a visão dele, clique em Window->Open Perspective->Others->SVN Repository Exploration. Uma tela como a seguir deve aparecer:

SVN Repository Exploring

SVN Repository Exploring

A partir desta tela podemos inserir repositórios remotos, que serão sempre listados na aba da esquerda (SVN Repositories). Para adicionar um novo repositório, basta seguir os passos:

  1. Clique no botão New Repository Location (terceiro botão habilitado)
  2. No campo URL, entre com o endereço do repositório remoto (por exemplo:  https://pyvital-webserv.svn.sourceforge.net/svnroot/pyvital-webserv)
  3. Se o repositório possuir autenticação para realizar os trabalhos, complete os campos User e Password com suas informações
  4. Clique em Finish
  5. Se o servidor remoto utiliza certificado, poderá aparecer uma tela apresentando um erro. Aceite o certificado clicando em Trust Always

Com isso o novo repositório aparecerá na aba da esquerda e a partir dele você poderá trabalhar com os seus arquivos agora.

Já para trabalhar com o Python, precisamos alterar para a visão do PyDev, clicando em Window->Open Perspective->Others->PyDev. Mas antes de trabalhar com arquivos é necessário setar algumas opções com relação aos interpretadores Python do seu sistema. Para isso, siga os passos:

  1. Clique em Window->Preferences->PyDev->Interpreter – (Python/Jython/IronPython).
  2. Escolha o interpretador que você tem instalado em seu sistema. A opção Auto Config tentará achar os interpretadores que estão em seu PATH, mas isso pode falhar.
  3. Selecione os caminhos que estarão disponíveis em SYSTEM PYTHONPATH.
  4. Clique em OK

Feito isso, você pode utilizar o PyDev, criando projetos a partir do menu New->Projects->PyDev.

Bem, acho que é isso. Mais informações podem ser obtidas atravês do seguintes links:

[3] http://pydev.org/download.html
[4] http://pydev.org/manual.html
[5] http://www.eclipse.org/subversive/downloads.php

Categories: Uncategorized Tags:

FISL 2010

July 22nd, 2010 1 comment

Não deu pra postar antes, mas agora que já até palestrei e estou com tempo livre posso falar um pouco melhor. Ontem eu palestrei no 11o Fórum Internacional de Software Livre, ou FISL 2010. Minha palestra teve como título “Programação Multicore: Como sobreviver a esta revolução usando o Pinguim?” e tanto os slides quanto os códigos-fonte estão disponíveis para download em [1] e [2], respectivamente.

Fora o nervosismo e calorão que senti, mesmo com a temperatura estando por volta do 10 graus Celsius Porto Alegre, e que achei estranho pois já fiz apresentações para um público mais numeroso, a palestra foi muito legal (pelo menos no meu ponto de vista :-D ). O único problema que tive foi com o tempo, pois com os 40 minutos de apresentação estipulados não consegui mostrar na prática os fontes de MPI, PThreads, OpenMP e X10 que havia preparado para a sessão.

Aproveitando que disponibilizei os arquivos pelo DropBox, clique em [3] para criar sua conta lá se ainda não tiver a sua!

[1] http://miud.in/8sf
[2] http://miud.in/8sg
[3] https://www.dropbox.com/referrals/NTYyODM2NjA5

Quem é vivo, sempre aparece.

June 26th, 2010 No comments

Pois é!!!! Fazem exatos quatro meses, 18 dias, e aproximadamente 3 horas que postei pela útima vez aqui. Mas estou vivo e com algumas boas notícias. Pra ficar mais claro o porque do sumiço, vou relacionar os itens que fizeram com que o blog ficasse um pouco de lado. Vamos lá:

  • trabalho;
  • estudos;
  • mais trabalho;
  • nascimento do JP;
  • ainda mais trabalho do que antes;
  • sono;
  • troca de fraldas e sessões de arroto;
  • trabalho;
  • sono, muito sono.

E como  a música diz: ‘.. e é assim que caminha a humanidade, com passos de formiga e sem vontade…’. Mas pra falar a verdade, acho que o maior vilãao aqui foi eu mesmo. Minhas técnicas de gerenciamento de tempo devem ser repensadas e melhoradas urgentemente.

Mas deixando de chorar sobre o leite derramado, a melhor notícia para o blog é que JP, meu filho, nasceu. Isso aliás explica o item ‘sessões de arroto’. Não sou eu quem fica arrotando em uma sessão, mas sim, batendo nas costas de JP por 5 minutos para que ele arrote após mamar. Ta bom!!! Eu adimito que aproveitei algumas destas sessões e arrotei. Mas foram com cunho educacional, para que JP aprendesse como fazer. :-D

JP nasceu há exatos 3 meses, no mesmo dia em que a mãe dele faz aniversário, às 18h43m, pesando 3,850kg e com 49cm. Como todo pai orgulhoso, devo dizer que ele foi o maior bebê da maternidade do CMC. E olha que tinha umas sete crianças por lá naquele dia. Para quem ainda não o conhece, aí está uma fotinha dele quando nasceu.

JP momentos após o nascimento.

JP momentos após o nascimento.

Agora já se passaram 3 meses, durmi pouco e trabalhei muito (até porque tenho que comprar fraldas e isso não é barato), e JP já está com 60cm e pesando 7.250kg (medidas realizadas com 2,5 meses – ele deve estar mais pesado e maior do que isso). E digo que não tem coisa melhor do que entrar em casa e ver um sorrisão como este aqui:

Eita sorrisão gostoso!

Eita sorrisão gostoso!

Além de JP, comprei um aeromodelo elétrico que estou montando e comprando as peças pra ele quando sobra uma fralda, ops, um dinheirinho no mês. Também comprei hoje o rádio (Futaba 7C 2.4Ghz) de um amigo pro meu aeromodelo, que foi apelidado na pista de Daiane dos Santos pelo simples fato de, quase sempre, na hora do pouso ele dar uma cambalhota! Isso não quer dizer que andei voando o quanto gostaria neste tempo sem postar aqui. Mas, agora que tenho 7 canais, vou começar a projetar (ou pegar na Internet) uma metralhadora de feijão. :-D

Bem, acho que pra uma volta já está bom! É claro que tenho mais notícias, como a do FISL 2010 onde serei palestrante, mas preciso de algumas confirmações antes de publicá-las.

O melhor firewall do mundo

February 8th, 2010 No comments

Recebi o texto abaxio por e-mail. Vale a pena postar aqui:

1. Uma célula humana contém 75MB de informação genética;
2. Um espermatozóide contém a metade, o que significa 37,5 MB;
3. Um mililitro de sêmen contém 100 milhões de espermatozóides;
4. Uma ejaculação média dura 5 segundos e contem 2,25 ml de sêmen;
5. Assim a produção dos membros de um homem é igual a:
(37,5 MB x 100.000.000 x 2,25) / 5 = 1.687.500.000.000.000 bytes / segundo = 1,6875 Terabytes / segundo.
Isto significa que o óvulo feminino suporta esse ataque DoS (negação de serviço) de 1,5 terabytes por segundo, e é permitida a passagem apenas de um único pacote de informação… o que faz com que a mulher seja considerada o melhor firewall do mundo.
A má notícia é que, este único pedaço de informação que passa, faz o sistema travar por cerca de nove meses…
Após os 9 meses o s custos operacionais se multiplicam astronomicamente…
Categories: portuguese Tags: ,

Merry Christmas and Happy New Year

December 24th, 2009 No comments

Categories: Uncategorized Tags:

IBM ServerGuide Scripting Toolkit – Linux version 2.00 released

December 18th, 2009 No comments

During this year, I worked in the Linux version of the IBM ServerGuide Scripting Toolkit (SGSTK), one of  the tools from IBM System x® ToolsCenter. The SGSTK is a collection of system-configuration tools and installation scripts that you can use to deploy software to your IBM eServer or xSeries server in a repeatable, predictable manner.

After two older releases this year, today we release the version 2.00 of  the SGSTK. This version is very special for the development team, because we worked hard to develop a new framework, more stable, robust and (why not?) beauty, than the older one.  You can download it from here.

Categories: english, IBM, Linux, LTC Tags: , , ,

Lidando com arquivos tar.gpg

August 17th, 2009 1 comment

Recebi um arquivo incomum (pelo menos para mim) hoje. Era um arquivo tar encriptado pelo GPG (GNU Privacy Guard – GNUPG). Como até então nunca tinha visto na vida um arquivo tar.gpg fui descobrir como tratar ele.

Primeiramente fui ler a man page do TAR e lá vi que não tinha uma opção mágica para a desencriptação e desempacotamento ao mesmo tempo, assim como acontece com arquivo tar.gz (utilizando a opção “-z”) ou tar.bz2 (utilizando a opção “-j”).

Sendo assim, fui atrás da man page do GPG. Lá descobri que existe uma opção chamada “–decrypt” ou “-d” que desencripta um arquivo GPG. Como sempre, afoito para executar o novo comando, nem li o resto e fui logo executando:

  1. raptor:~# gpg -d files.tar.gpg

Grande erro!!! Nem tão grande assim, mas foi uma newbada bem newba! Na execução toda a saída do comando foi para a saída padrão e meu terminal ficou bem sujinho com o “lixo”. Relendo a man page, vi que realmente a opção escreve no stdout caso a opção “–output” não seja passada. Ok! Dessa vez vai:

  1. raptor:~# gpg -d files.tar.gpg –output files.tar
  2. usage: gpg [options] –decrypt [filename]

Ok, ok! Primeiro as opções, depois o arquivo a ser desencriptado.

  1. raptor:~# gpg –output files.tar -d files.tar.gpg

Pronto!!! Ele pediu a senha para a desencriptação e o arquivo files.tar foi gerado. Depois disso é simples, bastando executar o comando do TAR para o desempacotamento:

  1. raptor:~# tar -xvf files.tar

E eis que pude ver os vídeos que o leobsd gravou durante minha aula de voo de aeromodelismo. :-D

Categories: Linux, portuguese, Unix Tags: , ,

Antes tarde, doque nunca…

August 17th, 2009 No comments

Pois é! Depois de quase um ano de comprado, meu aeromodelo (um Albatroz da Incoaer) voou e tive minha primeira aula na Aerocamp. Para quem não acredita, basta ver:

http://www.youtube.com/watch?v=FLvOzKTL38Y

http://www.youtube.com/watch?v=b3z4meM2bSA

http://www.youtube.com/watch?v=3oW9AbxInWY

http://www.youtube.com/watch?v=cEZgLvPW5o0

Todos os vídeos foram gentilmente gravados e cedidos pelo leobsd.

O que é um menino?

August 4th, 2009 2 comments

Para aqueles que ainda não sabem, minha esposa está grávida. Não sei como ela recebeu ou encontrou este texto de Alan Beck sobre o que é um menino, mas achei ele muito interessante por que lendo acabei me lembrando de algumas coisas dessa época de criança, e ao mesmo tempo fiquei apreensivo em ver meu filho(a) – ainda não sabemos o sexo – fazendo o mesmo.

Reproduzo aqui a tradução do texto (o original é em inglês e uma versão nessa língua pode ser lida aqui) como uma forma de homenagem a todos os pais, e em especial ao meu. Feliz dia dos pais (adiantado), PAI.

O que é um menino?
Alan Beck

Entre a inocência da infância
e a compostura da maturidade
há uma deliciosa criatura chamada MENINO.

Embora se apresentem em tamanhos,
pesos e cores sortidos, todos os meninos
têm o mesmo credo; aproveitar cada segundo
de cada minuto de todas as horas de
todos os dias e protestar ruidosamente…

O barulho é sua única arma
quando seu último minuto é decretado
e os adultos os empacotam e os metem na cama.

Meninos são encontrados em todas as partes:
em cima de,
embaixo de,
dentro de,
subindo em,
balançando-se no,
correndo em volta de,
pulando…

As mães os adoram,
as meninas os odeiam,
irmãos e irmãs mais velhos os suportam,
adultos os ignoram,
o céu os protegem…

Um menino é a Verdade com o rosto sujo,
a Beleza com um corte no dedo,
a Sabedoria com um chicle te no cabelo,
a esperança do futuro com uma rã no bolso…

Quando você está ocupado, um menino
é uma conversa-fiada, intrometido e amolante.
Quando você deseja que ele cause boa impressão,
seu cérebro vira geléia, ou ele se transforma
em uma criatura sádica e selvagem empenhada
em desmontar o mundo ao seu redor.

Um menino é um híbrido:
o apetite de um cavalo,
a disposição de um engole-espadas,
a energia de uma bomba atÃ?mica de bolso,
a curiosidade de um gato,
os pulmões de um ditador,
a imaginação de um Júlio Verne,
o retraimento de uma violeta,
o entusiasmo de um bombeiro
- e quando se mete a fazer alguma coisa
é como se tivesse cinco polegares em cada mão…

Gosta de sorvete,
canivetes, serrotes,
pedaços de pau, bichos grandes,
água (no seu “habitat” natural),
papai, sábados, domingos e feriados,
mangueiras de água.

Não é partidário de catecismo,
escolas, livros sem figuras,
lições de musica, colarinhos,
barbeiros, meninas, agasalhos,
adultos e “hora de dormir”…

Ninguém se levanta tão cedo,
nem chega tão tarde para o jantar.
Ninguém se diverte tanto com árvores, cachorros e mosquitos.
Ninguém mais é capaz de meter num único bolso
um canivete enferrujado,
uma maçã comida pela metade,
um metro e meio de barbante,
um saco de matéria plástica,
duas pastilhas de chiclete,
três notas de um real,
um estilingue,
e um fragmento de “substância ignorada”.

Um menino é uma criatura mágica:
você pode mantê-lo fora do seu escritório,
mas não pode expulsá-lo de seu coração.
Pode pÃ?-lo para fora da sala de visitas,
mas não pode tirá-lo de sua mente.
Queira, ou não, ele é seu captor,
seu carcereiro, seu dono, seu patrão,
um cara sarapintado, um nanico,
um mata-gatos, um pacote de encrencas…

Mas quando a noite você chega em casa,
com suas esperanças e seus sonhos reduzidos a pedaços,
ele possui a magia de soldá-los em um segundo,
pronunciando duas palavras somente:
“OI PAI…!!!”

Categories: portuguese Tags: