Archive

You are currently browsing the archives for the Tutoriales category.

MONTANDO UN REPOSITORIO LOCAL DEBIAN ETCH A PARTIR DE LOS DVDS

By Jose Antonio Cely Saidiza


Hace poco tuve la desgracia de no tener internet en casa… es de las peores cosas que me han pasado, prefiero que me corten el agua, esa la puedo mendigar en cualquier casa, recordemos que un vaso de agua no se le niega a nadie :D …
Ante la imposibilidad de no tener internet, tenia que seguir trabajando en algunas cosas cuando estuviera en casa y gran parte del trabajo es instalar Debian y configurar paquetes, entonces pronto me insole de andar con los 3 DVDs que componen Debian Etch para arriba y para abajo, fue cuando me decidí por montar mi repositorio local en el firewall de la casa, es un pentium III de 750Mhz, que tiene subversion, apache2, hace nat y ahora un repositorio local :D !.
Este no el método oficial, es mas practico y en Debian esta bastante documentado como hacer mirrors con rsysnc entre otras virguerias, si tenemos internet bastante rapido es mejor hacerlo de esta manera, esta forma que documento a continuación es para cuando tenemos una pésima conexión a internet (o como me sucedió, nula conexión :D ).

MONTANDO UN REPOSITORIO DEBIAN DESDE LOS CDROM/DVDS

Es una labor muy sencilla, solo necesitamos una maquina en nuestra red con un servidor web apache funcionando correctamente, y una partición que al menos tenga 15Gb de espacio libre (recordemos que son 3 DVDs, cada uno de 4.4Gb) y obviamente los DVDs de Etch. Eso si es una labor de paciencia (sobre todo si tenemos hardware viejo para el servidor) por que el proceso de la copia de 3 DVDs y el escaneo final de los paquetes es demorado!.

Describiré los paths que use en mi cofiguración, debéis acomodarte a los vuestros.

Directorio donde copiare los paquetes (al menos 15Gb libres)
/mnt/hdc1/
Directorio donde accedo a la unidad de DVD
/cdrom
Directorio de el contenido web de apache
/var/www/

Empezamos creando un directorio para los paquetes
mkdir /mnt/hdc1/myrepo

Me paso a raíz
cd /

Monto el DVD1
mount /dev/cdrom

copio paquetes del primer DVD
cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
cp -R /cdrom/pool/ /mnt/hdc1/myrepo/

Desmonto el DVD1
umount /dev/cdrom

Monto el DVD2
mount /dev/cdrom

copio paquetes del segundo DVD
cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
cp -R /cdrom/pool/ /mnt/hdc1/myrepo/

Desmonto el DVD2
umount /dev/cdrom

Monto el DVD3
mount /dev/cdrom

copio paquetes del tercer DVD
cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
cp -R /cdrom/pool/ /mnt/hdc1/myrepo/

Desmonto el DVD3
umount /dev/cdrom

Borro estos archivos
rm -rf dists/etch/main/debian-installer/
rm dists/etch/Release

Me paso al directorio de los paquetes
cd /mnt/hdc1/myrepo/

Escaneo y comprimo paquetes (main)
dpkg-scanpackages pool/main/ /dev/null > dists/etch/main/binary-i386/Packages
gzip dists/etch/main/binary-i386/Packages

Escaneo y comprimo paquetes (dists)
dpkg-scanpackages pool/contrib/ /dev/null > dists/etch/contrib/binary-i386/Packages
gzip dists/etch/contrib/binary-i386/Packages

Hago un link simbólico a mi servidor web (Este paso se puede obiar si estamos trabajando directo en la carpeta del servidor web o configuramos a apache para que acceda directo a nuestro directorio)
ln -s /mnt/hdc1/myrepo/ /var/www/debian/

listo!

Si todo es correcto podremos acceder a nuestro servidor vía web, y confirmar que todo funciona.

En los clientes solo es editar el archivo /etc/apt/sources.list y poner la url a nuestro servidor.

deb http://192.168.0.1/debian/ etch main contrib

Ejecutamos el comando

apt-get update

Y vola!

Recomiendo tener un servidor local. En mi caso, que me la paso solo trasteando con cacharros e instalaciones constantes es mas rápido, solo uso el CDROM de 140 megas de Debian Etch, instalo la base y en el repositorio le pongo la url de mi repositorio local y listo todo lo descargo desde mi red local, aparte de liberar de mi minuscula carga a los servidores oficiales :D.
Que pasara el día que publiquen una actualización? Sencillo, descargo/copio/pidoprestados/compro los DVDs, los vuelo a copiar y a ejecutar los dpkg-scanpackages.

Feb

25

INSTALACIÓN DE NAGIOS 2.7 EN DEBIAN ETCH, PARTE 1

By Jose Antonio Cely Saidiza

Este tutorial esta basado en la documentación oficial de nagios, y algunas tutoriales en español que hay en Internet, escribo este post, por que queria comentar mi experiencia con este espectacular programa que lo recomiendo un montón!
Nagios® es un software de monitorización de redes y sistemas, con licencia GPL. Nagios observa servidores y servicios de red específicos, alertándote cuando las cosas van mal y cuando están bien.
Para correr Nagios junto con sus plugins, solo es necesario tener un sistema operativo (de preferencia Linux :D ) con un servidor web, un compilador de C y la librería gd versión 1.6.3 o superior.

INSTALANDO NAGIOS

Este tutorial esta basado en debian etch que a la fecha es testing, intente instalarlo con apt-get install … pero la configuración por defecto no me funciono, tal vez por que el etch aun esta en testing, además me obligaba a usar el paquete exim4, y en el servidor de pruebas tengo qmail y esto me ocasionaría un conflicto. Entonces explicaré como instalar desde los fuentes.

De la página oficial de nagios:

http://www.nagios.org/download/

Descargamos la ultima versión ( a la fecha 2.7 ), en este caso nagios-2.7.tar.gz , y el paquete de plugins, en este caso la versión nagios-plugins-1.4.5.tar.gz (ya esta disponible la versión de plugins 1.4.6, pero me dio un error de compilación, entonces no la use)

Primero creamos los usuarios y grupos necesarios (www-data es el usuario en que corre apache en debian, en otras distribuciones puede variar)

