18 febrero 2014

Cómo instalar Oracle (Sun) Java JRE en Linux Mint


Por regla general, las distribuciones de Linux Mint y Ubuntu incorporan OpenJDK (versión libre de Java) para poder dar soporte a LibreOffice.

OpenJDK y el plugin IcedTea son mantenidos por la comunidad y reciben actualizaciones periódicas. Funciona bien para la mayoría de los propósitos. Lo más probable es que no necesitemos Oracle Java en absoluto, pero podemos vernos en la necesidad de instalarlo y esto suele ser una fuente de problemas, ya que fue retirado de los repositorios "partner" por la revocación de la anterior licencia.

En este tutorial se muestran los pasos para instalar el Java de Oracle y, también, el correspondiente plugin para Firefox en la distribución Linux Mint..

Este paso previo se puede obviar, pero para evitar conflictos procederemos a eliminar OpenJDK y, también, todas sus dependencias.
$ sudo apt-get remove openjdk-6-jre
$ sudo apt-get autoremove
$ sudo apt-get clean
Instalación de Java
Desde la web oficial de Oracle descargamos el paquete .tar.gz correspondiente a la última versión de Java (en este momento, la 1.7.45). Descargamos desde los enlaces Linux (32-bit) o Linux x64 (64-bit). No descargar la versión RPM.

A continuación creamos els siguiente directorio en función de si nuestra arquitectura es de 32 o 64 bits.

- Versión 32-bit
$ sudo mkdir -p -v /opt/java/32
- Versión 64-bit
$ sudo mkdir -p -v /opt/java/64
Nos situamos en la carpeta donde hayamos realizado la descarga del archivo .tar.gz y lo descomprimimos. Una vez descomprimido, se habrá creado el directorio jre1.7.0_45. Lo movemos a la carpeta que hayamos creado en el paso anterior.

- Versión 32-bit
$ cd ~/Downloads
$ tar -zxvf jre-7u45-linux-i586.tar.gz
$ sudo mv -v jre1.7.0_45 /opt/java/32
- Versión 64-bit
$ cd ~/Downloads
$ tar -zxvf jre-7u45-linux-x64.tar.gz
$ sudo mv -v jre1.7.0_45 /opt/java/64
El último paso es definir el nuevo JRE por defecto y comprobar que se ha instalado correctamente.

- Versión 32-bit
$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/32/jre1.7.0_45/bin/java" 1
$ sudo update-alternatives --set java /opt/java/32/jre1.7.0_45/bin/java
$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b13)
Java HotSpot(TM) Server VM (build 24.45-b03, mixed mode)
- Versión 64-bit
$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/64/jre1.7.0_45/bin/java" 1
$ sudo update-alternatives --set java /opt/java/64/jre1.7.0_45/bin/java
$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b13)
Java HotSpot(TM) Server VM (build 24.45-b03, mixed mode)

Instalación del plugin para Firefox
Para cada usuario habrá que crear el siguiente directorio
$ mkdir -v ~/.mozilla/plugins
En ese mismo directorio, crearemos un link simbólico para que Firefox sepa dónde encontrar el plugin de Java.

- Versión 32-bit
ln -s /opt/java/32/jre1.7.0_45/lib/i386/libnpjp2.so ~/.mozilla/plugins/
- Versión 64-bit
ln -s /opt/java/64/jre1.7.0_45/lib/amd64/libnpjp2.so ~/.mozilla/plugins/
Ahora solo queda reiniciar Firefox y comprobar que la instalación ha sido efectuada. Basta con escribir about:plugins en el navegador.


15 enero 2014

Deshabilitar Ctrl+Alt+Delete en Ubuntu

Cuando se pulsan simultáneamente las teclas Control+Alt+Delete en un equipo con Ubuntu, el sistema se reinicia y muestra el siguiente mensaje por la consola de sistema.
Broadcast message from root@nombre_servidor
        (unknown) at 12:34 ...

The system is going down for reboot NOW!
Control-Alt-Delete pressed

