viernes, 26 de septiembre de 2008

Personalizando el kernel

Cuando instalamos una distribución linux en nuestro equipo por lo general lleva una versión del kernel la cual esta configurada de manera muy generalizada, incluyendo por ejemplo: drivers para dispositivo bluetooth, tengamos o no dicho dispositivo en nuestro equipo, se configura para un determinado procesador, quizás no específicamente el nuestro, se instalan otras opciones para notebook de algunas determinadas marcas y así sucesivamente, en si, se tiene un kernel configurado para que funcione en la mayoría de los equipos, siendo por consecuencia no optimizado para algún equipo en especial.

Pero tratándose de linux pues existe la opción de que personalicemos el kernel para que tengamos uno a nuestra medida, que cumpla únicamente con lo que necesitamos, haciendo el desempeño de nuestra máquina más eficiente. A continuación mostrare los pasos necesarios para llevar acabo dicha tarea.

1.- Necesitamos descargar el código fuente del kernel que tengamos instalado, este se puede encontrar en: http://www.kernel.org

NOTA: También si lo deseamos podemos descargar un kernel mas nuevo con el fin de actualizar o en busca de soporte para nuevas tecnologías.

2.- Una vez que hayamos descargado el kernel, lo descomprimimos y estando en una consola como root, nos colocamos en el directorio que se descomprimió.

3.- Para comenzar en base a la configuración que nuestro kernel ya tiene, hacemos lo siguiente: copiamos el archivo llamado config-2.6.xxxxxx que se encuentra en /boot a la carpeta donde se encuentran los fuentes del kernel que descomprimimos cambiándole el nombre a .config

Ejemplo:
cp /boot/config-2.6.xxxx /usr/src/linux-2.6.16.xxx/.config

Se puede configurar el kernel omitiendo este paso, pero es recomendable que se inicie la configuración en base a una, que de antemano sabemos que funciona.

4.- Existen varias formas de configurar el kernel, pero la más común es mediante el comando make menuconfig, los diferentes comandos son:

1.- make config (para una configuración sin la ayuda de un entorno gráfico).

2.- make menuconfig (para un entorno gráfico tipo consola)

3.- make xconfig (para una forma gráfica)

En esta ocasión elegiremos la segunda opción ya que es una forma fácil de hacer esta tarea, una vez que hayamos tecleado el comando, notaras que te has sumergido en un mar de parámetros para configurar donde la mayoría son confusos, te tocara investigar para que los entiendas, algunos los puedes intuir pero otros requieren de más conocimiento.

Cada parámetro tiene tres opciones de configuración, una es incluirlo en el kernel que esta simbolizada con un (*), la segunda es compilarlo como módulo (M) y la tercera excluirlo del kernel, en saber elegir alguna de estas opciones para cada parámetro consiste una buena configuración.

Para elegir que un parámetro se compile incluido en el kernel debemos tomar en cuenta a todos aquellos que forman parte imprescindible del funcionamiento de nuestra máquina como los que tienen que ver con los drivers de los diferentes dispositivos.

Para el caso de compilar como módulo hay que elegir a todos los que se refieren a cuestiones que casi no se utilizan, por ejemplo: soporte para el sistema de archivos NTFS.

En el caso de excluir parámetros, seleccionamos a los que tienen que ver con dispositivos con los que no cuenta nuestro equipo o con soporte para aspectos que nunca ocuparemos.

Una vez que terminemos de configurar, guardamos los cambios y salimos.

NOTA: Para poder ver el menú de configuración ocuparas tener instalada una librería llamada ncurses, la cual se puede instalar con la ayuda de algún administrador de paquetes o descargándola de algún sitio de internet, por ejemplo en Debian, puedes hacerlo de la siguiente forma:

:#apt-get install ncurses


5.- Tecleamos:
make //Comienza a compilar (Tarda aprox. 30 min para que pienses en tener cerca un libro o alguna revista)
make install //Instala la imagen del kernel
make modules_install
mkinitrd -o /boot/initrd-2.6.x.img 2.6.x //Crea una imagen que ocuparemos cuando configuremos el gestor de arranque (GRUB, LILO).


