Algo de Linux: noviembre 2008

domingo, 30 de noviembre de 2008

Crear un CD/DVD arrancable con un menú de GRUB

Habitualmente, uso muchas herramientas que vienen en un live cd y ocupan menos de un CD-ROM. Como me resultaba incómodo tener un montón de CD's, hace tiempo me puse a ver la posibilidad de recopilarlas juntas en un CD o DVD, haciendo un menú que me permitiera seleccionar la que quería arrancar.

Hay varias posibilidades, pero la que más me gustó fue usar GRUB, que conozco perfectamente, ya que está disponible en cualquier distro linux.

Para arrancar un CD o DVD con menú, lo único que necesitamos es un fichero llamado stage2_eltorito y un fichero de configuración: un menu.lst.
No necesitamos usar stage1 o stage2, porque el arranque del sistema El Torito es bastnante diferente del proceso de arranque estándar, que ya explicaré, más adelante, en otra entrada del blog.

Veamos cómo crear una imagen de CD/DVD arrancable con GRUB:

1) Primero, para ser un poco organizados, creamos un directorio, donde pondremos todo lo que queramos que incluya la ISO de nuestro CD/DVD:

$ mkdir midisco

Por supuesto, añadimos a este directorio todos los live-cd o floppys que queramos que nuestro disco vaya a tener, organizados como más nos guste.

2) Dentro del directorio, creamos un subdirectorio para GRUB:

$ mkdir -p midisco/boot/grub

Nota: Pasando el parámetro -p a mkdir, se crean todos los directorios padre que falten (no sólo el directorio grub). En el ejemplo, al crear el directorio grub, se crea también el directorio boot, si no existe.

3) Una vez creados los directorios, copiamos el fichero stage2_eltorito. Si tenéis grub instalado en vuestra máquina lo tendréis. En mi máquina se encuentra en el directorio: /lib/grub/i386-pc/
Si no lo tenéis en el mismo sitio, buscadlo con el comando find o con locate.

$ cp /lib/grub/i386-pc/stage2_eltorito midisco/boot/grub

Con ésto, nuestro CD/DVD ya será arrancable mediante grub, pero como lo que queremos hacer es crear un menú que nos permita arrancar diferentes sistemas almacenados en el CD/DVD, crearemos un fichero menu.lst y lo guardaremos en /boot/grub/menu.lst:

$ nano midisco/grub/menu.lst

Como no tengo tanta memoria para recordar todas las cosas diferentes con las que trabajo, en lugar de crear el fichero menu.lst desde cero, lo que suelo hacer es utilizar como modelo un menu.lst, por ejemplo, el que tiene instalado mi máquina y modificarlo para personalizar los sistemas a arrancar.

El último paso, después de añadir todo lo que queremos que contenga nuestro disco, y personalizar el sistema de arranque, sería crear un fichero ISO. Para ello, nos situamos en el directorio en el que tenemos creado el directorio midisco y ejecutamos el siguiente comando:

$ mkisofs -no-iso-translate -U -nobak -R -b boot/grub/stage2_eltorito -no-emul-boot \ -boot-load-size 4 -boot-info-table -o midisco.iso midisco

Como no es fácil de recordar el comando con todos sus parámetros, yo lo tengo hecho en un script bash:

#!/bin/bash
# creaiso.sh
# Create bootable ISO from files in curent directory.
mkisofs -no-iso-translate -U -nobak -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o midisco.iso midisco

Tras ejecutarlo, tendremos un fichero llamado midisco.iso que podremos grabar en un CD o DVD.

Como no nos cuesta nada, pasamos a mkisofs el parámetro -boot-load-size 4, necesario para mantener compatibilidad con las BIOS de máquinas antiguas.

jueves, 27 de noviembre de 2008

Ya está disponible la Beta 4 de LinEx Lenix

Ya se encuentra disponible la cuarta beta de LinEx Lenix.

En esta 4ª versión Beta se ha incluido ya un gran número de correcciones y mejoras.
Además, en ella se ha incluido OpenOffice.org 3.0, junto con los drivers desarrollados por OKI para hacer funcionar sus dispositivos en nuestra distribución.

Aquellos que estéis interesados en probarla, podéis descargar esta nueva beta desde el siguiente enlace:
http://mate.linex.org/2008/iso/gnulinex-lenix-beta4.iso

martes, 25 de noviembre de 2008

Importar/Exportar BD mysql

