Sunteți pe pagina 1din 37

Mquinas Virtuales

Antonio Carrillo Ledesma


January 9, 2016

Mquinas Virtuales

ndice
1 Mquinas Virtuales
1.1 Tipos de Mquinas Virtuales . . . . . . . . . . . . .
1.2 Aplicaciones de las Mquinas Virtuales de Sistema .
1.3 Tcnicas de Virtualizacin . . . . . . . . . . . . . .
1.4 Qu Necesito para Usar una Mquina Virtual? . .
1.5 Cmo Funciona una Mquina Virtual? . . . . . . .
1.6 Ventajas y Desventajas . . . . . . . . . . . . . . . .
1.6.1 Ventajas . . . . . . . . . . . . . . . . . . . .
1.6.2 Desventajas . . . . . . . . . . . . . . . . . .
1.7 Uso de Mquinas Virtuales . . . . . . . . . . . . . .
2 Software Libre y Propietario
2.1 Software Libre . . . . . . . . . . .
2.1.1 Tipos de Licencias . . . .
2.2 Software Propietario . . . . . . .
2.3 Implicaciones Econmico-Polticas
3 Bibliografa

antoniocarrillo@ciencias.unam.mx

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

2
2
3
4
5
6
6
8
10
11

.
.
.
.

26
26
29
31
32
36

Antonio Carrillo Ledesma

Mquinas Virtuales

Mquinas Virtuales

Entendamos por una mquina virtual a un Software (vase [10], [11], [9] y
[8]) que simula a una computadora y puede instalar y usar otros sistemas
operativos de forma simultanea como si fuese una computadora real sobre
nuestro sistema operativo1 .
Una caracterstica esencial de las mquinas virtuales es que los procesos
que ejecutan estn limitados por los recursos y abstracciones proporcionados
por ellas. Estos procesos no pueden escaparse de esta "computadora virtual". Uno de los usos domsticos ms extendidos de las mquinas virtuales
es ejecutar sistemas operativos para "probarlos". De esta forma podemos
ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Windows 7 por ejemplo) sin
necesidad de instalarlo directamente en nuestra computadora y sin miedo a
que se desconfigure el sistema operativo primario.

1.1

Tipos de Mquinas Virtuales

Las mquinas virtuales se pueden clasificar en dos grandes categoras segn


