Archive

Archive for the ‘tech’ Category

Seu cérebro como produto : prepare sua vitrine

February 8th, 2010 No comments

Atualmente, vivemos uma fase de transição um pouco complexa, nebulosa e indefinida. Provavelmente já houveram fases semelhantes em outras épocas, uma vez que tudo no mundo é cíclico.

Não somos mais a geração Coca-Cola, não somos a geração das grandes guerras (apesar das guerras ainda existirem, em menor escala, mas não em menor número de vítimas), não somos a geração de coisa alguma.

Nada assustadoramente grande e importante aconteceu em nossa geração. Aliás, eu nem faço parte da geração atual, já que não sou adolescente há um bom tempo, mas prefiro simplesmente ignorar esse fato.

Minha geração (infância nos anos 80 e adolescência nos anos 90) não teve nada de extremamente importante acontecendo globalmente enquanto se desenvolvia.

O resultado é que atualmente somos um bando de quase tiozinhos com saudades de modas e cultura tosca dos anos 80. Sim, sinal de decadência, mas fazer o quê ? A idade chega e quanto a isso não há nada a ser feito.

Porém, é importante notar que, por mais que a criação não possa ser atribuído a nossa geração, fomos nós, os adolescentes dos anos 90, que começamos a realmente utilizar computadores e fazer do uso dos mesmos uma mania presente em nosso dia-a-dia, assim como a TV (infelizmente) ainda é presente atualmente na vida de nossos pais.

A geração seguinte, os nascidos nos anos 90 e vivendo sua adolescência atualmente, já nasceram em um mundo onde o uso de computadores e a Internet era algo completamente normal. Sim, é estranho imaginar isso, mas existiu um tempo em que se utilizava computadores desconectados da Internet.

Reconheço, uma grande parte das possibilidades atuais não existiam sem a Internet e a principal vantagem, a possibilidade do alcance do que você produz ser global, não era sequer imaginada.

Resumindo, era um tempo chato para os padrões atuais e quem utilizava computadores nessa época (e, obviamente, anteriormente a essa época) realmente podia ser chamado de “nerd”.

Apesar de ser uma época desconectada, foi necessária, visto que durante a mesma grande parte das tecnologias existentes atualmente foi inventada. Hoje em dia, qualquer um é rotulado de “nerd”, já que o termo está na moda.

Naquela época, no entanto, somente quem realmente gostava da coisa o fazia, visto que era necessário ter muita imaginação para sentar em frente a uma telinha ilhada, desconectada, por horas e horas, conversando somente com a máquina e não com outras pessoas.

Confesso que, atualmente, apesar de obviamente saber que existe utilidade em computadores desconectados, os mesmos perdem praticamente 90% de sua utilidade caso estejam sem acesso a Internet. E estou comentando somente o uso doméstico que fazemos dos mesmos.

Profissionalmente falando, na área em que trabalho, a falta do acesso Internet só serve para aumentar a integração dos funcionários na degustação do líquido sagrado nosso de cada dia, o santificado café.

Sou um ser estranho, visto que iniciei nesse mundo de tecnologias acompanhando o surgimento comercial da Internet e o início do uso massificado do acesso a mesma, e estou entrando em uma era em que o não acesso a Internet significa, na prática, não ter chance alguma de algum tipo de sucesso profissional.

Atualmente, não somente os profissionais da área de tecnologia, mas qualquer tipo de profissional, sem o louvado acesso a Internet, no mínimo, não consegue executar suas funções profissionais de forma correta, independente da complexidade do mesmo.

A perda do acesso, atualmente, é obviamente muito mais sentida e indesejada do que a perda da televisão o era em gerações passadas. A TV, por mais que tenhamos tentado reverter esse quadro, sempre foi um meio muito mais de entretenimento do que de cultura.

A Internet, por outro lado, apesar de ter todo o entretenimento e a baboseira necessária para quem os procura, oferece uma gama extremamente mais extensa de material cultural para os que estiverem realmente interessados.

Um reflexo disso é que uma quantidade extremamente grande de ocupações e até mesmo de profissões foram criadas nos últimos anos. Profissões essas que nem mesmo eram sequer imaginadas como possíveis há poucos anos.

Utilizamos a Internet para nos divertir, para estudar, para trabalhar, para namorar e, provavelmente, qualquer outra atividade humana que você possa imaginar possui uma forma de ser reproduzida na Internet. No mínimo, ao menos pode ser facilitada.

Isso nos leva ao fato de que, já há alguns anos, e isso tem se intensificado ainda mais com a Internet e as tecnologias que dela se utilizam, o trabalho humano passou a ser essencialmente intelectual.

Obviamente, sempre existiu trabalho intelectual e sempre existiu o trabalho braçal. Também obviamente, isso não significa o fim completo do trabalho braçal, mas sim um foco cada vez menor no mesmo, somente o estritamente necessário, e um maior foco no conteúdo produzido através do uso do intelecto.

O que me leva ao assunto principal desse post (sim, eu utilizo idéias introdutórias muito maiores do que o ponto principal, me processe) : em um futuro próximo, nossa principal ferramenta de trabalho será o cérebro.

Para algumas profissões, como a que exerço, por exemplo, isso já é uma realidade e, na verdade, o tem sido basicamente desde sua invenção. O fato é que um número muito maior de profissões baseadas no pensar e no intelecto foram e continuarão a ser criadas.

Sendo o cérebro nossa principal ferramenta de trabalho, não seria comum que, dentro de algum tempo, venhamos a notar uma maior necessidade de substâncias que possam estimular o cérebro, da mesma forma que, nas épocas do trabalho baseado na força física, nos era útil ter ferramentas para melhorar nosso desempenho físico ?

Veja bem, não estou me referindo a drogas ilegais. As mesmas sempre existiram e provavelmente sempre existirão. A forma e a apresentação mudarão, mas as mesmas sempre estarão lá, disponíveis para quem quiser se destruir.

Me refiro a formas não prejudiciais a saúde de estimular o pensamento e o trabalho cerebral. Formas legais, sem que tenhamos que nos render a perigosas soluções milagrosas ilegais e seus conhecidos efeitos colaterais.

Ter a mente livre de preocupações, bem como ter uma boa dose de inspiração são pontos que, em minha opinião, são essenciais para que o trabalhador intelectual possa produzir e desempenhar bem suas funções.

O raciocínio lógico exige concentração, um certo desligamento do mundo real, uma imersão no problema e uma volta a realidade com soluções e respostas que resolvam problemas reais. É quase que um estado de transe.

Desenvolvedores de software provavelmente já conhecem bem esse estado. Mesmo eu, que não lido com desenvolvimento diretamente em meu dia-a-dia, sinto frequentemente que me encontro nesse estado fora da realidade.

Caso não queiramos rumar em direção ao buraco sem fundo da depressão, precisamos não somente da motivação financeira materializada na figura de nosso salário pago, mas também de inspiração para produzirmos.

Da mesma forma que um escritor precisa se inspirar para escrever seus textos ou um pintor precisa de inspiração para desenvolver suas obras, o profissional intelectual precisa de inspiração para conseguir produzir, dada a quantidade assustadora de informações com as quais o mesmo lida diariamente no cumprimento de suas funções.

Conhecendo bem nossos governantes e a sociedade retrógrada e empacadora do progresso em que vivemos, obviamente substâncias inspiradoras, caso venham a um dia existir (e não vejo o motivo para que não venham a existir), demorariam pequenas eras para serem aprovadas como soluções legais para problemas reais.

Dito isso, pergunto : o futuro nos reserva uma nova droga, mesmo que temporária, a qual nos preencheria com a inspiração necessária para que possamos continuar a produzir em uma sociedade totalmente baseada na informação ?

Alimento para o pensamento. Deixem suas opiniões nos comentários e, por favor, respeitem o português. Ele não somente fornecer seu pães.


Redes sociais : estão todas fadadas a irrelevância ?

February 4th, 2010 No comments

Tenho que reconhecer : ultimamente, tenho utilizado muitas redes sociais. Muito mais do que eu imaginaria poder utilizar em um passado não muito distante (alguns poucos meses, em tempo de Internet).

No longínquo tempo de poucos meses atrás, eu ainda tinha a mesma visão que a maioria das pessoas que conheço tem das redes sociais : tecnologias bobinhas para se divertir, mas sem nenhum conteúdo relevante real.

