Como montar imagem VDI (VirtualBox) no Linux

Usei neste artigo o Slackware 13.1-x86_64 kernel 3.2.0 Multilib. Creio que deve funcionar normalmente para qualquer distribuição com os pacotes necessários instalados.

[ Hits: 20.715 ]

Por: krum em 25/01/2012


Carregando o módulo e montando a imagem



Bem, chegamos à parte de carregamento de módulo. Se você chegou até aqui, é porque correu tudo bem.

Carregue o modulo 'nbd':

# modprobe nbd

Usando o QEMU para montar/conectar o dispositivo:

# qemu-nbd -c /dev/nbd0 /imagem.vdi

Comigo, ficou assim o resultado do comando:
# qemu-nbd -c /dev/nbd0 /media/disk/Windows\ XP.vdi

Montando o VDI do Windows XP:

# mount /dev/nbd0p1 /mnt/hd

No caso do Linux, será criado 'nbd0p2' pelas partições existentes. Às vezes a partição Raiz pode ser o 'nbd0p1' ou 'nbd0p2', dependendo da partição Swap e da configuração do seu disco.

# mount /dev/nbd0p1 /mnt/hd

Ou:

# mount /dev/nbd0p2 /mnt/hd

Se você se deparar com essa mensagem:
"mount: special device /dev/nbd0p1 does not exist"

É que o módulo 'nbd' não foi carregado corretamente e não criou o dispositivo especial.

Desconecte a imagem carregada com:

# qemu-nbd -d /dev/nbd0

Baixe o módulo 'nbd' com o comando:

# rmmod -f nbd
Carregue novamente o módulo 'nbd':

# modprobe nbd max_part=15

Agora execute os mesmo passos novamente:

# qemu-nbd -c /dev/nbd0 /imagem.vdi

Montando, de novo:

# mount /dev/nbd0p1 /mnt/hd

Ou:

# mount /dev/nbd0p2 /mnt/hd

Se não recebeu nenhuma mensagem de erro, é porque ocorreu tudo bem. Cheque para ver se está montado corretamente:

# mount

Se aparecer algo como:
/dev/nbd0p2 on /mnt/hd type reiserfs (rw)

Está tudo OK....

Configurações finais

Bem, eu poderia deixar o meu módulo carregar as opções adicionais no Boot pelo "rc.local", mas por estética e teimoso, quis colocar a opção: “modprobe nbd max_part=15” dentro do kernel do meu Linux e recompilar de novo o modulo 'nbd'.

Para quem tem o mesmo interesse que o meu, vai a dica aí.

Entrando na pasta do kernel:

# cd /usr/src/linux

Editando o modulo 'nbc.c':

# mcedit drivers/block/nbd.c

Procure pelas seguintes linhas. Antes:

static unsigned int nbds_max = 16;
static struct nbd_device *nbd_dev;
static int max_part;


E modifique como abaixo. Depois:

static unsigned int nbds_max = 16;
static struct nbd_device *nbd_dev;
static int max_part;
static int max_part = 15;


Salve o código e recompile o kernel:

# make SUBDIRS=drivers/block/ modules

Depois instale o módulo compilado:

# make install modules

Agora, toda vez que você for carregar o modulo 'nbd', não precisa especificar as opções adicionais.
Sendo que antes, ficava:

# modprobe nbd max_part=15

Agora, depois de modificado e recompilado o módulo, ficou:

# modprobe nbd

Coloque o módulo 'nbd' no "rc.local" para iniciar no Boot:

# echo "modprobe nbd" >> /etc/rc.d/rc.local


Bom galera, como este é o meu primeiro artigo, espero que gostem.

Aceito críticas para que eu possa evoluir meus artigos futuros.
Página anterior    

Páginas do artigo
   1. Curiosidade
   2. Carregando o módulo e montando a imagem
Outros artigos deste autor

Snort + BarnYard2 + Snorby no Slackware 14.1

Leitura recomendada

Trabalhando com init no Debian

Instalando e configurando um servidor CVS com Subversion

Configuração de Servidor SFTP

Captive-NTFS com kernel 2.6

Montando Volumes no Docker

  
Comentários
[1] Comentário enviado por valter.vieira em 25/01/2012 - 17:56h

Parabéns pelo, artigo irei testar sempre tenho que utilizar o Samba quando estou precisando utilizar e transferir arquivos entre as maquinas virtuais.

[2] Comentário enviado por vinyanalista em 27/01/2012 - 00:42h

Bem, já que você pediu sugestões, não vou me incomodar em ser sincero, rsrsrsrs.

Me interessei bastante pelo seu artigo quando li o título, sinto que ele agilizaria minha vida enquanto uso minhas máquinas virtuais, e por isso vou testá-lo depois no meu Debian. Aliás, sempre me perguntei se era possível acessarmos discos rígidos virtuais da mesma forma como fazemos com imagens de CD, mas ainda não tinha ouvido falar a respeito, você é a primeira pessoa que me traz essa informação!

Utilizo VirtualBox, sei o que é um VDI, o que é o QEMU, o que são a maioria desses utilitários que você usou, como o mkdir, wget, make, etc., acho que já vi o nome VDE em algum lugar... mas eu apreciaria uma explicação: o que é o NBD? Pelo que eu entendi, ele deve ser quem faz a mágica da montagem, né? Já que você inseriu um módulo dele no kernel... O VDE tem alguma participação nisso também, sabe dizer? (leve à mal não, mal de quem é curioso querer saber)

Ah, e onde você descobriu isso tudo? Cite suas fontes! ;)

Abraço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts