Algo de Linux: diciembre 2008

sábado, 20 de diciembre de 2008

Discos de arranque con Freedos

A veces necesitamos un floppy autoarrancable con formato DOS, para actualizar, por ejemplo, la BIOS de nuestro equipo, o para arrancar alguna aplicación DOS que haga algo en el proceso de inicio de nuestra máquina.

Como no uso windows, no puedo crear un disco de inicio, así que recurro a FreeDOS, un sistema operativo compatible DOS, que me permite disponer de un floppy bootable sin la necesidad de recurrir a versiones propietarias de DOS. Todo lo que necesitamos es una imagen de disquete con el kernel FreeDOS. En http://www.fdos.org/bootdisks/ encontraremos varias imágenes que se adaptarán a nuestras necesidades.
Desde allí podemos bajar una imagen de floppy con el sistema operativo FreeDOS completo, o una imagen OEM que tan sólo contiene el kernel y el command.com, y que nos deja más espacio para añadir todo lo que necesitemos al floppy, como por ejemplo, una utilidad para flashear nuestra BIOS.

Las imágenes de disquete de esta página se encuentran disponibles en dos formatos:
Podéis descargar una imagen OEM de la siguiente manera:
# wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.imz

Y descomprimirla con unzip:
# unzip FDOEM.144.imz

Una vez descargada, obtendremos un archivo llamado: FDSTD.144
Si queremos personalizarlo, para añadir cosas al disquete, creamos una carpeta temporal:
# mkdir /mnt/floppy
# mount -o loop FDSTD.144 /mnt/floppy

Y copiamos al directorio lo que necesitemos para personalizar el disquete.

Una vez copiado lo que sea, desmontamos el disco y listo. Ya tendremos nuestra imagen de disquete personalizado.

Si no tenemos floppy, podemos crear una iso del floppy y grabarlo en un CD:
# mkisofs -o bootcd.iso -b FDOEM.144 FDOEM.144

viernes, 19 de diciembre de 2008

ms-sys: Una herramienta para crear registros de arranque compatibles con Microsoft

ms-sys es una de esas herramientas que no usamos habitualmente, pero que nos viene muy bien tener a mano a aquellos que trabajamos con sistemas Linux. Por ejemplo, cuando tenemos que crear un floppy de arranque para actualizar la bios del equipo.

Podemos usar ms-sys para crear sectores de arranque Microsoft.

Para que os hagáis una idea, esta utilidad es capaz de hacer lo mismo que el comando
"fdisk /mbr" en windows. Así que, con esta utilidad puedo reestablecer el MBR de una máquina windows sin necesidad de usar windows.

También es capaz de establecer el sector de arranque a un floppy para convertirlo en un disquete de arranque. O a una partición FAT para que ésta sea arrancable. Lo que no hace es conpiar ningún sistema de ficheros. Tan sólo escribe el sector de arranque. Con lo que, si queremos que el disquete arranque, tendremos que copiarle los ficheros de sistema.

Modo de uso:
ms-sys [opciones] [dispositivo]

Pego a continuación la lista de opciones que podemos utilizar con ms-sys (sacada de la ayuda):

-1, --fat12 Write a FAT12 floppy boot record to device
-2, --fat32nt Write a FAT32 partition NT boot record to device
-3, --fat32 Write a FAT32 partition DOS boot record to device
-4, --fat32free Write a FAT32 partition FreeDOS boot record to device
-5, --fat16free Write a FAT16 partition FreeDOS boot record to device
-6, --fat16 Write a FAT16 partition DOS boot record to device
-l, --wipelabel Reset partition disk label in boot record
-p, --partition Write partition info (hidden sectors, heads and drive id) to boot record
-m, --mbr Write a Windows 2000/XP/2003 MBR to device
-9, --mbr95b Write a Windows 95B/98/98SE/ME MBR to device
-d, --mbrdos Write a DOS/Windows NT MBR to device
-s, --mbrsyslinux Write a public domain syslinux MBR to device
-z, --mbrzero Write an empty (zeroed) MBR to device
-f, --force Force writing of boot record
-h, --help Display this help and exit
-v, --version Show program version
-w, --write Write automatically selected boot record to device

Default Inspect current boot record

Podemos descargar ms-sys desde el siguiente enlace: http://ms-sys.sourceforge.net/

