domingo, 6 de diciembre de 2009

Restaurando GRUB 2 en Debian GNU / Linux

Hay veces en el que el gestor de arranque GRUB se puede estropear. Por ejemplo, al instalar otro sistema operativo.

Para recuperarlo, debemos arrancar con un CD de instalación de Debian en modo "rescue". Una vez configurado el idioma del teclado, abrimos otra consola con "Alt-F2" y ejecutamos los siguientes comandos:

mount /dev/sda3 /mnt mount -t proc /proc /mnt/proc mount --bind /dev /mnt/dev chroot /mnt/ grub-install /dev/sda

De esta forma, hemos recuperado el sector de arranque en "/dev/sda", teniendo la instalación de Debian en la partición "/dev/sda3".

domingo, 4 de octubre de 2009

Configuración de un servidor SSH en Debian GNU / Linux

En este artículo vamos a ver una serie de recomendaciones para tener un servidor SSH lo más seguro posible.

Los pasos de la configuración son los siguientes:

1. Instalación
2. Uso de pares de claves
3. Cambiar el puerto por defecto

A continuación se detallan cada uno de estos pasos:

1. Instalación

Para la instalación únicamente debemos ejecutar el siguiente comando:

aptitude install ssh

2. Uso de pares de claves

Configurando el servidor SSH para que solo se pueda acceder mediante pares de claves SSH se obtiene un gran beneficio. Por un lado, se obtiene mayor seguridad, ya que para el acceso a la máquina se debe disponer de una clave privada cuya clave publica este dada de alta en el servidor. Y por otro lado, es posible configurar que la clave privada de acceso esté guardada sin contraseña, de forma que se pueda acceder directamente al servidor sin que se solicite ningún tipo de contraseña. Esto puede ser útil, por ejemplo, para scripts de tareas automatizadas.

El primer paso será generar un par de claves SSH y configurar el servidor para que se pueda acceder con ellas.

Generamos el par de claves en el cliente de la siguiente forma:

ssh-keygen -t dsa -C "USERNAME@DOMAIN"

En el comando anterior podemos sustituir USERNAME por el nombre del usuario y DOMAIN por el dominio que queramos.

Durante la creación nos solicitará una contraseña que será la que proteja la clave privada generada. Si se considera que la cuenta del usuario está en un entorno fiable podemos omitirla y acceder al servidor SSH automáticamente sin contraseña.

Para permitir que ese cliente se conecte con las claves generadas a un usuario del servidor, debemos crear un fichero "$HOME/.ssh/authorized_keys" que contenga la información de la clave pública que hemos generado. Por defecto, la clave pública se genera en un fichero "$HOME/.ssh/id_dsa.pub". En el fichero "authorized_keys" se podrán meter todas las claves públicas que se desee y cada una deberá estar en una línea.

Es muy importante el tema de permisos en estos ficheros. Únicamente deberán poder ser accesibles por el usuario de la cuenta en la que esté contenido cada fichero.

Por último, si queremos que únicamente se permita el acceso a la máquina mediante pares de claves y no se permita acceder mediante usuario y contraseña, debemos configurar en el fichero "/etc/ssh/sshd_config" el valor de la variable "PasswordAuthentication" a "no" y reiniciar el servidor de SSH.

Si un usuario tiene varias claves, puede seleccionar la clave que quiere usar con el parámetro "-i" del comando ssh.

También es interesante impedir que se pueda acceder directamente con el usuario root. Para ello, debemos configurar en el fichero "/etc/ssh/sshd_config" el valor de la variable "PermitRootLogin" a "no" y reiniciar el servidor de SSH.

3. Cambiar el puerto por defecto

Cambiando el puerto por defecto del servicio SSH se consigue burlar ciertos escaneres de puertos. Para ello editamos el fichero "/etc/ssh/sshd_config" y cambiamos el parámetro "Port".

Al cambiar el puerto, para acceder al servicio debemos indicar un parámetro adicional. Por ejemplo, si cambiamos el servicio al puerto 1234 usaríamos el siguiente comando:

