VirtualBox e Ubuntu Gutsy Gibbon

De GALPon WiKi

Visto que cada día a máis xente interésalle a utilización de máquinas virtuais e que trala aparición das versións 7.10 (Gutsy Gibbon) de Ubuntu e a 1.5.2 de VirtualBox e a que xorden unha serie de “conflitos", dispóñome a recompilar aquí as miñas notas espalladas en cadernos, enlaces etc...

Antes de nada deixar claras dúas cousiñas que ós menos experimentados adoitan confundir: A versión totalmente libre de VirtualBox chamada VirtualBox-OSE (Open Source Edition) dispoñible nos repositorios por defecto das distribucións, non dispón de soporte para USB nin da utilidade VBoxGuestAdditions imprescindible para dispor de cartafois compartidos entre o sistema anfitrión (host, sistema operativo principal sobre o que está instalado VirtualBox) e o sistema invitado (guest, sistema operativo instalado na máquina virtual). Esta utilidade (VBoxGuestAdditions) é tamén a que se encarga de permitir o copiar/pegar entre aplicacions do anfitrión e o invitado.

Polo tanto, só o problema xerado por algúns procesadores e que obstaculiza a compilación do módulo "vboxdrv" é o único aplicable as duas variantes de virtualbox. O resto das miñas notas son só aplicables ó caso de que utilicemos a versión "PUEL" (Personal User and Evaluation License) que podemos obter desta páxina: http://www.virtualbox.org/wiki/Downloads

Unha vez instalado e creados os usuarios do grupo "vboxuser", comeza a tarefa.


Primeiro "conflito" non compila o módulo "vboxdrv"

Este conflito xorde nalgúns procesadores (no meu caso concreto cun AMD Athlon XP) sospeito que debido a que probablemente (a miña ignorancia sobre hard é supina) AMD nas modificacións para mellorar o pouco competitivo Athlon (por rendemento en comparación cos Pentiun IV) introduciron algun proceso a 64 bits, xa que o erro que me arroxa ó intentar compilar é o propio dunha arquitectura de 64 bits.

Imos ó caso, se nos sae a seguinte mensaxe de erro:

VirtualBox kernel driver not installed. The vboxdrv kernel module was
either not loaded or /dev/vboxdrv was not created for some reason.
Re-setup the kernel module by executing '/etc/init.d/vboxdrv setup' as root.
VBox status code : -1908 (VERR_VM_DRIVER_NOT_INSTALLED)
Result Code: 0x800004005

e tras executar, como nos indican

# (ou sudo)  /etc/init.d/vboxdrv setup

devólvenos estoutro mensaxe:

Starting VirtualBox kernel module FATAL: Error inserting vboxdrv
(/lib/modules/2.6.18.8-452-default/misc/vboxdrv.ko):
Invalid argument failed (modprobe vboxdrv failed)

Para arranxar isto só temos que modificalo noso arquivo menu.lst que atoparemos en /boot/grub. Aconsello facer unha copia deste arquivo no noso cartafol /home por exemplo, por se algo sae mal. Para iso abrimos un terminal, entramos en modo root e editamos a configuración de "grub"

MOI IMPORTANTE: ISTO FACÉMOLO NO S.O. ANFITRIÓN

# (ou sudo) nano /boot/grub/menu.lst

E engadimos na entrada do o noso Kernel:

nmi_watchdog=0

De xeito que nos quede algo como isto:

kernel /boot/vmlinuz-2.6.20-16-generic root=UUID=005ec930-110e-4931-8e2a-eb8fff9e82db ro quiet splash locale=es_ES nmi_watchdog=0

ou, segundo núcleo e S.O. como isto:

kernel /boot/vmlinuz-2.6.18.8-452-default root=/dev/hda1 vga=0x314 resume=/dev/hda2 splash=silent showopts nmi_watchdog=0

Reiniciamos o computador (reinicio completo, que algún se despista e só reinicia as X)

Agora xa poderemos executar a orde que nos indicaba o informe de fallo inicial

# (ou sudo) /etc/rc.d/vboxdrv setup


Segundo "conflito" mensaxe de erro ó montar un dispositivo USB

A xente de VirtualBox deixa claro que esta é unha opción non dispoñible por defecto, polo que se intentamos montar un dispositivo USB devolveranos o seguinte, ou moi similar, mensaxe:

"Could not loade the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer.
Result Code:
0×80004005
Component:
Host
Interface:
IHost {81729c26-1aec-46f5-b7c0-cc7364738fdb}
Callee:
IMachine {31f7169f-14dá-4c55-8cb6-a3665186e35e}".

