Tag Archive: Debian


Particularmente en mi trajin diario administro muchos servidores UNIX/Linux en forma remota mediante el protocolo  de acceso encriptado SSH. Buena cantidad de estos equipos se encuentran accesibles desde Internet y por lo tanto quedan expuestos a posibles atacantes. Es una tarea basica de un SysAdmin reducir las posibilidades de exposición de los servicios hacia Internet a dichos atacantes. Para ello existen, en el caso de SSH desde tips y herramientas para reforzar la configuración del mismo, y principalmente el mismo manual de ssh. Tal es así que en esas busquedas locas que realizo por la net me tope con Pam_Captcha. PAM Captcha realiza una implementacion de preautenticacion mediante ingreso de código captcha en interfaz asccii para prevalidar el acceso e intentar reducir los ataques de fuerza bruta que se puedan efectuar contra  nuestro servidor SSH.

Que es PAM? : Son las siglas de Pluggable Authentication Modules, o traduciendo seria Módulos de Autentificacion Conectables, que en un sistema GNU/Linux actual  es el núcleo de las autenticaciones de los usuarios que permiten  acceder a las aplicaciones  o servicios del sistema. Debido a su característica modular es posible entre otras posibilidades la combinación de mecanismos de autentificacion del usuario, que es lo que vamos a hacer en el presente articulo.

Implementando PAM_Captcha Para poner  a funcionar empezamos por descargarlo de:

http://www.semicomplete.com/projects/pam_captcha/

$ wget -c http://semicomplete.googlecode.com/files/pam_captcha-1.5.tar.gz
$ tar xvfz pam_captcha-1.5.tar.gz
$ cd pam_captcha-1.5
$ sudo make

Si tuviste algún problema al compilar se deben instalar las siguientes dependencias, Figlet  y los headers del paquete de las librerias de PAM. En mi caso particular (uso Debian Squeeze) instale los módulos libpam0g-dev y figlet, dependencias para que se compile correctamente el modulo.

$ sudo apt-get install libpam0g-dev figlet

Una vez ejecutado el:

$ sudo make

dentro del directorio que descomprimimos, y si vemos que no se genero ningún error, ya deberíamos tener disponible el archivo libpam_captcha.so en el directorio. Cambiamos los permisos del archivo a

$ sudo chmod 644 libpam_captcha.so

y lo copiamos al directorio donde se localicen los modulos de PAM, en mi caso:

$ sudo cp libpam_captcha.so /lib/security

A continuación modificamos el archivo de configuración de PAM para Ssh en /etc/pam.d/sshd, añadiendo la siguiente linea:

auth       requisite     pam_captcha.so    math randomstring

Los parámetros finales son opciones del modulo Pam, donde math muestra como captcha un calculo aritmético simple, randomstring una cadena aleatoria de caracteres y números, y dda es una opción que solo existe a niveles de diversión :). Luego hay que modificar algunos parámetros de configuración del demonio SSH, para ellos cambiamos  el siguiente archivo:

/etc/ssh/sshd_config

añadiendo o modificando las lineas a los siguientes valores:

PasswordAuthentication no
ChallengeResponseAuthentication yes

Luego de esto reiniciamos el servidor ssh

$ sudo /etc/init.d/ssh restart

Y listo ! :). Espero les sirva. Saludos a todos. Dejo un screencast con un paso a paso de como se vería la implementacion y el funcionamiento de Pam_Capchat:

Enlace directo a vimeo: http://vimeo.com/15587452

Introducción rápida

Un proxy, en un entorno de red informática, es un aplicativo mas especializado y con mayor variedad de opciones de configuración que se interpone normalmente entre una solicitud de servicio y un servidor a fin de ampliar las posibilidades de personalización de dicho tipo de conexión a fin de obtener una mejora en rendimiento, seguridad, o eficiencia de dicho servicio.

Tal es asi que durante el transcurso de mi experiencia personal en el mundillo informatico me he topado con Proxys de todo tipo, tanto para servicios web, ftp, smtp, ssh, mensajeria, base de datos, y otros que no recuerdo.