su funcionalidad y su grado de equivalencia a una verdadera mquina:
Mquinas virtuales de sistema (en ingls System Virtual Machine).
Tambin llamadas mquinas virtuales de Hardware, permiten a la mquina fsica subyacente multiplicarse entre varias mquinas virtuales,
cada una ejecutando su propio sistema operativo. A la capa de Software
que permite la virtualizacin se la llama monitor de mquina virtual o
hypervisor. Un monitor de mquina virtual puede ejecutarse o bien directamente sobre el Hardware o bien sobre un sistema operativo ("host
operating system").
Mquinas virtuales de proceso (en ingls Process Virtual Machine).
A veces llamada "mquina virtual de aplicacin", se ejecuta como un
proceso normal dentro de un sistema operativo y soporta un solo proceso. La mquina se inicia automticamente cuando se lanza el proceso
que se desea ejecutar y se detiene para cuando ste finaliza. Su objetivo es el de proporcionar un entorno de ejecucin independiente de
1

Tal y como puede verse reflejado en la definicin de mquina virtual, en este texto nos
estamos focalizando en las maquinas virtuales de sistema. Existen otro tipo de mquinas
virtuales, como por ejemplo las mquinas virtuales de proceso o los emuladores.

antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
la plataforma de Hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute
siempre de la misma forma sobre cualquier plataforma.

1.2

Aplicaciones de las Mquinas Virtuales de Sistema

Varios sistemas operativos distintos pueden coexistir sobre la misma computadora, en slido aislamiento el uno del otro, por ejemplo para probar
un sistema operativo nuevo sin necesidad de instalarlo directamente. La
mquina virtual puede proporcionar una arquitectura de instrucciones que
sea algo distinta de la verdadera mquina. Es decir, podemos simular Hardware.
Varias mquinas virtuales cada una con su propio sistema operativo llamado sistema operativo "invitado" o "guest", pueden ser utilizadas para
consolidar servidores. Esto permite que servicios que normalmente se tengan
que ejecutar en computadoras distintas para evitar interferencias, se puedan
ejecutar en la misma mquina de manera completamente aislada y compartiendo los recursos de una nica computadora. La consolidacin de servidores
a menudo contribuye a reducir el coste total de las instalaciones necesarias
para mantener los servicios, dado que permiten ahorrar en Hardware.
La virtualizacin es una excelente opcin hoy da, ya que las mquinas
actuales Laptops, desktops, servidores en la mayora de los casos estn
siendo "subutilizados" gran capacidad de disco duro, memoria RAM, etc.
, llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar,
la necesidad de nuevas mquinas en una ya existente permite un ahorro
considerable de los costos asociados energa, mantenimiento, espacio, etc
.
La gran mayora de mquinas virtuales, como por ejemplo KVM, Virtualbox o VMWare, permiten instalar prcticamente cualquier sistema operativo
como por ejemplo Linux, Android, Mac OS X, Windows, Chrome OS, etc.
Sin embargo existen otras mquinas virtuales, como por ejemplo Virtual PC,
Hiper-V o Parallels, que estn principalmente destinadas a virtualizar Windows.
Cada uno de los sistemas operativos que virtualizamos es completamente
independiente de los otros sistemas operativos. De este modo en el caso que
una de las mquinas virtuales deje de funcionar, el resto seguir funcionando
sin ningn tipo de problema. Una vez instalado un sistema operativo en
la mquina virtual, tenemos que usar el sistema operativo virtualizado del
antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
mismo modo que lo usaramos si lo hubiramos instalado en nuestro ordenador. Una mquina virtual dispone de todos los elementos de que dispone un
ordenador real. Dispone de disco duro, memoria RAM, unidad de CDROM,
tarjeta de red, tarjeta de vdeo, etc, pero a diferencia de un ordenador real
estos elementos en vez de ser fsicos son virtuales.
Todos los elementos de una mquina virtual se encapsulan en un conjunto
de archivos. Esto permite que podamos copiar un sistema operativo virtual
de un ordenador a otro o que podemos realizar copias de seguridad sin ningn
tipo de problema, de forma fcil y rpida.

1.3

Tcnicas de Virtualizacin

Bsicamente se reconocen tres tipos de virtualizacin, algunas de las cuales


son usadas actualmente en la gran mayora de los sistemas operativos, generalmente sin que el usuario este consiente de que usa virtualizacin, el
ejemplo ms comn y omnipresente es la mquina virtual del lenguaje de
programacin de JAVA.
Emulacin del Hardware subyacente (ejecucin nativa) Esta tcnica
se suele llamar virtualizacin completa full virtualization del Hardware,
y se puede implementar usando un hypervisor de Tipo 1 o de Tipo 2:
1. Monitor de tipo I, se ejecuta directamente sobre el Hardware.
2. Monitor de tipo II, se ejecuta sobre otro sistema operativo.
Cada mquina virtual puede ejecutar cualquier sistema operativo soportado por el Hardware subyacente. As los usuarios pueden ejecutar dos o ms
sistemas operativos distintos simultneamente en computadoras "privadas"
virtuales. Actualmente tanto Intel como AMD han introducido prestaciones
a sus procesadores x86_64 para permitir la virtualizacin de Hardware.
Emulacin de un sistema no nativo Las mquinas virtuales tambin
pueden actuar como emuladores de Hardware, permitiendo que aplicaciones
y sistemas operativos concebidos para otras arquitecturas de procesador se
puedan ejecutar sobre un Hardware que en teora no soportan. Esta tcnica
permite que cualquier computadora pueda ejecutar Software escrito para la
mquina virtual. Slo la mquina virtual en s misma debe ser portada a
cada una de las plataformas de Hardware.
antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
Virtualizacin a nivel de sistema operativo Esta tcnica consiste en
dividir una computadora en varios compartimentos independientes de manera
que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del usuario,
el sistema en su conjunto acta como si realmente existiesen varios servidores
ejecutndose en varias mquinas distintas.

1.4

Qu Necesito para Usar una Mquina Virtual?

Actualmente la virtualizacin de un sistema operativo o servidor se puede


implementar por Software o por Hardware. Como en este texto me focalizo
en la virtualizacin por software, lo nico que precisamos para poder usar una
mquina virtual es un ordenador medianamente actual e instalar y configurar
el software de la mquina virtual.
Cuanto ms potente y actual sea el ordenador que tengamos, mejor experiencia obtendremos trabajando con sistemas operativos virtualizados. Algunos de los puntos importantes para obtener un rendimiento ptimo del
sistema operativo virtualizado son los siguientes:
Disponer de un procesador rpido y que disponga de capacidad de virtualizacin por Hardware (Intel VTx/AMD-v). Cuanto mayor sea la
capacidad del procesador mejor experiencia de virtualizacin obtendremos. Cualquier ordenador actual dispone de un procesador apto
para virtualizar sistemas operativos.
Disponer de espacio suficiente en el disco duro. Adems es interesante
disponer de un disco duro con una buena la velocidad de lectura y
escritura como por ejemplo un disco SSD.
Necesitamos disponer de memoria RAM suficiente y adecuada. Cuanta
ms cantidad de memoria RAM y cuanto ms rpida sea, mejores resultados de virtualizacin obtendremos. As por lo tanto, es mejor tener
4GB de RAM que 2GB, y del mismo modo es mejor disponer de una
memoria RAM del tipo DDR4 que DDR3. La cantidad de memoria
RAM ideal depender del sistema operativo que queremos virtualizar
y del nmero de sistemas operativos que queramos virtualizar de forma
simultanea. Si tan solo queremos virtualizar un sistema operativo con
2 o 3 GB de RAM debera ser suficiente.
antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
Sin duda el hecho de tener una buena GPU tambin ayudar a disponer
de una mejor experiencia de virtualizacin. Por lo tanto es recomendable disponer de una buena tarjeta grfica con aceleracin grfica.

1.5

Cmo Funciona una Mquina Virtual?

Explicar el funcionamiento en detalle de una mquina virtual es algo sumamente complicado y engorroso. No obstante a grandes rasgos podemos decir
que una mquina virtual es un software que mediante una capa de virtualizacin se comunica con el hardware que tenemos disponible en nuestro
ordenador consiguiendo de este modo emular la totalidad de componentes de
un ordenador real. De este modo la mquina virtual ser capaz de emular
un disco duro, una memoria RAM,una tarjeta de red, un procesador, etc.
Una vez que sabemos esto, cuando abrimos una mquina virtual, como
por ejemplo Virtualbox, nos encontramos con un entorno grfico que nos
permitir configurar y asignar recursos a cada uno de los componentes fsicos
que emula la mquina virtual. As por ejemplo en prcticamente la totalidad
de mquinas virtuales deberemos definir detalles del siguiente tipo:
Espacio que queramos asignar a nuestro disco duro.
Memoria RAM que queremos asignar a la mquina virtual.
La memoria de nuestra tarjeta grfica.
La configuracin de red que queremos.
etc.
Una vez configurados estos parmetros habremos creado una mquina
virtual para instalar un sistema operativo, de este modo tan solo tendremos
que abrir la mquina virtual que se acaba de crear e instalar el sistema
operativo tal y como si se tratar de un ordenador real normal y corriente.

1.6

Ventajas y Desventajas

Como toda nueva tecnologa, la virtualizacin tiene ventajas y desventajas,


las cuales deben de ser sopesadas en cada mbito de implementacin. Lo que
es un hecho que permite en un mismo equipo de cmputo correr ms de un
sistema operativo o distintas versiones del mismo.
antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
Pero queda claro que uno de los inconvenientes de las mquinas virtuales,
es que agregan gran complejidad al sistema en tiempo de ejecucin. Esto tiene
como efecto la ralentizacin del sistema, es decir, el programa no alcanzar la
misma velocidad de ejecucin que si se instalase directamente en el sistema
operativo "anfitrin" (host) o directamente sobre la plataforma de Hardware.
Sin embargo, a menudo la flexibilidad que ofrecen compensa esta prdida de
eficiencia. Si la virtualizacin es por Hardware, la velocidad de ejecucin es
ms que aceptable para la mayora de los casos.
Qu Utilidades nos Proporcionan las Mquinas Virtuales? Las
utilidades y beneficios que podemos sacar de una mquina virtual son numerosos. Algunos de los usos que podemos dar a las mquinas virtuales son
los siguientes:
Para probar sistemas operativos. Adems el proceso de una instalacin
en la mquina virtual es sumamente fcil ya que no nos tendremos que
preocupar de crear particiones adicionales en nuestro disco duro, etc.
Para usar un software que no est disponible en nuestro sistema operativo. As por ejemplo si somos usuarios de Linux y queremos usar
Photoshop, lo podemos hacer a travs de una mquina virtual.
En ocasiones tenemos que usar software que nicamente se puede ejecutar en sistemas operativos que son obsoletos. As, por lo tanto si
tenemos un programa que solo se puede usar en Windows 98, podemos
crear una mquina virtual con Windows 98 y ejecutar y usar el software
sin ningn tipo de problema.
Podemos experimentar en el sistema operativo que corre dentro de la
mquina virtual haciendo cosas que no nos atreveramos a realizar con
nuestro sistema operativo, como por ejemplo aplicar una actualizacin
de software, navegar de forma segura en una pgina web que consideramos sospechosa, etc.
Podemos usar las mquinas virtuales como sandbox con el fin de por
ejemplo ejecutar aplicaciones maliciosas o abrir correos sospechosos en
un ambiente controlado y seguro.
Podemos crear/simular una red de ordenadores con tan solo un ordenador. Esta red de ordenadores virtualizados la podemos usar con fines
antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
formativos y de este modo adquirir conocimientos sobre administracin
de redes.
Si eres un desarrollador de software puedes checar si el programa que
ests desarrollando funciona correctamente en varios sistemas operativos.
Para probar versiones alfa, Beta y Release candidate de ciertos programas y sistemas operativos.
Para montar un servidor web, un servidor VPN, un servidor de correo
o cualquier otro tipo de servidor.
Para probar multitud de programas en Windows y evitar que se ensucie el registro mediante las instalaciones y desinstalaciones de los
programas.
1.6.1

Ventajas

Adems de permitir correr mltiples sistemas operativos, diferentes versiones


de un mismo sistema pero con diferente Software que en principio puede ser
incompatible entre s.
Para usuarios de Windows, el hecho en s, de no tener por que lidiar con
problemas derivados de virus en Windows le confiere una gran ventaja desde
el punto de vista administrativo y del usuario final. Adems de, permitir
una administracin centralizada y que todas las mquinas virtuales tendran
la misma configuracin y paquetes sin importar el Hardware subyacente en
las que se ejecute el sistema operativo husped.
En el caso de instituciones educativas y en particular en las Aulas y
Talleres del Departamento de Matemticas de la Facultad de Ciencias de la
UNAM, es comn que en un mismo equipo de cmputo sea necesario correr
por un lado diferentes versiones de sistemas operativos por ejemplo Linux,
Windows XP, Windows 7, etc y por otro lado, en un sistema operativo,
correr diferentes versiones de un mismo paquete generalmente no se pueden
tener instalados simultneamente ms de una versin.
En este y en otros caso, las mquinas virtuales son una verdadera opcin
para coexistir simultneamente diferentes versiones de sistemas operativos y
en un mismo sistema mquinas virtuales corriendo las diversas versiones de
un mismo Software, adems se pueden configurar para que al momento de
antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
iniciarlas siempre corran a partir de una configuracin e instalacin base, de
tal forma que al ser lanzadas, el usuario pueda instalar, configurar e inclusive
daar la mquina virtual, pero al reiniciarse esta en una nueva sesin, todo
quede igual a la versin base, de esta forma no hay posibilidad de infeccin
de virus entre diversos lanzamientos de sesiones de la mquina virtual, la
actualizacin es centralizada y se puede hacer por red, sin intervencin del
usuario.
Por ello, es una opcin viable y comn tener en una mquina un sistema
husped como Linux Debian Estable y dentro de el, un grupo de mquinas
virtuales de Windows Windows XP, Windows 7, etc, en los que cada
mquinas virtual tenga instalado un grupo de Software agrupados por las
caractersticas del sistema operativo necesario para correr a todas las aplicaciones seleccionadas por ejemplo agrupados por la versin de Service
Pack.
Por otro lado, si se desconfigura un servidor o un sistema operativo virtualizado es sumamente fcil de restaurar si lo comparamos con un mquina
real. Si tomamos las precauciones necesarias podemos restaurar el estado
que tenia un sistema operativo virtualizado, o un servidor, de forma fcil y
rpida.
Si hablamos del entorno empresarial, la virtualizacin de sistemas operativos y de servidores supone un ahorro econmico y de espacio considerable.
Mediante el uso de la virtualizacin evitamos la inversin en multitud de
equipos fsicos ahorrando dinero y espacio.
Como acabamos de ver, el uso de mquinas virtual implica disponer de
menos equipos fsicos. Por lo tanto el hecho de virtualizar servidores o sistemas operativos puede suponer un ahorro importante en mantenimiento y
en consumo energtico.
Por otro lado, mediante la virtualizacin y el balanceo dinmico podemos
incrementar las tasas de servicio de un servidor del siguiente modo. Si
disponemos de un servidor WEB podemos asignar recursos adicionales al
servidor, como por ejemplo memoria RAM y CPU, en los picos de carga
para evitar que el servidor se caiga y de este modo incrementar la tasa de
servicio. Una vez finalizado el pico de carga podemos desviar los recursos
aplicados al servidor WEB a otra necesidad que tengamos. Por lo tanto
aparte de mejorar la tasa de servicio se pueden optimizar mejor los recursos.
Si estamos usando una mquina virtual en un entorno de produccin,
podemos ampliar los recursos de un sistema operativo o servidor de una forma
muy sencilla. Tan solo tenemos que acceder al software de virtualizacin y
antoniocarrillo@ciencias.unam.mx

Antonio Carrillo Ledesma

Mquinas Virtuales
asignar ms recursos de forma muy sencilla.
Es sumamente fcil crear un entorno para realizar pruebas de todo tipo.
As de este modo obtendremos fcilmente un entorno de pruebas completamente aislado del resto de sistemas.
Las mquinas virtuales y la virtualizacin permiten usar un solo servicio
por servidor virtualizado de forma fcil y sencilla. De este modo aunque se
caiga uno de los servidores virtualizado el otro seguir funcionando.
1.6.2

Desventajas

Entre la principal desventajas de virtualizar sistemas propietarios como Windows no as los sistemas libres como GNU Linux Debian (vase apndice
2.1) es que se puede violar el sistema de licenciamiento(vase apndice 2.3)
del Software instalado en las mquinas virtuales, esto es especialmente importante cuando se usa en ms de una mquina, pues la licencia usada para
la instalacin es violada cuando se tiene ms de una copia de la mquina
virtual o se ejecutan mltiples instancias de la mquina virtual.
En el caso de Windows XP Home, no se infringe la licencia mientras se
cuente con nmero de licencias igual al mximo nmero de mquinas virtuales lanzadas simultneamente. Para otras versiones del sistema operativo
Windows como es Windows XP Profesional, la virtualizacin se maneja con
licencias adicionales a la del sistema operativo original y se debe de contar con
tantas licencias como el mximo nmero de mquinas virtuales lanzadas simultneamente. Adems, es necesario contar con el tipo de licencia adecuada
para virtualizar a todos y cada uno de los paquetes de cmputo instalados
en cada mquina virtual y en las instancias para el nmero de mquinas
virtuales lanzadas simultneamente en uno o ms equipos.
Para usar una mquina virtual en condiciones favorables, necesitamos un
ordenador potente. Tenemos que tener en cuenta que si usamos 2 sistemas operativos de forma simultanea estamos empleando hasta el doble de recursos.
No obstante cualquier ordenador domstico medianamente actual dispone de
los recursos suficientes para usar una mquina virtual no dedicada.
Los sistemas operativos y los programas se ejecutaran con mayor lentitud en las mquinas virtuales. Esto es debido a que las mquinas virtuales
no pueden sacar un rendimiento ideal del hardware que tenemos en nuestro equipo. Cuanto ms potente sea nuestro ordenador menos se notar la
prdida de rendimiento.
Si tenemos un problema en el ordenador que aloja el sistema operativo
antoniocarrillo@ciencias.unam.mx

10

Antonio Carrillo Ledesma

Mquinas Virtuales
anfitrin puede caerse el servicio en la totalidad de mquina virtuales. Por
lo tanto el ordenador que hace funcionar la mquina virtual es una parte
crtica.
A pesar de los inconvenientes que se citan en este apartado, bajo mi
punto de vista la virtualizacin y las mquinas virtuales proporcionan unas
ventajas y una flexibilidad que compensan claramente los inconvenientes que
acabamos de citar.

1.7

Uso de Mquinas Virtuales

Qu Manejadores de Mquinas Virtuales Podemos Instalar? Hoy


en da tenemos a nuestra disposicin varios menejadores de maquinas virtuales. Algunas de ellos son las siguientes:2
Virtualbox: Software desarrollado por Oracle. Se trata de un software
multiplataforma capaz de virtualizar prcticamente la totalidad de sistemas operativos con arquitectura x86/amd64. Es la mquina virtual
multiplataforma, la base de este software dispone de una la licencia
GPL2, mientras que el pack de extensiones que aaden funcionalidades
estn bajo licencia privativa. Virtualbox es gratuito para un uso no
comercial.
Vmware Workstation Player: Software privativo multiplataforma desarrollado por EMC corporation y que es utilizado ampliamente en
el entorno profesional en las reas del cloud computing entre muchas
otras. Al igual que Virtualbox, esta mquina virtual nos permite virtualizar una gran diversidad de sistemas operativos. Vmware dispone
de muchas soluciones de virtualizacin y prcticamente todas son de
pago, no obstante Vmware Workstation Player es totalmente gratuita
para un uso no comercial.
Parallels: Aunque se trata de una mquina virtual multiplataforma,
acostumbra a ser usado por los usuarios del sistema operativo OS X
de Apple que desean virtualizar el sistema operativo Windows. Esta
mquina virtual es de pago y nicamente puede virtualizar los sistemas
operativos Windows y Mac OS.
2

Aparte de las mquinas virtuales citadas existen muchas otras ms.

antoniocarrillo@ciencias.unam.mx

11

Antonio Carrillo Ledesma

Mquinas Virtuales
Windows Virtual PC: Software gratuito y privativo propiedad de Microsoft que se puede usar tanto en Windows como en Mac OS. Virtual
PC est destinado nicamente a Virtualizar sistemas operativos Windows. Este software se puede usar y descargar gratuitamente a travs
del siguiente enlace.
QEMU/KVM: Software libre multiplataforma que dispone de licencia
GPL 2. QEMU permite virtualizar un gran nmero de sistemas operativos y adems soporta varios tipos de arquitectura como por ejemplo
X86, x86-64, MIPS, Arm, PowerPC, etc. El rendimiento que ofrece
QEMU es igual o superior a las opciones que hemos mensionado con anterioridad. Una gran ventaja de QEMU que permite usar una mquina
virtual sin necesidad de tener privilegios root.
En esta seccin mostraremos como trabajar con las mquinas virtuales
mediante KVM/QEMU en Linux Debian para probar imagenes ISO descargadas de la red, instalar y usar mquinas virtuales para Windows y Linux
entre otros.
Para ello, primeramente es necesario saber si nuestro equipo soporta la
virtualizacin por Hardware o Software, supondremos que tenemos acceso a
una mquina en la cual inicializamos usando una versin "Live" de CDROM,
DVD o USB para arrancar la computadora.
Revisin del tipo de virtualizacin soportado por la mquina Primeramente hay que revisar si hay soporte en Hardware para la virtualizacin,
usando:
$ egrep "vmx|svm" /proc/cpuinfo
si se soporta la virtualizacin por Hardware aparecer la bandera
Procesadores INTEL: vmx
Procesadores AMD: svm
Instalar y Usar mquinas virtuales Por omisin los equipos de tecnologa de bajo desempeo no soportan la virtualizacin a nivel de Hardware,
pero siempre es posible su emulacin mediante QEMU.
antoniocarrillo@ciencias.unam.mx

12

Antonio Carrillo Ledesma

Mquinas Virtuales
Si la computadora soporta virtualizacin a nivel de Hardware es posible
usar KVM (o en QEMU la bandera -enable-kvm). Segn la versin de Linux,
KVM puede existir como un paquete real o como uno virtual, si es virtual,
al instalar KVM lo que realmente se instala es QEMU y al correr KVM por
ejemplo
$ kvm
es remplazado por
$ qemu-system-x86_64 -enable-kvm
Estos tienen la misma sintaxis de uso, y para nuestros ejemplos slo es
necesario remplazar qemu-system-x86_64 por kvm y en ambos siempre se
usar qemu-img para manipular las imgenes.
Instalacin de KVM (recomendado para virtualizacin por Hardware)
# aptitude install kvm
Instalacin de QEMU (permite emular diversas arquitecturas de Hardware)
# aptitude install qemu
Observacin 1 El desempeo de la emulacin versus virtualizacin por Hardware es de varios ordenes de magnitud menor, pero una imagen creada con
cualquiera de ellos es usable con los otros virtualizadores. KVM slo soporta
virtualizar arquitecturas X86 y 64 de INTEL y AMD, QEMU emula diversas arquitecturas, como son ARM, CRIS, i386, M68k, MicroBlaze, MIPS,
PowerPC, SH4, SPARC y x86-64.

Algunos problemas con KVM Si se detectan las banderas para virtualizacin por Hardware y al tratarlo de usar KVM marca:
> open /dev/kvm: Permission denied
> Could not initialize KVM, will disable KVM support

antoniocarrillo@ciencias.unam.mx

13

Antonio Carrillo Ledesma

Mquinas Virtuales
Slo hay que agregar, el login del usuario al grupo kvm en el archivo
/etc/group
Si marca:
> open /dev/kvm: No such file or directory
> Could not initialize KVM, will disable KVM support
Slo hay que activar en el BIOS la virtualizacin por Hardware
En el caso de querer usar un procesador particular en KVM y marca que
algunas banderas no estan soportadas, por ejemplo, al usar un procesador
AMD y hacer uso del procesador Nehalem Intel Core i7 9xx (Nehalem Class
Core i7), mediante:
$ kvm -cpu Nehalem -cdrom TinyCore-current.iso

$ qemu-system-x86_64 -enable-kvm -cpu Nehalem -cdrom TinyCorecurrent.iso


es comn que marque:
w a rn in g : h o st d o esn t s u p p o rt re q u es ted fea tu re: C P U ID .0 1 H :E C X .ss se3 [b it 9 ]
w a rn in g : h o st d o esn t s u p p o rt re q u es ted fea tu re: C P U ID .0 1 H :E C X .ss e4 .1 |ss e4 _ 1 [b it 1 9 ]
w a rn in g : h o st d o esn t s u p p o rt re q u es ted fea tu re: C P U ID .0 1 H :E C X .ss e4 .2 |ss e4 _ 2 [b it 2 0 ]

si es necesario usar dichas banderas en el CPU, entonces usar:


$ qemu-system-x86_64 -cpu Nehalem -cdrom TinyCore-current.iso
en este caso avisar que:
w a rn in g : T C G d o es n t su p p o rt req u ested fea tu re: C P U ID .0 1 H :E D X .v m e [b it 1 ]

i.e. soporta el chip, pero no la virtualizacin (vme: Virtual Mode Extensions [8086 mode]), se sacrifica velocidad en hars de tener las prestaciones
del chip emulado.

antoniocarrillo@ciencias.unam.mx

14

Antonio Carrillo Ledesma

Mquinas Virtuales
Usando un USB/CD live como una mquina virtual En el caso de
tener un USB/CD live y se quiera correr su contenido desde una mquina
virtual con QEMU o KVM solo es necesario montar el USB/CD, conocer el
dispositivo mediante
$ df
y usar ese dispositivo en
$ kvm -m 512 -usb /dev/sddx

Usando un archivo ISO como una mquina virtual En el caso de


tener un archivo ISO y se quiera correr su contenido desde una mquina
virtual con QEMU o KVM solo es necesario (si el archivo es ubuntu-11.10desktop-i386.iso)
$ kvm -m 512 -cdrom ubuntu-11.10-desktop-i386.iso

Ejemplos de uso Un ejemplo completo de instalacin y uso de una mquina


virtual para Debian estable a partir del archivo ISO bajado de la red, necesitamos hacer lo siguiente
Generar un disco virtual, por ejemplo de 10 GB
$ qemu-img create -f qcow2 debianStable.img 10G
Instalar la imagen de Debian estable en un disco virtual
$ kvm -no-reboot -boot d -cdrom debian-802-i386-netinst.iso
-hda debianStable.img -m 300
Despus de la instalacin, es conveniente compactar y desfragmentar la
imagen usando
$ qemu-img convert -c debianStable.img -O qcow2 debian.img
Usar Debian estable
antoniocarrillo@ciencias.unam.mx

15

Antonio Carrillo Ledesma

Mquinas Virtuales
$ kvm -hda debian.img -m 400
Otro ejemplo completo de instalacin y uso de una mquina virtual para
Windows XP, en este caso necesitamos
Crear la disco virtual, por ejemplo de 10 GB
$ qemu-img create -f qcow2 WindowsXP.img 10G
Hacer la instalacin bsica de Windows XP a partir, por ejemplo del ISO
$ kvm -no-reboot -boot d -hda WindowsXP.img -m 400 localtime -cdrom es_winxp_pro_with_sp2.iso
Concluir la instalacin de Windows XP
$ kvm -no-reboot -boot c -hda WindowsXP.img -m 400 localtime -cdrom es_winxp_pro_with_sp2.iso
Despus de la instalacin, es conveniente compactar y desfragmentar la
imagen usando
$ qemu-img convert -c WindowsXP.img -O qcow2 Windows.img
Uso de mquina virtual de Windows XP
$ kvm -boot c -hda Windows.img -m 400 -localtime
Una vez que se cuenta con una imagen de Windows, podemos instalar
por ejemplo Office
Instalar Windows Office 2003, aqu suponemos que tenemos un ISO de
Office
$ kvm -localtime -m 300 -boot c -hda Windows.img -cdrom
Office-2003.iso
Si se tiene el CDROM, entonces podemos usar
$ kvm -localtime -m 300 -boot c -hda Windows.img -cdrom
/dev/cdrom/
antoniocarrillo@ciencias.unam.mx

16

Antonio Carrillo Ledesma

Mquinas Virtuales
Observacin 2 En el caso de Windows hay que usar el mismo Hardware
siempre, en caso contrario marca que es necesario registrar el sistema operativo nuevamente al correrlo en otra arquitectura, para ello se usa la bandera
-cpu, al momento de crearlo y usarlo, por ejemplo:
Usar mquina virtual de Windows en QEMU y KVM usando el mismo
Hardware
$ kvm -localtime -m 400 -boot c -hda Windows.img -cpu
qemu32
$ qemu-system-x86_64 -localtime -m 400 -boot c -hda Windows.img -cpu qemu32
$ qemu-system-x86_64 -enable-kvm -localtime -m 400 -boot
c -hda Windows.img -cpu qemu32
Para conocer los CPUs soportados usar
$ kvm -cpu ?
Para conocer las mquinas soportadas usar
$ kvm -machines ?
Otro ejemplo completo de instalacin y uso de una mquina virtual para
Windows 7, en este caso necesitamos
Crear la disco virtual, por ejemplo de 15 GB
$ qemu-img create -f qcow2 Windows7.img 15G
Hacer la instalacin bsica de Windows 7 a partir, por ejemplo del DVD
$ kvm -no-reboot -cdrom /dev/cdrom -boot d -hda Windows7.img
-m 500 -localtime
Concluir la instalacin de Windows 7
$ kvm -no-reboot -boot c -hda Windows7.img -cdrom /dev/cdrom
-m 500 -localtime
antoniocarrillo@ciencias.unam.mx

17

Antonio Carrillo Ledesma

Mquinas Virtuales
Despus de la instalacin, es conveniente compactar y desfragmentar la
imagen usando
$ qemu-img convert -c Windows7.img -O qcow2 Windows.img
Uso de mquina virtual de Windows 7
$ kvm -boot c -hda Windows.img -m 500 -localtime

Manipulacin del estado de la mquina virtual La virtualizacin permite manipular el estado de una maquina en ejecucin, por ejemplo, una vez
que se esta corriendo una mquina virtual
$ kvm -boot c -hda .img -m 400 -localtime
es posible manipular el estado de la misma en algn punto de su ejecucin
al usar la combinacin de teclas:
[Ctrl] + [Alt] + [2]
ya en ella, podemos detener y grabar el estado de la mquina virtual:
savevm test.vm
quit
para que en otro momento, podamos restaurar la mquina virtual tal
como estaba cuando esta se detuvo:
$ kvm -boot c -hda .img -m 400 -localtime -loadvm test.vm

antoniocarrillo@ciencias.unam.mx

18

Antonio Carrillo Ledesma

Mquinas Virtuales
Optimizacin de imgenes Las imgenes de disco de KVM/QEMU despus de generarlas (al instalar algn sistema operativo) estas, tienen muchos
archivos dispersos, para optimizar su rendimiento es recomendable convertir
la imagen dispersa en una que no tenga esta propiedad, mediante
$ qemu-img convert disk-sparse.img -O qcow2 disk.img
o puede ser compactada, mediante
$ qemu-img convert -c disk-sparse.img -O qcow2 disk.img
la cual decrecer el tamao. Para descompactar una imagen e incrementar
la velocidad de uso, mediante:
$ qemu-img convert disk-compact.img -O qcow2 disk.img

Trabajar con una imagen virtual sin que se altere esta Es muy
deseable al trabajar con una mquina virtual, el dejar la informacin de la
mquina virtual base intacta y guardar los cambios que se requieran en otro
archivo, una forma es hacer una copia y trabajar con la copia de esta o crear
un archivo que almacene por separado los cambios a la imagen, para esto
ltimo usar:
$ qemu-img create -b debianStable.img -f qcow2 debian.img
y trabajar con la imagen que resultante (para este ejemplo debian.img)
Algunos problemas comunes con la red Por lo general las mquinas
virtuales detectan correctamente la red, pero en el caso de Windows esto no
siempre pasa, por ello es comn emular una tarjeta de red lo ms genrica
posible, esta puede ser RTl8139, para ello es necesario que al lanzar la
mquina virtual se indique -net nic,model=rtl8139 -net user, por ejemplo:
$ kvm -boot c -hda WindowsXP.img -m 400 -localtime -net
nic,model=rtl8139 -net user
algunas de las otras opciones para la red son: NE2000 PCI, RTL8139,
PCNET y NE2000 ISA.
antoniocarrillo@ciencias.unam.mx

19

Antonio Carrillo Ledesma

Mquinas Virtuales
Aumento de desempeo La virtualizacin normalmente es rpida, pero
en algunas circunstancias se hace lenta generalmente esto es ajeno a KVM/QEMU
y generalmente es por la constante grabacin de pequeos paquetes de datos
al disco duro por parte de la mquina virtual.
Por optimizar el desempeo de la mquina virtual es posible pedirle a
KVM/QEMU que trate de usar un cache y baje lo menos posible a disco
la informacin, esto aumentara notablemente el desempeo de la mquina
virtual.
Para aumentar el desempeo, en lugar de usar
$ kvm -boot c -hda WindowsXP.img -m 400
Usar
$ kvm -drive file=WindowsXP.img,cache=writeback,media=disk
-m 400
En el caso de usar un archivo ISO, usar
$ kvm -m 512 -drive file=fedora.iso,cache=writeback,media=cdrom
Otro ejemplo completo de instalacin y uso de una mquina virtual (por
ejemplo para UBUNTU 11.10) usando el cache, en este caso necesitamos
Generar un disco virtual, por ejemplo de 10 GB
$ qemu-img create -f qcow2 disco.img 10G
Instalar la imagen de UBUNTU en un disco virtual
$ kvm -no-reboot -boot d -drive file=ubuntu-11.10-desktopi386.iso,cache=writeback,media=cdrom -drive file=disco.img,
cache=writeback,media=disk -m 500
Despus de la instalacin, es conveniente compactar y desfragmentar la
imagen usando
$ qemu-img convert -c disco.img -O qcow2 Ubuntu.img
Usar Debian estable (aqu, se usa el cache para acelerar el desempeo de
KVM)
$ kvm -drive file=Ubuntu.img,cache=writeback,media=disk
-m 500

antoniocarrillo@ciencias.unam.mx

20

Antonio Carrillo Ledesma

Mquinas Virtuales
Mejorando el desempeo del vdeo de la mquina virtual Por omisin
se tiene un tarjeta grfica de pobre desempeo en la mquina virtual, si se
necesita mayor resolucin en la salida grfica, una opcin es usar la opcin
-VGA, donde dos de sus posibilidades es STD o VMWARE usndose como:
$ kvm -vga std -m 512 -drive file=fedora.iso,cache=writeback,
media=cdrom
o
$ kvm -vga vmware -m 512 -drive file=fedora.iso,cache=writeback,
media=cdrom

Uso de tarjeta de sonido dentro de KVM/QEMU Por omisin el


uso de la tarjeta de audio no esta habilitada, para habilitarla usar en la linea
de comandos: -soundhw sb16, es1370, adlib, por ejemplo:
$ kvm -boot c -hda Windows.img -m 400 -localtime -soundhw
sb16,es1370,adlib

Uso de la virtualizacin dentro de una virtualizacin Algunas veces


es necesario tener activa la virtualizacin dentro de otra virtualizacin, esto
se logra mediante, por ejemplo, para un procesador AMD
$ kvm -m 128 -cdrom TinyCore-current.iso -cpu phenom,+svm

Uso de VNC como salida grfica de la virtualizacin Si se desea


usar VNC como visualizador de la salida grfica de KVM, primero se debe
instalar un cliente de VNC, por ejemplo vncviewer, usando
# aptitude install vncviewer
Entonces, para correr la maquina virtual usamos
$ kvm -m 128 -cdrom TinyCore-current.iso -cpu kvm64 -vnc
:0
Y para ver la salida grfica usamos
$ vncviewer 0

antoniocarrillo@ciencias.unam.mx

21

Antonio Carrillo Ledesma

Mquinas Virtuales
Uso de SSH para correr una mquina virtual de forma remota Si se
tiene acceso a un servidor mediante SSH en el cual este activo X11 forwarding
e instalado KVM/QEMU, entonces es posible correr una maquina remota en
el servidor y visualizar la salida grfica en la mquina donde se corre el
comando SSH.
Primeramente, al hacer la conexin mediante SSH, es necesario solicitar
en la conexin se habilite X11 forwarding mediante
$ ssh -X -l usr 192.168.13.230
Despus de hacer la conexin, ya podemos correr la mquina virtual como
se indico antes
$ kvm -m 128 -cdrom TinyCore-current.iso &

Interaccin de VirtualBox en KVM/QEMU Algunas veces es necesario montar y extraer el contenido de un disco virtual, supongamos que
tenemos una maquina virtual de VirtualBox y queremos ver su contenido,
para ello usamos
$ qemu-img convert diskname.vmdk -O qcow2 diskname.qcow2
o para raw
$ qemu-img convert diskname.vmdk -O raw diskname.raw
Instalar nbd-client
# apt-get install nbd-client
Despus
# qemu-nbd connect=/dev/nbd0 /mnt/kvm/diskname.qcow2
# fdisk /dev/nbd0 -l
# sudo mount /dev/nbd0p1 /mnt/somepoint/
# umount /mnt/somepoint/

antoniocarrillo@ciencias.unam.mx

22

Antonio Carrillo Ledesma

Mquinas Virtuales
Algunos otras opciones Lanzar KVM con dos procesadores, 1536 MB
de RAM, dispositivo de red e1000, MAC addres 52:54:00:12:34:50, iniciando
el DHCP en la direccin 10.0.2.40 y reenviando la salida del puerto 22 de la
maquina virtual al 5555 del equipo husped, mediante
$ kvm -smp 2 -drive file=debianStableTmp.img,cache=writeback,
media=disk -m 1536 -device e1000,netdev=user.0,mac=
52:54:00:12:34:50 -netdev user,id=user.0,dhcpstart=10.0.2.40,
hostfwd=tcp::5555-:22 &
o lanzar kvm con dos procesadores, 1536 MB de RAM, dispositivo de red
e1000 y reenviando la salida del puerto 22 de la maquina virtual al 5555 del
equipo husped
$ kvm -smp 2 -drive file=debianStableTmp.img,cache=writeback,
media=disk -m 1536 -device e1000,netdev=user.0 -netdev user,
id=user.0,hostfwd=tcp::5555-:22 &
una vez lanzada, es posible hacer copia del equipo husped a la maquina
virtual mediante
$ scp -P 5555 file.txt usr@localhost:/tmp
Direcciones de Red Usadas en QEMU o KVM
Gateway/DHCP/TFTP Server:
10.0.2.2
DNS Server:
10.0.2.3
Samba Server:
10.0.2.4
Netmask:
255.255.255.0
Guest IP:
any address above 10.0.2.15

Comunicacin entre la mquina virtual y el sistema anfitrin Que


hacer para tener comunicacin entre la mquina virtual y el sistema anfitrin,
hay varias maneras de hacer esto:
1) Lo mas sencillo es que la mquina virtual se conecte a un servidor
en red del tipo samba, este puede ser una mquina Windows que comparta
una impresora y/o disco o la mquina anfitrin tenga instalado SAMBA y
comparta uno o mas servicios como son discos o impresoras.
antoniocarrillo@ciencias.unam.mx