adduser nagios
groupadd nagcmd
/usr/sbin/usermod -G nagcmd nagios
/usr/sbin/usermod -G nagcmd www-data

Creamos el directorio donde instalaremos nagios

mkdir /usr/local/nagios

Cambiamos de usuario y grupo el directorio recién creado

chown nagios:nagios -R /usr/local/nagios/

En el directorio donde este descargado nagios, lo descomprimimos

tar zxvf nagios-2.7.tar.gz

Luego ingresamos al directorio

cd nagios-2.7

Una vez en el directorio, ejecutamos

./configure – -prefix=/usr/local/nagios – -with-cgiurl=/nagios/cgi-bin – -with-htmurl=/nagios/ – -with-nagios-user=nagios – -with-nagios-group=nagios – -with-command-group=nagcmd

Si el configure no nos informa ningún error compilamos

make all

Instalamos…

make install

Creamos un script de inicialización en /etc/init.d/

make install-init

Ahora configuración del script creado para que se ejecute siempre al arranque (update-rc.d es el comando en debian para configurar servicios al arranque, en otras distribuciones puede variar)

update-rc.d nagios defaults

Configuramos permisos de algunos directorios

make install-commandmode

Instalamos algunas configuraciones de ejemplo, atención a este paso, por que nos basaremos en estos archivos para crear los nuestros

make install-config

Creamos enlaces simbólicos de binarios para nuestro sistema

ln -s /usr/local/nagios/bin/nagios /usr/sbin/nagios
ln -s /usr/local/nagios/bin/nagiostats /usr/sbin/nagiostats

Ahora instalaremos los plugins

Descomprimimos el paquete

tar zxvf nagios-plugins-1.4.5.tar.gz
cd nagios-plugins-1.4.5

Ejecutamos el script de configuración

./configure – -prefix=/usr/local/nagios – -with-cgiurl=/nagios/cgi-bin

Si el configure no nos informa ningún error compilamos

make

Instalamos…

make install
make install-root

Si hemos llegado a este punto sin problemas, crearemos la interfaz web de nagios

En el caso de ejemplo (debian etch) editaremos el archivo de configuración por default de apache2

/etc/apache2/sites-available/default

Al final agregamos

ScriptAlias /nagios/cgi-bin «/usr/local/nagios/sbin»


# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName «Nagios Access»
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Alias /nagios «/usr/local/nagios/share»


# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName «Nagios Access»
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Ahora creamos el archivo con el password para el usuario

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Reiniciamos apache

/etc/init.d/apache2 restart

Ahora podremos comprobar si funciona apuntando con un navegador a nuestro servidor. Ejemplo

http://192.168.0.66/nagios

Debe aparecer en pantalla la típica ventana de autenticación de apache. Nos autenticamos y debemos ingresar a un panel de administración web, en hora buena!

CONFIGURANDO NAGIOS

Empieza lo interesante, vamos a configurar nagios!!!
En este caso crearé un entorno para mi empresa y algunos clientes como ejercicio. Monte el servidor nagios en un portátil abandonado, un PIII, con 128Mb de RAM, en el que ya tenia instalado apache2 con Debian etch, el portátil se conecta a Internet con el ADSL de mi apartamento, desde acá supervisaré los servidores de Tecsua los cuales son un firewall y dos servidores web y de correo. También supervisaré dos clientes específicos, uno consta de un router y un firewall, y el segundo cliente nada más supervisaremos un servidor de aplicaciones que solo esta encendido en horarios de oficina. Figura 1
Espero os sirva de base para sus configuraciones especificas.


Figura 1

Pero antes de eso veamos como se «ordena» esto en el sistema Nagios.
Deben crearse los «contactos», que son las personas a las que se les debe notificar cualquier cosa que este configurada en nagios. Estos contactos deben clasificarse en «grupos», que como su nombre lo indica, establece características en común para esos «contactos».

En mi ejemplo, tenemos tres contactos, los clasificados en dos grupos llamados admin y tehcnical, Figura 2
1 – nagiosadmin, es el administrador general, hace parte del grupo «admin»
2 – supervisor, un supuesto supervisor general, hace parte del grupo «admin»
3 – technical_1, un supuesto técnico de soporte, hace parte del grupo «technical»


Figura 2

Ahora debemos crear «hosts» (entiéndase por host a un servidor, un router, etc), y estos hosts también deben clasificarse en grupos con características en común

En mi ejemplo, tenemos 7 hosts clasificados en dos grupos llamados tecsuaservers y tecsuaclients, Figura 3
1 – tecsua_router, router de acceso a internet de las oficinas de tecsua, obviamente hace parte del grupo tecsuaservers
2 – firewall_tecsua, firewall general en las oficinas de tecsua, grupo tecsuaservers
3 – tecsua_server_1, servidor web y de en las correo oficinas de tecsua, grupo tecsuaservers
4 – tecsua_server_2, servidor web y de correo de un cliente en las oficinas de tecsua, grupo tecsuaservers
5 – c1_router, router de acceso a internet de un cliente especifico c1, grupo tecsuaclients
6 – firewall_c1, es el firewall general de el cliente especifico c1, grupo tecsuaclients
7 – appserver_c2, es el servidor de aplicaciones de un cliente especifico c2, el cual solo esta encendido en horarios de oficina, grupo tecsuaclients


Figura 3

Y por ultimo, debemos crear «servicios», que pueden ser de cualquier tipo (ping, smtp, http, etc), y estos servicios deben estar asociados a un host.
En mi ejemplo son 12 servicios,

    host & services

  • appserver_c2 HTTP, PING
  • c1_router PING
  • firewall_c1 PING
  • firewall_tecsua PING
  • tecsua_router PING
  • tecsua_server_1 HTTP, PING, SMTP
  • tecsua_server_2 HTTP, PING, SMTP