Esta operación se controla mediante un fichero de configuración especial que se encuentra en /etc/init/control-alt-delete.conf. Para deshabilitar el reinicio del equipo (que es la operación por defecto), basta con editar ese fichero y comentar la línea que se indica.
$ sudo vim /etc/init/control-alt-delete.conf
#exec shutdown -r now "Control-Alt-Delete pressed"

31 diciembre 2013

Reinstalar drivers nVidia en Linux Mint 13

Desde hace ya algún tiempo que tengo un Dell Vostro 1310 equipado con una tarjeta gráfica NVIDIA GeForce 8400M GS y al que le instalé Linux Mint 13 MATE 64-bit.

El caso es que, en las últimas fechas, el portátil se calentaba en exceso hasta el punto de llegar a quedarse "colgado" por sobrecalentamiento. El problema estaba en que, aparte de perder todo el trabajo no guardado, también se perdía la configuración de los drivers de la tarjeta gráfica y, en consecuencia, no arrancaba el servidor gráfico.

En este tutorial contaré la forma en que solucioné el problema.

1. Resolver el sobrecalentamiento de la CPU
Aunque, por importancia, este era el primer problema que había que solventar, no es el objeto de este tutorial. Lo que hice para solucionarlo fue restituir la capa de pasta térmica entre la CPU y el radiador.


2. Reinstalar (la última versión de) los drivers de la tarjeta gráfica
Hay que recordar que en el caso que nos ocupa no disponemos de servidor gráfico. Por lo tanto, todas las instrucciones se ejecutarán desde la consola del sistema.

Previamente, desde otro equipo, accederemos a la zona de descargas de la web de NVIDIA y descargaremos los drivers adecuados al sistema: en nuestro caso, GeForce 8400M GS para Linux de 64-bit.


Una vez realizada la descarga, copiamos el archivo (en nuestro caso, NVIDIA-Linux-x86_64-331.20.run) en el equipo donde haya que reinstalar los drivers.

Antes de proceder, actualizaremos del sistema
$ sudo apt-get update && sudo apt-get upgrade
A continuación, si no están instalados ya, instalamos los siguientes paquetes:
$ sudo apt-get install build-essential linux-headers-$(uname -r)
Nos situamos en el directorio donde hayamos copiado el archivo de los drivers y le asignamos permisos de ejecución
$ chmod +x NVIDIA-Linux-x86_64-331.20.run
Si ya habíamos instalado los drivers a mano anteriormente, los desinstalamos
$ sudo sh NVIDIA-Linux-x86_64-331.20.run --uninstall
Eliminamos los paquetes anteriores de nvidia y, también, el driver libre "nouveau"
$ sudo apt-get remove --purge nvidia*
$ sudo apt-get remove --purge xserver-xorg-video-nouveau
Editamos la lista negra que indica qué módulos no deben cargarse mediante modprobe y, al final del archivo, le añadimos los siguientes módulos:
$ sudo vim /etc/modprobe.d/blacklist.conf
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
Nos aseguramos de detener el servicio Mint Display Manager (mdm), ejecutamos el script que nos instalará los nuevos drivers (privativos) de NVIDIA y volvemos a arrancar el servicio mdm
$ sudo service mdm stop
$ sudo sh NVIDIA-Linux-x86_64-331.20.run
$ sudo service mdm stop
Si arranca la interfaz gráfica es señal de que ya tenemos instalado los drivers. En este punto sería recomendable reiniciar el sistema.
$ sudo reboot
Al arrancar de nuevo, para comprobar que ya están instalados vamos al menú y en el buscador escribimos "nvidia". Debería salir el "NVIDIA X Server Settings".

También se pueden buscar desde la consola:
$ glxinfo | grep direct 
direct rendering: Yes
    GL_EXT_Cg_shader, GL_EXT_depth_bounds_test, [...]
Si devuelve "Yes" quiere decir que están instalados.

A TENER EN CUENTA: La solución tomada en este tutorial es eliminar el driver libre nouveau para NVIDIA y proceder a la instalación de los respectivos drivers propietarios del fabricante.

Concatenar ficheros PDF en Ubuntu

En Ubuntu existen varias formas de unir varios archivos PDF (file1.pdf, file2.pdf) en un único archivo de salida (mergedfile.pdf). En este tutorial veremos 3 formas de hacerlo:

1. GhostScript
Si es preciso, instalamos el paquete ghostscript.
$ sudo apt-get install ghostscript
Para concatenar los archivos, ejecutamos el siguiente comando:
$ gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sDEVICE=pdfwrite \
  -sOutputFile=mergedfile.pdf file1.pdf file2.pdf
Esta es una breve explicación del comando
gs         llamada al programa Ghostscript.
-dBATCH    una vez Ghostscript ha procesado los archivos PDF,
           finaliza la ejecución. Si no se incluye esta opción,
           Ghostscript se mantendrá en ejecución.
-dNOPAUSE  fuerza a Ghostscript a procesar cada página sin pausa para 
           interacción del usuario.
-q         evita que Ghostscript muestre mensajes mientras trabaja
-sDEVICE=pdfwrite 
           indica a Ghostscript que procese los archivos con su 
           escritor de PDF interno.
-sOutputFile=finished.pdf
           indica a Ghostscript que guarde el archivo PDF combinado 
           con el nombre especificado.

2. PDF Toolkit
Si es preciso, instalamos el paquete pdftk.
$ sudo apt-get install pdftk
Para concatenar los archivos, ejecutamos el siguiente comando:
$ pdftk file1.pdf file2.pdf cat output mergedfile.pdf
Para concatenar, en orden alfabético, todos los archivos PDF de un directorio se puede hacer lo siguiente:
$ pdftk *.pdf cat output mergedfile.pdf
Más información y ejemplos de uso de pdftk disponibles aquí.


3. PDF Shuffler
A diferencia de las dos soluciones anteriores que se basaban en aplicaciones que se ejecutaban desde la línea de comandos, PDF Shuffler es una aplicación con un GUI muy básico y sencillo de manejar. Basta con ir añadiendo los archivos que se quieren concatenar y salvar el PDF resultante.

El paquete se puede instalar desde la línea de comandos:
$ sudo apt-get install pdfshuffler


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

15 junio 2013

Backup/Restore del MBR

Un registro de arranque principal, conocido también como registro de arranque maestro o por su nombre en inglés Master Boot Record (abreviado MBR) es el primer sector ("sector cero") de un dispositivo de almacenamiento de datos, como un disco duro. A veces, se emplea para el arranque del sistema operativo con bootstrap, otras veces es usado para almacenar una tabla de particiones y, en ocasiones, se usa sólo para identificar un dispositivo de disco individual, aunque en algunas máquinas esto último no se usa y es ignorado.

Backup del MBR

En UNIX y GNU/Linux se puede usar el comando dd para hacer una copia de seguridad del MBR (en este caso, del disco sda):
$ sudo dd if=/dev/sda of=/path/to/file/mbr.512.img bs=512 count=1
Si se quiere hacer una copia de seguridad del MBR, sería recomendable copiar los primeros 63 sectores del disco (que equivaldrían al primer cilindro del disco) y no sólo el primero, ya que nuestro sistema podría tener implementado el sistema GUID, el cual utiliza más sectores para guardar la información sobre las particiones del disco duro. La instrucción sería parecida:
$ sudo dd if=/dev/sda of=/path/to/file/mbr_63.512.img bs=512 count=63
Borrado del MBR

Para borrar el MBR, si no tenemos una copia de seguridad pero necesitamos eliminar la información de este sector, tenemos que poner los 512 bytes a cero. Para ello bastará con borrar los primeros 446 bits porque el resto de MBR contiene la tabla de particiones :
$ sudo dd if=/dev/zero of=/dev/sda bs=446 count=1
Restauración del MBR

Desde la consola, igualmente, se puede restaurar el MBR
$ sudo dd of=/dev/sda if=/path/to/file/mbr.512.img bs=512 count=1
Advertencia: Restaurar el MBR con una tabla de particiones diferente hará que sus datos sean ilegibles y casi imposible de recuperar.
En los sistemas operativos de Microsoft no hay acceso directo al MBR. En DOS o Windows 9x, el programa de DOS fdisk junto con fdisk /mbr (del que no hay documentación) reescribirá el código del MBR. En Windows 2000 y posteriores, la consola de recuperación puede usarse para escribir el nuevo código del MBR al disco duro. Existen otras utilidades para editar la tabla de particiones del MBR directamente.

Si se está haciendo un backup del disco duro (lo que en inglés se conoce como ghosting) y da avisos de que no se encuentra el fichero de paginación, seguramente se pueda solucionar con fdisk /fixmbr (ejecutado desde un disquete, ya que no se podrá entrar en Windows).

13 junio 2013

Cambiar el UUID de una partición

Después de haber realizado un volcado de una partición sobre otra con el comando dd, es habitual que los UUID de ambas particiones queden iguales. En el caso del ejemplo, hemos hecho un volcado de la partición /dev/sda5 sobre la partición /dev/sda3. De ahí que ambas particiones tengan el mismo UUID.
$ sudo blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: LABEL="DELLUTILITY" UUID="805E-EA66" TYPE="vfat"
/dev/sda2: LABEL="OS" UUID="50A5-D2A7" TYPE="vfat"
/dev/sda3: UUID="294a6668-e7ac-46d6-9394-f5c19061fed4" TYPE="ext4"
/dev/sda5: UUID="294a6668-e7ac-46d6-9394-f5c19061fed4" TYPE="ext4"
/dev/sda6: UUID="3e2e04c1-f76a-43a3-865e-2cb3e415e140" TYPE="swap"
Lógicamente, el hecho de que dos particiones distintas tengan el mismo UUID va a generar un problema puesto que el sistema no va a poder distinguir entre ambas particiones. Para solucionarlo, vamos a cambiar el UUID de la partición /dev/sda3.

En nuestro caso, hemos consultado el archivo /boot/grub/grub.cfg y hemos podido recuperar el UUID original de la partición /dev/sda3 (147589f2-5680-4727-b1d6-acbc43d335c1). Si no fuera posible recuperar el UUID, siempre se puede generar uno nuevo con el comando uuidgen.
$ uuidgen
fdd9b2c0-ae0e-4c2b-a833-084462e97bd9
Finalmente, una vez conocemos el nuevo UUID para la partición podemos proceder al cambio y a la posterior comprobación.
$ sudo tune2fs /dev/sda3 -U 147589f2-5680-4727-b1d6-acbc43d335c1
$ sudo blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: LABEL="DELLUTILITY" UUID="805E-EA66" TYPE="vfat"
/dev/sda2: LABEL="OS" UUID="50A5-D2A7" TYPE="vfat"
/dev/sda3: UUID="147589f2-5680-4727-b1d6-acbc43d335c1" TYPE="ext4"
/dev/sda5: UUID="294a6668-e7ac-46d6-9394-f5c19061fed4" TYPE="ext4"
/dev/sda6: UUID="3e2e04c1-f76a-43a3-865e-2cb3e415e140" TYPE="swap"

29 mayo 2013

Eliminar el sufijo de país en Blogger

Desde hace ya un tiempo, Blogger añade a todos sus blogs el sufijo correspondiente al dominio TLD del país desde el que se realiza la consulta (.es si se visita desde España, .mx desde Mexico, .fr desde Francia, etc.). De este modo, si se visita este blog (ubicado en barralog.blogspot.com) desde Alemania, Blogger nos intentará redirigir automáticamente hacia barralog.blogspot.com.de.

Hay diversas razones por las que esto puede llegar a ser una molestia, por eso os indico una forma de solventarlo. Basta con insertar el siguiente código dentro del <head> de la plantilla.
<script type="text/javascript"> 
   //<![CDATA[
   // Eliminar el sufijo del TLD de cada país en blogger
   var host = document.location.hostname;
   var ruta = document.location.pathname;
   var positive = host.substr(host.lastIndexOf("."));
   if (positive != ".com") {
      var output = "http://" + host.substr(0, host.indexOf("."));
      output += ".blogspot.com/ncr" + ruta;
      window.location.replace(output);
   }
   //]]>
</script>
Nota: Esta acción no está penalizada en absoluto por Blogger y tampoco afecta a AdSense.

13 mayo 2013

Desconectar sesión remota

En algunas ocasiones se puede dar el caso de establezcamos una conexión por ssh a un servidor remoto y que, por la razón que sea, al cerrar esa conexión, la sesión haya quedado abierta. En este artículo veremos una forma de eliminar esa sesión remota "fantasma".

Habilitar HTTPS en apache

En algunas ocasiones (envío de formularios, páginas de autenticación, etc.) es necesario que nuestro servidor web pueda entregar páginas cifradas bajo el protocolo seguro HTTPS. En este artículo se muestran cuales son los pasos a seguir para i) generar un certificado SSL autofirmado y ii) configurar convenientemente el servidor apache2 para que pueda entregar la página https://www.midominio.com.

02 mayo 2013

Extraer lineas de un archivo

Actualmente estoy manipulando un fichero LDIF que tiene alrededor de 6.800.000 líneas.

El caso es que si utilizo un editor gráfico como por ejemplo gedit, al tener que manejar un archivo de ese tamaño, el sistema se cuelga. Por otro lado, según qué tipo de operación se deba realizar, el uso de editores en modo consola como nano o vim puede llegar a ser incómodo.

Para esos casos, puede servir de ayuda un pequeño script que nos permita la extracción de algunas líneas de código del archivo original. Basta con pasarle la línea de inicio, la línea final y el nombre del archivo sobre el que realizar la extracción.
if [ $# -eq 3 ]; then 
   first=$1 
   last=$2 
   file=$3
   head -n $last $file | tail -n `expr $last - $first + 1` 
else 
   echo "Usage: `basename $0` [firstLine] [lastLine] [file]" 
fi

05 abril 2013

perl: warning: Setting locale failed.

Al instalar cualquier paquete mediante el uso de apt-get en Ububtu Server 12.04 LTS, el sistema genera un error como este:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
 LANGUAGE = "en_US:en",
 LC_ALL = (unset),
 LC_TIME = "es_ES.UTF-8",
 LC_MONETARY = "es_ES.UTF-8",
 LC_ADDRESS = "es_ES.UTF-8",
 LC_TELEPHONE = "es_ES.UTF-8",
 LC_NAME = "es_ES.UTF-8",
 LC_MEASUREMENT = "es_ES.UTF-8",
 LC_IDENTIFICATION = "es_ES.UTF-8",
 LC_NUMERIC = "es_ES.UTF-8",
 LC_PAPER = "es_ES.UTF-8",
 LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory
La forma de solucionarlo (fijando los locales en inglés y español) es la siguiente
$ sudo locale-gen en_US en_US.UTF-8 es_ES es_ES.UTF-8
Generating locales...
en_US.ISO-8859-1... done
en_US.UTF-8... up-to-date
es_ES.ISO-8859-1... done
es_ES.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
en_AG.UTF-8... done
en_AU.UTF-8... done
en_BW.UTF-8... done
en_CA.UTF-8... done
en_DK.UTF-8... done
en_GB.UTF-8... up-to-date
en_HK.UTF-8... done
en_IE.UTF-8... done
en_IN.UTF-8... done
en_NG.UTF-8... done
en_NZ.UTF-8... done
en_PH.UTF-8... done
en_SG.UTF-8... done
en_US.ISO-8859-1... up-to-date
en_US.UTF-8... up-to-date
en_ZA.UTF-8... done
en_ZM.UTF-8... done
en_ZW.UTF-8... done
es_ES.ISO-8859-1... up-to-date
es_ES.UTF-8... up-to-date
Generation complete.