23

Antonio Carrillo Ledesma

Mquinas Virtuales
2) Conectarse a un servidor de SSH mediante los programas SSH Server,
as la mquina virtual puede acceder mediante SFTP a los archivos en el
servidor. Es posible instalar el servidor de SSH en la mquina anfitrin y asi
poder prestar el servicio de SSH y FTP a la mquina virtual.
3) Leer un dispositivo USB montado en el sistema anfitrin desde la
mquina virtual, para ello el dispositivo USB deber estar conectado en la
mquina anfitrin y deber ser accesado directamente en la mquina virtual.
QEMU necesita parmetros adicionales, el parmetro -usb activa el soporte
en la mquina virtual de dispositivos USB. La emulacin de Intel SB82371
UHCI-Controller tiene 8-puertos en el USB hub. Si se busca tener acceso a
uno de los dispositivos fsicos, se requiere encontrar los parmetros VendorID and Product-ID. Esta informacin se obtiene examinando la salida del
comando:
# /sbin/lsusb
o
$ cat /proc/bus/usb/devices
Entonces es posible decirle a QEMU los datos de VendorID y ProductID
a travs de la lnea de comandos
$ qemu -usb -usbdevice host:<VendorID>:<ProductID> <otros
parmetros>
o iniciar QEMU con soporte para dispositivos USB activados mediante
$ qemu -usb <otros parmetros>
despus de iniciar la mquina virtual, cambiar al sistema de monitoreo
de la mquina virtual presionando:
[Ctrl]+[Alt]+[2] e introducir el siguiente comando
usb_add host:<VendorID>:<ProductID>
cuando se retorne al ambiente grfico al teclear [Ctrl]+[Alt]+[1] se vera el
mensaje de reconocimiento del dispositivo USB. Por ejemplo si se tiene una
impresora HP Scanjet 3300C conectada en el puerto USB de la computadora,
la salida del comando lsub es:
antoniocarrillo@ciencias.unam.mx

24

Antonio Carrillo Ledesma

Mquinas Virtuales
# lsusb
Bus 003 Device 002: ID 03f0:0205 ScanJet 3300C
as, el comando en QEMU para dejar accesible el dispositivo es:
$ qemu -usb -usbdevice host:03f0:0205 <otros parametros>
4) Usar la impresora conectada en el puerto paralelo, pera ello al invocar
la ejecucin de la mquina virtual usar:
$ qemu -parallel /dev/parport0 <otros parmetros>
5) Montar el contenido de un disco virtual y poder intercambiar informacin entre la mquina virtual y la husped, primero convertir el disco a
formato accesible a Linux:
$ qemu-img convert disco.img -O raw tmp.img
montar la imagen en Linux como root
# mkdir disk
# mount -o loop,offset=32256 tmp.img disk
trabajar con la imagen montada y al terminar desmontar esta
# umount ./disk
y puede ser regresada al formato original mediante
$ qemu-img convert -c tmp.img -O qcow2 disco.img

antoniocarrillo@ciencias.unam.mx

25

Antonio Carrillo Ledesma

Mquinas Virtuales

Software Libre y Propietario

Hoy en da los usuarios disponemos de una gran variedad de opciones en


cuanto a Software se refiere. Por un lado, podemos emplear programas comerciales que en general nos venden licencias para el uso del Software, la
cual en general, es restrictiva y restringe su uso a una sola mquina.
Por otro lado, existe el Software libre, desarrollados por usuarios y para
usuarios que, entre otras cosas, comparten los cdigos fuente, el programa
ejecutable y dan libertades para estudiar, adaptar y redistribuir a quien as
lo requiera el programa y todos sus derivados.