A continuación dejo algunos tips para aquellos que usan debian o derivados y se han topado con necesidades de actualizar paquetes desde un red restringida a traves de un proxy web.

Actualizar paquetes con apt a traves de proxys web

Se debe crear un archivo en el directorio:

$ cd /etc/apt/conf.d/

y creamos un archivo con el nombre que queramos

$ sudo mcedit 00proxy

y agregamos las siguientes lineas y guardamos el archivo

Acquire::http::Proxy “http://10.20.30.254:3128”;

Donde 10.20.30.254 debe ser reemplazado por el numero IP del servidor proxy web de nuestra red y 3128 por el numero de puerto usado por dicho proxy.

Si nuestro caso fuese que tuvieramos un proxy con autenticacion de usuario y password, la linea cambia a:

Acquire::http::Proxy “http://usuario:password@10.20.30.254:3128”;

Y a continuación podremos ejecutar cualquier accion via comandos apt sin ningun inconveniente luego de un apt-get update.

Actualizar módulos de Pear PHP via Proxy web

PHP Pear o PEAR a secas es un sistema de componentes para PHP que cuenta con muchos modulos utiles en linea, los cuales necesito para unos desarrollos en PHP. Si bien la mayoria de las distribuciones cuentan con versiones en paquetes de algunos modulos conocidos, otros no esta incluidos, para lo cual Pear provee entre sus funcionalidades  la posibilidad de realizar un update de sus listas de componentes de los repositorios online.

Dicha actualización se realiza, hasta donde he podido comprobar vía web o puerto 80, lo cual en el caso de un proxy web también necesita de una configuración para poder llevar a cabo tareas como actualización o descarga de los componentes necesarios.

En una consola de texto debemos escribir:

$ sudo pear config-set http_proxy ‘http://10.20.30.254:3128’

O en caso de contar con un usuario y password del proxy:

$ sudo pear config-set http_proxy ‘http://usuario:password@10.20.30.254:3128’

Si la configuracion se toma correctamente nos aparecera un mensaje como el siguiente:

config-set succeeded

Y todo listo para actualizar o descargar componentes para Pear 🙂



Para aquellos que tengan inconvenientes con la sincronización de la hora en sus equipos , en especial si estos cumplen algun servicio orientado a mas de un usuario, se puede instalar el servicio NTP  (Network Time Protocol) que realiza la sincronización automatica de la hora de acuerdo a tu huso horario

Instalacion en en Debian:

# apt-get install ntp

Ahora , si sos un habitante de Argentina* como yo  editar el archivo /etc/ntp.conf y añadir estas lineas:

server 0.south-america.pool.ntp.org
server 1.south-america.pool.ntp.org
server 2.south-america.pool.ntp.org
server 3.south-america.pool.ntp.org

en mi caso comente estas lineas que estaban en el mismo archivo:

#server 0.debian.pool.ntp.org iburst dynamic
#server 1.debian.pool.ntp.org iburst dynamic
#server 2.debian.pool.ntp.org iburst dynamic
#server 3.debian.pool.ntp.org iburst dynamic

Luego bastaria con guardar los cambios en dicho archivo y reiniciar el servicio para que tome los cambios, osea , un:

# /etc/init.d/ntp restart

* – Bien si no sos habitante de argentina, podes visitar el sitio www.pool.ntp.org, donde podes localizar un listado de servidores mas adecuados a tu zona

Sistema de Capas Jerárquico (NTP)
Sistema de Capas Jerárquico (NTP)

Listo, Voila! ahora solo deberias consultar la hora para ver que se ha actualizado, si en un equipo le has encontrado el gustito a esto de tener la hora sincronizada con servidores externos , espera a que te toque administrar una cantidad seria de servidores repartidos por alli, y ahi si vas a ver que su utilidad se amplifica, y es muy gratificante usar tu clusterssh y hacer un date  simultaneo en multiples servers y observar que la hora esta igualita, o casi igualita :P, pero de eso hablaremos despues.