ssh -p 1234 user@hostname

domingo, 13 de septiembre de 2009

Reparar BIOS corrupta de ordenador

Hace algún tiempo, actualizando la BIOS del ordenador se produjo algún problema y quedó corrupta. El ordenador no arrancaba.
Trás el susto y pensar que me tocaba comprar otra placa base, descubrí en Internet que si la BIOS es enchufable, osea, que no va soldada a la placa base sino que tiene un conector, se puede reprogramar con un programador. Estos programadores los suelen tener en las tiendas de electrónica y, por un módico precio, te programan todo tipo de chips.

Por lo que cogí el chip de la BIOS y un disquete, con el programa a cargar en la BIOS, y por unos 4 euros me reparon la BIOS en una tienda de electrónica de Madrid llamada Conectrol.

En Madrid hay varias tiendas de electrónica que seguro que dan este servicio. Son estas:

Conectrol
Diotronic
Actrón

Conexión a internet en el ordenador mediante móvil bluetooth GPRS

Este artículo explica como configurar una instalación de Debian GNU / Linux para conectarse a Internet usando la conexión GPRS de un teléfono movil Sony-Ericsson w800i.

Se deben tener instalados los paquetes bluez-utils y ppp.

El primer paso es activar el bluetooth en el móvil y localizarlo en el ordenador con el siguiente comando:

hcitool scan

Se obtiene un resultado con una dirección del tipo 11:22:33:44:55:66, que es la dirección que identifica el móvil por bluetooth.

Ahora se debe emparejar el móvil. Para ello debemos ejecutar los siguientes comandos con el usuario root:

hcitool cc 11:22:33:44:55:66
hcitool auth 11:22:33:44:55:66

Con el siguiente comando obtenemos los servicios que proporciona el móvil por bluetooth:

sdptool browse 11:22:33:44:55:66

Para poder usar el móvil para conectarse a internet desde un ordenador tiene que tener un servicio del tipo "Dial-up Networking". Por ejemplo, se debe obtener información de este tipo:

Service Name: Dial-up Networking
Service RecHandle: 0x10001
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100

Con el siguiente comando nos conectamos con el móvil para que se cree un canal de comunicación:

rfcomm connect /dev/rfcomm 11:22:33:44:55:66 1

El valor 1 del final del comando es el canal asociado al servicio del tipo "Dialup Networking".

Para evitar tener que ejecutar este comando cada vez que vayamos a usar la conexión, podemos crear una entrada en el fichero "/etc/bluetooth/rfcomm.conf" con la siguiente información:

rfcomm0 {
bind no;
device 11:22:33:44:55:66;
channel 1;
comment "Sony-Ericsson W800i";
}

Y con esta configuración solo tendremos que ejecutar el comando de la siguiente forma:

rfcomm connect rfcomm0

Otra opción es poner el parámetro bind con el valor yes, y al reiniciar el servicio de bluetooth se realizará la conexión automáticamente. Para reiniciar el servicio se ejecuta como root el siguiente comando:

/etc/init.d/bluez-utils restart

Para poder usar el móvil como modem, el usuario del ordenador debe pertenecer a los grupos dialout y dip. Para ello se puede editar como root el archivo "/etc/group" y añadir el usuario a los grupos correspondientes.

El siguiente paso es crear como root el fichero "/etc/ppp/peers/bluetooth_w800i" con el siguiente contenido:

debug
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/bluetooth_w800i"
usepeerdns
/dev/rfcomm0 115200
defaultroute
crtscts
lcp-echo-failure 0

Y después crear como root el fichero "/etc/chatscripts/bluetooth_w800i" con el siguiente contenido:

TIMEOUT 35
ECHO ON
ABORT '\nBUSY\r'
ABORT '\nERROR\r'
ABORT '\nNO ANSWER\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO DIALTONE\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
'' \rAT
OK 'AT+CGDCONT=2,"IP","nombre_apn"'
OK ATD*99***numero_perfil_datos#
CONNECT ""