2.1

Software Libre

La definicin de Software libre (vase [6], [7], [2], [3], [1] y [5]) estipula los
criterios que se tienen que cumplir para que un programa sea considerado
libre. De vez en cuando se modifica esta definicin para clarificarla o para
resolver problemas sobre cuestiones delicadas. Software libre significa que
el Software respeta la libertad de los usuarios y la comunidad. En trminos generales, los usuarios tienen la libertad de copiar, distribuir, estudiar,
modificar y mejorar el Software. Con estas libertades, los usuarios tanto
individualmente como en forma colectiva controlan el programa y lo que
hace.
Cuando los usuarios no controlan el programa, el programa controla a
los usuarios. El programador controla el programa y, a travs del programa,
controla a los usuarios. Un programa que no es libre, llamado privativo o
propietario, y es considerado por muchos como un instrumento de poder
injusto.
El Software libre es la denominacin del Software que respeta la libertad de todos los usuarios que adquirieron el producto y, por tanto, una vez
obtenido el mismo puede ser usado, copiado, estudiado, modificado, y redistribuido libremente de varias formas. Segn la Free Software Foundation
(vase [6]), el Software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, y estudiar el mismo, e incluso modificar el Software
y distribuirlo modificado.
Un programa es Software libre si los usuarios tienen las cuatro libertades
esenciales:
0. La libertad de usar el programa, con cualquier propsito.
antoniocarrillo@ciencias.unam.mx