(Antes que nada lo siguiente es un cumulo de experiencias personales sobre mi migración de debian etch a debian lenny , lo que puedas romper de aquí en adelante de acuerdo a lo que uses como guía , en caso de que lo hagas , de este escrito, no corre por mi cuenta. Y lo que te salga bien, mis felicidades….. y si me lo quieres agradecer … bueno! si tenes alguna hermana que este buena y viva en argentina ?)

Ayer domingo después de haber tenido un par de renegadas por tratar de hacer correr Firefox3 en mi etch AMD64, y solo por el capricho de volver a tener firefox con todos los plugins tal como lo tenia en mi versión de Etch en 32bits, me decidí a actualizar a Lenny, razones: bueno, se corre el rumor de que en las listas de developers de debian ya se dice que desde el 14 de febrero la versión testing de Debian a estas fechas pasara a convertirse en Stable.

Recetario resumido (no se si hay alguna forma mas simple de hacer esto):

Paso uno) Modificar el archivo /etc/apt/sources.list

Aquí comente todos los repositorios extras(1) y solo deje los oficiales de debian, en dichos repositorios me limite a cambiar las partes donde dice “stable” por “testing””, quedo algo asi:

deb http://ftp.at.debian.org/debian/ testing main
deb http://ftp.at.debian.org/debian/ testing non-free
deb http://ftp.at.debian.org/debian/ testing contrib
deb-src http://ftp.at.debian.org/debian/ testing main
deb http://security.debian.org/ testing/updates main

CORRECION AL 15/Febrero/2009:

Debido a que a la fecha Lenny ya es stable las lineas de /etc/apt/sources.list deberian ser

deb http://ftp.at.debian.org/debian/ stable main
deb http://ftp.at.debian.org/debian/ stable non-free
deb http://ftp.at.debian.org/debian/ stable contrib
deb-src http://ftp.at.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main

Paso dos) ejecutar

# apt-get update

# apt-get upgrade

luego de esto se actualizaron unos 200 MB promedio en paquetes, al menos en mi sistema, y aun podía seguir viendo “El retorno del rey” versión extendida  en el segundo monitor con un desktop estable. AL finalizar seguí con:

#  apt-get dist-upgrade

y a esperar que se descargaran cerca de 1 GB de paquete, las siguientes fueron algunas de las preguntas de interacción con el sistema de instalación luego de descargados los paquetes y ya en fase de upgrade:

– actualización de libc y reinicio de demonios dependientes: exim, ssh, y otros q no recuerdo

– consulta de actualización a postgresql 8.3 , confirme que NO

– preguntas sobre la nueva contraseña del usuario root para  mysql-server

– reescritura de archivos de xsane y cupsys (particularmente en etch tenia modificados estos archivos a configuraciones personales, compartir impresora y escanner )

Segundos después se me colgó el X :), no problema, me fui a consola, como tenia la instalación atachada a un “screen” (2), lo único que debi hacer es un detach de mi consola. (Por si no entendiste esto , quise decir que al colgarse mi X no se detuvo mi apt-get upgrade, me fui a consola y lo pude agarrar donde se había quedado y sin interrupciones 🙂 )

Listo ,finalizada la actualización de mi sistema a Lenny. Ahora iniciar X, que me dio problemas , esta bien , tengo mi sistema con dos monitores uno conectado a unaplaca de video Geforce8400 con drivers del fabricante (driver “nvidia”) y la otra a una Intel 945 que correo bastante bien con el driver nativo “i810” del sistema. Pero en fin , el mismo archivo xorg.conf no me funciono , me tiro algunos errores, asi que lo solucione con un:

X -configure

que me reescribió un nuevo archivo de configuración en

/root/xorg.conf.new

De ahí solo tunee un poco este archivo a mis configuraciones de monitores y listo…. al menos eso creí.

Trato de iniciar nuevamente el sistema X vía:

/etc/init.d/gdm restart

y Nuevamente errores ….Ups , casi me olvido de compilar el driver de la geforce,

Compilate el Kernel si te animas

(iba a decir si sos groso, pero con las tools que hay hoy en dia , no hace falta ni eso ya)

descargado de www.nvidia.com, bien , trato de correrlo el binario que uno se descarga de alli (en micaso NVIDIA-Linux-x86_64-180.22-pkg2.run) , y durante su ejecución me advierte que el kernel actual , esta compilado con GCC 4.1 y que el compilador por defecto es GCC 4.3 y que esto puede generar problemas, así que antes de dar mas vueltas y con muchas ganas de dormir y pocas de leer (disculpas 😦 , era la hora, no razone bien así que para evitar quilombos tome la alternativa lenta y no la rápida, recompilar el kernel nuevamente :P, o quizas la lenta pero segura, para evitar tener este drama con futuras compilaciones de aplicativos que requirieran dependencias en el kernel y sus headers)

# apt-get install linux-source-2.6.26

# cd /usr/src

# tar xvfj linux-source-2.6.26.tar.bz2

# cp /boot/config-2.6.26-1-amd64 /usr/src/linux-source-2.6.26/.config

# cd /usr/src/linux-source-2.6.26

# make-kpkg –revision mirevision1.0 –initrd kernel_image kernel_headers

al finalizar instalo mi nuevo kernel compilado con GCC-4.3, y listo reinicio , instalo el driver de nvidia y marcha todo bien. Bue casi bien! , no me anda el xinerama así que no puedo pasar ventanillas de un monitor a otro :(, … ya lo resolveré..

Iceweasel en Lenny AMD64 con FLash 10

Hoy, Lunes 9 de febrero de 2009 , ya tengo andado un firefox3 ….. estem… ejem! … quiero decir un iceweasel version 3.0.5, con todos las extensiones que tenia en el de 32bits 😛 y con soporte de flash propietario pero bue :(,

Apropos , casi me olvido como puse flash10 en el browser , ehh son unospasos simples, no temates con nspluginwrapper y eso, lo hice mas simple:

# wget -c http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.d21.1.linux-x86_64.so.tar.gz

# tar xvfz libflashplayer-10.0.d21.1.linux-x86_64.so.tar.gz

# cp libflashplayer.so /home/$USER/.mozilla/plugins/

Y boila!!! ya tengo soporte de flash 10 en mi firefo… argh…. en mi iceweasel 😛

Resumen:

A mi parecer , o al menos como decia G. Nimo, “al menos así lo veo yo”, de momento todo corrió con normalidad, en Debian hacer un upgrade del sistema es sencillo para cualquier usuario, de beginner a avanzado, ya vieron los primeros comandos, de allí a los problemas que pueden surgir variaran obviamente de acuerdo a las aplicaciones que tengas y que tan estricto puedas haber sido con mantener un sistema limpio y actualizado solo con paquetes de los repositorios oficiales o no.

Pros: tengo screenlets :P, cosa q en etch no pude hacer correr , por incompetencia o por que no andaba , pero creo recordar que era por incompatibilidad de dependencias. y si , me atrevo a decir que tengo un gnome “Bonito” , que curioso , parece que fue ayer cuando me reí de un par de amigas que me dijeron que preferían el Windows Vista en sus pcs porque era “BONITO” , al mismo tiempo pense “que imbeciles”, he aqui ahora yo diciendo lo mismo :P.

Contras: No me anda el Xinerama!! FUCK!!!!

Notas:

(1) Al decir “extras” me refiero a rutas a repositorios del tipo backports u otros de donde uno suele bajarse el mplayer cuando no quiere andar compilandolo. :), el cual no es mi caso, siempre suelo compilar MPlayer.

(2) “screen” es un aplicativo que te permite gestionar multiples sesiones de consolas de texto en una misma sesion real de consola de texto. Por si no se entendio :

apt-cache show screen

y si te gusto:

apt-get install screen

Bien aquí va una herramienta útil para aquellos que realizamos administración de múltiples sistemas en forma remota vía protocolo OpenSSH, la verdad que cuando empecé hace años solo accedía a un par de ventanas con lo cuales no me resultaba molesto por allí realizar repetición de comandos, pero creanme , cuando se necesita mantener mas de 2  servidores he aquí que nos surge la necesidad de algún aplicativo que nos de las bondades que nos da ClusterSSH.

Tal vez aun seguís preguntándote , ¿pero que tipos de tarea puedo realizar en forma simultanea ?, dejame que te de alguna idea para comenzar de las tareas que se puede ejecutar en paralelo:

  • Actualización simultanea de algún aplicativo empaquetado o dist-upgrade (caso de Debian o derivados )
  • Descarga manual de aplicativos que necesitan ser instalados mediante el método convencional (./configure, make, make install)
  • Búsqueda en  Logs de parámetros comunes
  • Actualización de regla genérica en herramienta de firewall.
  • Procedimientos de mantenimiento de base de datos
  • otros….

si sos un Debian User, justo como yo, procedemos a instalarlo mediante:

# apt-get install clusterssh

Una vez instalado el aplicativo y sus dependencias disponemos del ejecutable cssh , el cual dará aparición de una pequeña ventanita como esta:

Pantalla de Inicio de ClusterSSH
Pantalla de Inicio de ClusterSSH

Allí la opción mas útil es la que se encuentra bajo el Menú “Hosts” y se llama “Add Host” , también podemos iniciarla con la combinación de teclas CTRL + PLUS(+) (osea tecla “Control” mas tecla “Mas”), lo que provoca la aparición de esta ventanita:

Ventana de Añadir Host en ClusterSSH
Ventana de Añadir Host en ClusterSSH

Ahora en dicha ventana solo bastaría poner el nombre del servidor en formato URL o Numero IP para acceder al SSH de dicho equipo, asumiendo que lo tengamos corriendo en el puerto típico que es el TCP numero 22, pero sucede comúnmente y a mi me ha pasado que debido a que lo primero q pensaría un oportuno atacante es husmear en dicho puerto para encontrar un server SSH andando, así que lo que suelo hacer es cambiar el puerto y poner uno distinto al 22, relax muchachos o damas, que tenemos 65536 para elegir, exceptuando los típicamente empleados por otros protocolos nos quedan muchos para decantarnos. En fin si tu caso es este, y pusiste un puerto atipico, se lo pasamos en la linea de la ventana de Add Host, escribiendo por ejemplo:

midominio.rechingon.org:2222

por si queres un usuario particular, a ver veamos con ponerlo así

pasokon@midominio.rechingon.org:2222

y listo, ya especificamos user and port.

Ahora , bien tu reacción podría ser , “pero me pone por las bolas tener que andar especificando User and Port, aparte de tipear todo el dominio”, bueno, si te estabas diciendo justamente esto o alguna frase similar de disgusto, podes realizar configuraciones personalizadas creando tu archivo .csshrc, veamos

$ touch ~/.csshrc

$ mcedit  ~/.csshrc

yo uso mcedit o a veces vim para editar archivos como editores de preferencia, y agregamos algunas lineas como las siguientes:

ignore_host_errors = yes

isp1 = usuario@midominio1.com.ar
isp2 = usuario@miotrodominio.net:4444
empresa1 = otrousuario@empresa1.com.ar:5666
empresa2 = usuario@empresa2.com.ar:221
oficina  = yo@miempresa.com.ar:2201
micluster1 = isp1 isp2
micluster2 = empresa1 empresa2 oficina
clusters = micluster1 isp1 isp2 micluster2 empresa1 empresa2 oficina

Bien, expliquemos un poco lo que hacemos aquí, la primer linea si bien en las ultimas versiones dice que esta en status DEPRECATED, yo a algunos servidores que administro no he podido conectarme si no fuera porque esta alli dicha opción, asi q la mantengo en mi archivo .csshrc. Uds vean como les resulta. De las lineas de 2 a 6  defino mis host asociándolos a etiquetas a gusto y placer del usuario, en el caso del ejemplo identifique los hosts de acuerdo a su funcionalidad “isp1” o a un lugar donde pertenezcan, pero en mi preferencia me gusta identificar los host con sus nombres,  particularmente al instalar un servidor suelo asignarle un nombre de mujer, al menos en mi caso es mas fácil recordarlos :).

En las lineas 7 y 8  referencio dichos los Hosts ya definidos de acuerdo a otra etiqueta, que es básicamente un tag cualquiera con el cual los agrupamos, de esta manera podemos iniciar una serie de sesiones en forma paralela con solo cargar el nombre de dicha agrupación (Consejo: no usen una misma password para gestionar el inicio de sesion en diferentes servidores, seria lo mas fácil, pero por favor no lo hagan no es lo mas recomendable).
Finalmente en la linea 9 se define la sección “clusters” , recordar que debe haber una sola sección “clusters” donde iran todas las etiquetas definidas, tanto de hosts y de agrupaciones de host, es importante incluir esta sección , porque sin ella todo lo definido anteriormente no funcionara.
Por mas configuraciones:

$ man cssh

:-P, se los recomiendo, porque aparte de lo descrito esta herramienta tiene algunas otras  funcionalidades útiles para trabajar con las ventanas de sesión iniciadas.

Casi me olvido, una buena alternativa para evitar  la típica validación contra OpenSSH, es el uso de certificados para realizar la conexión contra los servidores.

Ahora a titulo de simple usuario y critico, esta herramienta me ha servido demasiado a la hora de realizar alguna de las tareas arribas mencionadas, de todas formas algo le debo echar en falta, y es la posibilidad de mantener encriptada o cifrada la informacion relativa a los hosts que administro , el hecho de que este allí en un archivo de texto en mi $HOME no es algo que me tenga muy tranquilo. En fin. Es solo mi opinión.
Salud!

Seguramente mucho de nosotros, usuarios de GNU/Linux, en especial los que estamos hace un tiempo en el mundillo hemos lidiado con el dichoso “lilo” , selector de arranque o boot manager como también suele conocercelos, la idea de este programita es instalarse en el sector de arranque de un disco rígido y desde allí ejecutarse para permitirnos durante tiempo de arranque, y apenas leído el disco rígido de nuestra computadora , seleccionar con que sistema operativo de los que tengamos instalados vamos a iniciar sesión, además entre otras opciones los boot managers normalmente nos permiten refinar mas el tipo de parámetros que queremos pasar al sistema operativo que seleccionamos, tales parámetros como opciones del kernel para nuestro núcleo linux tales como partición de arranque , imagen initrd a usar, módulos a cargar , parámetros de dichos módulos, etc..

Bueno, la cosa es que para los que ya lo conocen, LILO ha sido desde hace tiempo la opción preferida, quizás hoy en día tiene mas alternativas  que años atrás, pero la idea siempre fue brindarnos la opción de elegir con que arrancar. Luego de una instalación típica de un gnu/linux , normalmente no necesitamos configurar nada,  la mayoría de los instaladores lo configuran automáticamente, pero en caso de que ese no sea nuestra situación deberíamos saber que  /etc/lilo.conf es el archivo para modificar su configuración.

Lo típico indica que el usuario común lo instala en su disco rigido y sigue con su vida como si nada, pero hoy yo me enfocare en la posibilidad que tenemos de emplear lilo para iniciar un sistema GNU/Linux que se encuentra espejado mediante RAID 1 por software

He aquí un archivo típico de configuración adaptado para iniciar con disco en modo RAID 1 con un sistema con dos disco IDES espejados, de misma capacidad y marca (Ojo, esto no es necesario en RAID por software en GNU/Linux):

# Support LBA for large hard disks.
#
lba32
# Overrides the default mapping between harddisk names and the BIOS’
# harddisk order. Use with caution.
#disk=/dev/hde
#    bios=0x81
#disk=/dev/sda
#    bios=0x80
# Specifies the boot device.  This is where Lilo installs its boot
# block.  It can be either a partition, or the raw device, in which
# case it installs in the MBR, and will overwrite the current MBR.
#
boot=/dev/md0
# Specifies the device that should be mounted as root. (`/’)
#
root=/dev/md0
raid-extra-boot=/dev/hda,/dev/hdc
# Enable map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the
# map smaller.  Using `compact’ is especially recommended when
# booting from a floppy disk.  It is disabled here by default
# because it doesn’t always work.
#
# compact
# Installs the specified file as the new boot sector
# You have the choice between: bmp, compat, menu and text
# Look in /boot/ and in lilo.conf(5) manpage for details
#
#install=/boot/boot-menu.b