Felizmente, após algum tempo tentando entendê-las, consegui perder o preconceito e passei a compreender que a relevância, em muitos casos, existe para quem corre atrás e não para quem quer que a mesma caia em seu colo como que por mágica.

Ainda não venci o preconceito principal e não desfiz o orkuticído cometido a muitos anos atrás, mas comecei a viver em outras redes sociais. Mais especificamente, comecei já há algum tempo a utilizar serviços de microblogging como o Twitter e o Identi.ca (apesar de reconhecer que uso muito mais o Twitter do que o Identi.ca, mea culpa).

O Twitter tem tudo e mais um pouco para lhe parecer algo extremamente sem sentido e sem utilidade, mas depois de algum tempo você passa a entender o funcionamento e começa a aproveitá-lo.

Hoje em dia, sei que quem diz que Twitter é somente para idiotas que querem ficar sabendo quantas vezes desconhecidos foram ao banheiro são pessoas que realmente não entenderam a utilidade do serviço.

Se você só tem somente esse tipo de informação (inútil, obviamente) em sua timeline, desculpe lhe dizer, mas o incompetente é você. Ao contrário das demais redes sociais do passado (novamente, passado em tempo de Internet), com serviços de microblogging você é quem define a qual tipo de conteúdo quer ter acesso.

Se as pessoas que você segue não são relevantes para você e só falam besteiras, simplesmente pare de seguí-las. Simples assim. Ninguém é obrigado a continuar seguindo alguém só porque esse alguém o segue.

Reciprocidade o cacete :-) Sério, não sofra e não tenha medo de utilizar o equivalente ao botão de trocar de canal das redes sociais : utilize o recurso de “unfollow“. É efetivo e faz bem a saúde mental.

Você segue quem fala o que lhe interessa, seja amigo pessoal/conhecido ou não. Eu acompanho várias pessoas que não me acompanham e não passo a acompanhar todos que passaram a me acompanhar.

Se eu acreditar que um amigo, seja ele um amigo pessoal ou não, parou de ser relevante como o era no início e se tornou um maluco informando seus horários para fazer o número dois, “unfollow’” nele.

É fácil assim e, após isso, invariavelmente a felicidade volta a reinar em sua timeline. Na verdade, a regra de ouro para manter a sanidade é bem simples : somente acompanhe as pessoas que são relevantes para você.

Após algum tempo de uso de serviços de microblogging, passei a dar mais valor para redes sociais e, por isso, resolvi dar uma chance ao Facebook, já que todos diziam que se tratava de um Orkut melhorado e com uma quantidade de salsas bem menor.

Não me arrependi e, com a integração do Facebook com quase tudo que se possa imaginar em termos de redes sociais, principalmente com serviços de microblogging, passei a gostar do serviço.

Cheguei até a flertar com o formspring.me. Resisti bastante no início devido a outro preconceito, o de acreditar que se tratava de um serviço inútil para uma pessoa comum e irrelevante como eu.

Por quê eu iria utilizar um serviço onde as pessoas poderiam me fazer perguntas de todos os tipos ? Isso me cheirava a algo restrito a (sub)celebridades instantâneas, coisa que obviamente nunca fui e não pretendo ser.

Depois de algumas pessoas conhecidas pedirem para que eu passasse a utilizar o serviço, aceitei a idéia como uma forma de iniciar somente mais uma brincadeira, já que sabia que provavelmente seriam perguntas engraçaralhas para as quais eu teria respostas ainda mais engraçaralhas.

Me inscrevi no serviço e as pessoas começaram a me fazer perguntas. Achei bastante interessante e passei a respondê-las. Surgiram perguntas não tão engraçaralhas como eu imaginava e eu gostei da brincadeira de respondê-las. As pessoas retribuíram e começaram a fazer mais perguntas, eu gostei e mantive meu perfil no serviço até hoje.

O interessante do serviço é que as pessoas podem fazer perguntas anonimamente. Ou seja, se você quer saber se possui inimigos, essa é sua chance, já que, nesse caso, invariavelmente vão aparecer perguntas cabeludas de “anônimos”.

No meu caso, acredito que tenha um dom até então desconhecido : o dom de enganar muito bem as pessoas, já que consegui passar todo esse tempo sem nenhuma pergunta cabeluda. Consegui responder tudo o que foi perguntado até o momento, sem descartar nenhuma pergunta.