Instalarlo es sencillo: Primero descargamos el código fuente de la aplicación. Una vez descargado, lo extraemos:

# tar xfv ms-sys*.tgz

(En las instrucciones dice que hay que descomprimir usando tar -xzvf, pero debe ser una errata porque no está comprimido con gzip. Al menos el fichero que yo he descargado)

Una vez extraído el código fuente, entramos dentro del directorio que se nos ha creado al extraer:

# cd ms-sys

Compilamos:

# make

E instalamos:

# make install

Ejemplos de uso:

Si queremos escribir el MBR de un disquete, no tenemos más que hacer:
# ms-sys -w /dev/fd0

Si lo que queremos es escribir el MBR de un disco duro:
# ms-sys -w /dev/hda

Si lo que queremos es hacer arrancable una partición FAT:
# ms-sys -w /dev/hdaX

donde X será el número de partición.

martes, 16 de diciembre de 2008

Compartir archivos entre máquinas Linux vía NFS

¿Qué es NFS?

NFS
(Network File Sistem o Sistema de Ficheros de Red) es una solución ofrecida por los sistemas operativos UNIX/Linux para compartir archivos en redes TCP/IP. Fue desarrollado por SUN Microsystems bajo licencia GPL, lo que facilitó que se convirtiera en un estándar a la hora de convertir archivos en red.

NFS nos permite montar una partición de una máquina remota en un directorio de nuestra máquina como si fuera una partición local.

Veamos qué necesitamos instalar.
  1. Si queremos que nuestra máquina pueda utilizar recursos compartidos por un servidor nfs, instalaremos los paquetes nfs-common y portmap.
  2. Y si lo que queremos es que nuestra máquina pueda realizar ambas funciones: compartir sus recursos y conectarse a otros compartidos, instalaremos los paquetes: nfs-kernel-server y portmap. En este caso, también necesitamos el paquete nfs-common, pero como es una dependencia del paquete nfs-kernel-server, al instalar nfs-kernel-server se instalará también nfs-common.

Lo primero: El portmap.

Como en todos los casos necesitamos portmap, lo primero que hacemos es comprobar si está corriendo.

Sin entrar en muchos detalles, podemos decir que portmap es el mapeador de puertos de linux. Este mapeador se encarga de gestionar la asignación entre aplicaciones y puertos.
Lo normal es que el portmap se encuentre ya instalado.

Para saber si tenemos el portmap instalado y corriendo, no tenemos más que hacer un:

# ps aux | grep portmap

Si está corriendo, la salida del comando anterior será más o menos como la siguiente:

daemon 4204 0.0 0.0 1912 528 ? Ss 16:31 0:00 /sbin/portmap

Si no está corriendo, a lo mejor es porque no está instalado. Así podemos comprobar si está instalado:

# dpkg -l | grep portmap

Si el comando anterior no nos devuelve nada, es porque no está instalado. En ese caso, lo instalamos:

# apt-get install portmap


Si queremos que nuestro equipo pueda compartir recursos. Servidor NFS.

1.- Instalamos nfs-kernel-server.
Una vez que tengamos portmap funcionando, lo que haremos será instalar el paquete nfs-kernel-server. Como ya comentamos antes, al instalarlo, también se instalará el nfs-common:

# apt-get install nfs-kernel-server

Una vez instalado, podemos comprobar si NFS está en marcha haciendo una consulta al portmap, pidiéndole que nos indique qué servicios tiene en marcha:

# rpcinfo -p

El comando nos mostrará todos los servicios que están en marcha, entre ellos el nfs. Como la salida es bastante extensa, os muestro tan sólo las líneas correspondientes al nfs que está corriendo en mi máquina:

100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100003 2 udp 2049 nfs

100003 3 udp 2049 nfs
100003 4 udp 2049 nfs

Si no aparece, debemos comprobar si hay algún problema con los paquetes instalados.

2.- Compartimos directorios
Una vez tenemos los servicios en marcha únicamente nos falta determinar qué queremos compartir. Imaginemos que queremos compartir un directorio llamado backup que se encuentra en el directorio var y en el que almacenaremos las copias de seguridad de una máquina remota:

Para compartir un directorio, debemos editar el archivo /etc/exports e introducir una línea con datos referentes al directorio que queremos compartir, con qué máquinas lo vamos a compartir y las opciones de compartición. Cada línea del /etc/exports tendrá la forma:

directorioacompartir maquinasconlasquecompartir(opcionesdeexportación)

- En directorioacompartir especificamos la ruta absoluta del directorio a compartir.

- En máquinasconlasquecompartir podemos especificar:
  • Un * para compartir con todo el mundo.
  • Una dirección IP para compartir con una máquina concreta.
  • Un rango de direcciones IP con las que compartir, especificando la ip de red y la máscara.
  • Un wildcard con el que compartiremos con las máquinas de un dominio.
- En opcionesdeexportación podemos usar muchas opciones:
  • ro para compartir el directorio en modo sólo lectura.
  • rw para compartir el directorio en modo lectura/escritura.
  • root_squash para conseguir que un usuario root del cliente no pueda escribir con permisos de root en el directorio compartido.
  • no_root_squash hace que se permita que un usuario root del cliente pueda escribir con permisos de root en el directorio compartido.
  • sync hace que el servidor no atienda peticiones antes de que los cambios hechos por una petición de escritura sean escritos en disco.
  • async hace que el servidor atienda peticiones sin comprobar si los cambios hechos por una petición de escritura se han escrito en disco. Es la opción por defecto, si no se especifica nada.
  • subtree_check si se exporta un subdirectorio (no un sistema de ficheros completo) al producirse una petición de un fichero, el servidor comprueba que el fichero solicitado esté en el árbol de directorios exportado.
  • no_subtree_check desactiva la comprobación de subtree_check.
Veamos algunos ejemplos de líneas que podemos incluir en /etc/exports:

/usr/local 192.168.1.0/255.255.255.0(rw,subtree_check)
/var/software 192.168.1.0/24(ro)
/backup 172.19.123.2(rw,no_root_squash,sync)
/tftpboot/boot-image *(rw,no_root_squash,snyc)

3.- Aumentando un poco la seguridad
La única vez que NFS lleva a cabo la autentificación es cuando el cliente intenta montar un recurso compartido NFS. Para limitar el acceso al servicio NFS y aumentar un poco la seguridad, se utilizan los TCP wrappers.

Los TCP wrappers leen los archivos /etc/hosts.allow y /etc/hosts.deny para determinar si a un cliente particular o red tiene acceso o no al servicio NFS.

Lo primero que se comprueba es si el cliente tiene acceso mediante los TCP wrappers. Una vez que al cliente se le permite acceso gracias a un TCP wrapper, el servidor NFS recurre a su archivo de configuración (/etc/exports), para determinar si el cliente tiene suficientes privilegios para acceder a los sistemas de archivos exportados.

Una vez otorgado el acceso, todas las operaciones de archivos y de directorios están disponibles para el usuario.

Podemos establecer un poco más de seguridad usando /etc/hosts.allow y /etc/hosts.deny para especificar qué ordenadores de la red pueden usar los servicios del servidor nfs.

Por ejemplo:

/etc/hosts.deny

portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

/etc/hosts.allow
portmap:192.168.1.0/255.255.255.0
lockd:192.168.1.0/255.255.255.0
mountd:192.168.1.0/255.255.255.0
rquotad:192.168.1.0/255.255.255.0
statd:192.168.1.0/255.255.255.0

Suponiendo que nuestra red local es la 192.168.1.0, de este modo, denegamos el acceso a todo el mundo, y luego permitimos el acceso tan sólo a las máquinas de nuestra red.

4.- Activar la compartición de archivos
Cada vez que hagamos cambios en el fichero /etc/exports, debemos hacer que nfs vuelva a cargarlo, con el fin de que se apliquen las restricciones que hay en él. Para ello no tenemos más que ejecutar el siguiente comando:

# exportfs -ra

Y listo. Ya tenemos nuestro servidor nfs funcionando.


Si queremos que nuestro equipo pueda usar recursos nfs de otras máquinas. Cliente NFS.


1.- Instalamos nfs-common
Para poder conectarnos a los recursos nfs de servidores, lo que haremos es configurar el equipo como cliente NFS. Para ello, recordemos que debíamos instalar portmap y nfs-common.

Así que, siguiendo las instrucciones del comienzo, comprobamos que tenemos funcionando portmap en el equipo cliente. Una vez comprobado, instalamos nfs-common:

# apt-get install nfs-common

Y ya podemos conectarnos a los recursos de otras máquinas desde un equipo cliente.

