Diferencia entre revisiones de «VirtualBox e Ubuntu Gutsy Gibbon»

De GALPon WiKi
(Nueva página: 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...)
 
Línea 14: Línea 14:
  
 
Imos ó caso, se nos sae a seguinte mensaxe de erro:
 
Imos ó caso, se nos sae a seguinte mensaxe de erro:
  VirutalBox 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
+
  VirutalBox 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
 
e tras executar, como nos indican
 
  # (ou sudo)  /etc/init.d/vboxdrv setup
 
  # (ou sudo)  /etc/init.d/vboxdrv setup
 
devólvenos estoutro mensaxe:
 
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)
+
  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 modificar 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"
 
Para arranxar isto só temos que modificar 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"
Línea 28: Línea 34:
 
  nmi_watchdog=0
 
  nmi_watchdog=0
 
De xeito que nos quede algo como isto:
 
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
+
  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:
 
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
+
  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)
 
Reiniciamos o computador (reinicio completo, que algún se despista e só reinicia as X)
  
Línea 119: Línea 125:
  
 
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:
 
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
+
*Debian_Etch
Mandriva
+
*Mandriva
etc...
+
*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:
 
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
 
  # (ou sudo) mount -t vboxsf Debian_Etch /home/usuario/Cartafol_Anfitrion

Revisión del 16:34 1 nov 2007

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).

Polo tanto, só o problema xerado por algúns procesadores e que obstaculiza a compilación do módulo "vboxdrv" é aplicable ó caso da utilización de “virtualbox-ose". 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:

VirutalBox 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 modificar 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.


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