Ou seja, ou eu não tenho inimigos realmente (improvável) ou as pessoas encontraram alguém ainda pior do que eu para chatear. Por mais que solicitasse perguntas inteligentes e desafiadoras (não ofensivas, obviamente), não tive muitas perguntas que me fizeram perder muito tempo pensando em respostas, infelizmente.

De qualquer forma, acredito que o ponto principal é que, atualmente, as redes sociais são ferramentas bastante interessantes, seja para se divertir, encontrar pessoas com interesses em comum e trocar figurinhas, trabalhar e até mesmo encontrar seus arquiinimigos, quando pinta aquela vontade de sacanear (algo muito frequente, em meu caso).

Se você ainda acredita que redes sociais são coisas de miguxos e estão fadadas ao fracasso, ao esquecimento e a obsolescência, azar o seu. Pense novamente e tente se livrar de seus preconceitos. Você não tem nada a perder.

Quem poderá nos defender ?

February 2nd, 2010 4 comments

Mais uma vez, contrariando as indicações de tudo e de todos, estive pensando sobre o futuro, minha condição de nerd e a sociedade estranha na qual estou inserido.

Nós, nerds, apesar de sermos paparicados pelas empresas criadoras de tecnologias, na esperança de que sejamos formadores de opiniões e espalhemos nossas opiniões sobre seus produtos entre nossos semelhantes (e, principalmente, para os não semelhantes), somos na verdade meros objetos sendo utilizados.

Inicialmente, acreditamos que as empresas desenvolvedoras de tecnologia realmente desenvolvem produtos pensando em nosso perfil. Porém, infelizmente, pouco tempo depois, caímos na realidade e percebemos que a realidade é bastante diferente.

Atualmente, os gadgets mais interessantes, os que possuem maior capacidade de criar um novo mercado ou de se estabelecerem como uma nova tendência e cair nas graças do uso massificado não são muito amigáveis para os nerds.

Obviamente, são atraentes como qualquer nova tecnologia o é. Porém, não são atraentes o suficiente para que passem a ocupar um espaço dedicado e garantido em nossa vida.

Celulares, por exemplo, por mais que eu os odeie, passaram a ocupar um local dedicado e garantido em minha vida, por mais que eu me arrependa de dizer disso. São um caso específico, na verdade, pois, ao menos em meu caso, são um mau necessário.

Mas servem para ilustrar, nesse contexto. O ponto é que se tornou algo presente no dia-a-dia de todos, algo massificado, que virtualmente todos possuem e não sabem mais como viver sem. Em outras palavras, ocupou seu lugar em nossas vidas.

Os gadgets atualmente lançados, mais atraentes ao público em geral e que possuem capacidade de conquistar seu lugar em nossas vidas, no entanto, pecam quando o assunto é conquistar realmente um lugar na vida de nossa classe, nerds estranhos segundo a maioria da humanidade não estranha.

Eles não possuem a “hackeabilidade” necessária. Não são dispositivos que permitam que façamos o que quiser com os mesmos. Obviamente, nenhum dispositivo de consumo massificado terá níveis de “fuçabilidade” muito altos, por motivos óbvios : o público alvo pouco se importa com esse item.

Porém, para nós, nerds, esse item é extremamente importante, senão essencial. É aceitável que o gadget, em última instância, seja fornecido com um conjunto limitado de recursos que permitam sua personalização de acordo com as preferência dos usuários mais exigentes.

O que não é aceitável, a meu ver, é que esses mesmos gadgets não permitam modificação alguma e, por vezes, até mesmo tornem isso algo ilegal. A minha opinião é que, contanto que eu não esteja fazendo algo realmente ilegal, sou eu quem deve decidir o que eu posso e o que eu não posso fazer com um gadget pelo qual eu paguei.

Infelizmente, ultimamente, o que venho percebendo é que, cada vez mais, os novos dispositivos de desejo são fornecidos de fábrica com opcionais que não são, em primeiro momento, indesejáveis para o público em geral mais que o são para o nerd padrão.

DRM, por exemplo, é algo que se encaixa nesse contexto. Se eu comprei o gadget e se eu comprei o conteúdo, porque diabos a empresa que me vendeu o dispositivo é que tem que decidir que eu só poderei usar o conteúdo em um único dispositivo ?

