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.