2.- Ver qué recursos compartidos en una máquina
Si queremos ver qué directorios tiene compartidos una máquina vía NFS, ejecutamos el comando showmount en la máquina cliente con el parámetro -e:

# showmount -e IPSERVIDOR

Por ejemplo, si tenemos un servidor NFS cuya IP es 192.168.1.2 y queremos ver, desde nuestra máquina cliente, qué directorios tiene exportados, ejecutaremos el comando:

$ showmount -e 192.168.1.2


3.- Conectarse a un recurso compartido de un servidor NFS
Podemos conectarnos a un directorio compartido en una máquina remota, usando el comando mount:

# mount IPServidorNFS:/DirectorioCompartido PuntodeMontaje

Ejemplo: Imaginemos que tenemos un servidor NFS con la siguiente dirección IP: 192.168.1.2 y un directorio compartido: /var/descargas. Supongamos también que en la máquina cliente tenemos un directorio llamado /mnt/nfs donde vamos a montar el directorio de la máquina remota. Montaremos el directorio compartido de la siguiente manera:

# mount 192.168.1.2:/var/descargas /mnt/nfs

Si hacemos un ls /mnt/nfs veremos que el directorio del servidor se encuentra montado.

4.- Conectarse a un recurso compartido cada vez que se inicie la máquina cliente
Si queremos que el directorio compartido vía NFS sea montado en la máquina cliente cada vez que ésta arranque, debemos añadir una entrada en el fichero /etc/fstab.

Imaginemos que tenemos el directorio home compartido en un servidor nfs y queremos montarlo en los clientes. Añadiríamos una línea al fichero fstab de la máquina cliente para montarlo en cada inicio:

192.168.1.2:/home /home nfs rw,hard,intr 0 0


viernes, 12 de diciembre de 2008

update-rc.d: Actualizando el arranque/parada de servicios

El comando update-rc.d nos permite automatizar el proceso de creación y borrado de enlaces a los scripts de inicio, con en fin de iniciar/parar servicios.

Eliminar servicios del proceso de arranque:

Si queremos eliminar servicios del proceso de arranque, no tenemos más que ejecutar el siguiente comando como root:

# update-rc.d -f nombre_proceso remove

Veamos un ejemplo. Supongamos que tenemos el proceso squid y queremos eliminarlo para que no arranque, ejecutaremos el siguiente comando:

# update-rc.d -f squid remove

Iniciar nuevos servicios en el proceso de arranque:

Si queremos crear enlaces usando parámetros por defecto, ejecutaremos:

# update-rc.d nombre_proceso defaults

Al usar la opción defaults, update-rc.d creará enlaces para arrancar los servicios en los niveles de ejecución 2345 y parar los servicios en los niveles de ejecución 016. Por defecto, todos los enlaces tendrán el código de secuencia 20.

Ejemplo. Si ejecutamos:

# update-rc.d ssh defaults

Se crearán enlaces para arrancar el servicio ssh en los niveles 2345 y pararlo en los niveles 016.
Lo que sería equivalente a ejecutar:

# update-rc.d ssh start 20 2 3 4 5 . stop 20 0 1 6 .

O, si así lo preferimos, podemos especificar los niveles en que arranca un proceso, los niveles en los que para, así como la prioridad.

Ejemplo:

# update-rc.d xdm start 20 2 5 . stop 20 0 1 2 6 .

El proceso de arranque en Linux

Voy a contar cuál es el proceso de arranque en Linux, particularizándolo para una máquina con Debian.

Todo el proceso de arranque, se desarrolla en 4 etapas:
  • Al principio, toma el control la BIOS.
  • En una segunda etapa, tomará el control el cargador de arranque.
  • En una tercera etapa, el control pasa al propio kernel Linux.
  • Y en la cuarta y última etapa tendremos en memoria los programas de usuario conviviendo junto con el propio sistema operativo, quienes tomarán el control del sistema.
Primera etapa: La BIOS.

Al encender el equipo, toma el control la BIOS. que realiza una serie de operaciones básicas de hardware.
Una vez que el hardware es reconocido y queda listo para usar, la BIOS carga en memoria el código executable del cargador de arranque y le pasa el control.

Segunda etapa: El cargador de arranque: GRUB.