Por quê a empresa que desenvolveu o leitor de livros eletrônicos tem que decidir que o livro que eu adquiri só pode ser lido no dispositivo de leitura eletrônica que ela ou seu parceiro comercial me vendeu ?

Eu posso muito bem querer ler esse livro em meu desktop, em meu smartphone, em um laptop ou em um netbook. Sendo eu o dono da cópia adquirida e possuíndo todos esses gadgets, porque não poderia usar o conteúdo dessa forma ?

São todas formas moralmente legais de utilização. Porém, infelizmente, os dispositivos atuais estão sendo distribuídos com mecanismos que impedem que algo tão simples como o cenário descrito acima seja possível.

Se eu quiser instalar um aplicativo de um terceiro em meu dispositivo eu perco totalmente o suporte ao dispositivo ? Não seria mais correto eu, no máximo, não ter suporte ao aplicativo de terceiro em questão e não a todo o dispositivo ?

Pior, isso significa que, na visão da empresa que desenvolveu o produto, eu sou agora um fora da lei ? E, como fora da lei, estaria eu sujeito a penas legais ? Seria justo eu ser punido legalmente somente por estar usando meu dispositivo, comprado legalmente, da forma que eu acredito ser a forma correta e não da forma que a empresa desenvolvedora da tecnologia definiu como correta ?

Pense bem, a minha forma de uso não é moralmente incorreta. Eu não estou deixando de pagar ninguém, não estou utilizando conteúdo adquirido por meios não oficiais e ilegais, mas se não adquiri o conteúdo (seja ele um aplicativo, um livro eletrônico, uma música ou qualquer outro conteúdo) diretamente da empresa que desenvolve a tecnologia ou de seus parceiros eu estou agora, oficialmente, sendo reconhecido como um usuário ilegal ?

Já não é ruim o suficiente os gadgets atuais serem severamente limitados ? Já não é feio o suficiente essas empresas lançarem produtos artificialmente limitados somente para terem chance de lançarem novas versões continuamente, cada uma acrescentando somente uma pequena funcionalidade dentre todas as que sabemos que poderiam existir desde a primeira versão do produto ?

Agora, além de sermos obrigados a conviver com produtos artificialmente limitados, com preços inflados totalmente fora de nossa realidade, ainda temos nossa liberdade de utilização de algo que adquirimos legalmente sendo cerceada de acordo com os interesses de quem os desenvolveu ?

Essas empresas não entendem que, a partir do momento que o produto é vendido, a propriedade daquela cópia do mesmo passa a ser do indivíduo que a adquiriu e não mais delas, as empresas criadoras ?

Você aceitaria adquirir um carro se soubesse que a empresa poderia, remotamente e automaticamente, sem o seu consentimento e sem o seu conhecimento prévio, esgotar o tanque de gasolina caso você circulasse por estradas que as montadoras acreditassem que não fossem interessantes ?

Você aceitaria ser taxado de ilegal caso decidisse ir até a praia no final de semana com seu carro e a estrada utilizada como caminho para seu passeio não fosse administrada pela montadora ou por um de seus parceiros ?

Não ? Então por quê devemos aceitar situação semelhante com os dispositivos tecnológicos que adquirimos ? Por quê aceitar que a empresa que desenvolve nosso leitor de livros eletrônicos apague remotamente de nossosdispositivos de leitura, sem nosso consentimento, um livro pelo qual pagamos ?

Por quê aceitar que seu novo gadget seja artificialmente limitado, não permita a instalação de aplicativos de terceiros para execução de músicas e não permita que as mesmas sejam transferidas de seu desktop para o mesmo caso as mesmas não tenham sido adquiridas da empresa desenvolvedora da tecnologia em questão ou de seus parceiros ?

Visão deturpada da realidade ? Alarmismo inconsciente ? Visão exagerada de um futuro que obviamente não será tão ruim assim ? Sinto dizer, mas isso já ocorre hoje em dia.

Bem-vindo ao presente.

KVMing for fun and profit : how to make your toy become a serious business

February 1st, 2009 4 comments