Una vez tenemos claro el escenario, (para esto recomiendo hacer un mapa como los anteriores) solo es codificar esto en los archivos de configuración.
Cuando ejecutamos en la instalación el comando make install-config, este nos creo unos archivos base en /usr/local/nagios/etc. El archivo de configuración principal es:
nagios.cfg, el cual trae toda una serie de configuraciones por defecto que aplican bien para la mayoría de los casos.
También nos creo el archivo localhost.cfg, el cual viene preconfigurado para supervisar el sistema local, es muy útil estudiar este archivo, trae ejemplos muy explicativos, pero en mi caso y como generalmente se hace, fraccioné este archivo el varios archivos sueltos, para que sea mas cómodo configurar las cosas. A continuación explico las pequeñas modificaciones a algunos archivos y muestro en pantalla los archivos creados sueltos, los cuales pueden crear con su editor favorito dentro de carpeta de configuración de nagios.

1 – En el archivo nagios.cfg

a – Buscar la linea que apunta al archivo de ejemplo localhost.cfg y comentarla para que no use ese archivo

# Host and service definitions for monitoring this machine
# cfg_file=/usr/local/nagios/etc/localhost.cfg

b – Descomentar las lineas que apuntan a varios archivos de configuración, estos son los que vamos a crear si no existen

cfg_file=/usr/local/nagios/etc/contactgroups.cfg
cfg_file=/usr/local/nagios/etc/contacts.cfg
#cfg_file=/usr/local/nagios/etc/dependencies.cfg
#cfg_file=/usr/local/nagios/etc/escalations.cfg
cfg_file=/usr/local/nagios/etc/hostgroups.cfg
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.cfg
cfg_file=/usr/local/nagios/etc/timeperiods.cfg

2 – En el archivo cgi.cfg

a – Buscar la linea use_authentication que esta establecida por defecto a 1, y configurarla a 0, sin autenticación, esto es NO recomendado, pero por ser la parte 1 del manual no nos complicaremos tanto, en la parte 2 hablaremos al detalle de la autenticación.

use_authentication=0

b – Al final del archivo des comentar las alarmas sonoras si las queremos usar, estar se ejecutarán en el cliente.

host_unreachable_sound=hostdown.wav
host_down_sound=hostdown.wav
service_critical_sound=critical.wav
service_warning_sound=warning.wav
service_unknown_sound=warning.wav
normal_sound=noproblem.wav

3 – Ahora creamos los archivos de configuración, aclaro nuevamente que este es para mi ejemplo, podéis ajustar estos archivos a tus necesidades. (cambiar xxx.xxx.xxx.xxx por sus direcciones IP)

A – contactgroups.cfg

define contactgroup{
contactgroup_name admin
alias Nagios Administrators
members nagiosadmin,supervisor
}

define contactgroup{
contactgroup_name technical
alias Network Technicals
members technical_1
}

B – contacts.cfg

define contact{
contact_name nagiosadmin
alias Nagios Administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email jose.cely@xxxxx.xxx
}

define contact{
contact_name supervisor
alias Network Supervisor
service_notification_period 24×7
host_notification_period 24×7
service_notification_options u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email linus@xxxxx.xxx
}

define contact{
contact_name technical_1
alias Techical One
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email alam.brito@xxxxx.xxx
}

C – hosts.cfg


# Generic host definition template – This is NOT a real host, just a template!

define host{
name generic-host ; The name of this host template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
notification_period 24×7 ; Send host notifications at any time
register 0 ; DONT REGISTER THIS DEFINITION – ITS NOT A REAL HOST, JUST A TEMPLATE!
}

define host{
use generic-host ; Name of host template to use
host_name tecsua_router
alias Router SAGEM ADSL
address xxx.xxx.xxx.xxx
check_command check-host-alive
max_check_attempts 20
contact_groups admin
notification_interval 60
notification_period 24×7
notification_options d,u,r
}

define host{
use generic-host ; Name of host template to use
host_name firewall_tecsua
alias Firewall Tecsua
address xxx.xxx.xxx.xxx
parents tecsua_router
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}

define host{
use generic-host ; Name of host template to use
host_name tecsua_server_1
alias www.tecsua.com
address xxx.xxx.xxx.xxx
parents firewall_tecsua
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}

define host{
use generic-host ; Name of host template to use
host_name tecsua_server_2
alias www.xxxxxx.com.co
address xxx.xxx.xxx.xxx
parents firewall_tecsua
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}

define host{
use generic-host ; Name of host template to use
host_name c1_router
alias Router Coquito ADSL
address xxx.xxx.xxx.xxx
check_command check-host-alive
max_check_attempts 20
contact_groups admin
notification_interval 60
notification_period 24×7
notification_options d,u,r
}

define host{
use generic-host ; Name of host template to use
host_name firewall_c1
alias Firewall xxxxxxxxx
address xxx.xxx.xxx.xxx
parents c1_router
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}

define host{
use generic-host ; Name of host template to use
host_name appserver_c2
alias Aplication Server xxxxx
address xxx.xxx.xxx.xxx
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period workhours
notification_options d,u,r
}

D – hostgroups.cfg

define hostgroup{
hostgroup_name tecsuaservers
alias Tecsua Servers
members firewall_tecsua, tecsua_router, tecsua_server_1, tecsua_server_2
}

define hostgroup{
hostgroup_name tecsuaclients
alias Tecsua Clients
members c1_router, firewall_c1, appserver_c2
}

E – services.cfg


# Generic service definition template – This is NOT a real service, just a template!

define service{
name generic-service ; The ‘name’ of this service template
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service ‘freshness’
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
is_volatile 0 ; The service is not volatile
register 0 ; DONT REGISTER THIS DEFINITION – ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}

define service{
# use generic-service ; Name of service template to use
host_name tecsua_router
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 240
notification_period 24×7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}

define service{
# use generic-service ; Name of service template to use
host_name c1_router
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 240
notification_period 24×7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}

define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_1
service_description HTTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_http
}

define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_2
service_description HTTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_http
}

define service{
# use generic-service ; Name of service template to us
host_name appserver_c2
service_description HTTP
is_volatile 0
check_period workhours
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_http
}

define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_1
service_description SMTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_smtp
}

define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_2
service_description SMTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_smtp
}

define service{ # use generic-service ; Name of service template to us
host_name firewall_tecsua
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}

define service{ # use generic-service ; Name of service template to us
host_name firewall_c1
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}

define service{ # use generic-service ; Name of service template to us
host_name appserver_c2
service_description PING
is_volatile 0
check_period workhours
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}