26

Antonio Carrillo Ledesma

Mquinas Virtuales
1. La libertad de estudiar cmo funciona el programa y modificarlo, adaptndolo a tus necesidades.
2. La libertad de distribuir copias del programa, con lo cual puedes ayudar
a tu prjimo.
3. La libertad de mejorar el programa y hacer pblicas esas mejoras a los
dems, de modo que toda la comunidad se beneficie.
Un programa es Software libre si los usuarios tienen todas esas libertades. Por tanto, el usuario debe ser libre de redistribuir copias, tanto con
como sin modificaciones, ya sea gratuitamente o cobrando una tarifa por la
distribucin, a cualquiera en cualquier parte. El ser libre de hacer estas cosas
significa, entre otras cosas, que no tiene que pedir ni pagar el permiso.
Tambin debe tener la libertad de hacer modificaciones y usarlas en privado para su propio trabajo o pasatiempo, sin siquiera mencionar que existen. Si publica sus cambios, no debe estar obligado a notificarlo a nadie en
particular, ni de ninguna manera en particular.
La libertad de ejecutar el programa significa que cualquier tipo de persona
u organizacin es libre de usarlo en cualquier tipo de sistema de computacin,
para cualquier tipo de trabajo y finalidad, sin que exista obligacin alguna
de comunicarlo al programador ni a ninguna otra entidad especfica. En
esta libertad, lo que importa es el propsito de los usuarios, no el de los
programadores. El usuario es libre de ejecutar el programa para alcanzar
sus propsitos, y si lo distribuye a otra persona, tambin esa persona ser
libre de ejecutarlo para lo que necesite; nadie tiene derecho a imponerle sus
propios objetivos.
La libertad de redistribuir copias debe incluir las formas binarias o ejecutables del programa, as como el cdigo fuente, tanto para las versiones
modificadas como para las no lo estn. Distribuir programas en forma de
ejecutables es necesario para que los sistemas operativos libres se puedan
instalar fcilmente. Resulta aceptable si no existe un modo de producir un
formato binario o ejecutable para un programa especfico, dado que algunos
lenguajes no incorporan esa caracterstica, pero debe tener la libertad de redistribuir dichos formatos si encontrara o programara una forma de hacerlo.
Para que la libertad 1 y 3 de realizar cambios y publicar las versiones
modificadas tengan sentido, el usuario debe tener acceso al cdigo fuente
del programa. Por consiguiente, el acceso al cdigo fuente es una condicin
antoniocarrillo@ciencias.unam.mx

27

Antonio Carrillo Ledesma

Mquinas Virtuales
necesaria para el Software libre. El cdigo fuente ofuscado no es cdigo
fuente real, y no cuenta como cdigo fuente.
La libertad 1 incluye la libertad de usar su versin modificada en lugar
de la original. Si el programa se entrega con un producto diseado para ejecutar versiones modificadas de terceros, pero rechaza ejecutar las suyas, una
prctica conocida como tivoizacin o arranque seguro [lockdown] la
libertad 1 se convierte ms en una ficcin terica que en una libertad prctica. Esto no es suficiente. En otras palabras, estos binarios no son Software
libre, incluso si se compilaron desde un cdigo fuente que es libre.
Una manera importante de modificar el programa es agregndole subrutinas y mdulos libres ya disponibles. Si la licencia del programa especfica que
no se pueden aadir mdulos que ya existen y que estn bajo una licencia
apropiada, por ejemplo si requiere que usted sea el titular de los derechos de
autor del cdigo que desea aadir, entonces se trata de una licencia demasiado restrictiva como para considerarla libre.
La libertad 3 incluye la libertad de publicar sus versiones modificadas
como Software libre. Una licencia libre tambin puede permitir otras formas
de publicarlas; en otras palabras, no tiene que ser una licencia de copyleft.
No obstante, una licencia que requiera que las versiones modificadas no sean
libres, no se puede considerar libre.
Software libre no significa que no es comercial. Un programa libre
debe estar disponible para el uso comercial, la programacin comercial y la
distribucin comercial. La programacin comercial de Software libre ya no es
inusual; tal Software libre comercial es muy importante. Puede haber pagado
dinero para obtener copias de Software libre, o puede haber obtenido copias
sin costo. Pero sin tener en cuenta cmo obtuvo sus copias, siempre tiene la
libertad de copiar y modificar el Software, incluso de vender copias.
El trmino Software no libre se emplea para referirse al Software distribuido bajo una licencia de Software ms restrictiva que no garantiza estas
cuatro libertades. Las leyes de la propiedad intelectual reservan la mayora de
los derechos de modificacin, duplicacin y redistribucin para el dueo del
copyright; el Software dispuesto bajo una licencia de Software libre rescinde
especficamente la mayora de estos derechos reservados.
Los manuales de Software deben ser libres por las mismas razones que
el Software debe ser libre, y porque de hecho los manuales son parte del
Software. Tambin tiene sentido aplicar los mismos argumentos a otros tipos
de obras de uso prctico; es decir, obras que incorporen conocimiento til, tal
como publicaciones educativas y de referencia. La Wikipedia es el ejemplo
antoniocarrillo@ciencias.unam.mx

28

Antonio Carrillo Ledesma