Here I’ll try to present you some tips on how one could easily make a playground become a paid fun. And no, I won’t be teaching you how to become rich, although I would like if you would teach me how that could be accomplished as I’m trying to come up with a way to do just that for a couple of years now and failed miserably.

Recently, I’ve been setting up KVM virtual machines in order to do a lot of testing for a project I’m involved with. Letting boring details aside, one could say that a very long, boring and error prone setup was finished after a lot of work and it worked like a charm in the end, as a KVM machine.

As always, laziness is a given and when you are into it you empower yourself to come up with some nice hacks and goes that extra mile to find out how one could not to have to do boring and repetitive things again and again, in the best spirit of “let’s have some work now and save me ten times more work later”.

As I’m becoming more and more into that spirit of laziness, there I went looking for a way which would let me transform my beloved and nice working KVM machine into a fully featured real physical server. After some tips from microblogosphere friends (thanks fike), I had some ideas on how that could be accomplished.

Turned out my ideas weren’t really all that right so there I went again looking for a way to do what I wanted. After some research I found out that the KVM guys already gave some thought about it and even had a ready solution to my problem : it’s called qemu-nbd.

Yes, by now everyone should know that KVM builds on top of the excelent (just not so snappy) QEMU. However, as I’m a Debian user, here I should say that in Debian, most notably Debian sid/unstable, the qemu-nbd binary was renamed to kvm-nbd, just as the KVM binary is called only kvm and not qemu-system-x86_64 or whatever else is called these days upstream.

NBD (short for Network Block Device) is a nice thing. I hadn’t tried it before (I certainly used and am still using in some projects of mine the not-upstreamed-yet-but-so-nice-that-I-couldnt-resist DRBD, which seems to share some ideas which NBD). In short (read NBD link for more info on that), NBD allows the Linux kernel to use a remote server as a block device. Also, its upstream is a fellow Debian developer (hello Wouter). How nice’s it ?

As NBD is an upstreamed kernel feature, you don’t need to go to the external-module-route-hell. You only need the userland tools, which are nicely packaged and integrated into Debian as well. They’re only one aptitude away, so you could use this command to bring it to your KVM host :

aptitude install nbd-client

After that, you will want to export your image file (the file which represents the disk of you virtual machine) as a NBD block device, so you will be able to mount it under your KVM host and do whatever you want to do with it. Here’s how one would do it :

kmv-nbd –conect=/dev/nbd0 myimagefile.img

I tested it using both qcow2 and raw disk images and both worked like a charm so I don’t think you will have any problems here. Next, you need to create a directory structure under your KVM host which temporarily will be used to mount the partitions inside the virtual block device of your KVM machine. You could do this like this :

mkdir /newserver

mkdir /newserver/usr

mkdir /newserver/var

mkdir /newserver/home

In the example above, I’ve created these directories because I want my new server to have separated root, /usr, /var and /home partitions and mount points. Feel free to adapt to any kind of partitioning layout you please.

Next, you will mount yout virtual machine filesystem under a temporary location, so you will be able to copy all of its content later to your final desired destination, i.e. the real partitions inside the real disk you are going to use in your future real server (not a virtual machine anymore).

I did it using :

mkdir -p /mnt/temp

mount /dev/nbd0p1 /mnt/temp

Notice that the /dev/nb0p1 above is my root partition inside my KVM machine, only that it’s represented now in my KVM host in NBD’s device node notation here. I’ve only one partition inside this particular virtual machine (aside from the swap partition).

Next, you want to mount the partitions on the real disk you want to be used in your new real server under the directories created earlier so you will be able to chroot to then later and do any tweaks you may want to, like fixing /etc/fstab, /boot/grub/device.map, /boot/grub/menu.lst and all these places we know makes references to block devices which may differ from the situation you had in your virtual machine running under the KVM.

Here’s what I used :

mount /dev/sdb1 /newserver

mount /dev/sdb3 /newserver/usr

mount /dev/sdb5 /newserver/var

mount /dev/sdb6 /newserver/home

The device nodes above are from your real disk’s partitions, not from any virtualized device block access method like NBD. Also, take care not to mount your primary disk’s partitions (the ones you are using under in your KVM host) as you could destroy them easily. As you can see above, I’m using /dev/sdbX as /dev/sda is my primary disk, the one under which my KVM host is running. Again, adapt to your scenario.