Existen diferentes cargadores de arranque. En Debian, habitualmente utilizamos GRUB.
Normalmente, el cargador de arranque se guarda en el MBR (Master Boot Record), que como tiene un tamaño muy reducido (Son los primeros 512 bytes del disco), obliga a dividir el arranque en varias etapas. De este modo, la BIOS carga la primera etapa del cargador de arranque. Y, después, esta primera etapa del cargador de arranque cargará el resto del cargador de arranque.

GRUB se carga y se ejecuta en 4 etapas:
  • La BIOS carga la primera etapa del cargador, que se encuentra almacenada en el MBR.
  • La primera etapa carga el resto del cargador. Si la segunda etapa está en un dispositivo grande, se carga una etapa intermedia (llamada etapa 1.5), que contiene código extra que permite leer cilíndros mayores que 1024 o dispositivos tipo LBA.
  • La segunda etapa ejecuta el cargador y muestra el menú de inicio de GRUB, permitiendo seleccionar el SO que se desea arrancar.
  • Una vez seleccionado el sistema operativo que se quiere arrancar, se carga en memoria y se le pasa el control.
Tercera etapa: El kernel de Linux.

El proceso del kernel se realiza en dos etapas:

  • La etapa de carga.
  • La etapa de ejecución.

El kernel generalmente se almacena en un archivo comprimido. Este archivo comprimido se carga y se descomprime en memoria.

Por otra parte, también se cargan los drivers necesarios mediante el initrd. El initrd crea un sistema de archivos temporal usado en la fase de ejecución del kernel.

Una vez que el kernel se ha cargado en memoria y está listo, se lleva a cabo su ejecución.

Lo último que se lanza es el proceso init.

Cuarta etapa: El proceso init.

Al igual que todos los sistemas Unix, Debian arranca ejecutando el proceso init. El archivo de configuración de init es el fichero /etc/inittab, en el que se indica que el primer script que se debe ejecutar es el /etc/init.d/rcS.

Supongamos que se encuentra instalado el paquete sysv-rc (es lo típico), que utiliza enlaces simbólicos en los directorios rc para controlar qué servicios se inician en los diferentes niveles de ejecución.

El archivo /etc/init.d/rcS ejecuta todos los scripts situados en /etc/rcS.d/ para realizar inicializaciones tales como la comprobación y montaje de los sistemas de archivos, la carga de módulos, la inicialización de los servicios de red, la configuración del reloj, etc.