define service{ # use generic-service ; Name of service template to us
host_name tecsua_server_1
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}

define service{ # use generic-service ; Name of service template to us
host_name tecsua_server_2
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}

F – timeperiods.cfg


# This defines a timeperiod where all times are valid for checks,
# notifications, etc. The classic «24×7» support nightmare. : – )

define timeperiod{
timeperiod_name 24×7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}

# ‘workhours’ timeperiod definition
define timeperiod{
timeperiod_name workhours
alias «Normal» Working Hours
monday 09:00-18:00
tuesday 09:00-18:00
wednesday 09:00-18:00
thursday 09:00-18:00
friday 09:00-18:00
saturday 10:00-13:00
}

# ‘nonworkhours’ timeperiod definition
define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,18:00-24:00
tuesday 00:00-09:00,18:00-24:00
wednesday 00:00-09:00,18:00-24:00
thursday 00:00-09:00,18:00-24:00
friday 00:00-09:00,18:00-24:00
saturday 00:00-10:00,13:00-24:00
}

# ‘none’ timeperiod definition
define timeperiod{
timeperiod_name none
alias No Time Is A Good Time
}

Con estos archivos base podremos inicializar nagios por primera vez, pero siempre después de cualquier configuración podemos correr una verificación de los archivos de configuración, antes de iniciar, para eso esta la bandera -v en el comando nagios, la cual verifica la sintaxis y correctas relaciones/asignaciones.

Corremos la verificación

nagios -v /usr/local/nagios/etc/nagios.cfg

Que en mi ejemplo al final me de dio esta salida:

Total Warnings: 0
Total Errors: 0

Things look okay – No serious problems were detected during the pre-flight check

Todo figura OK, en algunas configuraciones puede que nos muestre algún warning, pero estos no son tan trascendentales.
Ahora iniciaremos nagios por primera vez!.

/etc/init.d/nagios start

Podemos comprobar que el procesa esta en ejecución con

ps -A|grep nagios

Que en mi caso me muestra esta salida

4883 ? 00:00:00 nagios

En hora buena, ahora podemos acceder vía web a nagios, si la configuración de apache fue correcta deberíamos poder acceder vía web, en mi caso abro un navegador y apunto a mi servidor

http://192.168.0.66/nagios

Nos pedirá nombre de usuario y contraseña (los anteriormente creados), una vez logeados, podremos ver nuestros servidores y servicios, si es le primera vez que inicia nagios, debemos esperar unos minutos para que nagios ejecute sus comandos de supervisión configurados y de esta forma poder empezar a ver resultados en pantalla, Nagios tiene una interfaz web muy intuitiva que no explicaré en este articulo, ya es cuestión de vosotros profundizar. A continuación algunas capturas de pantalla:

Esto es todo por esta primera parte, si este tutorial tiene buena acogida escribiré la parte 2, explicando los mapas 2D y 3D, alarmas sonoras, integración con RRDTools, etc!

Links:

Nagios
http://nagios.org

How to no oficial en Español
http://nagios.linuxbaja.org

Ene

20

Script para abrir cajón de un equipo POS con LPR

By Jose Antonio Cely Saidiza


Antes que nada, este articulo es de interés para personas que trabajan con equipos POS (Point Of Sale), equipos como impresoras EPSON TERMICAS (TM-T88XX), o los cajones DYNAPOS (y habéis comprobado la pésima documentación que hay para GNU/linux).

Trabajando nuevamente para otra empresa secreta, con nuestro software ERP, me encontré con el chicharroncito de abrir automáticamente el cajón monedero en los puntos de pago cuando se imprime la factura, y ademas por sobrado, que también cortara el papel automáticamente.
Los equipos de punto de pago, generalmente consta de un PC, una impresora de tiquetes por puerto paralelo/serie, un lector de código de barras y un cajón monedero. Las impresoras para puntos de pago generalmente traen un conector (RJ11) para un cable que trae el cajón, dicho cajón debe tener un solenoide o algo similar que al activarse se abre. Entonces dicha impresora es la que abre el cajón, por que envía un pulso eléctrico.
Después de Googlear un poco, encontré la documentación del lenguje ESC/POS, que es un lenguaje muy simple creado por EPSON para sus impresoras POS, con algunos comandos muy sencillos típicos, como abrir cajón, cortar papel, avanzar papel, imprimir código de barra, etc. En hora buena, solo es enviar esos comandos a la cola de impresión y funciona de maravilla, ademas probé con otras impresoras… (Samsung, etc. y también funciono).
Lo único molesto fue tener que registrarme en la pagina de EPSON con un correo real, para poder bajar los manuales, deberían estar así no mas para bajar.
A continuación copio los dos comandos ESC/POS que use tal cual como viene en el manual:

…. Generar Pulso …

ESC p m t1 t2
[ N am e] Generate pulse
[Format] ASCII ESC p m t1 t2
    He x 1B 70 m t1 t2
    Decimal 27 112 m t1 t2
[ R ange ] m = 0, 1, 48, 49
     0 ? t1 ? 255
     0 ? t2 ? 255
[Description] Outputs the pulse specified by t1 and t2 to connector pin m to open the chash drawer,
as follows:
     m Function
     0, 48 Drawer kick-out connector pin 2.
     1, 49 Drawer kick-out connector pin 5.
     • t1 specifies the pulse ON time as [t1 × 2 ms].
     • t2 specifies the pulse OFF time as [t2 × 2 ms].

………

….. Cortar Papel …..
GS V m (Function A)
GS V m n (Function B)
[ N am e] Select cut mode and cut paper
[Format] ASCII GS V m (Function A)
     He x 1D 56 m
     Decimal 29 86 m
     ASCII GS V m n (Function B)
     He x 1D 56 m n
     Decimal 29 86 m n
     0 ? n ? 255