Neste caso a solución pasa por editar o arquivo "mountdevsubfs.sh" e aínda que isto poderíase facer logo de instalar unha máquina virtual, optei por facelo antes, para iso editamos

MOI IMPORTANTE: ISTO FACÉMOLO NO S.O. ANFITRIÓN

# (ou sudo) nano /etc/init.d/mountdevsubfs.sh

arquivo orixinal:

(...)
#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount -rbind /dev/bus/usb /proc/bus/usb

só descomentar as 4 liñas do final deste bloque, para que quede así:

(...)
#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount -rbind /dev/bus/usb /proc/bus/usb

Por suposto gardamos, pechamos e listo. ó reiniciar, o soporte USB nas máquinas virtuais deberá estar funcionando, aínda que nalgúns casos non é así, segue sen deixarme montar os USB, entón, hai que editar o arquivo "40-permissions.rules" para modificar permisos.

# (ou sudo) nano /etc/udev/rules.d/40-permissions.rules

Buscar a liña:

SUBSYSTEM=="usb_device", MODE="0664"

e modificar os permisos así:

SUBSYSTEM=="usb_device", MODE="0666"

Nalgún S.O. anfitrión, pode ser necesario, ademais (ou no canto do anterior), modificar o "fstab"

# (ou sudo) /etc/fstab

buscamos a liña (ou moi similar):

usbfs /proc/bus/usb usbfs noauto 0 0

comentámola, para que quede así:

#usbfs /proc/bus/usb usbfs noauto 0 0

e creamos unha nova:

usbfs /proc/bus/usb usbfs defaults,devmode=666 0 0

os máis avezados xa saberán como simplificar este paso que acabamos de facer.


Terceiro "conflito" no cartafol compartido non podo copiar/mover do invitado ó anfitrión

Este conflito só se presentóu cando o S.O. invitado é un S.O. GNU/Linux, por iso a elo voume a referir.

Antes de nada deixar claro que a opción de dispor de cartafol "compartido" (poden ser máis dunha) pasa por instalar as utilidades "VBoxGuestAdditions", así que imos con elas.

Coa máquina virtual arrancada, cargado e operativo o S.O invitado, facemos click no menú "Dispositivos" da fiestra de VirtualBox (recordar que para sacar o punteiro do rato do sistema invitado, debemos, por configuración orixinal, supondo que non modificamos a "host key", pulsar unha vez a tecla "Ctrl" da dereita do noso teclado), como dicía, dirixímonos a “Dispositivos" eliximos a primeira opción "Montar CD/DVD-ROM" e despois a última opción do novo desplegable "Imaxe CD/DVD-ROM".

MOI IMPORTANTE: ISTO FACÉMOLO NO S.O. INVITADO

Agora no noso S.O. invitado dirixímonos a “/media/cdrom" ou a “/mnt/cdrom" (segundo cal sexa o S.O. invitado) e abrimos o contido dese "cdrom.iso", ademais doutras cousas veremos un ficheiro co seguinte nome:

VBoxLinuxAdditions.run

Tócanos executalo desde unha terminal do noso S.O. invitado, para iso desprazámonos ó cdrom.iso, normalmente a orde será (só dependerá de como o S.O. invitado faga as montaxes)

$ cd /media/cdrom

pode ser /media/cdrom0 ou /mnt/cdrom etc...

Unha vez esteamos nese directorio executamos como administrador:

# (ou sudo) sh ./VBoxLinuxAdditions.run

Xa so queda montar o cartafol

# (ou sudo) mount -t vboxsf nome_cartafol puntodemontaje

exemplo: supoñamos que temos (ou creamos) para este mester o cartafol "Compartido" no S.O. anfitrión e queremos dispor del na zona de “usuario" do S.O. invitado: Situados como usuario en /home/usuario

$ mkdir Compartida
# (ou sudo) mount -t vboxsf Compartida /home/usuario/Compartida

Se abrimos o cartafol veremos que xa temos dispoñibles os documentos/ficheiros do cartafol "Compartido" do anfitrión no invitado, pero..., sempre hai un pero, non poderemos mover/copiar/crear nada cara a ela (si desde ela) a non ser que esteamos traballando como "root".

Podemos facer que o cartafol non teña o mesmo nome nos dous S.O. (anfitrión e invitado), supoñamos que queremos que no anfitrión queremos ter distintos cartafois para distintos S.O. invitados e creamos os cartafois:

  • Debian_Etch
  • Mandriva
  • etc...

e no invitado queremos simplemente chamala "Cartafol_Anfitrion" (pode levar espazos e tíldes, pero como sabedes non é o máis recomendable), deste xeito a orde de montaxe sería:

# (ou sudo) mount -t vboxsf Debian_Etch /home/usuario/Cartafol_Anfitrion

Como creo que o "axeitado" é que se poida acceder o cartafol como "usuario", despois de centos de voltas, con configuracións do "fstab" do invitado, crear usuarios con permisos no anfitrión, activar o "bit" de SUID etc, etc..., sen que nada funcionara doadamente, chegou o noso amigo Andrés (a.k.a. Odo) púxose ó tallo e atopou a solución, aqui descríboa:

MOI IMPORTANTE: ISTO FACÉMOLO NO S.O. INVITADO

engadimos a “fstab" unha liña con este contido:

nome_cartafol_en_anfitrión   /punto/de/montaxe/en/invitado  vboxsf  rw,gid=1000,uid=1000,auto  0  0

Os valores de GID e de UID sabémolos editando o ficheiro "/etc/group/"

$ nano /etc/group

diranos que hai un erro lendo, prememos [Enter] e xa nos permite ler o ficheiro, buscamos nel ó usuario "usuario" e veremos algo así:

usuario:x:1000:usuario

interésanos o terceiro campo (delimitados os campos polos ":" dous puntos) Podemos facer dúas cousas, permitir só a usuario e/ou permitir a "" todos os usuarios, para iso utilízase o GID de usuario ou (para todos) o GID de “users” No exemplo, deixamos restrinxido o uso ó usuario (por antonomasia)

Na maioría dos casos xa debería montar ese cartafol no inicio do S.O invitado e montarao cos permisos suficientes para que desde o invitado poidamos crear, etc... ficheiros nela.

Seguimos cos pero... ás veces non é así, xa que o S.O. invitado ó cargarse, cando procede á montaxe de dispositivos aínda non ten "levantadas" as "GuestAdditions", polo tanto daranos (durante a carga) unha mensaxe de erro, así que teriamos que montalo manualmente unha vez arrincado, co subseguinte problema de que a montaxe farao como "root", co que sería como unha pixota que se morde a cola.

Para solucionalo, Andres, fixo o seguinte:

Crear un script que "repita" a montaxe de "este” dispositivos ó final da carga do S.O. e así, xa "levantadas" as GuestAdditions, recoñézao sen problemas, así que ó choio:

MOI IMPORTANTE: ISTO FACÉMOLO NO S.O. INVITADO

# (ou sudo) nano /etc/init.d/remontaxe

chamemoslle como queiramos, uso o termo "remontaxe" para que vos sirva de referencia. incluímos o seguinte script:

#!/bin/bash
mount nome_cartafol_en_anfitrión
exit 0

nome_cartafol_en_anfitrion debe ser exatamente o mesmo parámetro que o de comezo da liña de “fstab" que creamos antes.

dámoslle permisos de execución

# (ou sudo chmod +755 remontaxe

actualizamos

# (ou sudo) update-rc.d remontaxe default

Xa podemos reiniciar o S.O. invitado e todo debería funcionar sen contratempos.


Sincronizar unha Palm (PalmOS) con un invitado Windows mediante "HotSync"

Para poder empregar a sincronización HotSync é preciso:

Primeiro, crear o grupo "usbfs" con GID 1001 e asignarlle o usuario (ou usuarios)

Para elo editamos (como root) o ficheiro /etc/group e o final engadimos a liña seguinte:

usbfs:x:1001:usuario1,usuario2,etc..

Ou podemos utilizar o metodo rápido, executando a seguinte orde na terminal:

# (ou sudo) echo usbfs:x:1001:usuario >> /etc/group

que xa nos engade esa liña no ficheiro indicado

Segundo, procedemos a habilitar unha liña de montaxe no "fstab" co formato de ficheiro "usbfs" e os parámetros e as indicacions de permisos necesarios para a sincronización.

Editamos (como root) o ficheiro /etc/fstab e engadimos unha liña como a que sigue:

none  /proc/bus/usb  usbfs  devgid=1001,devmode=664  0  0

Ou como no caso anterior a orde rápida desde terminal:

# (ou sudo) echo none  /proc/bus/usb  usbfs  devgid=1001,devmode=664  0  0 >> /etc/fstab


Fontes documentais: http://howto.landure.fr/gnu-linux/ubuntu-gutsy-gibbon/virtualbox-ose-for-ubuntu-7-10-gutsy-gibbon http://www.virtualbox.org/ticket/747 http://ubuntuforums.org/showthread.php?p=2507870 http://www.forosuse.org/forosuse/showpost.php?p=71642&postcount=1