# Specifies the location of the map file
#
map=/boot/map

# password=tatercounter2000
#
delay=20
timeout=150
# Boot up Linux by default.
#
default=”Linux”

image=/vmlinuz
initrd=/initrd.img
label=”Linux”
append=”apm:on”
read-only
optional

image=/vmlinuz.old
initrd=/initrd.img.old
label=”LinuxViejo”
append=”apm:on”
read-only
optional

#other=/dev/hda3
#    label=Winchows

De este archivo nos interesan las lineas 14,17, 18, comentemos:

Linea 14:

boot=/dev/md0

Indica el dispositivo de inicio (o booteo), es donde lilo se instala, bla bla! RTFM of lilo; el porque es /dev/md0 y no un tipico /dev/hda o /dev/hdd o lo que fuese es que justamente es un dispositivo que se crea al momento de definir los discos raid por software y adjuntarles los disco reales, sean estos IDE o SATA. Normalmente tienen esa notacion , si fue el primer dispositivo raid creado md0, el segundo md1 and so on…

Linea 17:

root=/dev/md0

Aquí se especifica la  particion  definida como raiz del sistema (/)

Linea 18:

raid-extra-boot=/dev/hda,/dev/hdc

Y esta a mi parecer la mas importante, aqui especificamos cuales son los disco que conforman el dispositivo raid, y en los cuales se escribira lilo al momento de ejecutar su arrancable.

Al terminar de realizar las modificaciones en /etc/lilo.conf, bastaria con ejecutar lilo en linea de comandos como root para que se actualize su contenido en el MBR (Master Boot Record), o inicio de la particion elegida.

server:/# lilo

Added Linux *
Added LinuxViejo
The boot record of  /dev/md0  has been updated.
The boot record of  /dev/hda  has been updated.
Warning: /dev/hdc is not on the first disk
The boot record of  /dev/hdc  has been updated.
server:/#

La linea que sale marcada con asterisco indica que es el kernel seleccionado por defecto para iniciar. Como se observa se actualiza el registro de inicio tanto en el dispositivo RAID md0 como también en cada una de las particiones que lo conforman.

Listo, eso es todo , ya deberíamos tener nuestro sistema listo para que arranquemos con ambos discos o con solo uno de ellos. Se puede probar iniciando y observando como inicia con cualquiera de los disco que arranquen.
Espero haya sido de utilidad este poseo, apropos, casi me olvidaba, al principio mencione alternativas a lilo, una de ellas , y bastante extendida en cualquier instalador actual es GRUB, con muchas mas opciones y bondades que LILO, y también con opción de configurarse para iniciar en modo RAID, pero eso lo veremos en otro post.

Si tu caso es que estas usando un sistema dual, con gnu/linux en una particion y windows con sistemas de archivos NTFS en otra, y necesitas escribir desde el sistema gnu/linux la particion con el sistema de archivos de microsoft(ntfs), bueno, este es tu guia de bolsillo
Para el caso en cuestion , comentare, cuento con un sistema debian etch (upgradeado de sarge), el cual tiene un mirror oficial para actualizacion de paquetes
Lo primero que necesitaremos es tener en nuestro sistema los siguientes aplicativos

  • ntfs-3g
  • fuse

Muy bien como soy medio fanatico de compilar todo, lo que hare a continuacion es dar los pasos a seguir para compilar todo estos aplicativos desde cero y a la ves generar los paquetes .deb asi se lo podemos pasar nuestros amigos (en caso de que tengan la misma version de kernel que nosotros), y evitarles la tarea de que deban compilarlos, alli vamos.

Como el paquete ntfs-3g no esta (hasta la fecha ) en la rama estable de debian (etch) busco los fuentes debianizados en la version testing, yendo al sitio http://www.debian.org -> “Paquetes Debian” -> “Busqueda en los directorios de paquetes” -> y busco “ntfs-3g” en el buscador de paquetes seleccionando que haga las busquedas en la rama “testing” (de pruebas).
De las pantallas de resultados me descargo solo estos archivos:

  • ntfs-3g_1.616.orig.tar.gz
  • ntfs-3g_1.616-1.diff.gz
  • fuse_2.6.5.orig.tar.gz
  • fuse_2.6.5-3.diff.gz