6.- Configuramos GRUB:
Dentro del directorio /boot/grub existe un archivo de configuración del gestor de arranque (menu.lst), donde agregaremos una nueva entrada que corresponderá al nuevo kernel que configuramos. Ejemplo:

title kernel personalizado, kernel 2.6.x.x
//El titulo únicamente es el nombre que queremos aparezca en el GRUB

root (hd0,1)
//hd0 se refiere al disco duro

kernel /boot/vmlinuz-2.6.x.x root=/dev/hda2 ro
//Se establece la dirección donde se encuentra la vmlinuz nueva y donde se montara //el sistema, en este caso /dev/hda2, (ro) se refiere a que el sistema se cargue en //modo de solo lectura.

initrd /boot/initrd.img-2.6.x.x
//Dirección de la imagen que creamos

savedefault

7.- Una vez que hayamos configurado el grub, reiniciamos y esperamos a que todo salga bien.


RESUMEN:

1.- Descargar los fuente del kernel ( http://www.kernel.org )
2.- Descomprimir el kernel.
3.- Si se utilizara make menuconfig instalar ncurses.
4.- Teclear make menuconfig
5.- Configurar
6.- Teclear make
7.- Teclear make install
8.- Teclear make modules_install
9.- Crear imagen: mkinitrd -o /boot/initrd-2.6.x.img 2.6.x
10.- Modificar el gestor de arranque
11.- Reiniciar la PC
12.- Esperar que todo salga bien.

domingo, 24 de agosto de 2008

Integración de Sistemas

Después de tanto tiempo sin publicar voy hablarles del proyecto de investigación que realizamos con unos compañeros en la ciudad de Monterrey el pasado mes, el proyecto estuvo a cargo del Dr. Guillermo Jiménez Pérez el cual es investigador del ITESM (Instituto Tecnológico y de Estudios Superiores de Monterrey).

Platicando con el investigador nos planteo el problema de que en la actualidad una empresa cuenta con varios sistemas comúnmente heterogéneos, es decir, sistemas desarrollados para diferentes áreas de la empresa y construidos con diferentes lenguajes de programación, y que también, si requieren de una interacción con una base de datos posiblemente la lleven acabo con diferentes manejadores, que uno puede estar desarrollado en un habiente web y el resto no, etc.

Pero aparte de todas estas diferencias existe la necesidad de compartir información entre estos sistemas, actividad, que por lo general la lleva acabo una secretaria o una serie de procesos predefinidos.

Entonces lo que se buscó con el proyecto fue crear un mecanismo de interacción entre estos sistemas para que procesos de uno que requieren información de otro la consigan automáticamente sin la necesidad de un usuario y de manera transparente.

Para la realización de este trabajo, el proyecto se dividió en tres capas, las cuales lo hacían mas interesante, la primera tenia que ver con todo lo relacionado con una interfaz gráfica tipo RIA (Rich Internet Applications) como comúnmente se conocen, la segunda capa manejaba con JSP's la comunicación con la base de datos y la tercera utilizaba WebServices para lograr integrar los diferentes sistemas.

La primer capa se comunicaba con la segunda mediante archivos XML con un formato previamente establecido, es un mecanismo bastante interesante, la interfaz interpretaba los XML creados por los JSP's con los resultados de las acciones a la base de datos.

La estructuración de este proyecto facilita mucho la depuración de errores y la realización de futuras modificaciones ya que puede no ser necesario editar todo el sistema sino únicamente alguna capa de este sin que dejen de funcionar las demás.

Como pueden ver de este proyecto hay mucho que decir, de lo próximo que les platicare será de Openlaszlo que fue la herramienta que utilizamos para la realización de las interfaces gráficas.

viernes, 18 de julio de 2008

Algo sobre seguridad en informática.

Últimamente me ha llamado mucho la atención todo lo relacionado con la seguridad en el ambiente de las computadoras, he leído poco sobre el tema pero conforme fui metiéndome en él, me fui dando cuenta de lo inmenso que era, en si, es un tema bastante extenso.

La cuestión de la seguridad informática es en realidad un tema ya muy viejo, pero con el auge que las computadoras han tenido últimamente se ha vuelto más importante, ahora a las computadoras se les confía el manejo de información costosa, o la realización de actividades demasiado delicadas como posiblemente el control de un reactor nuclear, actividades que requieren de un extremo cuidado, un gran nivel de eficacia y por supuesto de seguridad que por lo menos brinde confianza.

En cuanto a seguridad informática se refiere, se puede implementar en base a distintos fines, desde información que desee resguardar un hombre casado en cuanto a su amante, hasta el cuidado de la seguridad de un país, algunos de los criterios principales por los cuales se implementan aspectos de seguridad informática son: por que se cuidan cantidades grandes de dinero, ejemplo: bancos, por que se cuidan recetas de alimentos o aspectos de mercadotecnia, ejemplo: las cadenas de restaurantes, las empresas refresqueras, los laboratorios médicos, etc. Y por que se requiera resguardar por parte del gobierno información de seguridad nacional.

La seguridad en las computadoras abarca muchas ramas que no toman en cuenta únicamente cuidar la pc de posibles virus, sino que se ven involucrados aspectos como: el guardia que impida el acceso no autorizado al servidor, la instalación de software que proteja al servidor de intrusos vía Internet como algún firewall, tomar en cuenta el tiempo de vida de los discos duros que es por lo regular donde se almacena la información útil a una empresa, una instalación adecuada que alimente al servidor de electricidad, la selección de una habitación libre de humedad y polvo, elegir un buen sistema operativo, realizar “Hardening al SO”, y así sucesivamente podría citar muchos mas aspectos a tomar en cuenta.

Lamentablemente algunas empresas dejan a un lado el tema de la seguridad, en muchas ocasiones por falta de personal capaz que conozca los riesgos a los que su empresa se expone así como su forma de manejarlos y en otras por falta de responsabilidad o desinterés por la empresa.

Son muchos los aspectos que se deben tomar en cuenta si se quiere intentar tener seguridad, y muchos también los que impiden que se implemente un nivel adecuado de seguridad.

De que sirve tener un súper equipo de seguridad sobre tu servidor, si has confiado la contraseña root a quien dice ser tu mejor amigo y que sin embargo espera que salgas de la empresa para ocupar tu puesto, hay casos en los que gente a librado toda seguridad para comprometer un servidor que maneja información millonaria con simplemente ganarse la confianza de los responsables del servidor.

En fin, la seguridad es un tema muy importante que en la actualidad se esta tomando con mucha seriedad, raras las empresas prestigiadas que no la implementan, ya que se tienen en juego cantidades multimillonarias.

lunes, 7 de julio de 2008

Servidor de correo en Linux.

Hablar de un servidor de correo, es platicar sobre dos principales aspectos que juntos proporcionan el servicio de correo. Uno de estos aspectos consiste en todo lo que esta involucrado en la interacción con el usuario, es decir, que aplicaciones se les proporcionara a los usuarios para que puedan redactar, manejar o recibir correo. Y el otro aspecto, tiene que ver con el servicio o el programa que se encargue de hacer llegar un correo de un buzón a otro.

En realidad estos dos aspectos tienen un nombre:



MUA (Mail User Agent):
que es cualquier tipo de programa que permite leer y escribir correos, donde ocasionalmente estos programas cuentan con muchas más utilidades que las de simplemente lectura y composición.



MTA (Mail Transport Agent):
que es el encargado de recoger mensajes y enviarlos a sus respectivos destinos, siendo posible la necesidad de establecer una comunicación entre MTAs.


En lo que a herramientas MUA se refiere existe una gran variedad, por citar algunas:
Mutt //En modo texto
SquirrelMail //En entorno web
Mozilla Thunderbird //Con ventanas
Kmail //Para el proyecto KDE
Zimbra //Interjaz web Ajax
Gnus //Modo texto


Como MTA, existen:

Sendmail

Postfix

Exim, entre otras.



Hablarles de cada una de estas herramientas aparte de que no soy experto en el tema, es labor de titanes, les hablare únicamente un poco sobre Postfix y citare algunos de sus parámetros de configuración. No se pretende que esta publicación sea un manual ni mucho menos una documentación sobre Postfix, lo que aquí describo es útil únicamente para que te adentres en el tema, Postfix es todo un mundo por lo que procuro dejar ligas a los diferentes aspectos que considero importantes para que puedas obtener más información.


Primero que nada hay que hablar de la instalación, la cual resulta bastante fácil ya que se puede llevar acabo de diferentes formas, se puede hacer desde los repositorios de Debian, ejemplo: aptitude install postfix o descargándolo de http://www.postfix.org/download.html para después instalarlo siguiendo los pasos que puedes encontrar en un archivo README dentro del paquete:


Postfix cuenta con dos principales archivos de configuración que se encuentran en el directorio /etc/postfix/:


master.cf Es un archivo donde se encuentran los procesos que utiliza Postfix. Para más información sobre este archivo visita: http://www.postfix.org/master.5.html


main.cf Es donde se realizan las configuraciones pertinentes para el funcionamiento de Postfix.

Para más información visita: http://www.postfix.org/postconf.5.html



Para una configuración muy general nos es útil solamente el fichero main.cf, el cual cuenta con una gran cantidad de parámetros para la configuración aunque normalmente sean útiles solo pocos, decir pocos me refiero a unos 12 a lo mucho. Los demás parámetros (la versión 1.1.11 se dice que cuenta con mas de 200 parámetros) son para una configuración mas refinada, tomando en cuenta aspectos de eficiencia como el rendimiento, algunos limites o aspectos de seguridad.


Los parámetros principales que controlan el funcionamiento de Postfix son los siguientes:


myhostname El nombre que tenga asignada nuestra máquina, por ejemplo: myhostname = localhost, kukulcan


mydomain El domino al que pertenezco, por ejemplo: mydomain = webmakers.com


mydestination Los mensajes que se reciban con dicho destino se aceptarán siempre. Ejemplo: mydestination = $myhostname, localhost@$mydomain


myorigin Los mensajes enviados localmente llevarán @$myorigin, ejemplo:myorigin = $myhostname


relay_domains Se acepta el correo recibido mediante conexiones cuyos nombres de host pertenezcan a los dominios dados en este parámetro.


relayhost Máquina a la que pasaremos los correos no dirigidos a buzones locales. Ejemplo: relayhost = 192.168.1.1


mynetworks Se aceptara correo que provenga de maquinas con dirección IP listada en este parámetro. Ejemplo: mynetworks = 192.168.1.5/16



Con la configuración de estos parámetros es suficiente para tener a Postfix funcionando, aunque como ya lo dije existen muchos más parámetros.


Para más información detallada sobre todos los parámetros de Postfix puedes visitar la página:
http://www.postfix.org/postconf.5.html Aquí encontraras todo sobre cada uno de los parámetros.



Una vez que se tiene configurado a Postfix, hacemos uso de comandos como: start, stop o restart para iniciar, detener o reiniciar respectivamente el servicio, ejemplo: /etc/inittab.d/postfix start



Se debe reiniciar el servicio cada vez que se hagan cambios al archivo de configuración de Postfix.


En internet puedes encontrar un sin fin de tutoriales que te hablan de como configurar todas las aplicaciones involucradas en un servidor de correo, como por ejemplo: squirrelmail para que los clientes lean y redacten correo, dovecot como servidor IMAP y POP3, postfixadmin, mysql, etc.En la siguiente liga vez toda la configuración paso a paso de estas herramientas, es fácil de seguir esta guía, si realizas cada uno de los pasos que en esta te proporcionan terminaras teniendo un servidor de correo bastante aceptable.

http://doc.ubuntu-es.org/Postfix/configuraci%C3%B3n_de_un_servidor_incluyendo_Postfixadmin%2C_Mysql%2C_Spamassassin_y_ClamAv

martes, 1 de julio de 2008

ECOLEAD (European COllaborative Networked Leadership)

Saludos a todos desde Monterrey, espero que estén bien y que disfruten de un clima fresco, porque el calor es en ocasiones desesperante, aunque pensandolo bien y viendo tanta regia también llega a ser emotivo, tenía tiempo que no publicaba pero se debe a la cantidad de trabajo, era fin de semestre, tuve que viajar varias veces a CD. Hidalgo Michoacán para la instalación de una red de computadoras, presentación de exámenes finales, preparativos para el viaje a esta ciudad, etc.

Y pues hablando de Monterrey, hay mucho que ver en esta ciudad, es muy grande, son pocos los lugares que he visitado pues apenas tengo aquí dos días pero en realidad son lugares maravillosos, la fundidora, el cerro de la silla, que por cierto les dejo una foto, el Tecnológico de Monterrey, y por supuesto las regias con su peculiar acento en su plática, son hermosas de verdad.









Bueno dejando a un lado lo bonito de Monterrey, les platico sobre el proyecto en el cual participare, existe un proyecto llamado ECOLEAD formado por diferentes organismos, uno de ellos es el grupo de investigación del ITESM.

Los resultados del trabajo que realicemos en unión con este grupo de investigación serán utilizados de manera directa al avance de las contribuciones que el grupo de investigación del ITESM realiza al proyecto ECOLEAD.

En lo que estaremos trabajando es en crear un software que permita al usuario interactuar con los diferentes sistemas con que cuenta una empresa, para que así pueda obtener información proporcionada por dichos sistemas de manera rápida. Esta parte que nos tocara realizar se divide en tres capas, una que tiene que ver con la interfaz con el usuario, una intermedia, y otra que comunicara interfaz con variedad de sistemas.

El encargado de este proyecto es el:

Dr. Guillermo Jiménez Pérez
Profesor-Investigador
Centro de Sistemas Inteligentes
Instituto Tecnológico y de Estudios Superiores de Monterrey
Campus Monterrey

Una vez que se avance en el proyecto les dejare por aquí una breve reseña del mismo.

Saludos, y créanme que hay muchos lugares que conocer en México antes que pensar en viajar a otro país. :)

domingo, 25 de mayo de 2008

Trabajando con la consola Linux.

En muchas ocasiones resulta mas eficiente o rápido el trabajar sin la ayuda de una interfaz gráfica, el poder editar un archivo para la configuración de un servicio o demonio, sin la necesidad de abrir un procesador de textos con un sin fin de utilidades que no son necesarias, iniciar algún programa con un simple parámetro start o detenerlo con un stop, nos ahorra mucho tiempo.

Existen muchos comandos sobre una consola Linux, unos propios de UNIX, otros de la distribución que utilicemos y otros que se incorporan con las aplicaciones que instalamos, a continuación les hablare de algunos que he utilizado, mi distribución es Debian etch, claro no son todos los que existen, y pueden encontrar mas información acerca de estos con el manual de linux, (man command_name).

Lista de comandos:
La mayoría de los comandos que explico, tienen mas opciones o pueden recibir mas parametros, por ejemplo:

ifconfig
//muestra las interfaces de red, así como su configuración

ifconfig eth0 dirIP
//asigna dirIP a interfaz eth0

ifconfig
eth0 dirIP netmask mask
//asigna dirIP a eth0 con mascara de red mask

Y así sucesivamente, por lo que recomiendo la consulta del man.

Para copiar un archivo:
cp origen destino
cp /home/robguzort/mi_archivo_a_copiar /home/lugar_destino/