Normalmente uso phpMyAdmin para trabajar con bases de datos Mysql, entre otras cosas porque me resulta muy cómodo y porque al ser una aplicación php, puedo ejecutarla desde cualquier parte de la red, tan sólo con tener instalado un navegador web.

Lo que sucede es que, a veces hay que recurrir a la consola. Por ejemplo, en casos como éste: phpMyAdmin te permite importar ficheros de 2Mb.
Hoy tenía que migrar un portal de un servidor web a otro. Así que, empezando por la BD, tenía que exportarla en el servidor donde estaba para luego, importarla en el nuevo servidor.
Como la BD a importar tenía unos 37 Mb, no he podido usar la aplicación para importarla.

Para exportar ficheros usando phpMyAdmin, no hay problema, ya que no hay límite.

Como la próxima vez que tenga que hacerlo, seguro que no me acuerdo, y, por si a alguien más le sirve, pongo aquí los pasos:


Para exportar la BD en el servidor origen:

# mysqldump -u usuario -p nombre_base_de_datos > archivo.sql

Ejemplo:
# mysqldump -u root -p xoops > dbxoops.sql

Una vez hecho ésto, ya tengo un fichero (dbxoops.sql) con las sentencias sql que crean las tablas de la BD e insertan los datos en las mismas.
Como el archivo obtenido, tiene más de 2Mb, no puedo importarlo usando phpMyAdmin, así que lo cojo y me lo llevo al servidor destino.


Para importar la BD en el servidor mysql destino.

1) He creado la BD (xoops) usando el interfaz de phpMyAdmin (como decía antes, es más cómodo), pero al que le guste, también puede hacerlo mediante consola.

2) Una vez creada la BD, ejecuto la sentencia para importar la estructura y los datos:

# mysql -u root -p nombre_base_de_datos < archivo.sql

Ejemplo:
# mysql -u root -p xoops < xoops.sql

Y ya está. El siguiente paso para terminar de migrar el portal, será copiar todo el directorio donde se almacena el portal a la máquina destino y cambiar los valores particulares del nuevo servidor. Pero eso ya es otro tema.

viernes, 21 de noviembre de 2008

El shell de linux: Usuarios y grupos

No trabajo habitualmente con usuarios locales porque en los centros tenemos centralizados los usuarios en un servidor de LDAP, pero en ocasiones hay que crear algún usuario local. Éstos son algunos de los comandos que suelo usar para trabajar con usuarios y grupos:

Añadir usuarios.

Cuando necesito añadir nuevos usuarios locales, normalmente utilizo adduser, que, además de crear el usuario, crea también su home.
Si queremos crear un usuario, pero no necesitamos crear un directorio home para él, podemos emplear useradd en lugar de adduser.
Podemos ajustar algunas preferencias a la hora de crear usuarios en el fichero: /etc/adduser.conf.

Ejemplo:
# adduser mfernandez

Y el sistema nos preguntará los datos del usuario, además de una password de acceso.
Por defecto, se creará un grupo con el nombre del usuario y éste será el grupo por defecto. Este comportamiento puede modificarse en /etc/adduser.conf.

Ejemplo: Si queremos añadir un nuevo usuario, llamado enavas al sistema, estableciendo users como su grupo principal, podemos hacerlo de la siguiente manera:

# adduser –ingroup users enavas

Ahora bien, si lo que queremos es añadir un usuario a un grupo existente, podemos hacerlo de la siguiente manera:
# adduser usuario grupo

Ejemplo: Supongamos que queremos añadir el usuario enavas al grupo plugdev:

# adduser enavas plugdev

El comando anterior añade el usuario enavas, previamente creado, al grupo plugdev.

Añadir grupos.
Para añadir grupos locales al sistema, podemos emplear el comando addgroup.
También podemos ajustar algunas preferencias a la hora de crear usuarios en el fichero: /etc/adduser.conf.

Podemos añadir un nuevo grupo local al sistema con el comando addgroup.

# addgroup grupo

Ejemplo: Si queremos añadir el grupo profesores al sistema, ejecutaremos:

# addgroup profesores

Una última cosa: De forma alternativa, en lugar de usar los comandos adduser y addgroup, podemos añadir usuarios y grupos empleando otros comandos como useradd y groupadd. Estos comandos leen información de configuración del fichero /etc/login.defs.

Eliminar usuarios.
Para eliminar usuarios podemos usar el comando userdel.

Ejemplo: Si queremos eliminar el usuario local dfernandez, ejecutaremos el siguiente comando:

# userdel dfernandez

Si, además, empleamos el parámetro -r, también se borrará el directorio personal del usuario con todo su contenido.

Ejemplo:

# userdel -r dfernandez

Eliminar grupos.
Para eliminar grupos podemos emplear el comando groupdel.

Ejemplo: Si queremos eliminar el grupo alumnos del sistema local, ejecutaremos:

# groupdel alumnos

Modificar usuarios y grupos
Para modificar las características de los usuarios y grupos se emplean los comandos usermod y groupmod.

Ejemplo: Imaginemos que queremos cambiar el directorio home del usuario dgonzalezs01 para que sea /home/alumnos/dgonzalezs01.

# usermod -d /home/alumnos/dgonzalezs01 -m

La opción -m hace que mueva el contenido del antiguo home al nuevo emplazamiento.

Si lo que queremos es cambiar el grupo inicial al que pertenece el usuario, haremos lo siguiente:
# usermod -g grupo usuario

Ejemplo: Cambia el grupo inicial del usuario jmartinezd01 para que sea profesor.
# usermod -g profesor jmartinezd01

Si queremos cambiar el nombre del usuario:
# usermod -l nuevonombre nombreactual

Ejemplo:
# usermod -l cfernandez carlosfernandez

El nuevo nombre del usuario carlosfernandez será cfernandez.

Y si queremos cambiar el nombre de un grupo, lo haremos de la siguiente manera:
# groupmod -n nuevonombregrupo nombreactualgrupo

Ejemplo:
# groupmod -n profesores profes

Cambia el nombre del grupo profes a profesores.

Algunos ficheros relacionados con las cuentas de usuario son:

/etc/passwd: contiene información sobre cada usuario:
  • ID.
  • grupo principal.
  • descripción.
  • directorio de inicio.
  • shell, etc.
  • También contiene el password encriptado, salvo que se usen shadow passwords.
/etc/shadow: contiene los passwords encriptados de los usuarios, cuando se emplean shadow passwords.

/etc/group: contiene los miembros de cada grupo, excepto para el grupo principal, que aparece en el fichero /etc/passwd.

/etc/skel: directorio que contiene el contenido del directorio de los nuevos usuarios.

miércoles, 19 de noviembre de 2008

Error VERR_HOSTIF_INIT_FAILED en VirtualBox

Éste es un error que me ha dado VirtualBox.

Creé unos interfaces de red virtuales para tener dos máquinas virtuales en una red también virtual. Y al arrancar cualquiera de las dos máquinas, me daba le error VERR_HOSTIF_INIT_FAILED.

Fijándome en el mensaje completo de error, ví que era porque el usuario con el que estaba intentando correr VirtualBox no tenía permisos de lectura/escritura para usar el dispositivo /dev/net/tun.

Los permisos, por defecto, de /dev/net/tun son: 600. El propietario es el root. Y el grupo al que pertenece también es el del root.

Para solucionarlo, teniendo en cuenta que el usuario que ejecuta virtualbox, debe pertenecer al grupo vboxusers:

1) Cambié el grupo de /dev/net/tun a vboxusers:
# chgrp vboxusers /dev/net/tun

2) Le dí permiso de lectura/escritura sobre este dispositivo a este grupo:
# chmod 660 /dev/net/tun

Y ya pude arrancar las máquinas virtuales sin problemas.

Ahora me ha vuelto a dar el error, y sí tenía permisos. Pensándolo bien, me he dado cuenta de que en las máquinas virtuales uso los dispositivos de red virtuales y no los había activado antes de iniciar las máquinas. Un despiste que anoto aquí, para que no se me olvide...

martes, 18 de noviembre de 2008

Wingrub: Instalar/Reinstalar grub desde windows

Siempre ha sido más fácil instalar primero windows y luego linux para tener un sistema dual, principalmente porque linux detecta el sistema operativo Windows y añade una entrada en el menú de grub para que podamos arrancarlo cuando deseemos.

Tampoco es difícil usar una herramienta como super grub disk para re-instalar grub y volver a tener disponible el arranque dual, aunque no es complicado, sí lo parece a la vista de usuarios noveles de linux.

Cuando instalamos linux y más tarde instalamos windows, linux no se borra (a menos que borremos expresamente las particiones donde se encuentra instalado). Lo que sucede es que windows instala su arranque en el MBR, machacando el inicio de grub. Personalmente prefiero usar herramientas como super grub disk, pero si eres un usuario nuevo en linux y trabajas habitualmente con windows, Wingrub te servirá para arreglar el arranque de grub desde windows.