Mquinas Virtuales
ms conocido.
Tanto la Open Source Initiative como la Free Software Foundation mantienen en sus pginas Web (vase [6], [7], y [5]) oficiales listados de las licencias
de Software libre que aprueban.
2.1.1

Tipos de Licencias

Una licencia es aquella autorizacin formal con carcter contractual que un


autor de un Software da a un interesado para ejercer "actos de explotacin
legales". Pueden existir tantas licencias como acuerdos concretos se den entre
el autor y el licenciatario. Desde el punto de vista del Software libre, existen
distintas variantes del concepto o grupos de licencias:
Licencias GPL Una de las ms utilizadas es la Licencia Pblica General
de GNU (GNU GPL). El autor conserva los derechos de autor (copyright),
y permite la redistribucin y modificacin bajo trminos diseados para asegurarse de que todas las versiones modificadas del Software permanecen bajo
los trminos ms restrictivos de la propia GNU GPL. Esto hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene
que ser GPL.
En la prctica esto hace que las licencias de Software libre se dividan en
dos grandes grupos, aquellas que pueden ser mezcladas con cdigo licenciado
bajo GNU GPL (y que inevitablemente desaparecern en el proceso, al ser
el cdigo resultante licenciado bajo GNU GPL) y las que no lo permiten al
incluir mayores u otros requisitos que no contemplan ni admiten la GNU
GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con cdigo
gobernado por la licencia GNU GPL.
Licencias estilo BSD Llamadas as porque se utilizan en gran cantidad de
Software distribuido junto a los sistemas operativos BSD. El autor, bajo tales
licencias, mantiene la proteccin de copyright nicamente para la renuncia
de garanta y para requerir la adecuada atribucin de la autora en trabajos derivados, pero permite la libre redistribucin y modificacin, incluso si
dichos trabajos tienen propietario. Son muy permisivas, tanto que son fcilmente absorbidas al ser mezcladas con la licencia GNU GPL con quienes son
compatibles. Puede argumentarse que esta licencia asegura "verdadero" Software libre, en el sentido que el usuario tiene libertad ilimitada con respecto
al Software, y que puede decidir incluso redistribuirlo como no libre.
antoniocarrillo@ciencias.unam.mx

29

Antonio Carrillo Ledesma

Mquinas Virtuales
Copyleft Hay que hacer constar que el titular de los derechos de autor
(copyright) de un Software bajo licencia copyleft puede tambin realizar una
versin modificada bajo su copyright original, y venderla bajo cualquier licencia que desee, adems de distribuir la versin original como Software libre.
Esta tcnica ha sido usada como un modelo de negocio por una serie de
empresas que realizan Software libre (por ejemplo MySQL); esta prctica
no restringe ninguno de los derechos otorgados a los usuarios de la versin
copyleft.
Comparacin con el Software de cdigo abierto Aunque en la prctica el Software de cdigo abierto y el Software libre comparten muchas de sus
licencias, la Free Software Foundation opina que el movimiento del Software
de cdigo abierto es filosficamente diferente del movimiento del Software
libre. Los defensores del trmino "cdigo abierto", en ingls open source,
afirman que ste evita la ambigedad del trmino en ese idioma que es free
en free Software.
Mucha gente reconoce el beneficio cualitativo del proceso de desarrollo de
Software cuando los desarrolladores pueden usar, modificar y redistribuir el
cdigo fuente de un programa. El movimiento del Software libre hace especial
nfasis en los aspectos morales o ticos del Software, viendo la excelencia
tcnica como un producto secundario de su estndar tico. El movimiento
de cdigo abierto ve la excelencia tcnica como el objetivo prioritario, siendo
la comparticin del cdigo fuente un medio para dicho fin. Por dicho motivo,
la FSF se distancia tanto del movimiento de cdigo abierto como del trmino
"Cdigo Abierto" (en ingls Open Source).
Puesto que la OSI slo aprueba las licencias que se ajustan a la Open
Source Definition (definicin de cdigo abierto), la mayora de la gente lo interpreta como un esquema de distribucin, e intercambia libremente "cdigo
abierto" con "Software libre". An cuando existen importantes diferencias
filosficas entre ambos trminos, especialmente en trminos de las motivaciones para el desarrollo y el uso de tal Software, raramente suelen tener
impacto en el proceso de colaboracin.
Aunque el trmino "cdigo abierto" elimina la ambigedad de libertad
frente a precio (en el caso del ingls), introduce una nueva: entre los programas que se ajustan a la definicin de cdigo abierto, que dan a los usuarios
la libertad de mejorarlos, y los programas que simplemente tiene el cdigo
fuente disponible, posiblemente con fuertes restricciones sobre el uso de dicho
antoniocarrillo@ciencias.unam.mx

30

Antonio Carrillo Ledesma

Mquinas Virtuales
cdigo fuente. Mucha gente cree que cualquier Software que tenga el cdigo
fuente disponible es de cdigo abierto, puesto que lo pueden manipular. Sin
embargo, mucho de este Software no da a sus usuarios la libertad de distribuir sus modificaciones, restringe el uso comercial, o en general restringe
los derechos de los usuarios.

2.2

Software Propietario

No existe consenso sobre el trmino a utilizar para referirse al opuesto del