Luego, y por compatibilidad, también ejecuta todos los archivos (excepto aquellos con un `.' en su nombre) situados en /etc/rc.boot/. Este último directorio está reservado para el administrador del sistema y su utilización ha caído en desuso.

Niveles de ejecución

Una vez completado el proceso de arranque, el proceso init iniciará todos los servicios que han sido configurados para ejecutarse en el nivel de ejecución predeterminado.
Este nivel de ejecución predeterminado viene indicado por una entrada id en el /etc/inittab. En Debianel nivel de inicio predeterminado es el nivel 2 (id=2).

Debian utiliza los siguientes niveles de ejecución:
  • 0 (apagar el sistema)
  • 1 (modo monousuario)
  • 2 al 5 (modos multiusuario)
  • 6 (reiniciar el sistema)
Si estamos en un nivel de ejecución, podemos cambiar a otro utilizando el comando telinit.
Ejemplo: Si ejecutamos telinit 1 cambiaremos al modo monousuario.

Al iniciar un nivel de ejecución se ejecutan todos los scripts ubicados en el directorio /etc/rcN.d/. Donde N es un número que representa el nivel de ejecución. Ej: r2.d, rc3.d ...

Los scripts de estos directorios, se nombran siguiendo unas reglas:

La primera letra del nombre del script determina la manera en que se ejecuta el script:
  • Los scripts cuyos nombres comienzan con K se ejecutan con el argumento stop.
  • Los scripts que comienzan con S se ejecutan con el argumento start.
Después de esta primera letra se usan dos dígitos y un nombre de script.

Los scripts se ejecutan en orden, según el orden alfabético de sus nombres.

Los scripts situados en /etc/rcN (donde N es un número que representa el nivel de ejecución) son tan sólo enlaces simbólicos que apuntan a los scripts situados en /etc/init.d/


Personalizar los niveles de ejecución

Habilitar un servicio.- Para habilitar un servicio llamado servicio en el nivel de ejecución N crearemos un enlace simbólico /etc/rcN.d/Sxyservicio al script servicio alojado en ../init.d/.
El número de secuencia xy debe ser igual al asignado al servicio cuando fue instalado el paquete.
Ejemplo: ln -s /etc/rc2.d/S99proftpd ../init.d/proftpd

Deshabilitar un servicio.- Para deshabilitar un servicio, renombraremos el enlace simbólico de modo que su nombre comience con K y no con S y su número de secuencia sea 100 menos xy.
Ejemplo: mv /etc/rc2.d/S99proftpd /etc/rc2.d/K99proftpd

En vez de cambiarle el nombre, es posible eliminar el enlace simbólico S de un servicio de un directorio de niveles de ejecución determinado. Esto no deshabilita el servicio sino que lo deja en un estado "potencial" al menos en lo que respecta al sistema init sysv-rc. Al cambiar de nivel de ejecución el servicio no se lo activará ni se lo detendrá sino que se lo dejará como estaba, independientemente si esta ejecutándose o no.

No es aconsejable realizar modificaciones a los enlaces simbólicos situados en /etc/rcS.d/.

jueves, 11 de diciembre de 2008

Averiguar a qué paquete pertenece un archivo en distribuciones Debian

Muchas veces tenemos algún programita instalado en nuestro linux, pero no sabemos a qué paquete pertenece, con el fin de desinstalarlo, volver a instalarlo, o lo que sea. Ésto es fácil de averiguar utilizando el comando dpkg con el parámetro -S.

# dpkg -S fichero

Veamoslo con un ejemplo:

Imaginemos que tenemos instalado el programa ntfsclone y queremos averiguar a qué paquete pertenece. Pues bien, ejecutamos el siguiente comando:

# dpkg -S ntfsclone

El comando nos mostrará los ficheros que tienen el nombre ntfsclone y a qué paquete pertenecen. En este caso, podemos ver que ntfsclone pertenece al paquete ntfsprogs.

ntfsprogs: /usr/sbin/ntfsclone
ntfsprogs: /usr/share/man/man8/ntfsclone.8.gz

Arranque de terminales ligeros con etherboot

Una opción interesante que tenemos en linux para aprovechar equipos obsoletos es montar una máquina como servidor de terminales y convertir máquinas con pocos recursos en terminales ligeros.

Muchas de las máquinas, más o menos recientes disponen de arranque PXE, con lo que pueden arrancar a través de la red para conectarse a un servidor de terminales. El problema viene cuando las máquinas no disponen de PXE. En este caso, podemos usar etherboot montado en un disco duro o floppy. Para ello, no tenemos más que ir a http://rom-o-matic.net y utilizar un generador de imágenes de arranque que luego podemos descargar. Pero surge otro problema: Las imágenes de arraque se crean de forma particular para cada tarjeta de red. Y en un entorno de terminales ligeros suele haber máquinas con muchas interfaces de red diferentes.

Una solución es descargar una imagen de floppy creada por Alexander Heinz (http://etherboot.anadex.de/) que soporta una cantidad impresionante de tarjetas de red y nos permite arrancar nuestro PC a través de la red sin la necesidad de PXE o una imagen específica de etherboot.

Llevo utilizándolo ya varios años para arrancar terminales heterogéneos y me ha funcionado de maravilla con diferentes interfaces de red.

Características de este floppy:
  • Está basado en Freedos y Syslinux.
  • Usa la versión 5.4.0 de Etherboot, con lo que permite trabajar con todas las interfaces de red soportadas por Etherboot.
  • Dispone de una opción que, usando PCIScan v1.10, autodetecta nuestra tarjeta de red, con lo que no tenemos que hacer nada para que funcione.
  • Además dispone de entradas específicas para arrancar cada tarjeta de re. No obstante, con la auto-detección es suficiente.
  • Dispone de una opción que nos permitirá instalar Etherboot en un disco duro.
Podemos descargar la imagen del floppy desde el siguiente enlace:
http://etherboot.anadex.de/eb_on_hd.ima

Una vez descargada, podemos grabar la imagen en un diskette, ejecutando:
# dd if=eb_on_hd.ima of=/dev/fd0

Una vez grabada la imagen en un floppy, podemos arrancar el equipo desde el floppy y usar la opción: INSTALL etherboot to hard disk / MODIFY this floppy para instalarlo en en disco duro. Ojo! Ésto borrará la tabla de particiones de nuestro disco duro (con lo que perderemos lo que contenga), creará una partición FAT de 5MB e instalará un MBR.

Pero hay otra forma de ejecutarlo, si en nuestra máquina disponemos de GRUB, y es haciendo uso de memdisk, una utilidad de grub que nos permite ejecutar imágenes de floppys.
Aquí dejo un enlace desde el que se puede descargar un fichero llamado etherboot.tar.gz que contiene el fichero eb_on_hd.ima y memdisk:

http://www.mediafire.com/?zu2xjjgnymb

Veamos cómo arrancar este floppy desde GRUB:

Primero descomprimimos el fichero etherboot.tar.gz

# tar xfvz etherboot.tar.gz

Se nos creará un directorio llamado etherboot con los dos ficheros dentro.

Después copiamos los ficheros eb_on_hd.ima y memdisk al directorio /boot de nuestro linux.

Una vez copiados, creamos una entrada como la siguiente en el fichero /boot/grub/menu.lst que nos permitirá iniciar el floppy vía grub:

title Iniciar la máquina como terminal ligero
root (hdX,Y)
kernel /boot/memdisk
initrd /boot/eb_on_hd.ima

NOTA: En la línea root (hdX,Y) sustituid X por el nº de disco duro e Y por el número de partición. Y no olvidéis que tanto el nº de disco como el nº de partición se empiezan a contar desde cero.

miércoles, 10 de diciembre de 2008

WiCD: Herramienta gráfica de conexión a redes alternativa a Network-Manager

He tenido Ubuntu Hardy desde que se lanzó y la verdad es que nunca me ha ido demasiado bien. Así que ayer me puse a actualizar a Intrepid. Como la actualización terminó bastante tarde, lo dejé y esta mañana al intentar conectar a la wifi que tengo en el trabajo, el Network Manager no me funcionaba bien. Intenté usar wifi-radar, pero tampoco conseguía conectar. Por lo que decidí probar WiCD, una herramienta alternativa que me ha gustado mucho y que permite conectar a redes con diferentes sistemas de seguridad, entre ellos WPA, que es lo que tengo.

Además, permite mostrar también la conexión cableada, cosa que me interesa bastante, porque en el trabajo suelo conectarme vía ethernet.

Veamos cómo instalar esta aplicación en ubuntu intrepid:

Lo primero que haremos será abrir un terminal como root y descargar la firma del repositorio:

# wget -q http://apt.wicd.net/wicd.gpg -O- | sudo apt-key add -

Con la línea anterior, lo que hacemos es descargar el archivo de clave y añadir la clave al anillo de llaves para seguridad de apt. Este anillo de llaves se encuentra en /etc/apt/trusted.gpg.
Ésto es porque el repositorio se ha creado con secure-apt para proporcionarnos la seguridad de que estamos descargando desde su repositorio.

Una vez que tenemos la clave, editamos el fichero /etc/apt/sources.list y añadimos el repositorio desde el que descargaremos la aplicación:

echo "deb http://apt.wicd.net intrepid extras" >> /etc/apt/sources.list

Una vez añadida la linea anterior, actualizamos la lista de paquetes:

# apt-get update

Y, seguidamente, instalamos la aplicación:

# apt-get install wicd

Una vez instalada, la aplicación debe funcionar. No obstante, hasta que no volvamos a iniciar sesión, no nos aparecerá un icono en la barra de tareas. Así que, podemos cerrar y volver a abrir la sesión.

Veamos cómo instalar esta aplicación en debian lenny:

El procedimiento es el mismo que en ubuntu. Lo único que varía es el repositorio desde donde instalar.

Lo primero que haremos será abrir un terminal como root y descargar la firma del repositorio:

# wget -q http://apt.wicd.net/wicd.gpg -O- | sudo apt-key add -

Una vez añadida la clave al anillo de llaves, editamos el fichero /etc/apt/sources.list y añadimos el repositorio desde el que descargaremos la aplicación:

echo "deb http://apt.wicd.net lenny extras" >> /etc/apt/sources.list

Una vez añadida la linea anterior, actualizamos la lista de paquetes:

# apt-get update

Y, seguidamente, instalamos la aplicación:

# apt-get install wicd

Al igual que en ubuntu, una vez instalada, la aplicación debe funcionar. No obstante, hasta que no volvamos a iniciar sesión, no nos aparecerá un icono en la barra de tareas. Así que, podemos cerrar y volver a abrir la sesión.

En cuanto al uso de la aplicación, es muy sencillo. Lo único que tenemos que hacer es Pulsar en Opciones Avanzadas y pasaremos a introducir los Parámetros para configurar una Conexión. Después, rellenamos las Casillas con los datos que correspondan a nuestra red, y, cuando terminemos, pulsamos en Aceptar.

De todos modos, lo mejor es ver la aplicación porque es muy sencilla de usar.

Ramas de Debian: Actualizando a otra rama

Debian GNU/Linux es una distribución que mantiene 3 ramas:
  • stable.
  • testing.
  • unestable.
Cada una de ellas tiene un nombre y un sentido:

Stable: Esta rama está destinada a ser usada en instalaciones en producción, es decir, en sistemas donde se necesita estar seguro de que el sistema funcionará correctamente sin problemas de fallos, ni bugs y con un alto nivel de estabilidad.

En la rama stable los paquetes no se actualizan constantemente. La rama actualmente stable a día de hoy es Etch. La antigua stable (oldstable) es Sarge.

Testing: Es la rama en la cual cierta cantidad de paquetes ya han sido probados y no han reportado problemas, pero constantemente se hacen nuevas pruebas y añaden nuevas características y paquetes hasta obtener cierto grado de estabilidad.

Esta rama, que cuenta con los paquetes más actualizados, es interesante para aquellos usuarios que desean tener las últimas características y novedades de los paquetes. La rama que está actualmente en testing es Lenny.

Unstable: Es la rama en la que aún hay muchos bugs y los paquetes son inestables o tienen problemas de seguridad. Esta rama es usada fundamentalmente por los desarrolladores de Debian.

No es recomendable para ser usada en producción. La rama unstable siempre se llamará Sid.

¿Cómo se organizan los repositorios de una distribución Debian?

Debian almacena la lista de repositorios donde se encuentran los paquetes en el fichero sources.list, que se encuentra localizado en el directorio /etc/apt

Este fichero contiene líneas del tipo:

deb ftp://ftp.es.debian.org/debian/ stable main contrib non-free

Veamos qué significa cada parte de esta línea:
  • ftp:// indica que se accede al repositorio vía ftp.
  • ftp.es.debian.org/debian es la dirección del repositorio que estamos usando en nuestro sistema y la ruta donde se encuentra la copia de los paquetes. En este caso estamos usando el mirror de España. También podríamos usar, por ejemplo, el de Francia (ftp.fr.debian.org/debian) o cualquier otro.
  • stable es la distribución que estamos usando. Ésto debemos cambiarlo para pasar
    de una distribución a otra.
  • main contrib non-free indican las ramas que vamos a poder utilizar.

¿Cómo se pasa de una rama de Debian a otra?

Imaginemos que en nuestro repositorio estamos usando la rama stable de debian. No tenemos más que editar el fichero /etc/apt/sources.list y cambiar el nombre de la rama a usar en las líneas del repositorio. Imaginemos que tan sólo tenemos un repositorio:

deb ftp://ftp.es.debian.org/debian/ stable main contrib non-free

Si queremos cambiar de stable a testing, tan sólo tenemos que cambiar la palabra stable por testing en la línea.

deb ftp://ftp.es.debian.org/debian/ testing main contrib non-free

Y si lo que queremos es pasar a unestable, cambiaremos la palabra por unestable:

deb ftp://ftp.es.debian.org/debian/ unestable main contrib non-free

Una vez modificado el /etc/apt/sources.list, lo guardamos.

Seguidamente, actualizamos la lista de paquetes:

# apt-get update

Y, por último, hacemos un apt-get dist-upgrade:

# apt-get dist-upgrade

El sistema comenzará a actualizarse. Una vez actualizado, reiniciaremos la máquina y tendremos muestro debian actualizado.

Una vez que una versión testing pasa a estable, la antigua estable seguirá manteniendose durante un tiempo como oldstable.

Por último, tan sólo me queda decir que también podemos usar los nombres concretos de cada versión.

La siguiente línea siempre apuntará a la rama stable de debian, sea cual sea en ese momento:
deb ftp://ftp.es.debian.org/debian/ stable main contrib non-free

En cambio, si usamos:
deb ftp://ftp.es.debian.org/debian/ etch main contrib non-free
Siempre estaremos usando etch.