Con Wingrub podremos dejar nuestro MBR tal y como estaba antes de que Windows nos lo machacara. Aquéllos que lo necesitéis, podéis descargarlo desde aquí.
Lo instaláis en windows y lo ejecutáis. Automáticamente detectará los sistemas instalados y os permitirá arreglar vuestro grub.

Por cierto, para aquellos que no lo saben el MBR es el Master Boot Record (El sector de arranque del disco).

Disponible la 3ª beta de gnuLinEx Lenix

Ya se encuentra disponible la tercera beta de gnuLinEx Lenix. Podéis bajarla desde el siguiente enlace: http://mate.linex.org/2008/iso/
Como es una beta, no se recomienda su uso para el trabajo diario, pero será útil para aquellos que quieran colaborar en su desarrollo, o simplemente, probarla.

gnuLinEx se está integrando en Debian Lenny, con lo que se conseguirá una mayor estabilidad en gnuLinEx. Y, al mismo tiempo, LinEx aportará su granito de arena a Debian con aplicaciones propias.

Debian ya incluye en Lenny varios paquetes de LinEx, como por ejemplo:

Además se encuentran disponibles en Debian otras aplicaciones que ya se incorporaron con Debian Etch, como:

jueves, 13 de noviembre de 2008

Un poquito de apache2

Principales ficheros de configuración.
  • El fichero de configuración principal de apache2 es /etc/apache2/apache2.conf
  • También existe otro fichero de configuración: El fichero /etc/apache2/httpd.conf, que viene por compatibilidad. Este fichero está vacío y podemos usarlo para nuestra configuración particular.
  • También tenemos un fichero /etc/apache2/ports.conf en el que podemos definir los puertos en los que escuchará apache.
Sitios virtuales.
En apache2 podemos tener un solo servidor físico con varios sitios virtuales. Pues bien, para gestionar los diferentes sitios, apache2 usa dos directorios: sites-available y sites-enabled:
  • sites-available: Este directorio contiene los ficheros de configuración de todos los sitios (VirtualHost) definidos en este servidor. Al menos existe un fichero de configuración llamado default que se usa como plantilla para crear el resto de sitios.
  • sites-enabled: Este directorio contiene enlaces a las configuraciones definidas en el directorio anterior. De este modo, se indica qué sitios están activos.
Siempre que hagamos cambios en los ficheros de configuración, podemos comprobar que la sintaxis de las modificaciones que hayamos hecho es correcta mediante el comando:

# apache2ctl configtest

Módulos.
apache2 es un servidor modular, es decir, que agrupa funciones en módulos con el fin de que el administrador cargue tan sólo los módulos que va a usar, pudiendo así hacerlo más ligero.
Si todas las funcionalidades posibles fueran incluidas en un sólo componente de apache, ésto lo haría sumamente pesado en cuanto a requerimientos de Memoria RAM y espacio en Disco Duro.

Crear un Virtual Host.
Como ya dijimos antes, con apache2 podemos tener un sólo servidor físico con varios hosts virtuales. Para crear un VirtualHost hacemos una copia del VirtualHost por defecto (localizado en /etc/apache2/sites-available y llamado default):

# cd /etc/apache2/sites-available
# cp default mihost

Ahora que ya tenemos un VirtualHost, editamos el fichero del sitio (misitio en el ejemplo), para definir los valores del ServerName y el DocumentRoot:

ServerName miservidor.midominio.es
DocumentRoot /var/www/mihost/

Además, ajustamos todos los valores de configuración que queramos.

Por último, habilitamos nuestro nuevo sitio. Para hacerlo, lo más fácil es ejecutar el comando a2ensite:

# a2ensite mihost

Y recargamos la configuración de apache2:

# /etc/init.d/apache2 force-reload

Si quisiéramos deshabilitar nuestro sitio, lo haríamos con a2dissite:

# a2dissite mihost

Por supuesto, después de deshabilitarlo, recargaríamos la configuración de apache2:

# /etc/init.d/apache2 force-reload

Otros comandos útiles son a2enmod y a2dismod, que nos permiten habilitar y deshabilitar módulos respectivamente.

Deshabilitar el listado del contenido de directorios.
Siguiendo con el ejemplo anterior, si queremos evitar que los visitantes de nuestra web vean el contenido de cualquier directorio del sitio (al que hemos llamado mihost) no tenemos más que especificar la opción Options -Indexes en el directorio principal (/var/www/) definido en /etc/apache2/sites-available/mihost