El el fichero anterior se debe sustituir el valor numero_perfil_datos por la posición en la configuración del móvil del perfil de conexión de datos que queremos usar. Y el valor nombre_apn por el nombre del APN que tiene configurado el perfil del móvil.

Una vez hechos estos pasos ya tenemos todo configurado. Solo tenemos que ejecutar el siguiente comando para iniciar la conexión:

pon bluetooth_w800i

Y el siguiente comando para desconectarse:

poff bluetooth_w800i

Si algo no funciona correctamente podemos consultar las trazas del fichero "/var/log/messages" para intentar descubrir el error.

Espero este artículo sea de ayuda.

Saludos,
Tony

miércoles, 2 de septiembre de 2009

Trabajando con DVDs en Debian GNU / Linux

A continuación mostraré varios comandos bastante prácticos para manipular DVD en Linux.

Con el siguiente comando podemos compiar un DVD completo al disco duro como imagen ISO. Con esto obtenemos una copia completa del DVD para posteriormente copiarla a un DVD, o simplemente para reproducirlo desde el disco duro. El comando sería el siguiente.

dd if=/dev/dvd of=copia.iso

De esta forma, se leerá todo el contenido del dispositivo "/dev/dvd" en el fichero "copia.iso".

El contenido del DVD anterior se puede ver montándolo en un directorio. Para esto, debemos ejecutar el siguiente comando como usuario root:

mount -o loop copia.iso /mnt

Con este comando se monta en la carpeta "/mnt" el ISO del DVD obtenido con el comando anterior.

Con el siguiente comando podemos crear un DVD a partir del contenido obtenido de otro DVD. Para ello creamos un directorio, copiamos la estructura del DVD (directorios AUDIO_TS y VIDEO_TS) y ejecutamos el siguiente comando:

genisoimage -dvd-video -V "Nombre o etiqueta del DVD" -o nuevo_dvd.iso directorio_estrucura_dvd

domingo, 30 de agosto de 2009

Cambiar la relación de aspecto de un video en formato AVI con sonido dual en Debian GNU / Linux

Hay que ejecutar los siguientes tres comandos:

mencoder -force-avi-aspect 1.77777777778 -ovc copy -oac copy -aid 1 -o video_y_audio_1.avi video_origen.avi
avimerge -i video_y_audio_1.avi -p video_origen.avi -a 1 -o video_y_audio_1_y_audio_2.avi

La relación de aspecto se cambia en el primer comando con el parámetro "-force-avi-aspect".
También se puede quitar el parámetro y la relación de aspecto se dejará vacía en el video resultante, con lo que los reproductores de video la calcularán automáticamente usando la resolución del video.

lunes, 27 de julio de 2009

Servidor Multimedia uPnP para PlayStation 3 en Debian GNU / Linux

El servidor uPnP que vamos a configurar es MediaTomb, ya que está incluido en Debian. Con él podremos usar desde la PlayStation 3 toda la música, fotos y videos contenidos en nuestro ordenador.

Para su instalación debemos instalar el paquete "mediatomb" y todas sus dependencias, que se instalarán automáticamente.

Los ficheros de configuración que utiliza son los siguientes:
  • /etc/mediatomb/config.xml
  • /etc/default/mediatomb
En el primero de estos ficheros vamos a configurar la etiqueta "protocolInfo" con el parámetro "extend" al valor "true", para que los MP3 y MPEG4 funcionen correctamente en la PlayStation 3. También, con la misma finalidad, deberemos descomentar en este fichero una etiqueta "map" para que el tipo mime asociado a los fichero con extensión "avi" sea "video/divx".

Para añadir los contenidos multimedia al servidor debemos acceder a la siguiente URL:

http://localhost:49152/

En ella podemos ver el sistema de ficheros y añadir los directorios o ficheros que queramos compartir.

Ya solo queda acceder a los contenidos desde la PlayStation 3. Hay que que tener en cuenta, que los videos solo se mostrarán desde el menú de videos de la consola, la música desde el menú de música, y las imágenes desde el menú imágenes.