Software libre. La expresin Software propietario (vase [4]) proviene del
trmino en ingls "proprietary Software". En la lengua anglosajona, "proprietary" significa posedo o controlado privadamente (privately owned
and controlled), que destaca la manutencin de la reserva de derechos sobre el uso, modificacin o redistribucin del Software. Inicialmente utilizado,
pero con el inconveniente que la acepcin proviene de una traduccin literal
del ingls, no correspondiendo su uso como adjetivo en el espaol, de manera
que puede ser considerado como un barbarismo.
El trmino "propietario" en espaol resultara inadecuado, pues significa
que tiene derecho de propiedad sobre una cosa, por lo que no podra calificarse de "propietario" al Software, porque ste no tiene propiedad sobre nada
(es decir, no es dueo de nada) y, adems, no podra serlo (porque es una cosa
y no una persona). As mismo, la expresin "Software propietario" podra
ser interpretada como "Software sujeto a propiedad" (derechos o titularidad)
y su opuesto, el Software libre, tambin est sujeto al derecho de autor. Otra
interpretacin es que contrariamente al uso popular del trmino, se puede
afirmar de que "todo Software es propietario", por lo que la forma correcta
de referirse al Software con restricciones de uso, estudio, copia o mejora es
la de Software privativo, segn esta interpretacin el trmino "propietario"
podra aplicarse tanto para Software libre como Software privativo, ya que
la diferencia entre uno y otro est en que el dueo del Software privativo lo
licencia como propiedad privada y el de Software libre como propiedad social.
Con la intencin de corregir el defecto de la expresin "Software propietario" aparece el llamado "Software con propietario", sin embargo se argumenta contra del trmino "con propietario" justamente su similitud con
proprietary en ingls, que slo hara referencia a un aspecto del Software que
no es libre, manteniendo una de las principales crticas a ste (de "Software
sujeto a derechos" o "propiedad"). Adicionalmente, si "propietario" refiere al
titular de los derechos de autor (y est claro que no puede referir al usuario,
antoniocarrillo@ciencias.unam.mx

31

Antonio Carrillo Ledesma

Mquinas Virtuales
en tanto ste es simplemente un cesionario), no resuelve la contradiccin:
todo el Software libre tiene tambin titulares de derechos de autor.
La expresin Software no libre (en ingls non-free Software) es usado por
la FSF para agrupar todo el Software que no es libre, es decir, incluye al
llamado en ingls "semi-free Software" (Software semilibre) y al "propietary
Software". Asimismo, es frecuentemente utilizado para referirse al Software
que no cumple con las Directrices de Software libre de Debian, las cuales
siguen la misma idea bsica de libertad en el Software, propugnada por la
FSF, y sobre las cuales est basada la definicin de cdigo abierto de la Open
Source Initiative.
Adicionalmente el Software de cdigo cerrado nace como antnimo de
Software de cdigo abierto y por lo tanto se centra ms en el aspecto de
ausencia de acceso al cdigo que en los derechos sobre el mismo. ste se
refiere slo a la ausencia de una sola libertad por lo que su uso debe enfocarse
slo a este tipo de Software y aunque siempre signifique que es un Software
que no es libre, no tiene que ser Software de cdigo cerrado.
La expresin Software privado es usada por la relacin entre los conceptos
de tener y ser privado. Este trmino sera inadecuado debido a que, en una de
sus acepciones, la palabra "privado" se entiende como antnimo de "pblico",
es decir, que no es de propiedad pblica o estatal, sino que pertenece a particulares, provocando que esta categora se interpretara como no referente
al Estado, lo que producira la exclusin del Software no libre generado por
el aparato estatal. Adems, el "Software pblico" se asocia generalmente con
Software de dominio pblico.

2.3

Implicaciones Econmico-Polticas

Una vez que un producto de Software libre ha empezado a circular, rpidamente est disponible a un costo muy bajo. Al mismo tiempo, su utilidad
no decrece. El Software, en general, podra ser considerado un bien de uso
inagotable, tomando en cuenta que su costo marginal es pequesimo y que
no es un bien sujeto a rivalidad (la posesin del bien por un agente econmico
no impide que otro lo posea).
Puesto que el Software libre permite el libre uso, modificacin y redistribucin, a menudo encuentra un hogar entre usuarios para los cuales el
coste del Software no libre es a veces prohibitivo, o como alternativa a la piratera. Tambin es sencillo modificarlo localmente, lo que permite que sean
posibles los esfuerzos de traduccin a idiomas que no son necesariamente
antoniocarrillo@ciencias.unam.mx

32

Antonio Carrillo Ledesma

Mquinas Virtuales
rentables comercialmente.
La mayora del Software libre se produce por equipos internacionales que
cooperan a travs de la libre asociacin. Los equipos estn tpicamente compuestos por individuos con una amplia variedad de motivaciones, y pueden
provenir tanto del sector privado, del sector voluntario o del sector pblico.
En Mxico el Software Libre naci en las Universidades y los Centros de
Investigacin. Es por eso que, desde hace tres dcadas, los estudiantes y los
profesores usan Software libre para fines didcticos y de investigacin. Las
universidades suelen optar por el uso de Software libre en vez de utilizar
Software privativo porque satisface de una mejor manera sus necesidades de
cmputo, dada su naturaleza de apertura del cdigo y la libertad de compartir
los resultados obtenidos. De forma colateral, no se tienen gastos adicionales
derivados del pago de licenciamientos.
Computlogos, fsicos, qumicos, matemticos y otros profesionistas y
cientficos utilizan Software libre como herramienta de investigacin y creacin.
Un claro ejemplo de ello es la llamada Delta Metropolitana, que es una red
de supercomputadoras que estn en varios puntos de la Ciudad de Mxico,
en el CINESTAV, el IPN, la UAM y la UNAM. Esa red de supercmputo utiliza Software libre para consolidar sus recursos, hacer investigacin y generar
conocimiento.
Por otro lado, dadas las caractersticas del Software de cdigo cerrado, un
usuario comn ignora absolutamente el contenido del mismo y por tanto si
existe dentro de las lneas del cdigo alguna amenaza contra su equipo o su
informacin, adems el usuario no slo tiene prohibido el intentar eliminar o
cambiar esa parte del cdigo sino que puede ser perseguido por la ley por el
hecho de intentar conocer si existe tal amenaza en dicho Software.
Adems, en una sociedad de la informacin, el Software se ha convertido
en una herramienta importante de productividad, y una licencia de Software
privativo constituye un acuerdo o contrato entre dos sujetos jurdicos que voluntariamente acuerdan las condiciones de uso de un programa, pero el costo
econmico de dicha licencia es cada vez ms alto y en el caso de instituciones
educativas, gubernamentales y sociedades civiles es en la mayora de los casos
por decir lo menos prohibitivo.
Por otro lado, hace unos das se anunci en varios peridicos de circulacin
nacional (vase [12]) que:
El Instituto Mexicano de la Propiedad Industrial (IMPI) anunci
antoniocarrillo@ciencias.unam.mx

33

Antonio Carrillo Ledesma

Mquinas Virtuales
que en las prximas semanas dar inicio una serie de clausuras a
negocios que utilicen Software licenciado de manera ilegal; esto
como parte del acuerdo que tiene la dependencia con The Software
Alliance (BSA) desde el 2002, el cual busca fomentar el uso de
programas informticos legales y disminuir el ndice de piratera
en el pas.
De acuerdo a la BSA, el porcentaje de Software ilegal utilizado
en el territorio an se ubica en un 56 por ciento, cifra considerablemente menor a lo visto en el 2005, cuando el nmero ascenda
a ms del 65 por ciento. Sin embargo, Mxico contina siendo
uno de los mayores compradores de piratera a nivel mundial, y
lo que se busca con este tipo de acciones en el 2013 es disminuir,
al menos, un punto porcentual.
"Si como consecuencia de una visita de inspeccin completa se
encuentra la existencia de Software ilegal, se procede a la sancin.
En el 2012 incrementaron hasta un 200% las sanciones por el
uso ilegal de Software", dijo Kiyoshi Tsuru, director general en
Mxico de la BSA.
Aqu es donde algunos se preguntarn, y qu autoridad tiene
The Software Alliance para ejecutar estas determinaciones? Pese
a que cuenta con el apoyo de empresas como Microsoft, Apple,
Autodesk, Adobe, Aveva, AVG, CISCO, Dell, Hewlett Packard,
IBM, SAP y Symntec, lo cierto es que la BSA no puede clausurar
legalmente ningn negocio. La verdadera autoridad llega en su
acuerdo con el IMPI, el cual s tiene las facultades para aplicar
sanciones.
Adems, la UNAM, dede junio 9 del 2009 firmo un acuerdo (vase [13]):
Con el objetivo de fomentar la cultura de la legalidad en lo que
se refiere al uso del Software entre los estudiantes, la Universidad
Nacional Autnoma de Mxico y la Business Software Alliance
(BSA) firmaron un convenio general de colaboracin.
Mediante este acuerdo, se promover el uso tico de las tecnologas de la informacin y comunicacin, y se compartirn conocimientos en materia de propiedad intelectual y Software, a fin
de apoyar el desarrollo y explotacin de bienes digitales en la
antoniocarrillo@ciencias.unam.mx

34

Antonio Carrillo Ledesma

Mquinas Virtuales
UNAM, as como definir programas para contribuir al avance de
un mundo digital seguro, informaron ambas organizaciones en un
comunicado.
El secretario general de la mxima casa de estudios, Sergio M.
Alcocer Martnez de Castro, reconoci que la UNAM necesita
hacer un esfuerzo en el mbito institucional y en cada una de
las entidades que la conforman, para brindar educacin a sus
alumnos, profesores y trabajadores en este campo.
Se pretende, destac, que el convenio sea operativo y que se
desarrolle en cada una de las entidades con la imparticin de
cursos y capacitacin y en una rendicin de cuentas para que el
Software que se utilice sea legal.
El funcionario reconoci a los miembros de Business Software
Allianceen Latinoamrica, y apunt que la Universidad Nacional
har lo necesario para facilitar el uso responsable, tico y seguro
del Software.
Inform tambin que ambas partes se reunirn seis meses despus del inicio de este convenio de colaboracin para analizar los
avances.
En tanto, el director General de BSA-Mxico, Kiyoshi Tsuru Alber, resalt que con la firma de este convenio podrn impulsar
un plan conjunto relacionado con alta tecnologa, tica y legalidad
Estamos seguros que en el mediano plazo se tendrn resultados
importantes y se podr hacer la diferencia, seal.
Por su parte, el abogado general, Luis Ral Gonzlez Prez, coment que la UNAM busca difundir estos valores entre su comunidad, y llegar especialmente a los estudiantes que inician el
bachillerato, porque desde edad temprana es importante fomentar
la cultura de la legalidad.
Ante este escenario, una alternativa viable podra ser optar por el Software Libre, aunque, pese a su incipiente desarrollo es seguro que en un futuro
podra alcanzar a suplir todas las necesidades bsicas de los usuarios, dejando
la adquisicin de paquetes especializados slo para los cursos avanzados que
justifique el uso de Software privativo.
antoniocarrillo@ciencias.unam.mx

35

Antonio Carrillo Ledesma

Mquinas Virtuales

Bibliografa

Referencias
[1] http://www.gnu.org/philosophy/free-sw.es.html
[2] http://es.wikipedia.org/wiki/Software_libre
[3] http://www.hispalinux.es/SoftwareLibre
[4] http://es.wikipedia.org/wiki/Software_propietario
[5] Diferentes
Tipos
de
Licencias
para
http://www.gnu.org/licenses/license-list.html

el

Software,

[6] FSF, Free Software Fundation, http://www.fsf.org/


[7] GNU Operating System, http://www.gnu.org/
[8] QEMU, http://wiki.qemu.org/Main_Page
[9] KVM, http://www.linux-kvm.org/page/Main_Page
[10] mquinas Virtuales, http://es.wikipedia.org/wiki/M%C3%A1quina_virtual
[11] Algunos
usos
de
mquinas
http://www.configurarequipos.com/doc747.html

Virtuales,

[12] El economista, http://eleconomista.com.mx/tecnociencia/2013/01/22/


clausuraran-negocios-mexico-uso-ilegal-Software
[13] PCworld, http://www.pcworld.com.mx/Articulos/4627.htm

antoniocarrillo@ciencias.unam.mx

36

Antonio Carrillo Ledesma

S-ar putea să vă placă și