<Directory /var/www/>
Options -Indexes
AllowOverride None
Order allow,deny
allow from all
</Directory>

Ahora bien, si lo que queremos es permitir que se listen los contenidos, salvo los de un directorio en concreto, podemos dejar la siguiente configuración en /etc/apache2/sites-available/mihost para permitir los listados:

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

Y crear un fichero .htaccess en el directorio que queramos evitar listar. Imaginemos que no queremos que se liste el contenido del directorio privado que tenemos en /var/www/privado. Nos movemos al directorio y creamos un fichero .htaccess con el siguiente contenido:
Options -Indexes

Proteger el acceso a un directorio del servidor web mediante contraseña.
Imaginemos que queremos proteger mediante contraseña el acceso al directorio restringido que tenemos en /var/www/restringido.
Para proteger el acceso a un directorio del servidor web mediante contraseña, primero creamos el archivo que contendrá los usuarios y las passwords.

# htpasswd -c /etc/usuariosapache nombreusuario

La opción -c nos permite crear el fichero de claves. Lo usaremos la primera vez y, en sucesivas ocasiones, no será necesario. Una vez creado el fichero, ejecutaremos el comando sin el parámetro -c:

# htpasswd /etc/usuariosapache nombreusuario

Cada vez que creemos un usuario, htpasswd nos preguntará qué contraseña queremos asignarle.

Otra cosa: Sería bueno que el fichero de claves esté fuera de los directorios públicos del servidor web. De este modo, eliminamos la posibilidad de que sea descargado.

Por otra parte, limitaremos los permisos en el sistema para que el fichero usuariosapache sólo pueda ser leido por el usuario www-data (creado para el servidor web).

# chmod 600 /etc/usuariosapache
# chown www-data:www-data /etc/usuariosapache

Una vez hecho todo ésto, nos situamos dentro del directorio a proteger (/var/www/restringido) y creamos un fichero .htaccess con el siguiente contenido:

AuthName “Sólo usuarios autorizados”
AuthType Basic
AuthUserFile /etc/usuariosapache
Require valid-user

Y ya para terminar, hacemos que apache2 lea el fichero .htaccess que hemos creado en el directorio /var/www/restringido, añadiendo el siguiente contenido al fichero /etc/apache/http.conf:

<Directory /var/www/privado/>
AllowOverride AuthConfig
</Directory>

Por supuesto, después recargaríamos la configuración de apache2:

# /etc/init.d/apache2 force-reload

Control de acceso a carpetas.
Si queremos, podemos deshabilitar totalmente el acceso a una carpeta, de tal forma que podremos acceder a los archivos mediante el sistema de archivos, pero no se podrán acceder a ellos vía web.

Para denegar el acceso vía web a una carpeta, para todo el mundo, creamos un archivo .htaccess en esa carpeta que contenga:

#Denegar el acceso a todos
deny from all

Si queremos denegar el acceso a todos, permitiéndolo tan sólo desde una IP específica, creamos un archivo .htaccess en esa carpeta que contenga:

#Denegar el acceso a todos
deny from all
# Permitir el acceso al equipo con IP 10.0.0.1
allow from 10.0.0.1

Y si queremos permitir tan sólo el acceso a un rango específico de IPs , creamos un archivo .htaccess en la carpeta que contenga las siguientes líneas:

deny from all
allow from 192.168.0.0/24


miércoles, 12 de noviembre de 2008

¿Qué hacer si tu regrabadora falla?

Si tenemos problemas con nuestra regrabadora porque no graba o se corta el proceso mientras estamos grabando, lo primero es intentar averiguar si lo que está fallando es el software, así que, podemos probarla desde un cd-live o arrancando con un sistema operativo instalado en un pendrive o disco duro. Pero, como no todo el mundo tiene estos medios, siempre se puede desinstalar el software de grabación para que no queden rastros del mismo, instalar otro diferente y probar si con otro software funciona.

Si con otro software no funciona, puede que el problema sea físico. En cuyo caso, puede que la cosa no tenga arreglo y tengamos que comprar otra grabadora. Puede haberse descalibrado el laser o tener otro problema físico... Así que, si estamos en este caso, siempre podemos intentar flashear nuestra regrabadora, como último recurso, por si ésto soluciona el problema.

Mi regrabadora (Una QSI DVD+-RW SDW-082) fallaba siempre a la hora de grabar DVD's. Así que, ejecuté el dvd+rw-mediainfo para averiguar la versión del firmware instalada en la misma:

# dvd+rw-mediainfo /dev/dvd

Con ello pude ver que la versión del firmware instalado en la misma era LX41. Busqué una versión más reciente y encontré el LX51. Lo descargué, descomprimí y pude ver que el instalador del firmware era un archivo EXE, así que, como no tengo windows, decidí arriesgarme a ejecutarlo con wine, y, ¡bingo! se actualizó sin problemas. Eso sí, reinicié el equipo, como indicaban las instrucciones.

Por si alguien tiene la misma regrabadora que yo, puede descargar el fimrware desde aquí:
Firmware QSI DVD+-RW SDW-082 LX51

Ejecutar un script almacenado en un servidor web

Ésta es una de esas cosas que nos facilitan la tarea a los administradores de linux, que trabajamos habitualmente en terminales (esa pantalla tan negra que tanto miedo da a la gente de winbugs...), por si en algún momento necesitamos ejecutar de forma local un script y no tenemos acceso mediante ssh para copiarlo.

Podemos almacenar un script en un servidor web y usar el navegador lynx (un navegador en modo texto que se ejecuta en un terminal) para ejecutarlo.

lynx tiene un parámetro (dump) que nos permite volcar el contenido de un archivo en la salida estándar.

Por ejemplo, si estoy en una máquina y quiero ver el contenido de un script que tengo almacenado en mi servidor web en la carpeta scripts, abriré un terminal y ejecutaré lo siguiente:

# lynx -dump http://miservidorweb/scripts/miscript.sh

Automáticamente, se me mostrará por pantalla el contenido del fichero miscript.sh

Si ahora, en lugar de visualizar el contenido, quiero ejecutar el script almacenado en el servidor en mi máquina local, no tengo más que pasarle el contenido de la salida estándar a bash. Siguiendo con el ejemplo:

# lynx -dump http://miservidorweb/scripts/miscript.sh | bash

Y listo. El script se ejecutará en mi máquina local.

Imaginaos los usos que se le puede dar a ésto :)

martes, 11 de noviembre de 2008

dvd+rw-mediainfo: Obtener info acerca de la regrabadora y/o el disco

Llevo bastante tiempo con problemas al grabar dvd's con la regrabadora del portátil. Y necesitaba saber qué versión del firmware tenía instalado mi re-grabadora (Una QSI DVD+-RW SDW-082) para flashearla, con el fin de ver si se solucionaban los problemas o tenía que cambiarla por una nueva.

Para averiguar la versión del firmware he utilizado dvd+rw-mediainfo, una herramienta que forma parte del paquete dvd+rw-tools. Ésta herramienta nos muestra información acerca de la unidad de dvd y el disco insertado.

Para ejecutarla, no tenemos más que hacer:

# dvd+rw-mediainfo /dev/dvd

donde /dev/dvd es el dispositivo grabador.

Configuración de red en Linux

En sistemas debian podemos configurar la red editando los ficheros de configuración:
  • /etc/network/interfaces
  • /etc/hostname
  • /etc/hosts
  • /etc/resolv.conf

Fichero /etc/network/interfaces.
Este fichero nos permite definir las interfaces de red existentes en nuestro sistema:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16.43.70
netmask 255.255.0.0
gateway 172.16.255.201

para IP dinamica:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Fichero /etc/hostname

En este fichero, especificaremos el nombre de la máquina.

mihost.midominio.ex

Fichero /etc/hosts

En el fichero /etc/hosts especificaremos la ip junto con el nombre de cada máquina a la que queramos acceder por nombre. Veamos un ejemplo de fichero /etc/hosts:

/etc/hosts:
127.0.0.1 localhost mimaquina
172.19.143.25 servidor
172.19.131.10 ldap

Muy útil cuando no tenemos un servidor de DNS en la red.

Fichero /etc/resolv.conf

En el fichero /etc/resolv.conf especificamos cuáles son los servidores de dominio que usaremos para resolver nombres.

/etc/resolv.conf
:
search midominio.ex
nameserver 172.19.255.101
nameserver 172.19.255.102

lunes, 10 de noviembre de 2008

Linux App Finder: Buscador de aplicaciones linux