jueves, 26 de marzo de 2009

Instalando Debian GNU / Linux en un MacBook

Los pasos para la instalación que explico a continuación son para un MacBook de finales del 2006 y se va a intalar Debian 5.0 (Lenny).

Los pasos de instalación son los siguientes:

1. Particionando el disco
2. Configurando el gestor de arranque dual
3. Realizando la instalación
4. Configurando X Windows
5. Configurando la red Wifi
6. Configurando las teclas de función
7. Configurando la hibernación
8. Configurando la webcam

A continuación se detallan cada uno de estos pasos:

1. Particionando el disco

El primer paso es dejar espacio para la instalación de Debian. Para ello usamos la herramienta "diskutil" que viene en Mac OS X. Por ejemplo, para dejar una partición de Mac OS X de 40 GB ejecutamos el siguiente comando:

sudo diskutil resizevolume disk0s2 40G

Este comando está disponible a partir de la versión 10.4.6 de Mac OS X.

2. Configurando el gestor de arranque dual

Para el arranque dual podemos usar el programa rEFIt. En su página web se descargar y también está toda la documentación para su instalación.

Otra opción es usar el gestor de arranque por defecto del MacBook. Para ello solo hay que pulsar la tecla "Alt / Option" durante el arranque y nos mostrará los dispositivos desde los que se puede arrancar: Mac OS X, Windows, o un CD de arranque, si hay alguno en el lector. Para Poner por defecto el arranque en Linux se debe pulsar la tecla "Control" y seleccionar la opción de Windows. Terminada la instalación de Debian, la opción "Windows" será la que lo arranque ... que le vamos a hacer :-(

3. Realizando la instalación

El CD de instalación de Debian GNU /Linux 5.0 Lenny contiene todas las herramientas preparadas para que funcionen correctamente en el MacBook. Lo más importante es que incluye la nueva versión de Grub por defecto que es compatible con el sistema de particiones de disco de Apple. Por lo tanto, la instalación de realizará de forma normal. Eso sí, seleccionar que Grub se instale en la partición con Linux (/dev/sda3) y no en el MBR, ya que puede dar problemas como por ejemplo, que tarde mucho en aparecer la pantalla de Grub en el arranque.

A la hora de reparticionar el disco, hay que tener en cuenta el orden de las particiones para que el sistema funcione correctamente. Si no se utiliza un orden correcto el sistema de arranque de Apple puede que no las detecte correctamente. Por ejemplo, la tercera partición debe ser de tipo Linux, no podemos ponerla de tipo SWAP. El siguiente orden de particiones ha funcionado correctamente en mi caso:

Number Start End Size File system Name Flags 1 20,5kB 210MB 210MB fat32 EFI System Partition boot 2 210MB 54,4GB 54,2GB hfs+ Apple_HFS_Untitled_1 3 54,4GB 104GB 50,0GB ext3 linux 4 104GB 108GB 3601MB linux-swap swap 5 108GB 250GB 142GB ext3 data

El único paso adicional a realizar es sincronizar la tabla de particiones GPT usada por Mac con la tabla MBR. Para ello, una vez reparticionado el disco en la instalación, debemos acceder a la segunda consola presionando ctrl+alt+F2 y ejecutar los siguientes comandos:

chroot /target aptitude install refit /target/sbin/gptsync /dev/sda


4. Configurando X Windows

La configuración de la tarjeta gráfica la detecta automáticamente, lo único que he configurado el es touchpad a mi gusto y que la tecla "Alt-Gr" sea la tecla Apple de la derecha.

La configuración realizada al touchpad es para que con los dos dedos sobre el touchpad se haga scroll horizontal y vertical, y para que haciendo click con dos dedos equivalga al botón derecho del ratón.

Este es mi fichero "/etc/X11/xorg.conf" con la configuración:

# xorg.conf (X.Org X Window System server configuration file) # # This file was generated by dexconf, the Debian X Configuration tool, using # values from the debconf database. # # Edit this file with caution, and see the xorg.conf manual page. # (Type "man xorg.conf" at the shell prompt.) # # This file is automatically updated on xserver-xorg package upgrades *only* # if it has not been modified since the last upgrade of the xserver-xorg # package. # # If you have edited this file but would like it to be automatically updated # again, run the following command: # sudo dpkg-reconfigure -phigh xserver-xorg Section "InputDevice" Identifier "Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "es" Option "XkbOptions" "lv3:rwin_switch" EndSection Section "InputDevice" Identifier "Pointer" Driver "synaptics" Option "CorePointer" Option "SendCoreEvents" "true" Option "Device" "/dev/input/mouse2" Option "Protocol" "auto-dev" Option "SHMConfig" "true" Option "FingerLow" "20" Option "FingerHigh" "30" Option "FingerPress" "250" Option "MaxTapTime" "150" Option "MaxTapMove" "200" Option "SingleTapTimeout" "150" Option "MaxDoubleTapTime" "200" Option "ClickTime" "50" Option "FastTaps" "false" Option "VertEdgeScroll" "0" Option "HorizEdgeScroll" "0" Option "VertTwoFingerScroll" "1" Option "HorizTwoFingerScroll" "1" Option "VertScrollDelta" "20" Option "HorizScrollDelta" "100" Option "CornerCoasting" "0" Option "CoastingSpeed" "0" Option "MinSpeed" "0.50" Option "MaxSpeed" "0.95" Option "AccelFactor" "0.025" Option "LockedDrags" "1" Option "LockedDragTimeout" "500" Option "TapButton1" "1" Option "TapButton2" "3" Option "TapButton3" "0" Option "RTCornerButton" "0" Option "RBCornerButton" "0" Option "LTCornerButton" "0" Option "LBCornerButton" "0" Option "PalmDetect" "1" Option "PalmMinWidth" "10" Option "PalmMinZ" "200" EndSection Section "Device" Identifier "Configured Video Device" EndSection Section "Monitor" Identifier "Configured Monitor" EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" EndSection

Con el comando "synclient" se pueden modificar estos valores "en caliente" para ajustar sus valores óptimos.

Además, existe un comando para hacer que no funcione el touchpad cuando tecleamos. Para ello se debe ejecutar el siguiente comando:

/usr/bin/syndaemon -i 0.5s -d

Para que se ejecute este comando en el arranque del entorno visual podemos ponerlo en el fichero ".kde/Autostart/syndaemon.sh", si usamos KDE, en el fichero ".xinitrc", si usamos el comando "startx" para arrancar el entorno visual, o en otro fichero de inicio correspondiente al gestor de ventanas usado.

5. Configurando la red Wifi

La tarjeta de red puede funcionar con el driver MadWifi o compilando un kernel versión 2.6.27 o superior.

Para configurar la tarjeta Wifi con el driver de Madwifi ejecutamos los siguientes comandos:

aptitude install module-assistant m-a prepare m-a a-i madwifi modprobe madwifi

Una vez hecho esto ya debemos tener funcionando la tarjeta.

El driver MadWifi es un poco inestable, por lo que recomiendo instalar un kernel más moderno. Para ello tenemos dos opciones, bien compilar un nuevo kernel, o instalar un kernel de una versión de pruebas.

Para instalar un kernel de la versión de pruebas de Debian podemos obtenerlo de la siguiente dirección:

http://packages.qa.debian.org/l/linux-2.6.html

E instalarlo con el siguiente comando:

dpkg -i linux-image-2.6.30-2-686_2.6.30-8_i386.deb

Para realizar una compilación del kernel ejecutamos los siguientes comandos como usuario root:

cd /usr/src
wget -c http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.1.tar.bz2
tar jxvf linux-2.6.29.1.tar.bz2
cd linux-2.6.29.1
aptitude install build-essential pkg-config ncurses-dev kernel-package
make mrproper
cp /boot/config-2.6.26-1-amd64 .
make menuconfig

Se debe cargar la configuración del fichero "config-2.6.26-1-amd64" y activar las siguientes opciones:

-*- Networking support --->
<M> Bluetooth subsystem support --->
Bluetooth device drivers --->
<M> HCI USB driver

Device Drivers --->
[*] Network device support --->
Wireless LAN --->
<M> Atheros 802.11n wireless cards support (NEW)

Guardamos la configuración y ejecutamos lo siguiente:

make-kpkg clean make-kpkg --initrd kernel_image kernel_headers cd .. dpkg -i linux-image-2.6.29.1_2.6.29.1-10.00.Custom_amd64.deb

Una vez reiniciemos la máquina con el nuevo kernel detectará automáticamente la tarjeta de red Wifi.

Os recomiendo el uso de Network Manager para gestionar las redes si es un entorno de escritorio por su sencillez de configuración.

6. Configurando las teclas de función

Para que las teclas de función del teclado actúen correctamente debemos instalar el paquete "pommed". Se pueden realizar los ajustes necesarios en el fichero "/etc/pommed.conf".

7. Configurando la hibernación

Para que la suspensión en memoria funcione correctamente debemos editar el fichero "/etc/hibernate/ususpend-ram.conf" y descomentar la línea con el parámetro "USuspendRamForce" a "yes".

Para probar que la suspensión en memoria funciona correctamente, ejecutamos como usuario root el comando "hibernate-ram". Si este comando da problemas, podemos ejecutar el comando "s2ram -f" para ver que está ocurriendo.

Parece ser que la suspensión a disco, también llamada hibernación, da problemas con los kernel de 64 bits (amd64), por lo que debemos instalar un kernel para 686.

Para asegurarnos de que la hibernación está configurada correctamente editamos el fichero "/etc/initramfs-tools/conf.d/resume" y nos aseguramos de que apunta a la partición de SWAP correcta. Podemos ejecutar el comando "free" para asegurarnos de que el tamaño de SWAP activo es el correcto.

También debemos comprobar que el fichero "/etc/uswsusp.conf" tiene configurados los valores correctos. Si no es así podemos ejecutar el comando "dpkg-reconfigure uswsusp" y realizar la configuración correcta. Este comando también configurará automáticamente la imagen de arranque (initrd.img) del kernel en ejecución, aplicando el parámetro RESUME configurado previamente.

Por último, para que funcione desde el entorno gráfico, por ejemplo con kpowersave, debemos meter al usuario en el grupo "powerdev".

Para probar la suspensión a disco podemos ejecutar el comando "hibernate-disk", y si este falla, ejecutamos el comando "s2disk" para ver el problema.

8. Configurando la webcam

El primer paso es montar la partición de MacOS X, y localizar el firmware de la webcam. Para ello ejecutamos los siguientes comandos:

mount -t hfsplus /dev/sda2 /mnt/ ls /mnt/mac/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport

Instalamos el paquete necesario para extraer el firmware con el siguiente comando:

aptitude install isight-firmware-tools module-assistant

Durante la instalación deberemos especificar la ruta donde hemos localizado el firmware.

Se puede volver a configurar posteriormente ejecutando el comando:

dpkg-reconfigure -plow isight-firmware-tools

Instalamos el módulo del kernel con el siguiente comando:

modprobe uvcvideo

Y realizamos una prueba con este comando:

mplayer -tv driver=v4l2:input=1:width=640:height=480:device=/dev/video0:outfmt=uyvy:fps=24 tv://

Puede que sea necesario apagar (no reiniciar) y volver a arrancar el portatil para que funcione la cámara.

Editamos el fichero /etc/modules y añadimos la siguiente línea:

uvcvideo

Así se cargará el módulo automáticamente al arrancar el equipo.

lunes, 23 de marzo de 2009

Estrenando blog

Después de unos años creando pequeños artículos sobre Linux en mi propia página web, que no gustaba nada a mis amigos, he decidido crear este blog y entrar en la era moderna.

Un saludo a todos los lectores que se interesen por lo que aquí pueda aportar.