Para mover un archivo:
mv origen destino
mv /home/mi_archivo_a_mover /home/lugar_destino/

Para eliminar un archivo:
rm /home/robguzort/nameFile

Para crear un directorio:
mkdir /ruta/directorio_a_crear

Para verificar el estado de la pila:
acpi

Para consultar fecha y hora:
date

Para listar el contenido de algún directorio
ls

Para descargar un archivo de internet
wget URL

Para mostrar los procesos activos del usuario
ps

Para cambiar los permisos
chmod permisos directorio o archivo

Los permisos (usuario, grupo y otros)

4 Lectura (r)
2 Escritura (w)
1 Ejecución (x)

Ejemplo: chmod 777 /home/file

El primer 7 de izquierda a derecha Lectura/escritura/ejecución para el usuario, el segundo para grupo y el tercero para otros. Es decir, permisos de todos para todos.

Para descomprimir un tar.gz
tar -xvvzf archivo.tar.gz

Para apagar o reiniciar la PC, estando como superusuario
poweroff //apaga
reboot //reinicia

Para matar algún proceso
kill pid //donde pid es el id del proceso a matar

Para interrumpir el comando actual
ctrl + C

Y pues bueno podría seguirles hablando de muchos mas, o simplemente complementar cada uno de estos, pero, aprenderte las diferentes opciones que tiene cada comando te resulta mas fácil una vez que te surge la necesidad de utilizar uno que haga mas de lo que principalmente realiza.