1) Compilacion y armado del paquete deb de fuse

# cd /usr/src
# wget -c http://ftp.debian.org/debian/pool/main/f/fuse/fuse_2.6.5.orig.tar.gz
# wget -c http://ftp.debian.org/debian/pool/main/f/fuse/fuse_2.6.5-3.diff.gz
# tar xvfz fuse_2.6.5.orig.tar.gz
# cd fuse-2.6.5
# zcat ../fuse_2.6.5-3.diff.gz |patch -p1
# chmod a+x debian/*
# dpkg-buildpackage -b

Al finalizar este paso se encontraran generados los siguientes archivos .deb en el directorio /usr/src:

– fuse-source_2.6.5-3_all.deb
– fuse-utils_2.6.5-3_i386.deb
– libfuse2_2.6.5-3_i386.deb
– libfuse-dev_2.6.5-3_i386.deb

2) Compilacion y armado del paquete deb de ntfs-3g

# cd /usr/src

# wget -c http://ftp.debian.org/debian/pool/main/n/ntfs-3g/ntfs-3g_1.616.orig.tar.gz
# wget -c http://ftp.debian.org/debian/pool/main/n/ntfs-3g/ntfs-3g_1.616-1.diff.gz
# tar xvfz ntfs-3g_1.616.orig.tar.gz
# cd ntfs-3g-1.616
# zcat ../ntfs-3g_1.616-1.diff.gz |patch -p1
# chmod a+x debian/*

previo a este paso debemos instalar solo los siguientes tres paquetes obtenidos de la compilacion del paso 1)

# dpkg -i  /usr/src/fuse-utils_2.6.5-3_i386.deb /usr/src/libfuse-dev_2.6.5-3_i386.deb  /usr/src/libfuse2_2.6.5-3_i386.deb

Ahora recien se podra ejecutar dpkg-buildpackage, puesto que ntfs-3g tiene como dependencia a fuse

# dpkg-buildpackage -b

Al finalizar este paso se encontraran generados los siguientes archivos .deb en el directorio /usr/src:

– ntfs-3g_1.616-1_i386.deb
– libntfs-3g-dev_1.616-1_i386.deb
– libntfs-3g4_1.616-1_i386.deb

Listo, una vez echo esto ya tenemos los paquetes necesarios para dar soporte ntfs a nuestro debian etch 🙂 ahora a instalarlos en este orden:

# dpkg -i /usr/src/libntfs-3g4_1.616-1_i386.deb /usr/src/ntfs-3g_1.616-1_i386.deb

3) Uso de ntfs-3g
Luego de esto deberemos cargar el modulo correspondiente

# modprobe fuse

Y proceder a montar nuestra particion con el nuevo soporte ntfs-3g instalado

# mount -t ntfs-3g /dev/hda5 /mnt/winNT/

Donde /dev/hda5 debera reemplazarse por el sistema de archivos donde tienes tu particion NTFS a ser escrita (:-P), y /mnt/winNT por el punto de montaje que quieras que sea.

Para automatizar esta tarea puede añadir una linea similar a la siguiente en tu archivo /etc/fstab, a fin de que tu sistema ntfs se monte automaticamente en cada inicio:

/dev/hda5 /mnt/winNT ntfs-3g defaults,auto,user 0 0

Notas:

– Recuerden que los comandos anteriores se ejecutaron con usuario “root”
– La orden dpkg-buildpackage es nativa de los sistemas de debian y derivados
– A la hora de compilar el paquete fuse, es necesario tener instalados en nuestro sistema el kernel-headers correspondiente a la version de kernel que nos encontremos ejecutando  o en su defecto (en caso de que tengamos un kernel compilado por nosotros, el cual es mi caso)el paquete del fuente del kernel sin limpiar (es decir sin que se haya echo el clasico make clean)