Next, you just copy everything from your virtual machine filesystem (which is now accessible from within your NBD block device) to your real disk. I did it using :

cp -a /mnt/temp/* /newserver/

After that, you can disconnect your KVM virtual machine image file from the exported NDB device block using :

kvm-nbd -d /dev/ndb0

And then chroot to your real disk layout yout just copied to /newserver in order to fix anything which would make reference to block devices while running as a virtual machine under KVM but which now will be a completely different thing as a real server, like your /etc/fstab, /boot/grub/device.map, /boot/grub/menu.lst and so on.

In order to chroot to your new soon-to-be-real filesystem you could use :

chroot /newserver

Then go nuts and start fixing everything you may think needs to be fixed so this filesystem could be used in a real server to boot it up. Im my case, I needed to fix /etc/fstab in order to mount my additional partitions (as under KVM I was using only a root and a swap partition and now, under the real server, I’ll be using separated root, swap, /usr, /var and /home).

Before I went changing more things, I “fixed” my /boot/grub/device.map and my /boot/grub/menu.lst files to point to /dev/sdb and /dev/sdb[1],  respectively, so I could run grub-install from inside the chroot in order to install GRUB into the real new disk’s MBR (master boot record), using :

grub-install /dev/sdb

Then, finally, I “fixed/boot/grub/device.map and /boot/grub/menu.lst again so they would point to /dev/sda and /dev/sda[1], as /dev/sda will be the device node for this new disk when it wil be running under the new real server and not as a disk inside the KVM host machine.

Next, I exited the chroot using :

exit

And umounted the new real disk’s partitions, using (now already out of the chroot) :

umount /newserver/home

umount /newserver/var

umount /newserver/usr

umount /newserver

Now you can take this new disk out of your KVM host machine, put it inside your new real server, physically install it there, turn on your new real server and everything installed while the filesystem in it was being used under the KVM virtual machine will be there, running nicely.

And you’re done. That’s it. Also, it’s important to point out that it’s much easier being done than being said (or written, in this case) so, if it looks scary because of the size of this post, don’t let it disincourage you as this whole thing is a pretty straightforward procedure, much easier than it seems.

And as I know that I will receive lost of complaints from people which will tell me how inefficient this whole thing is and how I could have accomplished the exact same thing in a much easier and faster way (perhaps even with a already existing tool which would automate almost entirely the whole proccess), I would say to these people to please exercise their right to share ideas using the comments. Just be nice on me, please.

After all, it was fun and I learned new things while doing it all, as well as I tried to share what I learned from this experience with my peers. That’s what matters. Peace, love and geekness to all of you :-)

Categories: Debian, DebianBR, KVM, tech Tags:

Quick way to find out if you “ps” has been compromised

September 28th, 2008 9 comments

Here’s a really quick way to find out if your “ps” binary has been compromised :

# ls -d /proc/* | grep [0-9] | wc -l ; ps aux | wc -l

The commands above are going to show you two numbers : the first one is the number of running processes according to your kernel and the second one is the number of running processes according to you “ps” binary.

If the second one differs from the previous one, something is wrong and this could mean your “ps” binary was compromised. If this happens to you, maybe your system is not a trusted system anymore.

Categories: English, security, sysadmin, tech Tags:

Idéias malucas e suas aplicações práticas úteis

October 1st, 2006 No comments

Dia desses estava eu contente lendo o Planet Debian e me deparei com uma série de artigos entitulados “Wacky ideas“, onde o autor, o desenvolvedor Debian Simon Richter, tornava públicas algumas de suas idéias, mas todas com alguma plausibilidade de aplicação real.

Me interessei especialmente pela idéia número 4, chamada pelo autor de “using symbol versioning information in dpkg-shlibdeps“, ou, abrasileirando, “utilizando informações de versionamento de símbolos no dpkg-shlibdeps”. Com a leitura da idéia básica percebi que tratava-se de algo realmente interessante e poderia ajudar versões novas de softwares empacotados serem instaladas em versõe antigas do Debian sem precisar de backport algum, mas queria confirmar minha suspeita.

Enviei um e-mail ao autor do post, perguntando se o mesmo tinha mais alguma informação sobre o assunto ou alguma referência sobre o mesmo para me indicar. Ele respondeu e deu uma explicação rápida sobre o assunto, em inglês, mas vou traduzí-la abaixo e espero não fazer feio :

Olá,

Você perguntou sobre a idéia “utilizando informações de versionamento de símbolos no dpkg-sh libdeps”.

Bom, eu acho que você já está familiar com o gerenciamento atual, que é obter uma lista de bibliotecas referenciadas de objetos em um pacote executando-se objdump no mesmo, extraíndo as entradas NEEDED e procurando nos arquivos shlibs que estão instalados (e também aqueles do pacote atual).

Até agora, se você referencia libc.so.6, o mecanismo shlibs procura por uma entrada na forma

“libc 6 …”

e insere a parte “…” na variável “shlibs:Depends” para o pacote.

Versões de símbolos por sua vez permitem que uma biblioteca declare que existem diversas versões de um símbolo e qualquer coisa que se lige contra o mesmo especifique a qual versão se referem. Normalmente, essas versões são obtidas no contexto de toda a biblioteca. Por exemplo, a glibc possui versões para releases maiores (major) e menores (minor) (GLIBC_2_0, GLIBC_2_1 e assim por diante). Caso um símbolo não mude, você não precisa mudar a informação de versionamento também quando lançando uma nova versão de um pacote. Na verdade, a maioria dos símbolos possuem uma versão bastante antiga anexada aos mesmos.

Todos os binários que foram ligados contra a glibc desde a introdução de versões de símbolos possuem uma lista de quais símbolos são necessários (isso é basicamente um atalho para que o ligador (linker) possa decidir procurar nas versões dos símbolos para saber se todos os símbolos necessários estão presentes) de cada biblioteca.

Agora, o que o formorer está implementando é uma maneira de especificar, por exemplo

GLIBC_2_0: libc 6 libc6 (>= 2.0.0)
GLIBC_2_1: libc 6 libc6 (>= 2.1.0)

e assim por diante. Esse formato é compatível com as ferramentas atuais (essas entradas são então ignoradas). Nós geramos uma lista de dependências que precisamos para mesclar para a mais estrita. Caso um binário dependa dos símbolos GLIBC_2_0 e GLIBC_2_1, o resultado seria “libc6 (>= 2.1.0)”, que é uma versão bem antiga. Os binários serão executados normalmente, uma vez que eles não precisam de nada novo, portanto, a especificação de dependência está correta.

O resultado final é que binários compilados dessa forma não precisarão ser backportados, uma vez que eles já podem ser instalados sem problemas em releases mais antigos.

Caso você tenha mais perguntas, pergunte.

Simon

Entenderam a idéia ? Se isso realmente funcionar, esqueça o trabalho que sempre temos ao precisar recompilar pacotes mais novos em um release antigo somente para que as versões corretas sejam substituídas corretamente em “shlibs:Depends“.

Como ele exemplificou, o caso da glibc é clássico. Eu mesmo já cansei de me deparar com casos em que eu precisava de uma versão mais nova de um software já empacotada na unstable e só não consegui simplesmente pegar o pacote da unstable e simplesmente instalá-lo na stable porque as informações de dependência estavam infladas, visto que o pacote havia sido gerado em um ambiente de compilação unstable.
Com o sistema de shlibs realmente indo a fundo e cavando exatamente qual versão de cada símbolo é necessária, as chances de podermos utilizar pacotes Debian feitos para um release (entenda-se distribuição, nesse caso) mais novo em um release mais antigo são bastante altas.

Isso iria diminuir muito o trabalho do pessoal do backports.org, por exemplo, e facilitar a vida de muitos administradores de sistema. Ah ! E sabe o formorer que ele citou ? É mais um desenvolvedor Debian, Alexander Wirt, que, segundo ele, já está trabalhando em uma reescrita do dpkg-shlibdeps que vai trazer essa nova funcionalidade ao utilitário.

Ok, isso seria um bom banho de água fria diretamente na cabeça daqueles que dizem que o Debian não inova. Talvez não tenhamos as versões mais novas de todos os softwares sempre (mas mesmo isso é questionável), mas mudanças profundas e realmente úteis como essas são uma prova de que o Debian está interessado em fazer as coisas da forma correta e não criar retalhos.