VirtualBox e Ubuntu Gutsy Gibbon
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.
Contenido
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