Linux App Finder (http://www.linuxappfinder.com) es una web que nos permitirá buscar aplicaciones linux adecuadas a nuestras necesidades. Estas aplicaciones se encuentran clasificadas en categorías.

Además, nos ofrece un listado de software alternativo, de forma que si conocemos una aplicación windows u OS X, podremos buscar su equivalente en linux.

De cada aplicación, podremos ver una descripción, la página web de dicho software (si la tiene), el interfaz gráfico para el que fue diseñada, así como una serie de enlaces de descarga para las diferentes distribuciones en las que se encuentra disponible, como debian, ubuntu, opensuse o PclinuxOS.

miércoles, 5 de noviembre de 2008

Testdisk: Otra herramienta para reparar tablas de particiones y sectores de arranque

TestDisk, como bien dice el título, es una herramienta que nos ofrece la posibilidad de reparar la tabla de particiones de nuestro disco duro o el sector de arranque (MBR).


TestDisk es totalmente gratuito y está diseñado para correr en sistemas operativos:
  • DOS.
  • Windows (9x, NT4, 2000, XP, 2003)
  • Linux
  • FreeBSD
  • NetBSD
  • OpenBSD
  • SunOS
  • MacOS.
Recuerdo que, en una ocasión estaba clonado una máquina de forma remota y tenía abiertos varios terminales, entre ellos, uno a la máquina a clonar y otro al servidor de clonación. Con las prisas, me equivoqué de terminal y me cargué la tabla de particiones del servidor de clonación. Pues bien, gracias a testdisk, pude recuperar la tabla original y restaurarla.

Cosas que testdisk puede hacer (sacado del wiki de Testdisk: http://www.cgsecurity.org/wiki/TestDisk):

* Permite fijar una tabla de particiones recuperando una partición borrada.
* Permite recuperar el sector de arranque de una partición FAT 32 a partir un backup de dicho sector.
* Puede reconstruir un sector de arranque de una partición FAT12, FAT16 o FAT32.
* Permite fijar tablas FAT.
* Permite reconstruir el sector de arranque de particiones NTFS.
* Permite recuperar el sector de arranque de una partición NTFS a partir ded un backup de dicho sector.
* Permite fijar una partición MFT usando una partición MFT de espejo.
* Permite encontrar ficheros borrados en particiones FAT.
* Permite copiar ficheros borrados de particiones FAT, NTFS y ext2/ext3.

Para ver cómo usarlo, paso a paso, lo mejor es recurrir al wiki de testdisk:
http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

El ejemplo viene en ms-dos, pero es exactamente igual que en linux.

gpart: Reparar una tabla de particiones

gpart es una herramienta que intenta "adivinar" cuál es la tabla de particiones principal de un disco duro de un PC en caso de que la tabla de particiones principal en el sector 0 se encuentre dañada, sea incorrecta o haya sido borrada.

La tabla obtenida por esta herramienta puede ser guardada en un fichero o dispositivo.

gpart soporta los siguientes sistemas de ficheros o tipos de particiones:

* DOS/Windows FAT (FAT 12/16/32)
* Linux ext2
* Linux swap partitions versions 0 and 1 (Linux >= v2.2.X)
* OS/2 HPFS
* Windows NT/2000 FS
* *BSD disklabels
* Solaris/x86 disklabels
* Minix FS
* Reiser FS
* Linux LVM physical volume module (LVM by Heinz Mauelshagen)
* SGI XFS on Linux
* BeOS filesystem
* QNX 4.x filesystem

La forma más cómoda de instalarlo es tirando de apt-get, si encontramos gpart en los repositorios de nuestra distribución (En ubuntu está):

# apt-get install gpart

Y si no encontramos gpart en los repositorios, siempre podemos descargarla desde la web del autor: http://www.stud.uni-hannover.de/user/76201/gpart/

Allí podremos encontrar tres posibles versiones:
  • Una versión en código fuente (en formato .tar.gz), que podemos compilar en nuestra distribución.
  • Otra versión (estática) en formato binario, que podremos usar directamente en linux.
  • Y una última versión (también estática) en formato binario, para freebsd.
Por si alguien no lo sabe, y , por decirlo de alguna manera, las versiones estáticas no tiran de librerías instaladas en la máquina, y pueden usarse directamente sin tener que instalarlas.

Trinity Rescue Kit dispone de esta utilidad entre sus herramientas, por lo que podremos usarlo para chequear particiones.

Modo de uso:

# gpart [opciones] dispositivo

donde dispositivo es el disco que queremos reparar: hda, hdb, sda...

Imaginemos que tenemos un disco sda que queremos reparar. Podemos testearlo directamente:

# gpart /dev/sda

Para grabar la tabla de particiones estimada, utilizamos la opción -W

# gpart -W /dev/sda /dev/sda

Como las opciones son muchas, para más detalles, recomiendo ver el manual (man gpart).

Y si gpart no funcionara, podemos probar con testdisk, otra buena herramienta que en ocasiones me ha sacado de más de un apuro.

martes, 4 de noviembre de 2008

Flashear Linksys WRT54GS V7 con firmware DD-WRT

Como podemos ver en la web del proyecto dd-wrt, hay varias distribuciones diferentes del firmware DD-WRT:

  • La distribución mini contiene todas las funcionalidades de la distribución estándar, con la excepción de chillispot, nocat, rflow, kaid, cliente CIFS, SNMP, IPv6, y sopoerte para tarjetas MMC/SD.
  • La distribución standard (std) incluye todas las funcionalidades, excepto VOIP.
  • La distribución standard-nokaid (std-nokaid) incluye todas las funcionalidades de la versión standard excepto kaid para liberar algo de espacio en la flash.
  • La distribución VOIP incorpora tods las funcionalidades excepto kaid.
  • La edición VPN incluye OpenVPN pero no incorpora IPv6, CIFS client o kaid.
  • La edición micro es una versión reducida para routers con 2MB de flash.
Hoy me he puesto a flashear un router Linksys WRT54GS y la verdad es que todo ha ido bien y se ha actualizado sin problemas con el firmware DD-WRT.
  • Al principio lo he actualizado con DD-WRT v24 (05/20/08) micro.
  • Y después, al ver que existía una versión más reciente, he vuelto a actualizarlo de nuevo, esta vez con DD-WRT v24-sp1 (07/27/08) micro.
En los Linksys WRT54, conforme se han ido sacando versiones nuevas, se ha ido aumentando la velocidad de la CPU, pero, al mismo tiempo, se ha ido reduciendo la cantidad de memoria RAM y la cantidad de memoria flash. Vamos que nos han ido recortando el producto, con lo que cada vez podemos ponerle menos cosas, debido a la falta de memoria.

El WRT54GS que tengo es una versión 7, con un procesador a 240 MHz, 16 MB de RAM y 2 MB de memoria flash. Y con tan poca flash, tenemos que flashearlo con la versión micro.

Veamos cómo flashearlo:

  1. Descargamos los firmwares que vamos a necesitar: vxworkskillerGSv7-v3.bin y dd-wrt.v24_micro_generic.bin.
  2. Configuramos la tarjeta ethernet de nuestro equipo portátil o sobremesa con una ip dentro del rango en que viene configurado el router. Por ejemplo: 192.168.1.100. En linux: ifconfig eth0 192.168.1.100
  3. Si en nuestro equipo no tenemos instalado tftp, lo instalamos: apt-get install tftp
  4. Después conectamos el equipo al WRT54GSv7 con un cable de red en uno de los cuatro puertos del switch que incorpora. ¡Muy importante: No usar una conexión wlan!
  5. Ahora desconectamos el cable de corriente del WRT54GSv7.
  6. Seguidamente pulsamos el botón reset mientras reconectamos la corriente y mantenemos el botón pulsado durante alrededor de unos 20 segundos.
  7. Después abrimos nuestro navegador web y tecleamos http://192.168.1.1 en la barra de dirección.
  8. La pantalla que se nos abrirá nos mostrará unas opciones para actualizar el firmware. Pulsamos el botón Examinar y seleccionamos el siguiente fichero con el que vamos a flashear el aparato: vxworkskillerGSv7-v3.bin
  9. Una vez seleccionado el fichero, pulsamos el botón Apply y comenzará la actualización.
  10. Una vez que la actualización haya terminado, desconectamos la corriente del router y la volvemos a conectar.
  11. Esperamos un par de minutos.
  12. Y volvemos a desconectar el cable de corriente del router y lo volvemos a conectar de nuevo.
  13. Abrimos un terminal y ejecutamos el comando: tftp 192.168.1.1 (Nos estaremos conectando al router vía tftp)
  14. Veremos que en el terminal nos ha cambiado el prompt por el siguiente: tftp> (Es porque nos hemos conectado al router vía tftp)
  15. En la línea de comando tftp> tecleamos: mode octet y pulsamos Enter.
  16. Y en la siguiente línea: tftp> put dd-wrt.v24-micro_generic.bin
  17. Ahora el firmware se tranferirá al router y éste será flasheado. Cuando el proceso haya terminado, el router arrancará automáticamente y ya podremos acceder a él desde el navegador web: http://192.168.1.1.
  18. El nombre de usuario por defecto suele ser: root y la password: admin. No olvidemos cambiarlo.