12 noviembre 2013

Ubuntu: Migrar una máquina virtual a una máquina física

Para esta aplicación en particular, Linux es mucho más versátil que Windows en el sentido de que, en general, una máquina virtual Linux se ejecutará sin demasiados problemas incluso en una máquina diferente con hardware diferente. Por el contrario, Windows es mucho más exigente con los cambios de hardware y las pantallas azules de la muerte son muy frecuentes.

Este tutorial se basa en la migración de una Máquina Virtual con Ubuntu 12.04 LTS.
Antes de empezar y para no tener problemas posteriores, lo primero que haremos será eliminar todos los snapshots de la máquina virtual sobre la que queremos realizar la migración.

A continuación, realizamos un listado de todos los discos de las máquinas virtuales y nos fijamos en la información de la máquina que nos interesa.
$ vboxmanage list hdds
[...]
UUID:        f128ad44-edfd-4cbf-962e-15703a3beb3a
Parent UUID: base
Format:      VDI
Location:    /home/user/VirtualBox VMs/ubuntu-12.04/ubuntu-12.04.vdi
State:       created
Type:        normal
Usage:       ubuntu-12.04 (UUID: 82845cce-762c-4bee-bfd9-90fbc2762e11)
[...]
Con esta información, ya estamos en disposición de realizar un clonado de la máquina virtual y forzar la salida sobre un fichero en formato RAW. (NOTA: A efectos del espacio necesario, hay que tener en cuenta que el fichero de salida acabará teniendo el mismo tamaño que el disco de la máquina virtual original).
$ vboxmanage clonehd f128ad44-edfd-4cbf-962e-15703a3beb3a disk.img \
  --format RAW
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'RAW'. UUID: cdb8dc16-ba9f-462e-abb0-4b57d4f03dee
El archivo IMG obtenido en la operación anterior no es una imagen ISO, por lo que el sistema operativo instalado no se puede configurar para ejecutarse desde un CD / DVD. Lo que haremos será hacer un volcado del contenido del fichero obtenido directamente sobre el disco físico de destino (en nuestro caso, /dev/sdb).
$ sudo dd if=disk.img of=/dev/sdb bs=32M
256+0 registros leídos
256+0 registros escritos
8589934592 bytes (8.6 GB) copiados, 76.3879 s, 112 MB/s
Una vez realizada la migración, el número y el tamaño de las particiones en el disco de destino se mantendrá exactamente igual que en la máquina virtual original.

Lo más probable es que sea necesario redimensionar las particiones para aprovechar al máximo el espacio del disco duro físico.

11 noviembre 2013

Eliminar las capturas de una imagen en VirtualBox

Antes de realizar algunas tareas más o menos habituales en el ámbito de las máquinas virtuales (como el clonado de discos virtuales o la redimensión de una partición en una máquina virtual), es necesario eliminar todas las capturas o snapshots.

Cuando se elimina una captura, en realidad, lo que se está haciendo es descartar la información de estado almacenada en ella. Los datos de disco repartidos en varios archivos creados con la captura se fusionan en un sólo archivo. Este proceso puede ser largo y, una vez terminado, la información de la captura no podrá ser recuperada.

La forma más sencilla de realizar esta operación es desde el propio GUI de VirtualBox.

1. Seleccionamos la Maquina Virtual y hacemos click sobre el icono de "Eliminar instantánea"

2. Confirmamos la operación haciendo click sobre el botón "Eliminar"

3. El resultado es una máquina virtual donde se ha fusionado el estado actual de la máquina virtual con todas las capturas existentes.

Cambiar la partición de swap por un fichero

El espacio de intercambio es una zona del disco que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele llamar swap y puede estar ubicado tanto en un fichero como en una partición exclusiva o partición de swap.

Dejando de lado el debate de si es necesario o no un espacio de intercambio, hay que tener en cuenta que ambos sistemas (fichero o disco) presentan ventajas e inconvenientes que no se van a discutir en este tutorial puesto que lo que nos planteamos es la forma de eliminar la partición de swap y utilizar en su lugar un fichero de intercambio.

1. Cálculo del tamaño de la partición de swap
En el caso que nos ocupa, partimos de una situación como la indicada en la imagen, con una partición de swap de 510MB situada dentro de una partición extendida.
Para conocer el tamaño de la partición de intercambio desde la línea de comandos se podría utilizar cualquiera de los dos comandos siguientes:
$ cat /proc/swaps
Filename                         Type          Size    Used   Priority
/dev/sda5                        partition     522236  0      -1

$ free
             total       used        free   shared   buffers    cached
Mem:        507772      86888      420884        0      9508     40804
-/+ buffers/cache:      36576      471196
Swap:       522236          0      522236
Si se divide la cifra de 522236 bytes entre 1024, se obtiene el tamaño conocido de 510MB.

2. Desactivación de la partición de swap
Antes de empezar, desactivaremos la partición de intercambio:
$ sudo swapoff -a
Se puede comprobar que, efectivamente, la partición de swap ya no está activa
$ cat /proc/swaps
Filename                         Type          Size    Used   Priority

$ free
             total       used        free   shared   buffers    cached
Mem:        507772      86888      420884        0      9508     40804
-/+ buffers/cache:      36576      471196
Swap:            0          0           0
3. Supresión de la partición de swap
A continuación ya se puede eliminar la partición de swap que, en nuestro caso, está situada en la partición /dev/sda5. También podemos eliminar la partición extendida que la contiene (/dev/sda2).
$ sudo parted /dev/sda rm 5
Información: Puede que sea necesario actualizar /etc/fstab

$ sudo parted /dev/sda rm 2
Información: Puede que sea necesario actualizar /etc/fstab
Una vez eliminada la partición de swap, la situación es la siguiente:

4. Creación del nuevo espacio de intercambio
En este punto, una vez ya ha sido eliminada la partición de swap, procederemos a crear el nuevo archivo de intercambio y a su posterior activación.

En primer lugar, generamos un archivo lleno de ceros con el mismo tamaño que tenía la partición de intercambio original (510MB).
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=510
510+0 registros leídos
510+0 registros escritos
534773760 bytes (535MB) copiados, 2,77221 s, 193 MB/s
Lo siguiente será asignar el archivo recién creado como zona de intercambio y activar el swap.
$ sudo mkswap /swapfile
Configurando la versión swapspace 1, tamaño = 522236 KiB
sin etiqueta, UUID=503822fb-5cca-46c4-abf2-a366583d24c2

$ sudo swapon /swapfile
Después de lo anterior ya volvemos a tener zona de intercambio, pero ahora, en lugar de tenerla en una partición, la tenemos en un fichero. Lo podemos comprobar de nuevo.
$ cat /proc/swaps
Filename                         Type          Size    Used   Priority
/swapfile                        file          522236  0      -1
5. Consolidación de los cambios
Para que este cambio sea consistente y se mantenga activo la próxima vez que se reinicie el equipo, es preciso reflejar los cambios realizados en el archivo /etc/fstab. Para ello, basta con cambiar el antiguo UUID de la partición de swap por el nombre del nuevo fichero de intercambio y también el punto de montaje.
$ sudo vim /etc/fstab
<files system>   <mount point>   <type>   <options>  <dump>   <pass>
/swapfile            swap         swap        sw       0        0
La próxima vez que arranque el sistema, ya dispondrá del nuevo espacio de intercambio situado en el fichero /swapfile.

07 noviembre 2013

Repositorios para versiones antiguas de Ubuntu

El calendario de versiones de Ubuntu marca que cada seis meses se publique una nueva versión del sistema.

Las versiones estándar reciben soporte de Canonical durante nueve meses por medio de actualizaciones de seguridad, parches para bugs críticos y actualizaciones menores de programas.

Las versiones LTS (Long-Term Support), que se liberan cada dos años (la próxima será la 14.04, en abril de 2014), reciben soporte durante cinco años en los sistemas de servidor y 3 en los de escritorio.