lunes, 19 de mayo de 2008

Algo sobre la ponencia

Primero que nada, saludos a todos aquellos interesados en el ambiente del software libre.

Para poder hablar acerca de alternativas libres a software privativo, es oportuno el iniciar con una breve introducción a lo que es software libre, y lo que es software privativo, es por eso que inicio la conferencia hablando acerca de las cuatro libertades que todo software libre brinda: la libertad de uso, la libertad de estudio y modificación, la libertad de distribución y la libertad de mejorarlo y publicar mejoras, por lo tanto, cualquier programa informático que no proporcione alguna de estas libertades, automáticamente cae dentro de las aplicaciones privativas.

Hablar de software libre no necesariamente es hablar de software gratuito, ya que cualquier aplicación libre puede ser distribuida comercialmente siempre y cuando no pierda su carácter de libre.

Por otro lado, una aplicación privativa, es cualquier programa que mutila alguna de las libertades mencionadas, es decir que no proporciona plena libertad de uso, no tiene su código fuente liberado o que no es posible redistribuirlo con o sin mejoras.

Hablando ahora si, acerca de alternativas libres poderosas y dignas de usarse, nos encontramos con que existe una gran variedad de dichas aplicaciones y que en los últimos años se ha visto disparado el desarrollo de las mismas, por el auge que han tenido los sistemas operativos basados en Linux, que son principalmente donde se ejecutan estas aplicaciones libres.

En cuanto a aplicaciones de ofimática, hablo sobre OpenOffice.org, como alternativa a la familia privativa ofice, Scribus para el diseño de publicaciones y Gimp para la edición de imágenes, en cuanto a navegadores web se refiere, platico sobre epiphany como navegador oficial de GNOME, en el entorno multimedia, hablo de XMMS y mp3Blaster, para el desarrollo de aplicaciones Anjuta, para grabar en CD/DVD GnomeBaker y finalmente como mensajeros: pidgin y kopete.

No es factible hablar de todas las alternativas, aclaro no son las únicas y posiblemente tampoco las mejores, así que ya es decisión del usuario final elegir con cuales trabajar.

sábado, 10 de mayo de 2008

Ponencia en el ITST

Actualmente me encuentro preparando una ponencia que presentare en el Instituto Tecnológico Superior de Tacámbaro el día 20 de Mayo, la cual se titula "Alternativas Libres a Software Privativo", con esta conferencia lo único que se busca es dar a conocer o platicar acerca de aquellas aplicaciones para PC que son libres y dignas para usarse como alternativas a todas aquellas privativas, pienso iniciar la platica con una introducción a lo que es software libre y lo que es software privativo.

A ver que tal me va, ja.