[ R ange ]
     (Function A) m = 0, 1, 48, 49
     (Function B m = 65, 66
[Description] Cuts paper in the specified mode.
     m Function
   Function A 0, 48 Executes a full cut (cuts the paper completely).
     1, 49 Executes a partial cut (one point left uncut).
     Feeds paper to (cutting position + n × vertical motion unit) and
   Function B 65
     executes a full cut (cuts the paper completely).
     Feeds paper to (cutting position + n × vertical motion unit) and
     66
executes a partial cut (one point left uncut).

……..

Entonces no es más que crear un filtro para LPR, que por que uso LPR?, por que en algunas cosas me quede atrapado en los noventa :D (me imagino que para CUPS será similar). el filtro debe enviar el comando de abrir el cajón antes de imprimir, y una vez finalizada la impresión, envíe el comando de cortar el papel, de esta forma será automático desde cualquier programa que mandemos a imprimir.
Entonces con el siguiente script podemos hacerlo, el script esta comentado para facilitar su entendimiento, no olvidéis dar permisos de ejecución.
filtro:


#!/bin/bash

# RTFM
# CON echo -e HABILITAMOS LA INTERPRETACION DE ALGUNOS CARACTERES, EN ESTE
# CASO ‘\xnnn’, DONDE x ESPECIFICA HEXADECIMAL Y n TENDRA LOS CODIGOS
# HEXADECIMALES
# ENVIAMOS EL COMANDO DE ABRIR EL CAJON

echo -e ‘\x1B\x70\x0\x64\x64’

# LEEMOS EL CONTENIDO DE LA IMPRESION EN UNA VARIABLE COMUN Y SE LOS
# PASAMOS A LA IMPRESORA

read first_line
echo -n $first_line
cat

# AHORA ENVIAMOS EL COMANDO DE CORTAR EL PAPEL

echo -e ‘\x1D\x56\x1’

Copiamos el fitro , por ejemplo al mismo directorio donde tenemos la cola de impresión (Ej. /var/spool/lpd/caja1/
), Ahora en el archivo /etc/printcap donde se configura la impresora agregamos el filtro. Ej.


caja1:\
  :sd=/var/spool/lpd/caja1:\
   :if=/var/spool/lpd/caja1/filtro:\
   :sh:\
  :lp=/dev/lp0:\
   :bk:

Reiniciamos LPR y funciona con cualquier impresión, además esto no afecta la impresión en otras impresoras de diferente tipo.
Con estas bases creo que podéis hacer el resto, como códigos de barra en los tickets

Links:
1 – Algo de bash
http://www.ss64.com/bash/echo.html
2 – Manuales EPSON
https://www.epson-pos.com/sdssm/td_index.html
3 – Algo de impresión
http://es.tldp.org/COMO-INSFLUG/COMOs/Configuracion-Impresion-Como/Configuracion-Impresion-Como-4.html

Nov

18

Configurar monitor Touchscreen ELOTOUCH en Debian Sarge

By Jose Antonio Cely Saidiza

En tecsua desarrollamos un sistema ERP & POS, totalmente web (cuando terminemos el código de una forma genérica, será publicado).
El cliente sugirió utilizar touchscreen en los puntos de pago, y pues este chicharroncito de configurarlo me toco a mi, así que a continuación documento mi experiencia.

Para empezar, debíamos seleccionar un touchscreen compatible y bastante documentado en Internet, y creo que el más documentado y utilizado es el ELOTOUCH (4), tiene conexión serie y USB (5), y en la página de ellos existen unos drivers «libres», y uno «publico» en que ellos dicen que no dan soporte (3). Entonces cometí mi primer error, usar el puto driver que dan en la página, no lo pude compilar en debian tal vez por la versión de GCC es incompatible, en fin… perdí un día en eso.
Entonces me decidí por bajar el ultimo kernel (2.6.18.2), y ho sorpresa!, cuando ejecute menuconfig, me encontré con estas tres sorpresas:

  Device Drivers —>
     Input device support —>
        < *> Touchscreen interface
            (1024) Horizontal screen resolution
            (768) Vertical screen resolution

Device Drivers —>
    Input device support —>
        [*] Touchscreens —>
            < *> Gunze AHL-51S touchscreen
            < *> Elo serial touchscreens
            < *> MicroTouch serial touchscreens
            < *> ICS MicroClock MK712 touchscreen

  Device Drivers —>
    USB support —>
         USB Touchscreen Driver

Esas son las configuraciones que use, subí la resolución del touchscreen, y active TODOS los touchscreen, es un poco exagerado, pero mejor ir a la fija. Creo que el modulo del kernel es el mismo que figura en la página de elotouch como no soportado.
Viendo la documentación del Linux Touch Screen HOWTO, y la propia de elotouch, configure el archivo /etc/X11/XF86Config de la manera incorrecta!!!, a continuación pongo resaltando en ROJO POR QUE NO SE DEBE HACER!


Section «InputDevice»
    Identifier «ELO touchscreen»
    Driver «elographics»
    Option «Device» «/dev/ttyS0»
    Option «AlwaysCore»
    Option «screenno» «0»
    Option «MinimumXPosition» «600»
    Option «MaximumXPosition» «3600»
    Option «MinimumYPosition» «600»
    Option «MaximumYPosition» «3600»
    Option «UntouchDelay» «3»
    Option «ReportDelay» «1»
EndSection

Por que esta mal si la documentación de elotouch explica de esa forma? Esta mal por la versión de XFree de nuestro queridísimo debian sarge (XFree86 4.3.0.1), esa forma de configuración es para versiones mas viejas, lo peor de todo es que funciona! pero no tiene el foco adecuado, es decir, donde presiono la pantalla el cursor del mouse aparece unas pulgadas desfasadas, y entonces fue donde me perdí más, supuse que era un problema de calibración, entonces baje y probé jijuemil programas, scripts, comandos de calibración, pero entre más probaba, me daba cuenta que la puta calibración seguía como si nada, es decir, cambiaba los valores MinimumXPosition, MinimumXPosition, MaximumXPosition, MinimumYPosition, MaximumYPosition y nada, ponía cualquier valor por desfasado que fuera y seguía como si nada, después de otro día perdido, pensé que el monitor tal vez tenia un defecto por que no se dejaba calibrar, de la desesperación ya estaba pensando en destaparlo :D (hubiera perdido la garantía), entonces opte por probarlo en windows y obviamente funciono sin problemas, entonces no era daño del monitor, era pura calibración…

Entonces me paso como un capitulo de «sobreviví» (discovery channel) «me encontré en paz conmigo mismo, y pude haberme rendido sin problemas, pero decidí luchar, luchar hasta el final… :P «… entonces, instale un sistema de ceros, y pensé volver al principio usando los drivers de la página de elotouch, googleando un poco, etc. afortunadamente releí el Linux Touch Screen HOWTO, pero esta vez encontré un párrafo adicional (Addendum) que antes no lo había leído, porque estaba leyendo un HOWTO muy viejo de otra pagina, en el HOWTO actualizado dice un tal Wong Yeow Sen:

If it seems your calibration values aren’t parsed try the following:

    Option «MinX» «100»
    Option «MaxX» «4000»
    Option «MinY» «100»
    Option «MaxY» «4000»

Esto parece que es a partir de XFree86 4.2, entonces solo fue poner mi /etc/X11/XF86Config de la siguiente manera…



Section «InputDevice»
    Identifier «ELO touchscreen»
    Driver «elographics»
    Option «Device» «/dev/ttyS0»
    Option «AlwaysCore»
    Option «screenno» «0»
    Option «MinX» «100»
    Option «MaxX» «4000»
    Option «MinY» «100»
    Option «MaxY» «4000»
    Option «UntouchDelay» «3»
    Option «ReportDelay» «1»
EndSection

y no olvidar al final poner «InputDevice «ELO touchscreen»»



Section «ServerLayout»
    Identifier «Default Layout»
    Screen «Default Screen»
    InputDevice «Generic Keyboard»
    InputDevice «Configured Mouse»
    InputDevice «ELO touchscreen»
EndSection
….

Modifique el XF86Config, reinicie las X y vola! funciona como magia! no tuve que calibrar nada!!!… Gracias Wong Yeow Sen! :D

Resumen:
Bajarse el ultimo kernel, compilarlo activando los drivers Elotouch, asegurarse de que el monitor este encendido y conectado tanto el cable de video como el cable serie (o USB) a tu computador! configurar las X de la forma que dice el link 1, en el Addendum, y listo! …
Y asegurarse siempre de leer la ultima documentación disponible, hay muchos HOW TO sin actualizar!

Nota 22 Nov 2006
En hora buena!, lo probe con Xorg en mi debian sarge, y funciono de la misma manera
#Xorg -version
X Window System Version 6.8.2

El propio
(1) http://tldp.org/HOWTO/XFree86-Touch-Screen-HOWTO.html

Uno de los tantos HOWTO desactualizados, NO LEER
(2) http://www.linuxjunkies.org/html/XFree86-Touch-Screen-HOWTO.html

La página de elo, muy buena documentación incluida en los drivers
(3) http://www.elotouch.com/Support/Downloads/dnld.asp#linux

Elotouch
(4) http://www.elotouch.com/

El monitor usado
(5) http://www.elotouch.com/Products/LCDs/1515L/default.asp

Nov

7

Como ponchar un cable ethernet

By Jose Antonio Cely Saidiza


Con todo y wireless, wimax, etc. el cableado estructurado seguirá siendo infalible…
Vía www.viewdo.com encontré este practico video que muestran como hacer correctamente un cable ethernet, muy interesante, en especial para algunos conocidos ( me reservo el nombre :P ) que se la pasan preguntándome como ponchar correctamente en cable ethernet y parece que nunca me he echo explicar bien, o no me han entendido, entonces, ahí tienen el video…


Comentarios?

Mar

21

PARTICIONAMIENTO DE DISCOS DUROS

By Jose Antonio Cely Saidiza

El siguiente es un totorial que me envio Alex Sandoval  para publicar en el Weblog, me envio tantos tutoriales que concluimos que Alex pronto montará su Weblog con muchos más tutoriales tan buenos como este, sin más, los dejo con el material que envio y quedamos a la espera de su Weblog.

 

PARTICIONAMIENTO DE DISCOS DUROS

Autor: Cesar Alexander Sandoval Calderón

Bueno, este tutorial pretende dar una pequeña base de lo que son las particiones y los sistemas de archivos a un disco duro, las mejores opciones para un particionamiento, perder el miedo a esa palabra mortal para algunos: “Formateo” ¿va ha formatear mi disco duro?, ¿voy a perder toda información?, ¿mi tesis esta hay?, ¿no puede hacerlo sin formatear el disco?.

Para estas practicas no se necesita conocimientos avanzados en discos duros, clusters, sectores, cilindros etc…. frescos, es demasiado básico para que cualquiera lo aplique, además la mayoría de software es de código abierto así que perfectamente puede descargarse de la red sin pagar un solo centavo, es decir tenemos que ir a buscar al amigo del café Internet que tiene el programita “xxx” que hace maravillas con los discos, que lo particiona, lo formatea, y hasta le instala el windoze, no, nada de eso, con lo que veremos a continuación es suficiente….
así que veamos unos conceptos y luego a la practica.

Nota: No me hago responsable por los daños que pueda causar estas herramientas en su disco duro, ni mucho menos por la perdida de información que pueda tener, por su mal uso, hágalo bajo su propia responsabilidad.

¿Que es una partición?

Las particiones de un disco duro son "trozos" del mismo, cuyo principal fin debiera ser la de albergar distintos sistemas de ficheros (distintos sistemas operativos) incompatibles entre si, que no pueden convivir en la misma partición.

Para tener en cuenta:

* Las particiones son divisiones de tamaño fijo del disco duro; los directorios son divisiones de tamaño variable de la partición.
* Las particiones ocupan un grupo de cilindros contiguos del disco duro (mayor seguridad); los directorios suelen tener su información desperdigada por toda la partición.
* Cada partición del disco duro puede tener un sistema operativo distinto.

Veamos sus ventajas:

* Organizativas: Podemos tener varias particiones, una para sistema operativo, para documentos, para música, para vídeos y películas, para la tesis, etc…. así es mucho mas fácil el mantenimiento del disco duro, y no tenemos que “formatear” todo el disco cada ves que reinstalamos el sistema operativo, ya que este tendrá su propia partición y los datos quedaran intactos.
* La instalación de mas de un sistema operativo en su disco duro, para ensayar con mas de una distribución Linux, o tal ves instalar el BeOS en una partición propia y porque no el QNX o FreeBSD.
* Flexibilidad: Podemos fácilmente pasar información de una partición a otra, tal ves hacer otro particionamiento a partir del ya establecido sin perdida de información, el mantenimiento de las particiones es simple ya que el chequeo de disco se hace a una sola partición y no a todo el disco duro, como también las demás tareas administrativas.
* Seguridad: podemos tener backup (copia de respaldo), de la información mas importante de nuestro disco en diferentes particiones, en caso de reinstalacion del sistema, o en caso de tener el windoze, para que los virus no salten a las demás particiones , pero lo mejor es tener Linux para estos casos, alla cada quien que cuide su información como mejor le parezca, pero para lo que he leído de los virus ya casi no existe antivirus que valga (la enfermedad siempre aparece primero que la cura).
* Rendimiento: en el caso de la swap de los sistemas Linux la cual es una partición que sirve como intercambio y se suma a la memoria RAM y acelera el rendimiento, en el caso de los sistemas windoze también existe, pero esta incluida dentro de la misma partición que esta instalado el sistema operativo (poco útil).

¿Como pueden ser las particiones?

Las particiones pueden ser de dos tipos: primarias o lógicas. Las particiones lógicas se definen dentro de una partición primaria especial denominada partición extendida.

Tipos de particiones:

* Partición Primaria: Solo pueden existir 4 particiones primarias (Incluida la Partición extendida si existe).
* Partición extendida: Solo existe una y sirve para albergar mas particiones llamadas particiones lógicas.
* Particiones lógicas: Existen solo dentro de la partición extendida, con esto se pueden tener mas de 4 particiones en el disco duro.

A la hora de elegir nuestro tipo de partición, tendremos que decidirnos entre una partición primaria o lógica (incluye la extendida), primero hacemos el calculo de cuantas particiones necesitamos y que sistemas operativos vamos a instalar.
Yo recomiendo dejar una partición para solo el sistema operativo mas programas y otra para los datos, esto es muy útil para hacer las tareas administrativas y de reinstalación del sistema como lo vimos en las ventajas.
El tamaño de la partición es relativo a lo que esta contenga, Para el caso de sistema operativo + programas, haremos el calculo teniendo en cuenta cual sistema es y cuantos/cuales programas instalemos allí, generalmente yo la dejo de 10GB a 20GB para Linux y también para el windoze.
Pero si es de datos, puede haber un rango grande de tolerancia ya que hay están los archivos de usuario y tal vez no podemos calcular el tamaño total a utilizar, generalmente es el espacio restante del disco duro, si tenemos un solo sistema operativo, si tenemos mas de un sistema operativo dependerá de la capacidad del disco duro.

PARTICIONAR EL DISCO DURO

Bueno, basta de conceptos y ahora si a particionar, pero ¿que es particionar?:

En mi concepto, es coger el disco duro y “rebanarlo”, es engañar al usuario final haciéndole creer que existen mas discos duros en el computador.

¿Que necesitamos para particionar?

Para particionar existen diversos programas para este fin, dentro de los cuales se encuentran el Fdisk, Parted, Qtparted, Partition Magic, etc… algunos son comerciales y otros de libre distribución.
Yo recomiendo usar un herramienta de particionamiento que pueda ser arrancado desde un dispositivo removible, como la disquetera, unidad de cdrom o una memoria usb, ya que no resulta practico particionar un disco duro sobre un sistema operativo ya instalado, porque nos limita a instalar el sistema y luego particionarlo, además que el proceso se hace mas lento de esta manera.
Entonces usaremos Parted, que arranca desde dos disquetes y se puede encontrar en Internet y descargar la versión para disquetes arrancables en http://www.gnu.org/software/parted/parted.html de esta forma tendremos que usar parted en modo texto en una shell de Linux, cosa que para muchos les es incomoda “¿sera que no existe una aplicación gráfica?” preguntaran muchos, afortunadamente SI, si existe su versión gráfica muy similar al Partition Magic, Qtparted, que se puede encontrar en un Cdrom arrancable con muchas mas aplicaciones, la imagen ISO para descarga se encuentra en: http://www.sysresccd.org/.
Entonces comenzaremos nuestro particionamiento con el CD de systemrescue. Nota: El manual del CD esta dentro del mismo en formato PDF y HTML, por favor miren la documentación, y después no digan ¿porque hizo esto? O ¿que paso?, en el manual esta explicado todo el CD y puede encontrar cosas interesantes en el, como servidor SSH, servidor SAMBA, servidor NFS, lectura-escritura de particiones NTFS etc..

Pasos para el particionamiento con el CD systemrescue:

   1. Se configura la BIOS para que pueda arrancar desde cdrom (en caso de que el BIOS no permita esta opción es necesario hacer el arranque desde una disquetera (Floppy) con la imagen del parted en disquetes), lo siento abra que aprender a manejar el parted en modo texto, pero no es difícil, además es mas rápido que en modo gráfico, y hay esta toda la ayuda, mas abajo lo explicare.
   2. Se reinicia el ordenador con el cdrom de systemrescue en la unidad y deberá salir una pantalla como la siguiente:

 

systemrescuecd.jpg

Se dan cuenta tiene cantidad de cosas, no les mentía.

  3. El CD contiene muchas mas opciones, las cuales se pueden ver presionando F2, F3 y F4 como se muestra en la siguiente imagen (ver manual para mas opciones).

f1f2f3f4.jpg

  4. Para este caso, solo deseamos particionar así que solo presionamos enter , y esperamos a que arranque el sistema Linux, y quede en una shell de comandos.

linuxvfs.jpg

Cuando pida el idioma simplemente digite 13 que es “es” español es la configuración para el mapa de teclado.

linuxautodetecting.jpg

   5. Finalmente quedamos en nuestra shell de comandos Linux y ejecutamos “run_qtparted” , el programa pedirá el tipo de conexión del mouse, si es ps/2, serial, USB, si no lo conoce entonces simplemente seleccione la opción automático y listo, luego cargara nuestra herramienta de particionamiento así:

aplicationdesktop.jpg

Y aquí esta nuestro disco duro, de manera gráfica como lo esperábamos, este programa es muy intuitivo, permite borrar, crear y redimencionar particiones de los discos duros sin importar el sistema de archivos que tenga la partición y reconoce los demás discos esclavos conectados a nuestro computador.

Personalmente sugiero los siguientes pasos:

   1. Se selecciona el disco duro o HD de la lista del lado izquierdo, en caso de tener solo uno, solo aparecerá este, luego mostrara la tabla de particiones del disco seleccionado en la parte superior.
   2. Dependiendo del numero de sistemas operativos y del uso particular se crean las particiones, en caso de tener un sistema ya instalado en todo el disco (solo una particion) es necesario redimencionar esta partición y dejar el espacio suficiente para las demás.

NOTA: Cualquier herramienta de particionamiento no es 100% confiable, por lo que recomiendo hacer un backup (copia de respaldo) de los datos antes de empezar el particionamiento, aunque con esta herramienta lo he hecho cientos de veces y no me ha fallado, recuerda las “leyes de Murphy”.

   3. Creamos primero las particiones primarias, luego la extendida y por ultimo las particiones lógicas según hallamos hecho nuestros cálculos (sistema(s) operativo(s), datos, swap, etc..).
   4. Por ultimo le damos “formato” es decir sistemas de archivos a cada uno de las particiones creadas, teniendo en cuenta que sistema operativo se quiere instalar (cada sistema operativo soporta uno o varios sistemas de archivos pero no todos).

Nota: La partición extendida no tiene sistema de archivos

Veamos algunos casos:

   1. Windows 95,98 o Millenium: Para el caso de una instalación así es necesario como mínimo una partición primaria para alojar el sistema operativo con un sistema de archivos Fat16 o Fat32.
   2. Windows NT,2000,XP o 2003: Se requiere una partición con sistema de archivos NTFS o Fat32, se recomienda NTFS por cuestiones de seguridad y Fat32 por compatibilidad con Linux y Windows 95,98 y ME.
   3. Windows 98 + Windows XP: Se necesita como mínimo 2 particiones, una para cada sistema operativo, para win98 es necesario la fat32 y para winxp es posible con Fat32 o NTFS, pero para esta ultima no es posible que win98 lea la partición NTFS (aunque existe software para hacerlo como: http://www.sysinternals.com/Utilities/NtfsWindows98.html).
   4. Linux: Se requiere como mínimo 2 particiones, una que va ha ser usado como partición de intercambio (swap) que es de tamaño aproximado a 2 veces la memoria RAM es decir “swap=2*RAM” y el espacio restante como partición raíz (/) en la cual se albergara el sistema operativo y los programas.
   5. Linux + Linux: Se puede instalar con 3 particiones porque la partición de intercambio (swap) se pude compartir con los dos Linux. Es recomendable dejar la partición swap en la mitad del disco duro (HD) o en su defecto al final de este.
   6. Windows + Linux: Se deja como mínimo 3 particiones, una para el windoze (sin importar cual sea la versión) en una partición primaria y 2 particiones para Linux (Swap y / ). que pueden ser primarias o lógicas.

 

SISTEMAS DE ARCHIVOS

Sin ir mas lejos en la explicación de lo que es un sistema de archivos, solo dirá que es preparar al disco duro para que pueda almacenar información, es como crear estantes y cajones en una biblioteca para poder poner los libros en ella.
Claro esto es también aplicable a los disquetes y memorias usb, es lo que común mente llamamos “formateo”, entonces cuando compramos un disco duro nuevo o un disquete tenemos que formatearlo (dar sistema de archivos a un dispositivo), algunos dirán ¿pero acabo de comprar un disquete y no tuve que formatearlo?, si , claro, lo que pasa es que últimamente los disquetes como las memorias usb ya vienen preformateados, generalmente con formato Fat32, esto no quiere decir que no acepte otro formato, es mas, se les deberá darle un formato mas decente, donde se involucren permisos de usuario y seguridad entre otros, como por ejemplo ext2 o ext3.

Para el caso practico las particiones y sus sistemas operativos es:
* Win 95/98/ME los sistemas de archivos soportados son Fat16 y Fat32, siendo esta ultima la mejor por que se desperdicia menos espacio en el disco.
* Win NT/2000/XP/2003 los sistemas de archivos soportados son Fat32 y NTFS, se recomienda NTFS por razones de seguridad (permisos, contraseñas, etc..) pero no por compatibilidad ya que los sistemas como Windows 95/98/ME y Linux tienen inconvenientes para leer este tipo de sistemas de archivos. Para el caso de Linux esta soportada la lectura para NTFS y la escritura se hace por medio de captive-ntfs que se encuentra en http://www.jankratochvil.net/project/captive/ para tener el soporte completo lectura/escritura.
* Linux los sistemas de archivos soportados son Ext2, Ext3, Reiserfs entre otros, se recomienda Ext3 ya que es mejor que Ext2 y mas compatible que Reiserfs. Para el caso de los sistemas Windows, estos no son capaces de reconocer este tipo de particiones, pero existe un programa que soporta la lectura/escritura para este tipo de sistema de archivos de manera nativa, se encuentra en http://fsdriver.org/index.html, este software solo sirve para sistemas Windows NT/2000/XP/2003, para el caso de Windows 95/98/ME se debe usar http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm que también es posible para NT/2000/XP/2003. además hay que usar el sistema de archivos linuxswap para la partición de intercambio, esta partición no es vista por Linux y el sistema la administra como parte de la memoria virtual.

Qtparted es capas de formatear todo tipo de particiones con el sistema de archivos que se requiera para cada caso, cuando el disco duro este listo solo basta con presionar el botón guardar (un disquete en la parte superior izquierda) para aplicar los cambios.

Buena suerte en sus particionamientos y ojala no hagan estragos en sus computadores, si tienen un disco duro sin usar, de esos viejos de 2GB o 10GB con el cual entrenar, usen lo antes de meterle mano al propio.

Repito, no me hago responsable por lo que pueda ocurrir en sus discos duros con estos procesos, pero estoy dispuesto a ayudarles en los que necesiten y acepto sus recomendaciones y sugerencias, por medio del correo electrónico alexxcom@gmail.com .
ojala les sea de ayuda.