La que sigue es una tabla con el ciclo de vida de las versiones Server de Ubuntu.
Fuente: ubuntu.com
Cuando termina el ciclo de soporte de una versión determinada, lo más indicado sería reinstalar el sistema con la última versión LTS disponible. No obstante, y dada la naturaleza de un equipo determinado, podría ser conveniente no realizar esa actualización.

Dado que, una vez finalizado el fin de ciclo de las versiones, los repositorios dejan de estar disponibles, cuando intentemos acceder a ellos para instalar cualquier paquete (tanto en APT como en Synaptic) se generará un error 404.
$ sudo apt-get update
Err http://archive.ubuntu.com hardy Release.gpg
No se pudo resolver 'archive.ubuntu.com'
Err http://archive.ubuntu.com hardy/main Translation-es
No se pudo resolver 'archive.ubuntu.com'
Err http://archive.ubuntu.com hardy/restricted Translation-es
No se pudo resolver 'archive.ubuntu.com'
Err http://archive.ubuntu.com hardy/universe Translation-es
No se pudo resolver 'archive.ubuntu.com'
Err http://archive.ubuntu.com hardy/multiverse Translation-es
No se pudo resolver 'archive.ubuntu.com'
Se está leyendo la lista de paquetes... Hecho
W: No se pudo obtener http://archive.ubuntu.com/ubuntu/dists/hardy/Release.gpg No se pudo resolver 'archive.ubuntu.com'
[…]
Dado el caso, existe una forma sencilla de solucionar este problema. Se trata de modificar las fuentes de los repositorios añadiendo los repositorios old-relesases para así poder seguir utilizando APT e instalar paquetes de esas versiones descatalogadas.

Modificaremos el fichero de configuración /etc/apt/sources.list y copiaremos en él el siguiente contenido:
$ sudo vim /etc/apt/sources.list
deb http://old-releases.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ hardy main restricted
deb http://old-releases.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ hardy-updates main restricted
deb http://old-releases.ubuntu.com/ubuntu/ hardy universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ hardy universe multiverse
deb http://old-releases.ubuntu.com/ubuntu hardy-security main restricted
deb-src http://old-releases.ubuntu.com/ubuntu hardy-security main restricted
Este caso sería para la versión hardy (8.04 LTS). Si se utiliza otra versión, simplemente hay que sustituir "hardy" por el nombre de la misma.

Mapa de las versiones de Ubuntu

VersiónNombre en claveLanzamientoFin de soporte
4.10Warty Warthog20/octubre/20044730/abril/2006
5.04Hoary Hedgehog8/abril/20054831/octubre/2006
5.10Breezy Badger13/octubre/20054913/abril/2006
6.06 LTSDapper Drake1/junio/20065014/julio/2009 (escritorio)
1/junio/2011 (servidor)
6.10Edgy Eft26/octubre/20065125/abril/2008
7.04Feisty Fawn19/abril/20075219/octubre/2008
7.10Gutsy Gibbon18/octubre/20075318/abril/2009
8.04 LTSHardy Heron24/abril/20085412/mayo/2011 (escritorio)
9/mayo/2013 (servidor)
8.10Intrepid Ibex30/octubre/20085530/abril/2010
9.04Jaunty Jackalope23/abril/20095623/octubre/2010
9.10Karmic Koala29/octubre/20095730/abril/2011
10.04 LTSLucid Lynx29/abril/2010589/mayo/2013 (escritorio)
15/abril/2015 (servidor)
10.10Maverick Meerkat10/octubre/20105910/abril/2012
11.04Natty Narwhal28/abril/20116028/octubre/2012
11.10Oneiric Ocelot13/octubre/2011619/mayo/2013
12.04 LTSPrecise Pangolin26/abril/201262abril/2017
12.10Quantal Quetzal18/octubre/201263abril/2014
13.04Raring Ringtail25/abril/201364enero/2014
13.10Saucy Salamander17/octubre/201365julio/2014
ColorSignificado
RojoVersión ya sin soporte
AmarilloSolo versión de servidor con soporte
VerdeVersión con soporte (escritorio y servidor)
AzulVersión en futuro desarrollo
Fuente: wikipedia.org