Instalando Mplayer en Slackware 10.2 (con Gmplayer)

La siguiente guia esta destinada a usuarios de Slackware que desean tener instalado y funcionando con interfaz gráfica al excelente reproductor multimedia mplayer, hago énfasis en la "interfaz gráfica" ya que fue algo que nunca puede hacer funcionar como usuario, si como root, ("es solo cuestión de permisos" diría alguien por ahí), la cuestión es que siguiendo la instalación de estos paquetes, la bendita GUI para mplayer funciona.
Otro problema que se me presento a la hora de intentar hacer funcionar mplayer fue que me reclamaba ciertas librerías las cuales están acá completas para su descarga.
Lo primero es bajar cada uno de estos tgz (obvio, estamos en slackware), y guardarlos en una carpeta que hallamos creado para este fin:

MPlayer-1.0pre7try2-i686-1jto.tgz

MPlayer_codecs-20050412-i686-1jto.tgz

divx4linux-20030428-i486-1kjz.tgz

lame-3.96.1-i686-1jto.tgz

libdv-0.104-i686-2jto.tgz

libtheora-1.0alpha4-i686-1jto.tgz

polypaudio-0.7-i486-1frg.tgz

xvidcore-1.0.3-i486-1kjz.tgz

Creamos la carpeta

ernesto@slack:~$ mkdir mplayer

y alojamos adentro las descargas anteriores, una ves finalizada las descargas
ernesto@slack:~$ cd mplayer
ernesto@slack:~/mplayer$
ernesto@slack:~/mplayer$ su
Password:
root@slack:/home/ernesto/mplayer# installpkg *.tgz
y listo...
en la sección Multimedia de KDE tendrán una entrada que dice MPlayer (Multimedia Player) que en realidad lanza a GMplayer, lo que queda posteriormente es ajustar las opciones desde el panel de gmplayer y listo.
La otra opción es hacer funcionar mplayer desde una consola, lo cual es muy útil también.
Acá les dejo un screenshot de mplayer (gmplayer) en realidad funcionando sobre mi Slackware 10.2, con KDE 3.5 y Kernel 2.6.13.

Un saludo a todos. Ernesto

Arquitecturas i386, i586,.. facil!

Me he dado cuenta de que se pregunta mucho que arquitectura se ha de escoger, a la hora de poner unos repositorios o cuando queremos instalar algo. Y bueno me he decidido a escribir algo sobre el tema y asi poder haceros las cosas mas facilotas.

Arquitecturas:

i386/i486 (386, 486, no pentium)
i686/sse2 (pentium II y superiores)
I585 (Pentium para arriba ya sea un P4 o un AMD XP)
ppc (Power pc (MAC))
x86_64 o ia64 (Intel titanium (servidores))
amd64 (AMD de 64 bits)

PI:
pentium pro (150Mhz - 200Mhz)
La gama MMX (133Mhz(portatiles(sl))/166Mhz(sobremesa) -233Mhz)

PII (PRO + MMX):
233Mhz hasta los 400Mhz

Celeron (MMX):
266Mhz hasta los 466 Mhz
Xeon:
400Mhz.

PIII:
450Mhz hasta los 600Mhz

NOTA: Celeron y Xeon salieron con la idea de mejorar a PII pero no se consiguieron grandes logros
Si no se especifica que haya paquetes para i686 debemos cojer i586.

Fuente: tuxhuellas

¿Que es el FSTAB?

El fstab es el archivo donde se guardan los diferentes datos sobre el montaje de los dispositivos físicos.
Pese a lo que mucha gente piensa, el fstab no es tan solo de Linux, si nos que se encuentra en diversas plataformas, como la plataforma BSD o la Solaris.

COMPONENTES DEL FSTAB

El fstab se compone de 6 secciones:

# file system mount point type options dump pass

file system: Es el lugar donde se encuentra el dispositivo físico a montar, como por ejemplo
/dev/hda1, /dev/sda, etc.
mount point: Es el punto de montaje donde sera montado el dispositivo físico, este punto de montaje puede ser desde una carpeta del sistema como una carpeta creada por el usuario o el root, es decir, el punto de montaje es aquel que el usuario desee que sea.
type: Es el tipo de archivo con el que sera montado el dispositivo físico, este puede ser muy diverso, como por ejemplo, ext, swap, reiserf, etc.
options: Son las opciones con las que sera montado el dispositivo físico, existen muchas y diversas opciones. Las opciones mas usadas serán vistas mas adelantes en este mismo tutorial.
dump: Esta opcion solo puede poseer el valor 0 o 1, en ella se guardan los errores en tiempo de sistema que ha reportado el sistema de archivos. Al activarlo (1) se hará un backup con las opciones, creando backup por si surge algún tipo de problema, lo normal es tenerlo desactivado (0), ya que rara vez se produce un error.
pass: Esta opción al igual que la anterior tan solo puede poseer el valor 0 o 1. Si la activamos (1) el sistema realizara una pasada cada X desmontadas o si el dispositivo a sido desmontado incorrectamente para comprobar su integridad. En caso de estar desactivado (0), el sistema no realizara nunca ninguna pasada para comprobar la integridad del dispositivo físico, por ello es recomendable tenerlo en activado (1).


OPCIONES DEL FSTAB

Las opciones son especificadas en la sección numero 4: Options (al final del tutorial veremos ejemplos sobre lineas del fstab para montar diversos dispositivos como cd-roms o pendrives).
Las opciones mas usadas son las siguientes
defaults: Esta opción es la unión de las opciones rw,suid,dev,exec,auto,nouser y async.
rw: READ-WRITE. Con esto montamos la partición para que sea posible tanto leer como escribir en el dispositivo físico, esta opción es muy usada con dispositivos que permiten la escritura como por ejemplo los pendrive o los disquets, ya que sin esta opción, no podríamos guardar datos en dichos dispositivos.
ro: READ-ONLY. Con esta opcion hacemos que no se pueda escribir en el dispositivo, que tan solo se pueda leer.
noexec: Impide la ejecución de cualquier archivo en el dispositivo en el que esta opción sea activada, esta opción suele ser muy útil cuando en una misma maquina diversos usuarios tienen acceso a un mismo dispositivo y no queremos que estos puedan ejecutar archivos en los dispositivos, con esto ganamos en seguridad, ya que impedimos que los usuarios puedan ejecutar cualquier tipo de archivo “maligno” a través del cual lo que realmente quiere conseguir es escalar privilegios en el sistema, por ejemplo.
nodev: con esto impedimos que puedan usarse nodos de dispositivo en el sistema de archivos, es decir, con esta opción impedimos que se interpreten los dispositivos especiales de bloques y de caracteres presentes en el dispositivo.
dev: Opción contraria a nodev, es decir, al activar esta opción permitimos que puedan usarse nodos de dispositivo en el sistema de archivos, o, lo que es lo mismo, que se interpreten como tal los dispositivos especiales de bloques y de caracteres presentes en el dispositivo.
auto: Con esta opción hacemos que el dispositivo que la contenga sea iniciado SIEMPRE que se inicie el sistema, es decir, cada vez que este sea encendido.
no auto: Esta es la opción contraria a auto, con ella hacemos que el dispositivo no sea montado al iniciarse el sistema, y tan solo sera montado en el momento en el que le vayamos a dar uso, esta opción suele ser usada con dispositivos como las disqueteras, cd-roms, pendrives..., es decir, todos aquellos dispositivos que no es necesario que se monte con el arranque del sistema.
user: Permite a cualquier usuario del sistema montar o desmontar un dispositivo físico sin necesidad de ser root, esta opción es muy útil para dispositivos de uso frecuente, como cd-roms o disquetes.
uid=X: Con esta opción indicamos que tan solo el usuario o el grupo con el uid especificado tiene el control sobre los archivos del dispositivo.
async: Con esto hacemos que las operaciones que realicemos no se hagan de forma asíncrona, es decir, en el mismo momento en que las realizamos, si nos que pueden ser realizada mas adelante.
sync: Es la opción contraria a async, con esta opción conseguimos que todas las modificaciones que hagamos sean “in situ” es decir, realizadas en el mismo momento en que sean realizadas.


EJEMPLOS FSTAB

Ahora ya sabemos de que se compone el fstab así y como las opciones mas comunes que este suele tener vamos a ver un par de ejemplos, estos ejemplos serán el de un cd-rom así y como el de un pendrive.
Antes de nada decir que las secciones son separadas a través del tabulador, según vemos en el encabezamiento del fstab es así
# file system mount point type options dump pass

muy bien, ahora pasemos a los ejemplos:

CD-ROM
el cd-rom sera montado en /media/cdrom0, asi que suponemos que esa carpeta existe, si nos podéis montarlo en cualquier otra o crear esa misma carpeta.

# file system mount point type options dump pass

/dev/hdd /media/cdrom0 iso9660 ro,user,noauto 0 0

aja, veamos como ha sido montado el cd-rom, para empezar el dispositivo físico se encuentra en /dev/hdd y sera montado en /media/cdrom0, el tipo sera iso9660, las opciones serán:
ro = solo lectura
user=cualquier usuario del sistema puede montar/desmontar así como usar este dispositivo
noauto= no sera montado montado con el sistema, es decir, sera montado solo cuando su uso sea necesario.
Después, dump esta desactivado al igual que pass, estas opciones ya han sido explicadas, asi que no volveremos a hacerlo.

PENDRIVE:
Ahora veremos como montar un pendrive, y este sera el ultimo ejemplo que realizaremos, suponemos que tenemos creada la carpeta pendrive en /mnt, esta vez no explicaremos las opciones usadas, simplemente os mostrare como esta montada en mi caso:

# file system mount point type options dump pass

/dev/sda /mnt/pendrive auto rw,user,noauto 0 1

Programas análogos a Windows en Linux

Uno de los problemas principales que nos encontramos los novatos de linux es que programas debemos usar para ciertas cosas. Todo esto está solucionado gracias a la tabla de software análogo a Windows en Linux.

Está disponible en Inglés y en español.

Escribir en NTFS

Uno de los problemas de linux cuando usuarios quieren probarlo, es que muchas veces tienen instalado WinXP y no pueden escribir en sus particiones porque es tipo NTFS.
O usuarios que utilizan habitualmente linux, tienen que crear una particion Fat32 para hacer "puente" entre particiones linux y windows. O sea, quizas tenemos datos en una particion tipo reiser, y la queremos pasar a una ntfs. Windows no puede leer reiser, y linux no puede escribir en ntfs, por lo tanto pasamos datos desde reiser > fat > ntfs y viceversa.

La solución a esto por ahora son 3.
1. Esperar a que el driver ntfs este disponible en el kernel (Actualmente en modo MUY experimental)
2. Utilizar un driver propietario de la empresa Paragon.
3. Instalar captive-ntfs, un driver de codigo abierto que utiliza partes de Wine y drivers de windows para poder escribir en ntfs.

vamos por la 3º.

1º: Bajar captive-ntfs
2º: Bajar lufs

Instalando lufs.

Lufs (Linux userland File System) permite montar sistemas de archivos remotos, accederlos por ftp, ssh, etc y trabajar en estos transparentemente.
Es instalado como, módulo y Captive-ntfs lo utiliza para "aislar" el driver emulado de ntfs del kernel de linux, para evitar que errores del driver influyan en la estabilidad del sistema.

$ tar xzvf lufs-0.9.7.tar.gz

$ cd lufs-0.9.7

$ ./configure && make

$ su

# make install

Editar /usr/share/lufs/2.6/inode.c

buscar la linea
kill_proc_info(SIGUSR1, &info, GET_INFO(sb)->server_pid);

y cambiar "kill_proc_info" por "kill_proc"

kill_proc(SIGUSR1, &info, GET_INFO(sb)->server_pid);

Instalando captive-ntfs

$ xhost +  (como usuario para dar acceso a X a root)

# tar xzvf captive-static-1.1.5.tar.gz

# cd captive-static-1.1.5

#./install

Luego, se copian los archivos desde windows que necesita Captive.

cdfs.sys fastfat.sys ntfs.sys ntoskrnl.exe a /var/lib/captive/

Los archivos deben ser de Windows XP, asique, si no lo tenemos instalado, en la primera ventana del programa de configuración de captive, le damos skip, y ns da la opción de bajarlos.

Luego, podemos montar la partición con

#mount -t captive-ntfs /dev/hdaX /mnt/XXX  (Reemplazar las X ;)

Y ya está, podemos escribir (lento pero seguro) en la partición NTFS.

Por: Jorge Mestre

Programas análogos a Windows en Linux - Alternativas Libres

Alternativas Libres
Este sitio web pretende hacer la vida más fácil a los usuarios que deciden dar el paso hacia el software libre, estableciendo relaciones entre las aplicaciones privativas que usan y las alternativas libres que existen.

Corrección en español sobre KDE

Para que soporte correccion en entorno kde, Bajar este paquete descomprimir, luego make build y copiar el .aff y el .hash (se le puede cambiar el nombre que tiene la ~ ) y moverlos a /usr/lib/ispell, luego en Centro de Control de KDE > Componentes de KDE > Corrector, seleccionar el diccionario y listo.

Viamatic foXpose: todas tus páginas web miniaturizadas

Viamatic foXpose es una extensión para Firefox que nos permite, con un sólo click, ver en una sola ventana todas las páginas web que tengamos abiertas en el navegador, en forma de miniaturas, al más puro estilo exposé de MacOSX. Extensión que por sí sóla eleva la calidad de navegación de Firefox en muchos enteros.


Mas extensiones para Firefox

Luego del articulo de Ernesto de foXpose me puse a buscar extensiones,


y encontré las siguientes, muy utiles.
FoxyTunes: Para controlar infindiades de Media Players, Amarok, xmms, players web, wmplayer, etc,etc, my util

Gmail Delete Button: Agrega un botón "Borrar" al lado del botón archivar en GMail, tambien muy util, ya que no hay que desplegar el combo par aseleccionar "Mover a la papelera.

SearchBar Autosizer: Tamaño automatico en la barra de busqueda.

¿Porqué usar Mozilla Firefox?

El zorrito alias “Firefox” se esta convirtiendo en el explorador web por excelencia. Está claro que ahora ya no solo lo usan aquellos que odiaban a M$, si no que muchos de los usuarios normales han descubierto sus notables ventajas con respecto al navegador de Windows, y sí! es como una droga… Si lo pruebas no lo dejas ;) . A continuación intentaré explicar algunas de las ventajas de las que dispondríamos usandolo.



Estabilidad y seguridad

Supongamos que estamos navegando con Internet Explorer y de prónto se cae, ¿Qué sucede? que todo el sistema se paraliza y la única forma de poderlo recuperar es reiniciando. Ésto pasa porque Bill y sus amigos cuando fueron demandados por Netscape por aquello de que M$ incluía el IE con todos los windows y eso no era una competencia justa decidieron “fusionarlo” con el sistema como excusa para librarse.
Con Firefox esto no ocurre. Es un programa independiente capaz de procesar mucho más rápido el HTML en comparación con IE
La seguridad es otro punto a tener en cuenta, para usuarios de Windows que “andan por casa” no supondría un problema perder los datos debido a una vulnerabilidad en IE, pero imaginarse las mismas circunstancias en una empresa, un desastre.
También es verdad, que en los últimos meses se han descubierto más vulnerabilidades para Firefox que para IE, pero las de éste último son mucho más peligrosas (causadas en su mayoría por ActiveX y como dije antes está integrado al sistema ). Por otro lado, para tener una solución aplicable por un usuario normal (parche) para IE se debe esperar mucho más tiempo que para Firefox (ahí está la comunidad opensource!)

2- Navegación y funcionalidades

Creo la inmensa mayoría que usa Firefox, reconoce que uno de sus puntos fuertes en cuanto a funcionalidad y comodidad son el sistema de tabs o pestañas que nos liberan de muchas ventanas en el escritorio y nos permiten organizarnos mejor. Otros de los puntos notables, en mi opinion, son el excelente bloqueo de pop-ups o “ventanitas de los cojones emergentes” que se abren en muchas de las páginas que visitamos día a día, incluso me arriesgaría a decir que muchas veces ni nos damos cuenta de que se ha cerrado una.
Por otro lado Internet Explorer por sí solo no es capaz de bloquear ventanas decentemente, y Microsoft no mueve un pelo. Si lo pensamos un poco el Internet Explorer 6 salió con el Windows XP (se podía bajar e instalar antes, pero me refiero a que venga ya integrado con el “Ventanucos”) y eso cuándo fué? en el 2001 como mínimo. Desde entonces solo se han visto revisiones de seguridad, y como eran muchas las “regalaban” en packs (xD), pero no agregaban ninguna funcionalidad. Como sabréis la version 7 traerá sistema de pestañas, pero ya es tarde… Soy adícto a Firefox ;)

3- Personalización, entorno y plugins

Firefox nos permite también configurar la interfaz mediante temas, que pueden ser descargados e instalados desde la página oficial muy facilmente. Son bastante fáciles de modificar (vienen comprimidos en .jar), incluso yo hice uno para convinar con mi escritorio

Lo mismo ocurre con las extensiónes o plugins, que nos dan la posibilidad de agregar variadas funcionalidades como por ejemplo un lector de noticias, un gestor de descarga, etc. Y no me dirán que la busqueda directa en google no es sumamente útil!, por lo menos a mi me ahorra mucho tiempo

4- Compatibilidad

Este “zorrito” :P es capaz de correr sobre sistemas operativos Windows, Linux (y derivados) y Macintosh entre otros y dejarse leer en unos 35 idiomas.
Y como de costumbre, Microsoft y su intento de tener el poder absoluto han echo que desde las primeras versiones de IE los estandares recomendados por el W3C sean omitidos olímpicamente, que desencadenó los sitios etiquetados como “IE ONLY”.
Todos los demás navegadores, vease Firefox, Safari, Epyphany, Opera (gracias Felipe) e incluso el nuevo Flock “son legales”

Decir también que Firefox consiguió ya las 100 millones de descargas y al parecer, crecen día a día!. Lamentablemente todavía un porcentaje muy alto usa IE, y personalmente creo que seguirá así por mucho tiempo.

5- Mejorar la velocidad de firefox

Estos son algunos truquitos que conseguí para mejorar la experiencia firefoxera

En la URL ponemos “about:config” (sin comillas que te estoy viendo xD)

»Buscar la línea “network.http.pipelining” y la cambiar a true.

»Lo mísmo con “network.http.proxy.pipelining”.

»Buscar la línea “network.http.pipelining.maxrequests” y ponerle 30 (Firefox hará 30 peticiones simultáneas)

»Clic derecho en un área libre “Nuevo > Entero” o “New > Integer“, como nombre le ponemos “nglayout.initialpaint.delay” y de valor “0“. (esto hace que vaya dibujando la página a medida que la carga)

NOTA: éstas modificaciónes tienen un efecto notable si la conexión utilizada es de banda ancha

6- Conclusión

Utilizar un navegador de código abierto nos permite beneficiarnos de grandes avances en el desarrollo de estos y otras tecnologías, si una empresa tiene el poder, y no hay competencia, no hay progreso

Configurar Vim en Slackware

Por defecto en Slackware, /usr/bin/vi es un enlace simbólico a /usr/bin/elvis, un clon de VI.

Personalmente encuentro mas "amigable" (dentro de lo amigable que son VI y sus clones ;) a Vim (Vi iMproved), por lo tanto para configurarlo como editor VI por defecto, tenemos que cambiar el enlace /usr/bin/vi:

#cd /usr/bin

#rm vi

#ln -s vim vi

#ls -l /usr/bin/vi

lrwxrwxrwx 1 root root 3 2005-03-13 12:32

/usr/bin/vi -> vim*

Con eso, quedaria el enlace para que cuando utilicemos el comando vi, se ejecute vim y no vi. para guardar las opciones en un archivo de configuración, lo que hacemos es una copia del archivo

$ cp /usr/share/vim/vim63/vimrc_example.vim ~/.vimrc

y ahi editamos las opciones que queramos, o dentro de vim, ejecutamos el comando :options

Charla "Linux LiveCds" - Colegio Santo Domingo - 26 de Noviembre 2005

Charla "Linux LiveCds" - Colegio Santo Domingo - 26 de Noviembre 2005

Se llevo a cabo el Sábado 26 de Noviembre en el colegio Santo Domingo, se expusieron los siguientes Live Cds Knoppix 4.0, Slax, Elive, Austrumi, Goblinx, Movix, Geebox y Adrenalinux. Fotos del Evento.

Teclado en espanol en Slackware

tenemos que editar el archivo /etc/X11/xorg.conf
buscamos la línea
Option "XkbLayout" "us"
y la cambiamos por
Option "XkbLayout" "es"

Samba en Slackware

Mis pretenciones en este howtito son mas bien basicas, ya que solo deceo entregarles mi experiencia configurando samba en Linux Slackware ( nuestra gloriosa distribucion ) que se encuentra en una pequeña lan con dos cliente Windows.

Samba en Slackware

Autor, Augusto Sotelo L.



Tabla de contenidos

* Introducción
* Instalando Samba
* Descripción de smbd y nmbd
* Utilidades del paquete Samba
* Iniciando Samba
* Creando el archivo de configuración de Samba
* Configurando los clientes Windows
* Verificando los recursos compartidos
* Exportando el sistema de archivos smbfs
* Despedida

Introduccion

Mis pretenciones en este howtito son mas bien basicas, ya que solo deceo entregarles mi experiencia configurando samba en Linux Slackware ( nuestra gloriosa distribucion ) que se encuentra en una pequeña lan con dos cliente Windows.

Instalando Samba

Instalando Samba desde el paquete Slackware

Para comenzar dire que debemos tener instalado el paquete samba-2.2.8a-i386-1.tgz (version de samba en slackware-9.1), Si no es asi podremos encontrarlo en nuestro CD1 de Slackware-9.1 o en slackware-9.1/slackware/n/samba-2.2.8a-i386-1.tgz. Una vez que tengamos el paquete podremos instalarlo en nuestro sistema utilizando el siguiente comando:

root@shell:~# installpkg samba-2.2.8a-i386-1.tgz

Compilando el paquete Samba desde las fuentes

Ahora bien, si nos encontramos en el supuesto caso que queremos instalar Samba desde las fuentes, siempre tenemos la opcion de descargarnos el codigo fuente desde www.samba.org para compilarlos nosotros mismos. No dare mayor detalle de como compilar samba desde las fuentes, pero a grandes rasgoz es asi:

user@shell:~$ tar zxfv samba-a.b.c-iy86.tar.gz
user@shell:~$ cd samba-a.b.c-iy86
user@shell:~$ ./configure
user@shell:~$ make
user@shell:~$ su
password:
root@shell:~# make install o checkinstall <- Aqui resaltare que lo mejor es ejecutar checkinstall.

Nota: Si tú lector no sabes que es o que hace el comando checkinstall siempre podras recurrir a la "Guía de Slackware 9.0" que se encuentra en la sección documentación. Si alguno de ustedes decea saber con mayor detalle alguna opción determinada durante el proceso de compilación del paquete Samba, siempre podemos recurrir a leer el README o la documentacion que se encuentra en la pagina de Samba.

Descripción de smbd y nmbd

Ahora vamos a lo contundente. Es en esta etapa donde describire basicamente algunos conceptos que nos facilitaran el camino. Es aquí donde me referiré a los demonios smbd y nmbd.

El demonio smbd

El demonio smbd es el encargado de manejar los recursos compartidos (como lo son directorios, impresoras, etc.) a los clientes Windows. Este demonio provee tanto servicios de impresion como espacio para los clientes utilizando el protocolo SMB ( o CIFS). Esto es compatible con el protocolo LanManager ( que significa manejador de red), proveyendo LanManager para los clientes. El termino LanManager es como una definicion que engloba todos los protocolos usados por SAMBA para poder comunicarce con los diferentes SO ( Sistemas Operativos) que este soporta. Esto incluye MSCLIENT 3.0 para DOS, Windows para Workgroup( grupo de trabajo), Windows 95/98/ME, Windows NT, WIndows 2000, OS/2, DAVE para Machintosh y smbfs para Linux.

El demonio nmbd

El demonio nmbd es un servidor que comprende y puede responder a NetBIOS las peticiones del servicio de nombre IP como las producidas por los clientes SMB/CIFS, tales como Windows 95/98/ME, Windows NT, Windows 2000, Windows XP y los clientes LanManager. Ademas de esto el demonio nmbd tambien participa en los protocolos de exploramiento, con lo que hacen la vista "vecindario de red" en Windows.

Utilidades del paquete Samba

Ahora describire algunas utilidades que son parte del paquete "samba-3.0.1-i486-1aw.tgz".

smbclient:

Es un cliente que puede comunicarce con el servidor SMB/CIFS, ofreciendo una interfaz similar a la del programa ftp. Entre algunas de las operaciones que incluye podemos encontrar la obtencion de los archivos que se encuentran en la maquina local, la transferencia de archivos desde el servidor a la maquina local, recuperando la informacion del servidor, etc...

smbtar:

Es un shell script muy pequeño en la parte superior de smbcliente(1) que descarga SMB compartidos directamente para guardar.

nmblookup:

Es usado para realizar peticiones de nombres NetBIOS y mapear asi a la direccion IP en la red de trabajo usando NetBIOS sobre peticiones TCP/IP. Las opciones permiten que las peticiones de nombres vayan directamente a un area de una direccion IP broadcast o a una maquina en particular. Todas las peticiones son realizadas sobre UDP.

smbpasswd:

Este programa tiene funciones diferentes, dependiendo si es ejecutado por el usuario root o no. Cuando es ejecutado como usuario normal, este permite al usuario cambiar la clave usada en la sesiones SMB en cualquier maquina que almacene claves SMB. Por defecto (cuando es ejecutada sin argumentos) este programa intenta cambiar la clave SMB actual del usuario que lo ejecuto en la maquina local, ya que funciona de forma similar a como lo hace el programa passwd(1). smbpasswd difiere con el programa passwd en la forma de funcionar, sin embargo en eso este no obvtiene setuid root ( osea cero ), pero funciona en modo cliente-servido y se comunica con el demonio smbd(8). Como consecuencia el demonio smbd debe estar ejecutandoce en la maquina local. En las maquinas UNIX la password SMB encriptada es usualmente almacenada en el archivo smbpaswd(5). Cuando es ejecutada como usuario normal sin ninguna opcion, smbpasswd incita teclear la antigua clave SMB y luego pregunta por la nueva clave dos veces, asegurandose así que la nueva clave este bien escrita. Ninguna clave sera mostrada en pantalla durante su escritura. Si tu tienes una clave SMB en blanco (especificado por la opcion "NO PASSWORD" en el archivos smbpasswd), entonces simplemente presiona la tecla cuando se nos pregunte por nuestra antigua clave ( old password ). El programa smbpasswd también puede ser usada por un usuario normal para cambiar la clave SMB en maquinas remotas, tales como Windows NT Primary Domain Controllers ( Controlador primario de dominio). Para una mayor informacion sobre esto chequea las opciones "-r" y -U". Cuando es ejecutado por root, smbpasswd permite que los nuevos usuarios sean agregados o borrados del archivo smbpasswd, asi como tambien permite modificar las propiedades de los usuarios que se encuentren en este archivo. Además de esto, smbpasswd accede directamente al archivo smbpasswd, lo que habilita cambios para que sean hechos solo si el demonio smbd no esta siendo ejecutado.

smbstatus:

Este es un programa muy simple, el cual sencillamente nos lista las conexiones de samba actuales.

testparm:

Este es un simple programa de chequeo, el que verifica el archivo de configuracion del demonio smbd(8), para así poder correcgir errores internos. Si este programa no reporta problemas, tú puedes usar el archivo de configuracion con confianza, ya que el demonio smbd cargará satisfactoriamente el archivo de configuración.

Nota: Esto NO garantiza para nada que los servicios especificados en el archivo de configuración se encontrarán habilitados u operables como se espera. SI el nombre opcional del host y la dirección IP del host son especificadas desde la línea de comandos, este programa de prueba correrá a través del servicio de entradas, reportando si un host específico tiene acceso a cada servicio. Si testparm encuentra un error en el archivo smb.conf este devolverá un codigo de salida 1 al programa que llama, sino, este devolverá un codigo de salida 0. Esto permite shell scripts para chequear la salida proveniente de testparm.

testprn:

Este sencillo programa de prueba determina si un nombre de impresora dado es válido para ser usado como servicio proveido por smbd(8). "Válido" en este contexto significa que " puede ser encontrado en el printcap especificado".

smbmount:

Este programa monta un sistema de archivos SMB Linux. Es usualmente llamado como mount.smbfs por el comando mount(8) cuando es usada la opción "-t smbfs". Este comando solo funciona en Linux, y el kernel debe soportar el sistema de archivos smbfs.

swat:

Este es un programa que permite al administrador de Samba configurar el complejo archivo smb.conf() usando el navegador. Adicionalmente, la página de configuración de swat posee diversos links de ayuda para todas las opciones permitidas en el archivo smb.conf, haciendo así más sencilla la tarea del administrador, permitiendole ver con facilidad cualquier efecto que traiga un cambio que se haya realizado. Este programa se ejecuta desde el archivo inetd.

Iniciando Samba

Primera forma de iniciar Samba

Entonces lo primero es iniciar el servidor samba, para asi poder montar el sistema de archivos de nuestro Windows XP en algun directorio que tengamos en mente ( yo uso /mnt/samba/winXP y /mnt/samba/win98 ). Esto lo podemos hacer de tres formas. La primera es iniciandolo manualmente con los siguientes comandos:

root@shell:~# smbd -D
root@shell:~# nmbd -D

Segunda forma de iniciar Samba

La segunda forma es editando el archivo /etc/inetd.conf y descomentar las siguientes lineas quitandoles el "#" que se les encuentra antepuesto:

#netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
#netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Una vez editado y guardado el archivo debemos proceder a reinicar el proceso de inetd con el siguiente comando:

root@shell:~# killall -HUP inetd

Tercera forma de iniciar Samba

La tercera forma de ejecutar el servidor Samba cada vez que nuestro sistema se inice es editando el script de incio del sistema rc.M que se encuentra ubicado en /etc/rc.d/. En este archivo debemos tener las siguientes lineas:

# Start Samba (a file/print server for Win95/NT machines).
# Samba can be started in /etc/inetd.conf instead.
if [ -x /etc/rc.d/rc.samba ]; then
. /etc/rc.d/rc.samba start
fi

Además de esto debemos asegurarnos que el archivo /etc/rc.d/rc.samba tenga los permisos para ser ejecutado, esto lo hacemos con el siguiente comando:

root@shell:~# chmod 755 /etc/rc.d/rc.samba

Creando el archivo de configuración de Samba

Ahora debemos editar o mas bien crear nuestro archivo de configuracion de Samba, el que se encuentra en el directorio /etc/samba/ y se llama "smb.conf".

Creando smb.conf con SWAT

La configuración de Samba puede ser hecha de dos formas. La primera es usar swat ( Samba Web Administration Tool ), utilidad que expliqué más arriba.. Para poder utilizar swat debemos editar nuestro archivo /etc/inetd.conf, descomentar la siguiente línea y reiniciar el demonio inetd como se muestra a continuación:

# swat stream tcp nowait.400 root /usr/sbin/swat swat

Y luego:

root@shell:~# killall -HUP inetd

Luego simplemente debemos poner en nuestro navegardor "localhost:901" en donde se nos pedira user y password, para luego ver la utilidad SWAT.

Creando smb.conf a mano

La otra forma de configuración de Samba es editar directamente el archivo smb.conf, lo que describire en las siguiente líneas. El archivo smb.conf se divine en tres secciones especiales, las cuales son [global], [homes] y [printers]. Los parametros definidos en la seccion [global] son los que se aplican al servidor Samba en su totalidad. Los parámetros definidos en la seccion [homes] son aplicados cuando uno de los clientes intenta conectarse a un recurso compatirdo que NO existe en el servidor, pero existe en esta sección, Samba interpreta esta petición como si se tratara de un nombre de usuario, por lo que comparte el directorio del usuario en cuestión. La sección [printers] trabaja de forma similar que [homes], pero para la(s) impresora(s). Esto permite que un usuario se conecte a cualquier impresora especificada en el archivo printcap. A continuacion podrán observar un ejemplo del archivo "smb.conf":

-- Inicio Archivo smb.conf --
# Opciones globales para el demonio smbd
[global]
workgroup = Mshome
server string = samba %v
netbios name = Slackware
encrypt passwords = yes
security = share
log level = 2
max log size = 50
log file = /var/log/samba/%m.log
debug timestamp = yes
use client driver = yes
load printers = yes
printing = cups
printcap = cups
# Directorio a compartir en el servidor Samba
[testing]
path = /var/samba/test/
writeable = no
guest ok = yes
browseable = yes
read only = yes
# Impresoras para compartir en la red
[printers]
path = /var/spool/samba
browseable = no
public = yes
guest ok = yes
writeable = no
printable = yes
-- Fin archivo smb.conf -

Con el archivo listo podremos proceder a verificar si tenemos o no errores en nuestro archivo de configuración con el siguiente comando:

root@shell:~# testparm

Configurando los clientes Windows

Configurando el cliente Windows 98

Ahora debemos proceder a la configuración de nuestro cliente Windows 98 siguiendo los pasos que describire a continuación: Las opciones que utilizaremos a continuación seran resumidas brevemente:

Dirección IP Slackware : 192.168.0.1
Dirección IP Cliente Microsoft Windows 98 : 192.168.0.2
Dirección IP Cliente Microsoft Windows XP : 192.168.0.3
Mascara de red : 255.255.255.0

Hemos de tener nuestra tarjeta de red devidamente instalada en el sistema, lo cual se puede verificar en Proiedades de "MI PC" -> Administrador de dispositivos. Luego debemos entrar en propiedades de "Entorno de red", en la pestaña "Configuracion" debemos tener los protoclos NetBEUI y TCP/IP instalados. Luego seleccionamos el protocolo TCP/IP de nuestra tarjeta de red y hacemos click en el botoncito de mas abajo que dice "Propiedades", luego se nos abrira una ventana llamada "Propiedades de TCP/IP", en donde elegimos la pestaña llama "Direccion IP" y marcamos la opcion "Espesificar una direccion IP", donde obviamente pondremos la direccion IP que tendra nuestra tarjeta de red, que es 192.168.0.2, y luego nuestra mascara de subred que será 255.255.255.0. Luego de esto nos vamos a la pestaña llama "Puerta de enlace" en donde tecleamos la ip de la tarjeta de red de nuestro servidor Linux y luego le damos click al boton Agregar. Para concluir debemos ir a la pestana llamada "Configuracion DNS" y seleccionamos la opcion Activar DNS, es aqui donde escribimos un nombre para el campo "Host", el cual puede ser win98 ( ingenioso he? ) y luego en el campo inferior a "Orden de busqueda del servidor DNS" tecleamos el dns primario de nuestro ISP, que en mi caso es 206.137.97.254 ( Entel :|) y luego click en el boton "Agregar" y luego en "Aceptar" y "Aceptar" . Luego de eso todo estara listo en nuestro cliente, solo nos falta reiniciar ( es windows :| ) y nuestro cliente estara en condiciones de funcionar perfectamente.

Compartiendo directorios en el cliente Windows 98

Con la configuración finalizada de nuestro Windows 98 podemos proceder a compatir un directorio de la siguiente manera: Click en boton derecho sobre el directorio ( o carpeta como dicen) que deceamos compatir, ahora seleccionamos la opcion "Compartir..." lo que nos dejara dentro de la pestaña Compartir, mostrandonos ahi los campos que debemos llenar, como lo son "Nombre del recurso compartido" y "Comentario". Ademas debemos escoger un "Tipo de accesso" al recurso, el cual puede ser "solo lectura","completo" o "depende de la contraseña. La opcion "Solo lectura" depende de una contraseña si nosotros lo deceamos, del mismo modo la alternativa "Completo" depende de una contraseña si lo deceamos, pero la opcion "Depende de la contraseña" es algo diferente, ya que se podria decir que es la mezcla de la primera y segunda opcion, lo que significa que dependiendo de la contraseña que ingresemos al tratar de utilizar el recurso, el tipo de acceso sera de "solo lectura" o "completo".

Configurando el cliente Windows XP

Y ahora debemos configurar nuestro cliente Windows XP siguiendo estos pasos: Start -> Control Panel -> Network and Internet conections -> Set up or change your home or small office network -> next -> next -> This computer connect to the internet through another computer on my network or through a residential gaterway (segunda opcion), mas claridad click on "view an example" -> next Luego debemos rellenar los campos "Computer description", "Computer name" y despues next. Ahora debes rellenar "Workgroup name" y click en next. Luego se nos muestra un resumen con las opciones y campos que hemos rellenado y click en next para aplicar la configuración al sistema. Posteriormente de esperar un momento nos aparecerá la última pantalla ( you´re almost done..). En mi caso aqui escogere la opcion "Just finish the wizard, I don´t need run the wizard on other computers" (la última opción) y hacemos click en siguiente y finalmente hacemos click en finish y todo estará listo. Ahora debemos configurar debidamente nuestra ethernet , para esto seguimos los pasos que mostraré: Start -> Control Panel -> Network and Internet Connections -> Network Connections boton derecho sobre la conexion que tengamos creada en esta seccion, para asi poder reconfigurarla . seleccionamos "properties" -> selecciona el item "Internet Protocol (TCP/IP)" y luego click en el boton que dice "Properties" -> seleccionas la opcion llamada " Use the following IP address " y rellenas los campos pertinentes. A continuacion la configuracion que yo uso:

IP address : 192.168.0.3 <- IP de la ethernet en el Windows XP
Subnet mask : 255.255.255.0 <- Mascara de subred para el Windows XP
Default gaterway : 192.168.0.1 <- IP del Gaterway (IP ethernet Slackware)

Luego Selecciono la segunda opción de la segunda mitad llamada " Use the following DNS server address y relleno el primer campo, que como en mi caso mi ISP ( porveedor servicio Internet ) es Entel, usaré sus DNS como mostraré a continuación:

Preferred DNS server: 206.137.97.254 <- DNS Primario de mi ISP Alternate
DNS server: <- DNS Secundario de mi ISP(en blanco)

Luego click en "OK" y nuevamente click en "OK" (mi dedo se gasta tantos click :( ..)

Nota: Por si alguien tiene dudas cabe mencionar que la mascara de red o subred SIEMPRE debe ser la misma para todas las maquinas, en el caso de este documento es 255.255.255.0 para aquellos que no lo habían notado :D.

Verificando los recursos compartidos

Ahora que nuestro cliente Windows XP se encuentra configurado procedemos a exportar los recursos compartidos, para esto podemos utilizar los comandos smbmount o mount. Una cosa muy importante antes de exportar los recursos es saber que recursos podemos exportar y cuales no, pues para esto hay un programa llamado smbclient que nos muestra junto con el host de uno de los cliente su(s) directorio(s) compartido(s). Su sintaxis es basicamente la siguiente:

smbclient [nombre del servicio] [password] [-b ] [-d nivel_de_depuracion ]

Por ejemplo:

root@shell:~# smbclient -L win98

Lo que generara una salida mas o menos como esta:

Sharename Type Comment
--------- --------- ---------
FLOPPY Disk disket
CDROM Disk unidad de cdrom
SHAREDDOCS Disk
IPC$ IPC Comunicación remota entre procesos

Server Comment
--------- ---------
SLACKWARE samba 3.0.1
WIN98 windows 98 segunda edicion

Workgroup Master
--------- ---------
MSHOME WIN98

Como bien describí mís arriba podemos ver los recursos compartidos del host "win98" junto con sus respectivos comentarios y otros detalles como su grupo de trabajo ( MSHOME ).

Exportando el sistema de archivos smbfs

Montando smbfs en el inicio del sistema

Si por alguna razón deceamos que adicionalmente se nos monten y muestren el o los sistema(s) de archivo(s) remoto(s) debemos editar el archivo de incio rc.inet2 ubicado en /etc/rc.d/ y verificar que contenga las siguientes líneas:

# Mount remote (SMB) filesystems:
echo "Mounting remote (SMB) file systems: /sbin/mount -a -t smbfs"
/sbin/mount -a -t smbfs
# Show the mounted volumes:
/sbin/mount -v -t smbfs
# Done mounting remote (SMB) filesystems.

El primer comando "mount" quiere decir que, todos los sistemas de archivos de tipo smbfs mencionados en el archivo /etc/fstab sean montados al inicio del sistema, ya que es ahí donde se ejecutan precisamente, excluyendo aquellos que contengan la opción "noauto". Y el segundo mount simplemente nos muestra los sistemas de archivos de tipo smbfs que se hayan montado con el comando antorior.

Editando el /etc/fstab

Es en este momento donde te estarás preguntado como podría ser esa línea que va en el fstab y bueno, he aquí la sintaxis:

[Archivo de sistema remoto a montar] [punto de montaje]
[tipo del sistema de archivos] [opciones de montaje] [nº dump] [nº 0|1|2 fsck]

Para que todo quede más claro aquí les dejo un ejemplo:

//WINXP/SharedDocs /mnt/samba/winxp/ smbfs defaults 0 0

O bien si nos pide password seria asi:

//WINXP/slacky /mnt/samba/winxp smbfs
username=slacky,password=slackware,defaults,user 0 0

Nota: Los directorios que vayamos a compartir deben tener los permisos "0755" y los archivos los permisos "0555", aunque esto es variable. Si tienes dudas sobre los permisos en Linux, puedes recurrir a la "Guía de Slackware 9.0" que se encuentra en este mismo sitio.

Montando smbfs con ayuda de smbmount

Si por alguna razón no decearamos automontar el sistema de archvios smbfs al inicio del sistema, podemos recurrir a la utilidad smbmount como se muestra a continuación:

root@shell:~# smbmount [servicio] [ punto de montaje [ -o opciones]

Por ejemplo:

root@shell:~# smbmount //WINXP/SharedDocs/ /mnt/samba/winxp -o username=pepe,fmask=700,ro
Password: <- ingresamos password del recurso

Montando smbfs con mount

Siempre tendremos la opción de utilizar el conocido mount como se aprecia a continuación:

mount [Recurso a exportar] [tipo de archivo de sistema a exportar]
[punto de montaje]

Por ejemplo:

root@shell:~# mount //WINXP/SharedDocs -t smbfs /mnt/samba/winxp/

Despedida

Bueno, eso es todo, espero que este documento te haya ayudado en todo lo que tiene relación con Samba de forma básica, también cabe destacar que esta completamente orientado a Linux Slackware, ya que es así el enfoque que le dí, pero lo que varía de una distribución como Redhat o Debian a Slackware es la simple estructura de sus directorios. Si tienes dudas o si deceas saber más sobre parámetros que utilicé en este documento u alguna otra opcion relacionada con lo que leiste a lo largo de él, tienes a tu disposición el man, info, google, la misma herramienta de administracion de Samba ( swat ) trae una gran cantidad de ayuda y definiciones, y si esto no te es suficiente siempre podras recurrir a Google o ver la documentacion de Samba en su sitio web http://www.samba.org/. Mi intención NO es la de detallar alguno de los comandos, archivos o conceptos que han sido utilizados a lo largo de este documento.

Actualizando al kernel 2.6.10 en Slackware 10.1

Autor: Paco Revilla
URL: http://www.espaciolinux.com
Esta guía es una modificación del documento publicado en el taller Linux, titulado: Actualizando al kernel 2.6.7 en Slackware 10. Por motivo de claridad se han hechos modificaciones para adaptarlo al nuevo kernel 2.6.10 que la nueva versión 10.1 de Slackware incluye en su paquetería testing. Aunque el proceso para instalar este kernel es el mismo que ya antes se había explicado, ha habido la necesidad de aclararlo con sus correspondiente versión para que pueda ser de mejor utilidad para quien lo necesite.

Paquetes a utilizar
Lo primero que tenemos que hacer es identificar e instalar los paquetes necesarios para iniciar la configuración de nuestro nuevo kernel. La mayoría de los paquetes necesarios los podemos encontrar en el directorio testing/packages/linux-2.6.10 del segundo disco de instalación de Slackware 10.1. Tambíen podemos obtenerlo desde el FTP de Slackware.Los paquetes básico a instalar son:

* kernel-generic-2.6.10-i486-1.tgz
* kernel-modules-2.6.10-i486-1.tgz
* mkinitrd-1.0.1-i486-2.tgz (ubicado en slackware/a del primer disco)

En el directorio testing/packages/linux-2.6.10 encontraremos también los paquetes alsa-driver, kernel-headers y kernel-source que podemos instalar opcionalmente. No es necesario hacer un upgrade de nuestro actual kernel para instalar el 2.6.10, incluso es recomendable dejar intacto nuestro actual kernel por si llegara a fallar algo con el que estamos por instalar. Por lo tanto, hacemos una instalación completa de los paquetes:

# installpkg kernel-generic-2.6.10-i486-1.tgz
# installpkg kernel-modules-2.6.10-i486-1.tgz
# installpkg mkinitrd-1.0.1-i486-2.tgz

Configuración de la imagen initrd
Para poder utilizar el nuevo kernel es necesario hacer una imagen initrd si estamos utilizando los sistema de archivos ext3 o reiserfs en la partición root (/). initrd, es un pequeño sistema de archivos Linux que se carga en la RAM e inicia junto con el kernel pero antes de montar la partición root; esto nos servira para añadir módulos extras al kernel 2.6.10, por ejemplo el soporte para los sistemas de archivos ext3 y reiserfs. Para las particiones root con sistemas de archivos ext2 no es necesario crear la imagen initrd, si es este el caso podemos omitir las siguientes instrucciones y pasar a configurar el gestor de arranque.

En una terminal nos cambiamos al directorio /boot y nos logueamos como root:

$ cd /boot
$ su
password:


Una vez como root ejecutamos lo siguiente si nuestro sistema de archivos es reiserfs:

# mkinitrd -c -k 2.6.10 -m reiserfs


En caso de que tengamos un sistema de archivos ext3 podremos ejecutarlo de esta manera:

# mkinitrd -c -k 2.6.10 -m jbd:ext3 -f ext3 -r /dev/hdxy


En donde x es el numero de disco de nuestro sistema y donde y es el numero de la partición root (ejemplo: /dev/hda3)

Lo que haremos con el comando mkinitrd es hacer un árbol de archivos con los módulos a cargar al kernel, y también vamos a crear la imagen initrd.gz que será la que llamaremos al iniciar el sistema mediante el gestor de arranque (GRUB, LILO, etc).


Configuración del gestor de arranque.
Como paso final debemos de actualizar el gestor de arranque añadiéndole una nueva entrada para el kernel. Para hacer esto podemos hacer una duplicación de la entrada ya existente y hacerle los cambios necesarios para adaptarlo a las nuevas necesidades.

En el caso de GRUB procederemos a abrir el archivo de configuración:

# vi /boot/grub/menu.lst


Encontraremos la entrada actual del sistema, ejemplo:

title Slackware-10.1
kernel (hd0,6)/vmlinuz-ide-2.4.29 ro root=/dev/hda8


La copiamos, la duplicamos en el archivo de configuración de GRUB y la modificamos para el kernel 2.6.10:

title Slackware-2.6.10
root(hd0,6)
kernel=/vmlinuz-generic-2.6.10 ro root=/dev/hda8
initrd=/initrd.gz


En el ejemplo podemos ver lo siguiente:

root(hd0,6) = Con esto indicamos donde esta la partición boot donde están el kernel y la imagen initrd.
root=/dev/hda8 = Aquí se indica donde esta la partición root del sistema (/).
initrd=/initrd.gz = Esta es la nueva línea que añadiremos para cargar la imagen initrd y con ello el soporte ext3 y reiserfs.

Los valores root(hd0,6) y /dev/hda8 corresponden al ejemplo mostrado, por lo cual es necesario cambiarlos para adaptarlos a la configuración del sistema en donde estamos trabajando

En el caso de LILO abriremos el archivo de configuración de la siguiente manera:

# vi /etc/lilo.conf


Copiamos y duplicamos la entrada ya existente del kernel 2.4.29 y le añadimos la línea initrd, ejemplo:

image = /boot/vmlinuz-generic-2.6.10
initrd = /boot/initrd.gz
root = /dev/hda8 (acá colocamos la partición correspondiente)
label = Slack-2.6.10 (si el nombre es demasiado largo no lo toma)
read-only

Observacion: en "label = Slackware-2.6.10" es demasiado largo, se los dice lilo cuando lo reinstalan, coloque algo mas corto.
Despues de salvar la nueva configuración ejecutamos en la terminal:

# lilo


Nota: Para los sistemas ext2 no es necesario incluir la linea initrd, sólo es necesario la linea del kernel. Las entradas son sólo un ejemplo de configuración, por lo cual es necesario adaptarlas a la configuración del sistema con que se trabaja.

Despues de terminar de configurar el gestor de arranque reiniciamos el sistema y accedemos con el nuevo kernel. En caso de que no surja ningún imprevisto y ya probado el funcionamiento del sistema con el nuevo núcleo, opcionalmente podemos desinstalar todo los componentes del kernel 2.4.29.

Los problemas mas comunes a considerar durante la carga del kernel son un llamamiento erroneo del nuevo kernel mediante el gestor de arranque o el que no se detectara correctamente algún dispositivo o configuración previa. Por eso es importante mantener instalado el kernel 2.4.29 hasta estar completamente seguro del funcionamiento del núcleo 2.6.10 con el sistema.

Comentarios
Para cualquier duda, observación o sugerencia sobre este documento puedes hacerlo através del siguiente enlace:


Licencia original del documento
Derechos de Autor © 2005 por Paco Revilla para espaciolinux.com.
Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, Versión 2 o cualquier otra versión posterior publicada por la Free Software Foundation; con la Seccion Invariante "Licencia original del documento". Una copia de la licencia es proveída en el sitio a través de este enlace: Licencia de Documentación Libre GNU.

Compilando el kernel

El kernel es el que se encarga de comunicar los programas con los dispositivos físicos de la computadora.
Es conveniente tener el kernel actualizado por varios motivos, entre ellos: Mas y mejor soporte de Hardware y corrección de errores.

Autor: Hernan

Para recómpilar un kernel se necesita tener instalado el gcc, libc y para los 2.6 las mod-utils (que son las nuevas herramientas insmod, rmmod, lsmod, etc para los kernel 2.6). Gralmente esta todo eso, si no fijate de tener todos los paquetes de desarrollo!

Al momento de compilar nuestros kernel's vamos a poder elegir usar los drivers como modulos o built-in.

A mi me gusta poner todo built-in.

Generalmente compilo como built-in solo los drivers que se van a cargar en el booteo, como ser los discos rígidos y los que se utilizen en todo momento, como ser las NIC's (placas de red), la placa de sonido y otras cosas más.

A medida que le vayan tomando la mano al sistema y vayan conociendo su hardware, necesidades, etc. van a ir optimizando su kernel.

Sabiendo que al compilar el kernel uds van a setear todo aquel soporte que necesitan y quieren cargar para su hard, lo que necesitan hacer es:

Bajarse el source que mas les guste de ftp.kernel.org/ o algún otro mirror.

Descomprimirlo en /usr/src y linkearlo a /usr/src/linux

ln -s /usr/src/linux-2.x.x-x /usr/src/linux

Entrar al directorio que contiene los sources con cd linux-2.x.x-x

Tienen varias opciones para empezar a configurar su kernel.

make menuconfig es algo mucho mas cómodo ya que pueden configurarlo a traves de una hermosa (???, jeje, para modo texto va bien) interfaz utilizando ncurses.

make xconfig es aún mucho mas cómodo pero van a necesitar tener configurada las X.

Hoy por hoy en los kernels 2.6 tambien se puede hacer un make gconfig el cual utiliza las librerias de gnome.

Una vez que eligieron el método que mejor les pareció van a tener que configurar todo lo que necesiten, lo mejor seria usar menuconfig pq el dia q no tienen por alguna razon andando el servidor x (y me ha pasado) se van a querer matar! y aunque ahora voy a intentar explicarles lo mas importante, va a depender, mayormente, de su criterio y hardware.

Basandome en un kernel 2.6

--General Setup

Generalmente no van a necesitar tocar nada aca (puse la opción porque el titulo les va a parecer tentador, pero no... let it be)

--Loadable module support

Aca tienen las opciones para poder cargar / descargar / forzar descargar modulos, tanto como habilitar la carga automatica de modulos del kernel (se cargan automaticamente según se vayan necesitando) y el soporte para modulos que pertenecen a otras versiones del kernel.

--Processor type and features

Aca eligen la subarquitectura que corresponde (dejenlo como estan a no ser que su plataforma no sea una pc), el tipo de procesador, aca pongan el micro que tienen, si su sistema es UP o SMP (Uni-processor o Symmetric multi-processing) (Si tienen un p4 con HT pueden veneficiarse con la opción SMP), la función preemptible kernel (Uno de las mejores opciones, creanme que van a notar mucho la diferencia uds), APIC, cooprocesador matemático, MTRR (se usa para controlar los accesos del procesador a los rangos de memoria, o sea... activenlo, esto afecta mucho el rendimiento si no lo tienen seteado).

--Power management option

está mas que claro, utilizen la que mas les guste, dejenlo como esta o ninguna.

--Bus options

Aca especifican como va a ser el modo de acceso del PCI (puede ser directo, según lo que especifique el bios o cualquiera de las dos opciones).

Si tienen slots ISA... habiliten el soporte para el mismo si no tienen ISA saquenlo!.

Aca tambien van a encontrar soporte para PCMCIA/CardBus (si no es notebook saquen esto) y PCI Hotplug (dudo q alguien tenga esto).

--Executable file formats

pasamos de largo!

--Device drivers

Lo importante aca es:

--Parallel port (si tenes impresora paralelo obvio q lo necesitas, si no sacalo!)

--Plug and Play Support

--Block devices... asegurense de tener habilitado el loopback, lo van a necesitar. Tambien RAM disk.

--ATA/ATAPI/MFM/RLL support

Esta es una de las partes mas importantes en cuanto a rendimiento de su sistema respecta. Aca estan los controladores IDE...

mínimamente van a querer habilitar 'Include IDE/ATA-2 DISK support','Include IDE/ATAPI CDROM support','SCSI emulation support','PCI IDE chipset support','Sharing PCI IDE interrupts support', 'Generic PCI bus-master DMA support',' Use PCI DMA by default when available' y luego van a tener que escoger el driver del chipset que corresponda a su motherboard, en mi caso como es un mother con chipset SIS lo tengo configurado con el 'SiS5513 chipset support'.

--SCSI device support

Aca ponemos legacy SCSI support

SCSI disk support

SCSI cdrom support

SCSI generick support

estos los vamos a necesitar si queremos montar por ej un pendrive!

--Multi-device support (RAID and LVM)

esto saquenlo a menos q tengan raid en su pc!

--IEEE 1394 (FireWire) support

Si no tenes firewire al pedo, salcalo!

--I2O device support (Intelligent I/O support) (Si no saben no toquen, como yo).

--Networking support

Esta parte es tambien de las mas importantes, aca no solo van a elegir el tipo de adaptador que tienen sino que tambien, como quieren que funcione (bridge, routed, etc.), protocolos (IPV4, IPV6, IPX, PPP, SLIP, CSLIP), filtros (IPCHAIN, IPTABLES), fare queues y mil mil cosas mas. Es inmensa la cantidad de cosas que pueden habilitad aca y me tadaría demasiado tiempo explicar una por una para que sirve (y buscar información de las que no tengo idea para no chamuyarlos). Solo limitense a habilitar la/las placas de red que tengan esto lo hacen en la seccion ethernet y depende de la velocidad de sus placas! y las opciones de PPP/SLIP.

--ISDN subsystem

si hay algun loco con una conección ISDN, metale mano nomas.

--Input device support

joystick, mouse, touchscreens, pc speacker eso aca!

--Character devices

Aca van a setear los puertos serie, soporte para impresoras paralelo, y el soporte AGP (/dev/agpgart), aca solo ponen esta opcion y la placa de video q tengan, si es una placa de video nvidia y queremos untilizarla con la aceleracion solo esta opcion y debemos sacar todas las demas, si si y el q dice nvidia tb!

--I2C

Bien, esto es interesante aca yo puse todo como modulo, esto sirve para monitorear los sensores de nuestro motherboard, aca les dejo un link de como usar este soporte! Se pueden dar una vuelta por mi blog y ver el post sobre lm_sensors!

--Multimedia device

alguna capturadora de video? si no sacalo!

--Graphic Support

Aca ponen:

Frame buffer devices

VGA 16 color graphic support

Vesa VGA support

y virtual frame buffer support

y en caso de tener alguna de esas placas de video ponganla, insisto q si queres usar tu nvidia con la aceleracion y el driver nvidia no pongas la opcion nvidia.

--Sound

Bien, aca ponene el 1ro y en la 2da opcion entran y ponen el 1ro el 2do y todos los OSS

se van a la parte de PCI y ponen su placa de sonido!

Solo seteen la placa de sonido que corresponda. Para aquellos con placas de sonido AC97 usen el driver Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111.

Para aquellos con la misma placa pero con mothers basados en el chipset VIA el driver es VIA 82C686A/B, 8233 South Bridge si no me equivoco.

Si quieren pueden usar OSS pero les aviso que en un futuro no muy lejano esa opción va a desaparecer del kernel.

--USB support

aca pongan todos los q dice HCI y busquen las cosas usb q puedan tener, si tienen un pendrive pongan el soporte para mass storage. el resto saquenlo!

--File Systems

Este es el tipo de File systems que puede manejar el kernel.

El sistema de archivos mas común es el Ext2, Ext3 o Reiser, sobre el que uds instalaron, seguramente, su sistema GNU/linux, Yo puse soporte para todos!.

Si quieren poder montar sus particiones de windows van a tener que habilitar las opciones que correspondan en el submenu DOS/FAT/NT Filesystems. Lo mismo para los CD-ROM/DVD... ISO9660 7 joliet y UDF Support.

Una vez que setearon todo a su gusto le dan al Exit, cuando les pregunte si quieren salvar la nueva configuración del kernel le dan que si. En ese momento los va a devolver al shell.


Los paso para compilar el kernel 2.6 son tan fáciles como hacer un:


make bzImage

make modules

make modules_install

Después de esto solo nos queda mover el kernel propiamente dicho (arch/i386/boot/bzImage) a /boot con el nombre bzImage-2.6.x-X donde x es la version de kernel y X es tu version y el System.map-2.6.x-X es obvio q van los mismos q antes, en la raiz de los sources del kernel a la misma carpeta (/boot).

Luego hay q editar el bootloader

para Grub

editamos /boot/grub/menu.lst

title Linux-2.6.x.X

root (hd0,1)

kernel /boot/bzImage-2.6.x.X ro root=LABEL=/ <--- aca pone lo mismo q ya tenes escrito para el otro kernel!

para lilo

editamos /etc/lilo.conf

image=/boot/bzImage-2.6.x.X

label=Linux-2.6.x.X

root=/dev/hdaX <-- aca X es tu numero de particion.

read-only

guardar y no olvidarse de ejecutar el comando "lilo" para que grabe los nuevos parametros en el MBR. Para grub no es necesario mas que editar el archivo!

Reinicien y Listo! Ya tienen un nuevo Kernel, si al cargar kernel panic a no desesperar es cuestion de configuracion del kernel, carguen el kernel anterior y revisen todos los pasos!

Bueno, esto solo pretende ser general de lo que van a encontrar en un kernel y para que puede servir cada cosa.

Cada una de las opciones salvo las generales, dependen pura y exclusivamente de tu PC.

El que tenga alguna drama, me manda un mail a hernan82arg2004@ciudad.com.ar


Saludos y espero q sirva!

Compilando el kernel Linux 2.6.x en 8 pasos

Copyright (C) 2004 Marco Antonio Islas Cruz
Permision is granted to copy, distribute and/or midify this document
under the therms os the GNU Free Documentations License, Version 1.1
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. http://www.gnu.org/copyleft/fdl.html

Bien, en este pequeño manualito, veremos de una forma rapida y sencilla el proceso de compilacion del Kernel en Linux.

Por si no lo sabes, el kernel es el "corazon" de cualquier Sistema Operativo. asi, SunOS, *BSD, Linux, MS-DOS, Windows u otros sistemas tienen un kernel que administra los recursos del sistema.

Una de las razones por las que GNU/Linux es uno de los sistemas mas poderosos, es por constante actualizacion del kernel. "Actualizar el nucleo (el kernel) es simple asunto de juntar las fuentes y compilarlo uno mismo. Se debe compilar el nucleo por si mismo para activar o desactivar ciertas funciones, ademas de asegurarse de que el nucleo estara optimizado para correr en esa maquina. El proceso es casi indoloro"1.

La compilacion de la que se hace mencion en este documento fueron realizadas en Slackware GNU/Linux 10.0, Aunque en todas las distribuciones deberia ser practicamente igual puede haber ligeros cambios,


1-. Bien, lo primero que haremos sera descargarnos las fuentes del kernel, lo podemos hacer entrando en www.kernel.org, de donde podremos descargar el parche (Nota: Al referirse como parchar o parche, no se refiere a "Corregir errores" o "Tapar hoyos", sino al echo de actualizar sin tener que compilar TODO el nucleo), asi como el codigo fuente completo del nucleo linux. Al momento de escribir estas lineas, el kernel mas nuevo es el reciente Kernel 2.6.0.

2.- Una vez que ya tenemos las fuentes de nuestro kernel lo descompactamos en "/usr/src/", como el kernel esta empaquetado con dos diferentes metodos, mostraremos los dos:

linux-2.6.x.tar.bz2

# tar -xjvf linux-2.6.x.tar.bz2
# bzip2 -d linux-2.6.x.tar.bz2 | tar -xvf


linux-2.6.x.tar.gz

# tar -xzvf linux-2.6.x.tar.gz
# gzip -d linux-2.6.x.tar.gz | tar -xvf


3.- Esto nos generara una carpeta en donde se encuentran las fuentes del kernel algo asi como "/usr/src/linux-2.6.x/", podemos crear un enlace simbolico para nuestra carpeta, llamandolo "linux" (/usr/src/linux), esto porque muchos programas se referiran a las fuentes por /usr/src/linux/. De esta manera no tendremos que cambiar el nombre del directorio. Lo haremos de la siguiente manera:

#ln -s /usr/src/linux-2.6.x/ /usr/src/linux


4.- En este momento, tenemos lo necesario para empezar con la configuracion de nuestro kernel, asi que dentro de la carpeta que contiene las fuentes ejecutaremos el comando "make" con la variable "config","menuconfig" o "xconfig".


#make config

#make menuconfig

#make xconfig


Cualquiera de las tres opciones son para configurar el kernel, y van de mas complicado a mas sencillo. Con "make config" se nos haran preguntas sobre las opciones, todas y cada una de ellas acerca de la configuracion del modulo (Nada recomendable, es un proceso mas tardado de lo que imaginas) este proceso es en modo texto. "make menuconfig" tambien es un proceso en modo texto, con la diferencia de que aqui apreciaremos todo en un menu. Con "make xconfig" realizaremos la configuracion del kernel en modo grafico --Solo si contamos con X--, de todas esta es la opcion mas recomendada, pues es mas sencilla y organizada.

La configuracion del kernel no la explicare, pues es un proceso que cada quien lo tiene que realizar ajustanto el kernel a sus necesidades. La recomendacion que puedo hacer es meter en el kernel lo que es realmente necesario y que casi siempre se va a utilizar. El kernel se carga completo desde un principio, asi que si metemos en el kernel muchos modulos, se hara muy grande y nos consumira mas memoria y ciclos del CPU. Ahora, tampoco es bueno dejarlo todo como modulo, si dejamos como modulo por ejemplo la tarjeta de red en una computadora que esta siempre conectada, el proceso de carga y descarga del modulo cada vez que el dispositivo se utiliza ralentizaria nuestro kernel. Tambien hay que tomar en cuenta ke no debemos poner como modulos cosas que seran necesarias para booteo de nuestra maquina. Por ejemplo, si estamos utilizando el sistema de ficheros Ext3 (Ext2 + Journaling), en nuestro kernel lo marcamos como modulo, y nuestro kernel reside en una particion Ext3, nuestro kernel sera incapaz de bootear por si solo (a menos que utilices Initrd). Pues a la hora de intentar cargarse no podra cargar el modulo (pues no tiene soporte para Ext3), no podra leer el sistema de ficheros y por consiguiente, no podra Bootear.

En caso de que tu kernel no funcione a la primera (Es normal que a la primera no nos quede el kernel como lo queremos), debe haber sido porque en alguna de las opciones la marcaste con "m"(modulo) o como "n"(no incluir ni en el kernel ni como modulo). Recuerda siempre guardar el archivo de configuracion de tu kernel, pues en caso de tener que reconfigurarlo, no tendras que partir desde cero.

5.- Ok, ya que tenemos configurado nuestro kernel, se nos instara a que realizemos la compilacion del mismo, es un proceso sencillo, y nuestro ordenador hara todo :), para ello ejecutaremos "make dep" para generar las dependencias, "make clean" para limpiar de anteriores binarios, y "make bzImage" para generar la imagen comprimida del kernel. Para ahorrarnos tiempo, marquemoslo todo en la misma linea de comando:

#[make dep;]make clean; make bzImage


Nota: En los kernels 2.6.x no es necesario hacer el "make dep" esto solo es necesario para kernels inferiores o iguales a la verison 2.4.x

En esto de la compilacion nos tardara un rato, dependiendo de lo que le hayamos metido a nuestro kernel, asi como de la velocidad de nuestro micro. Referencia: Tengo un procesador P4-M a 1.8 Ghz, tardó aproximadamente 15-20 mins cambiando solo algunos parametros. En este momento podemos despegarnos de la computadora por un minuto, tal vez para preparar lo que haremos mientras compilamos los modulos ;-).

6.- Una vez compilado el kernel tendremos que compilar todo lo que hayamos marcado como modulos. Este proceso es quiza el mas tardado de todos, pues habra una buena cantidad de modulos que compilar (a menos que sepas bien lo que necesitas y le hayas kitado todos los innecesarios). Como ya habia dicho antes, es buen momento para retirarse a tomar cafe, a platicar con alguien ver una pelicula o hacer algo mas. Referencia: En mi maquina ha tardado algo asi de una hora compilando los modulos, quite drivers innecesarios, soporte para sistemas de ficheros que no utilizo, y algunos los mande al kernel.

Esto lo haremos con

#make modules


Una vez compilados los modulos, no se nos debe olividar instalarlos en la carpeta de modulos correspondiente a nuestro kernel, lo marcaremos con :

#make modules_install


7.- Realizando esto, ya tenemos todo lo que necesitamos en binarios, no mas compilaciones (si todo salio bien). La imagen comprimida de nuestro kernel se encuentra en la carpeta "/usr/src/linux-2.6.0/arch/i386/boot/" (si fue compilado para i386). Lo que haremos sera copiar el archivo bzImage a /boot/. Por seguridad cambiemos el nombre.

#cp bzImage /boot/2.6.x


8.- Ya en este lugar, lo que tendremos que hacer es una imagen de booteo (initrd).

* Por que necesito initrd? (tomado deREADME.initrd del disco 2 Slackware 10.0 "testing/packages/linux-2.6.7" )
o La razon mas usual para usar initrd es porque tu necesitas cargar los modulos de kernel antes de poder montar la particion de root. Usualmente estos modulos son requeridos para soportar el sistema de ficheros usados en la particion raiz (ext3, reiserfs, xfs), o tambien el controlador del disco duro (SCSI, RAID,etc). Escecialmente, hay diferentes opciones disponibles en los modernos kernels Linux que no es practico hacer kernels para cubrir las necesidades de todos. Es mucho mas flexible crear un solo kernel generico y una serie de modulos para este kernel.
* Como genero una imagen initrd??
o Entra en /boot
o

mkinitrd -c -k 2.6.7 -m jbd:ext3 -f ext3 -r /dev/hdb3

o Esto funcionara para crear una imagen initrd en /boot para el kernel 2.6.7 con sistema de ficheros ext3, es necesario que esta en /dev/hdb3. Nota que es necesario tener ambos modulos (jbd y ext3) para poder utilizarlo.


9.- Ya por ultimo tendremos que ajustar nuestro gestor de arranque para que bootee con el nuevo kenel, en LiLo seria algo asi:

image=/boot/vmlinuz
label="linux"
root=/dev/hda8
initrd=/boot/initrd.gz
*append="quiet devfs=mount acpi=off"
*vga=788
read-only

Nota: Los marcados con * son extra, he tomado esta configuracion de mi lilo.conf

No es para nada recomendable, es mas seria algo "estupido", borrar la imagen del kernel anterior en /boot/, o eliminarla de nuestro gestor de arranque, pues, si por alguna razon nuestro kernel no es capaz de bootear, lo necesitaremos para corregir los errores. A menos que estemos COMPLETAMENTE SEGUROS de que nuestro kernel si funciona bien

Configuración y Compilación del Kernel

Autor: PinkX
La intención de este documento es orientar a quienes quieren, por primera vez, compilar ellos mismos el kernel de su máquina. Comenzaré por explicar conceptos básicos como qué es el kernel, y describiré algunas de las características más comunes e importantes.

En ningún caso pretendo describir la funcionalidad de cada una de las opciones que forman parte del kernel, sino únicamente servir de guía en este importante paso.

¿Qué es el Kernel?
Debemos comenzar por respondernos esta pregunta. El Kernel en sí es el corazón o núcleo del Sistema Operativo. En nuestro caso, el kernel se llama Linux, y el Sistema Operativo en sí lo compone el kernel junto con una serie de programas y aplicaciones.

¿Para qué compilar el Kernel?
Una pregunta que a veces los usuarios principiantes se hacen es justamente esta: para qué compilar el kernel si ya tienen su máquina funcionando. La respuesta es simple, y es que entre una versión y otra de los distintos kernel se agregan caracterísitcas nuevas al mismo además de una serie de mejoras. Por otro lado, el kernel que acompaña a las distribuciones es un kernel genérico, esto quiere decir que no tiene ningún tipo de optimización para nuestro hardware específico, viene por defecto para procesadores i386, y lo más probable que tenga soporte para una gran cantidad de dispositivos que es innecesaria puesto que no los poseemos.

Por último, el compilar el kernel es un paso altamente educativo y didáctico para comprender en mayor profundidad el funcionamiento del sistema, y siempre es bueno saberlo por si alguien lo pregunta ;-)

¿Qué necesito para poder compilar el kernel?
En primer lugar, un compilador (gcc). Necesitamos además las librerías de desarrollo correspondientes al sistema (glibc), y en algunos casos requeriremos también del ensamblador as que se distribuye en el paquete binutils. Otros ensambladores disponibles para Linux son gasm o nasm.

Una vez que confirmemos la existencia de todas estas herramientas en nuestro sistema, es necesario contar, obviamente, con las fuentes del kernel.

En la mayoría de las distribuciones estas se incluyen en el disco de instalación, pero no se instalan por defecto. De todas maneras es recomendable bajar siempre la última versión puesto que la mayoría de los fabricantes de distribuciones incluye código adicional en su kernel que no forma parte del original.

Si tienes la seguridad que cuentas con los fuentes 100% originales sin modificaciones, es posible que te actualices a la última versión a través de parches.

Los parches son archivos que contienen las diferencias entre un árbol de fuentes y otro. Por ende, es mucho más conveniente actualizar nuestro kernel a través de este metodo sobre todo si contamos con una conexión a internet relativamente lenta, puesto que los parches son de muy pequeño tamaño.

Parchando el kernel
Si tienes una versión completa del kernel, no es necesario que leas esta sección, aunque puedes hacerlo para fines educativos.

Los parches se aplican en forma consecutiva. Esto quiere decir que, si por ejemplo, tu versión actual del kernel es la 2.2.13 y deseas actualizarte a la 2.2.16, necesitas los parches 2.2.14, 2.2.15 y 2.2.16. Estos deben ser aplicados en ese orden, uno después del otro, y no es necesario realizar una compilación en cada paso. Es necesario remarcar que no es posible parchar una versión mayor del kernel: del 2.0.36 no se puede parchar al 2.2.

Siguiendo el ejemplo anterior en que actualizaremos el kernel 2.2.13 al 2.2.16, supondremos que los parches se encuentran en nuestro directorio home para el usuario usuario, en formato gzip. El árbol de nuestro kernel actual se encuentra en /usr/src/linux, que a su vez debe ser un link simbólico a /usr/src/linux-2.2.13. Dentro de ese directorio, llamamos el siguiente comando:

localhost:/usr/src/linux# gzip -cd /home/usuario/patch-2.2.14.gz | patch -p0
localhost:/usr/src/linux# gzip -cd /home/usuario/patch-2.2.15.gz | patch -p0
localhost:/usr/src/linux# gzip -cd /home/usuario/patch-2.2.16.gz | patch -p0

Esta serie de comandos puede ser reemplazada por el siguiente, siempre y cuando tengamos solo aquellos parches en dicha ubicación:

localhost:/usr/src/linux# gzip -cd /home/usuario/patch-2.2.1* | patch -p0

Si después de lo anterior no obtenemos ningún mensaje de error (y espero que así sea), todo está bien y ahora contamos con un árbol actualizado con la última versión del kernel. Entonces actualizamos el link simbólico, renombrando el directorio primero:

localhost:/usr/src# mv linux-2.2.13 linux-2.2.16
localhost:/usr/src# ln -sf linux-2.2.16 linux

Finalmente tenemos todo listo para configurar y compilar.

El proceso de configuración
Como mencioné en un principio, una de las razones por la cual compilar el kernel es para ajustarlo y optimizarlo a nuestro hardware. Esto se hace por medio de la configuración, un proceso con una gran cantidad de opciones. Acá trataré de describir solo aquellas más comunes e importantes.

Antes de comenzar, es necesario tomar en cuenta lo siguiente: muchas de las características propias del kernel pueden ser compiladas dentro del mismo o como módulos. La diferencia radica principalmente en que, mientras más modularizado sea nuestro kernel, más pequeño será el tamaño de su imagen, lo que por ende nos lleva a una mejor utilización de la memoria.

Por otro lado, la utilización de módulos tiene otra gran ventaja: un kernel dinámico hace más facil la tarea de agregar o eliminar hardware, puesto que solamente es necesario compilar e instalar o eliminar el módulo correspondiente, respectivamente, y no reconfigurar todas las opciones del sistema y compilar un nuevo kernel. Además, los módulos son cargados en memoria y eliminados de ella en demanda, haciendo nuevamente un manejo más eficiente de los recursos.

Por último, cabe decir que hay quienes ven en la existencia de módulos un gran riesgo de seguridad: un módulo malicioso puede ser capaz de esconder procesos, usuarios, etc. (por ejemplo el módulo heroine). Por supuesto, los módulos requieren de privilegios root para ser instalados, por lo que la máquina debe tener un compromiso de seguridad previo para que esto suceda (cosa que un buen administrador no permitirá ;-)).

Dicho todo esto, vamos a lo nuestro. La configuración del kernel se lleva a cabo a través de un programa interactivo que muestra todas las posibles opciones. En este sentido, existen tres posibilidades: un sencillo programa de consola que consta en una serie de preguntas (no recomendado, es muy tedioso y no da la posibilidad de retroceder), otro es un programa al igual de consola pero con una interfaz basada en ncurses lo que lo hace mucho más amigable para el usuario (definitivamente la mejor alternativa), y por último un programa similar pero para X11 (no recomendado puesto que puede presentar problemas de estabilidad). Estos programas se ejecutan, respectivamente, de la siguiente manera:

localhost:/usr/src/linux# make config

localhost:/usr/src/linux# make menuconfig

localhost:/usr/src/linux# make xconfig

Todos estos cuentan con pantallas de ayuda para la gran mayoría de cada una de las opciones de configuración. Como mencioné más arriba, la segunda alternativa es la más segura, y es según la cual me guiaré en el resto de este documento.

Al ejecutar este comando, nos encontraremos luego de un instante frente a una pantalla con una serie de opciones.

¿Qué elegir?
Las opciones a elegir pueden presentarse de la siguiente manera:

[*] Caracteristica que solo es posible compilar dentro del kernel
< > Opcion que puede ser compilada como modulo independiente

Como la primera, las opciones que presentan ese tipo de paréntesis solamente se pueden compilar como parte del kernel y las opciones son "Y" o "N", mientras que en la segunda se nos da la posibilidad de implantarlas como módulo donde las opciones son "Y", "M" (módulo, o también interpretado como maybe, quizás) o "N".

A continuación, describiré brevemente las categorías y opciones más importantes:

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers

Al seleccionar esta opción se nos preguntará durante el proceso de configuración si queremos incluir en nuestro kernel características muy nuevas y/o experimentales, incrementando la cantidad de posibilidades.

Processor type and features --->
(386) Processor family
(1GB) Maximum Physical Memory
[ ] Math emulation
[*] MTRR (Memory Type Range Register) support
[ ] Symmetric multi-processing support

En esta sección se indica el tipo de procesador y sus características: primero seleccionamos la familia de la CPU (386, 486, 586, 686, etc.), es importante elegir la que corresponde y no una mayor a la nuestra.

El resto de las opciones debieran de ser comunes para la mayoría de los usuarios: la cantidad máxima de memoria física (1 o 2 Gb), emulación matemática (no es necesario a menos que tengamos un 386 sin coprocesador), MTRR (muy importante para quienes poseen aceleradores gráficos), y SMP (sólo para quienes tienen procesadores duales/múltiples).

Loadable module support --->
[*] Enable loadable module support
[*] Set version information on all symbols for modules
[*] Kernel module loader

Definitivamente queremos soporte para las 3 ;-)

General setup --->

Opciones generales de configuración: soporte para redes, PCI, entre otros. De suma importancia:

[*] System V IPC
[*] BSD Process Accounting
[*] Sysctl support
<*> Kernel support for a.out binaries
<*> Kernel support for ELF binaries

Recomendado leer las pantallas de ayuda para cada una de las opciones ("?")

Plug and Play support --->

Sorpresa: soporte para dispositivos PnP (plug 'n pray)

Block devices --->

Configuración de dispositivos adicionales: de suma importancia, no olvidar: Si contamos con un disco duro IDE desde el cual booteamos Linux, el soporte para este tipo de dispositivos NO debe ser configurado como módulo; esto es motivo para un kernel panic al momento de iniciar el sistema. Lo mismo va para quienes poseen discos SCSI.

<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
<*> Include IDE/ATA-2 DISK support

El resto de las opciones son para dispositivos específicos en su mayoría, nuevamente "?".

Networking options --->

Opciones de red: soporte para firewall, IP aliasing, masquerading, entre otros. No olvidar "?".

SCSI support --->

Soporte para dispositivos SCSI, desde controladoras hasta una variedad de periféricos.

Network device support --->

Soporte para diversos dispositivos de red, como adaptadores Ethernet, Token Ring, X.25, etc. ("?").

ISDN subsystem --->

Configuración ISDN. "?".

Character devices --->

Diversas opciones de dispositivos tales como soporte para terminales virtuales, consolas, puertos seriales, autodetección de IRQs, mouse, joysticks, adaptadores de captura de video y otros. "?".

Filesystems --->

Soporte para diversos sistemas de archivos: Ni se te ocurra compilar el soporte para ext2 como módulo. Como siempre, "?".

Console drivers --->

Drivers para la consola de texto, desde el normal VGA hasta extensión framebuffer. Nuevamente "?".

Sound --->

Soporte para sonido, junto con módulos para una gran cantidad de tarjetas. Muy importante ver la ayuda correspondiente a la tuya ("?") además de la documentación existente en /usr/src/linux/Documentation/sound.

Kernel hacking --->

La única opción que encontraremos dentro de esta categoría es Magic SysRq key, la cual nos permite, si la habilitamos, poder acceder a pantallas informativas y otras funciones muy útiles (sobre todo si se cae el sistema) a través de combinaciones de teclas. Una vez más recomiendo leer la ayuda correspondiente ("?").

Y a continuación, ¿qué?
Una vez finalizada la configuración del kernel (y estando seguros de que todo está como corresponde), debemos salir del programa y guardar los cambios.

Hecho esto, procedemos a generar las dependencias y limpiar los objetos residentes anteriores que puedan andar por ahi:

localhost:/usr/src/linux# make dep && make clean

Pregunta (para quienes no saben): ¿qué significa el &&? Respuesta: es un operador lógico que significa and (y), en términos prácticos, separa dos comandos, y siempre y cuando la salida del primero haya sido true (verdadero), o sea, haya tenido éxito, ejecutará el siguiente. De esta forma, nos aseguramos que solo se continuará si es que no hay errores.

A continuación, la parte más larga: la compilación de la imagen del kernel:

localhost:/usr/src/linux# make zImage

Mientras esto ocurre, podemos disfrutar de una taza de café, aunque en los procesadores actuales esto es cada vez menos posible ;-)

Si al finalizar este proceso obtenemos un mensaje diciéndonos que el sistema es demasiado grande (system too big) tenemos dos posibilidades: tratar de compilar la imagen en un formato comprimido reemplazando el comando anterior por:

localhost:/usr/src/linux# make bzImage

o bien modularizando en mayor forma nuestro sistema, esto es, eliminando aquellas opciones innecesarias y utilizar la mayor cantidad de módulos posibles. Luego repetir el paso anterior.

Si, por el contrario, el sistema no nos arrojó ningún mensaje de error, estamos listos para el siguiente paso: compilar los módulos, e instalarlos:

localhost:/usr/src/linux# make modules && make modules_install

Otra pequeña espera (quizás mayor que la primera). Una vez terminado, estamos listos para nuestro siguiente paso.

La instalación del nuevo kernel
Si estás aquís es porque (espero) durante todo el proceso no has sufrido ningún fallo. Nuestro siguiente paso puede ser el más complejo y es instalar de forma definitiva el nuevo kernel en el sistema.

Aunque, según me han dicho, esto se puede hacer fácilmente en forma automática a través del siguiente comando:

localhost:/usr/src/linux:# make install

El asunto es que nunca lo he probado yo personalmente, ni me llama la atención hacerlo. Si eres de esas personas como yo, quienes prefieren hacer todo manualmente y entender un poco mejor como funciona todo esto, entonces sigue las instrucciones que se dan a continuación (en caso contrario y asumiendo que el comando anterior funcionó puedes dejar de leer):

Lo primero es copiar la imagen generada al directorio /boot del sistema. La ubicacion original de la imagen depende de la arquitectura, En este caso utilizaremos la del x86:

localhost:/usr/src/linux:# cp arch/i386/boot/zImage /boot/vmlinuz-2.2.16

Donde, por supuesto, reemplazaremos zImage con bzImage en caso de que hayamos generado la imagen con ese procedimiento, y tambien cambiamos el nombre del destino a la versión del kernel correspondiente. A modo de idea: yo mantengo links simbólicos a dos versiones del kernel, de esta manera al actualizarlo solo debo además actualizar los links, y no reconfigurar LILO:

localhost:/:# ln -sf /boot/vmlinuz-2.2.16 /boot/vmlinuz
localhost:/:# ln -sf /boot/vmlinuz-2.2.13 /boot/vmlinuz-old

Esto es, por supuesto, siguiendo nuestro primer ejemplo en el cual deseamos actualizar desde la versión 2.2.13 a la 2.2.16. Paso siguiente: actualizar el LILO.

Como mencioné anteriormente, si utilizas el sistema de links simbólicos descrito arriba solo será necesario que el LILO lo modifiques una primera vez. Lo que a continuación se muestra es un extracto del archivo de configuración de LILO, ubicado en /etc/lilo.conf correspondiente a la sección de la imagen de Linux:

image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only

La idea es agregar una nueva sección, correspondiente a la nueva imagen, y cambiar el nombre de etiqueta de la actual, por lo que esta parte de nuestro archivo debiera de quedar de la siguiente manera:

image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only

image = /boot/vmlinuz-old
root = /dev/hda1
label = Linux-old
read-only

No es mi intención en este caso describir la sintaxis de la configuración del LILO sino citarlo para lo que es necesario. Si deseas más detalles al respecto puedes referirte a la página del manual del lilo.conf(5).

El último paso: actualizar el LILO. Para eso, simplemente, lo ejecutamos:

localhost:/# lilo
Added Linux *
Added Linux-old

Lo olvidaba. Recomiendo también crear un link simbólico para el archivo System.map con el fin de no tener que copiarlo cada vez que compilemos un nuevo kernel (este archivo contiene información específica de la versión sobre los símbolos en los módulos):

localhost:/# ln -sf /usr/src/linux/System.map /boot/System.map

Fin
Eso es todo. Fin. Reinicia el nuevo kernel. Si funciona, felicitaciones. Si no, revisa cual pudo haber sido tu error.

Que es el kernel?

* Qué es el Kernel?
* Dónde conseguir el kernel
* Configuración e instalación del kernel
* Parches(patches) para el kernel
* Consejos sobre el kernel
* Enlaces sobre el kernel
* Directorio del kernel


Que es el kernel?

El kernel o nucleo de linux se podria definir como el corazon de este sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos.

Las funciones mas importantes del mismo, aunque no las unicas, son:

* Administracion de la memoria, para todos los programas en ejecucion.
* Administracion del tiempo de procesador, que estos programas en ejecucion utilizan.
* Es el encargado de que podamos acceder a los perifericos/elementos de nuestro ordenador de una manera comoda.

Existen dos versiones del Linux kernel:

* Version de produccion: La version de produccion, es la version estable hasta el momento. Esta version es el resultado final de las versiones de desarrollo o experimentales.

Cuando el equipo de desarrollo del kernel experimental, decide que ha conseguido un kernel estable y con la suficiente calidad, se lanza una nueva version de producion o estable. Esta version es la que se deberia utilizar para un uso normal del sistema, ya que son las versiones consideradas mas estables y libres de fallos en el momento de su lanzamiento.

* Version de desarrollo: Esta version es experimental y es la que utilizan los desarrolladores para programar, comprobar y verificar nuevas caracteristicas, correcciones, etc. Estos nucleos suelen ser inestables y no se deberian usar, a no ser que sepas lo que haces.

Como interpretar los numeros de las versiones:

* Las versiones del kernel se numeran con 3 numeros, de la siguiente forma: XX.YY.ZZ

XX: Indica la serie principal del kernel. Hasta el momento solo existen la 1 y 2. Este numero cambia cuando la manera de funcionamiento del kernel ha sufrido un cambio muy importante.
YY: Indica si la version es de desarrollo o de produccion. Un numero impar, significa que es de desarrollo, uno par, que es de produccion.
ZZ: Indica nuevas revisiones dentro de una version, en las que lo unico que se ha modificado, son fallos de programacion/bugs.

* Unos ejemplos nos ayudaran a entenderlo mejor:

ej1: version del kernel 2.4.0: Kernel de la serie 2 (XX=2), version de produccion 4 (YY=4 par), primera version de 2.4 (ZZ=0)
ej2: version del kernel 2.4.1: Kernel de la serie 2, version 4, en el que se han corregido errores de programacion presentes en la version 2.4.0 (ZZ=1)
ej3: version del kernel 2.5.0: version 0 del kernel de desarrollo 2.5.

Donde conseguir el kernel

El kernel se puede bajar de un gran numero de servidores en internet. En el directorio del kernel en este servidor, podras bajar las ultimas versiones del Kernel, bajadas directamente de http://www.kernel.org/.

En este enlace tienes la lista internacional oficial de servidores espejos, de donde es posible bajarse cualquier version del kernel (ultima y antiguas).

Configuracion e instalacion de un nuevo kernel

Este es uno de los temas que asustan a los nuevos usuarios de Linux. Lo primero deciros que no hay razon para asustarse, la configuracion e instalacion de un nuevo kernel en nuestro sistema es mas facil de lo suena.

Lo que si hay que hacer es tener claro una serie de cosas antes de ponernos a trabajar, para asi evitar problemas. A continuacion tienes una pequena guia sobre como configurar e instalar un nuevo kernel en tu sistema.

Has decidido instalar un nuevo kernel en tu sistema, que es lo que tenemos que hacer?

1. Bajarte la ultima version. De donde? Leete la seccion anterior.

NOTA: Si vais a instalar un kernel de las ultimas series de produccion, teneis que tener en cuenta que algunas distribuciones (si son antiguas) pueden no estar preparadas para hacer uso de estas series. Si vuestra distribucion no viene preparada para soportar los ultimos kernels, teneis que actualizar una serie de paquetes/programas antes de instalar el nuevo kernel (mas informacion en la documentacion que acompaña al kernel). o actualizar a una distribucion o version de vuestra distribucion que los soporte.

2. Tener claro lo que vamos a hacer, leete el documento HOWTO sobre el kernel (Ingles / Castellano)
3. Tener claro las opciones que tenemos que configurar, para poder utilizar el hardware de nuestro sistema, asi como las caracteristicas que queremos utilizar. Por ejemplo, si no utilizamos un dispositivo SCSI, no tenemos que configurar nada en el apartado SCSI de nuestro kernel. Asi nos ahorramos espacio y tiempo.

4. Entrar como root: su root
5. Copiar el archivo que te has bajado al directorio /usr/src/ cp linux-xx.xx.xx.tar.bz2 /usr/src/
6. Descomprimirlo y desempaquetarlo: tar -xvzpf linux-xx.yy.zz.tar.gz

NOTA IMPORTANTE: El archivo linux-xx.yy.zz.tar se desempaquetara en el directorio /usr/src/linux
Si ya existe un directorio llamado linux en tu sistema, renombralo, p.ej: mv linux linux-old . En algunas distribuciones, linux es un enlace simbolico a linux-xx.yy.zz, borra este enlace simbolico. Es importante que no exista ningun directorio/enlace simbolico llamado linux, antes de desempaquetar la nueva version.

7. Entrar en /usr/src/linux: cd /usr/src/linux
8. Configurar el kernel, esto se puede hacer de tres maneras diferentes:

make config (modo texto)

make menuconfig (modo texto con menus)

make xconfig (X-windows version)

9. Os recomiendo el ultimo comando o el segundo, totalmente desaconsejado usar el primero.

10. Os recomiendo que las opciones que vienen por defecto no las toqueis, si no sabeis lo que haceis. Configurar las opciones que quereis tener en vuestro nuevo kernel. Una vez terminada la configuracion, grabar los cambios y salir del programa de configuracion.

11. Una vez terminado el proceso de configuracion, tenemos que compilar nuestro nuevo nucleo. Para ello hay que hacer lo siguiente:

make dep
make clean
make bzImage

12. Si en el proceso de configuracion, elegimos alguna opcion como modulo, tendremos que compilar/instalar dichos modulos:

make modules
make modules_install

NOTA: No olvidar ejecutar como root el comando depmod -a la primera vez que arranqueis con vuestro nuevo kernel, para computar las dependencias entre modulos.

13. Ya tenemos el kernel y los modulos compilados, ahora tenemos que instalarlo. Casi todo el mundo utiliza LILO para arrancar el sistema, por ello explicare como instalarlo utilizando LILO.

Todavia estamos en /usr/src/linux ejecutar el comando make install , esto copiara el kernel que acabamos de crear, a el directorio /boot de nuestro sistema, con el nombre vmlinuz., o como un enlace simbolico vmlinuz -> vmlinuz-xx.yy.zz

14. Ahora tenemos que configurar LILO para que reconozca el nuevo kernel. Tendremos que modificar el fichero /etc/lilo.conf

Aqui teneis un ejemplo, del fichero /etc/lilo.conf antes de modificarlo:

boot=/dev/hda
prompt
timeout=50
image=/boot/vmlinuz-2.0.34
label=linux
root=/dev/hda1
read-only

Y aqui como quedaria despues de la modificacion para que reconozca nuestro nuevo kernel al arrancar:

boot=/dev/hda
prompt
timeout=50
image=/boot/vmlinuz
label=nuevokernel
root=/dev/hda1
read-only
image=/boot/vmlinuz-2.0.34
label=linux
root=/dev/hda1
read-only

15. Ahora solo tenemos que ejecutar el comando /sbin/lilo y arrancar el sistema de nuevo. Si tuviesemos algun problema con el nuevo kernel, siempre podriamos arrancar con el antiguo escribiendo linux cuando arrancamos y nos sale en pantalla lilo: De esta manera podemos entrar y ver que es lo que ha fallado.

NOTA: Recordar que existen multitud de opciones para configurar LILO, y que los ejemplos anteriores, son ejemplos. Puede que vuestro sistema necesite diferentes parametros y opciones. Leeros los documentos HOWTOS sobre el kernel y LILO antes de cambiar nada en vuestro sistema. Al final de esta pagina teneis enlaces a los mismos. Suerte y espero que tengais las cosas un poco mas claras.


Parches (patches) para el Kernel

* Que son los parches y para que sirven:

Un parche para el kernel no es mas que un fichero, que solamente contiene informacion sobre las lineas de codigo que han cambiado desde la version precedente del nucleo. De esta manera, solamente te tienes que bajar un fichero con los cambios, en vez del nucleo al completo. El ahorro en cantidad de Mb bajados es bastante considerable, sobre todo para aquellos que dependen del modem y no tiene una conexion rapida a internet.

Algo a tener muy en cuenta si vais a actualizar el nucleo por medio de parches en vez de bajaros el nucleo al completo, es que teneis que ir actualizando de version a version. Para que se entienda un poco mejor, aqui teneis un ejemplo:

Si teneis el nucleo 2.2.0 y vais a actualizarlo al 2.2.1, os podeis bajar el fichero patch-2.2.1.gz [70Kb] en vez, del nucleo 2.2.1 al completo [12.5Mb]. Pero si teneis el nucleo 2.2.0 y vais a actualizar al 2.2.4, NO os vale bajaros el fichero patch-2.2.4.gz nada mas, tendriais que bajaros el 2.2.1, 2.2.2, 2.2.3 y 2.2.4. Esto es porque los ficheros patch solamente contienen los cambios de version a version.

Si la diferencia entre la version que teneis y la que quereis instalar, es muy grande (p.ej: del 2.2.0 al 2.2.35), no os merece la pena actualizar por medio de parches, en este caso bajaros la version completa.

* Que hacer con un fichero patch-XX.YY.ZZ.gz?:

Ya te has bajado el fichero patch (se pueden bajar del mismo subdirectorio donde esta la version completa), que necesitas para actualizar el kernel, y ahora que haces?. Ahora, hay que aplicarlo al nucleo que tienes y compilar de nuevo. El procedimiento para actualizar el nucleo por medio de ficheros patch es el siguiente:
1. Copia el fichero patch-XX.YY.ZZ.gz al directorio /usr/src : cp patch-XX.YY.ZZ.gz /usr/src/
2. Cambia a este subdirectorio y descomprime el fichero: gunzip patch-XX.YY.ZZ.gz
3. Aplica el parche: patch -s -p0 < patch-XX.YY.ZZ
4. La opcion -s hara que solo se impriman mensajes de error. Si no recibes ningun mensaje de error (como deberia de ser ;-)) solamente te queda entrar en /usr/src/linux: cd /usr/src/linux
5. Y ejecutar make clean, make xconfig, make dep, make bzImage, el resto es igual que en la seccion anterior a partir del punto 12)


Consejos

* Pregunta: Necesito actualizar el kernel que utilizo, cada vez que una nueva version aparece?

Respuesta: NO. Porque? La explicacion es la siguiente:

Cuando un nuevo kernel aparece, puede ser por las siguientes causas:
o Nuevas caracteristicas se han anadido.
o Fallos de programacion se han corregido
o Fallos de seguridad se han corregido.
o Nuevo hardware es soportado.

Si las caracteristicas que se han anadido, no las vamos a utilizar, es evidente que no necesitamos actualizar.
Si los fallos de programacion que se han corregido, afectan a caracteristicas/drivers que no utilizamos, no necesitamos actualizar.
Si no utilizamos el nuevo hardware soportado, tampoco necesitamos actualizar.

De todas maneras es recomendable, actualizar de vez en cuando, sobre todo cuando se corrigen fallos de seguridad o cuando los cambios en el nuevo kernel afectan a caracteristicas/funciones/hardware que utilicemos.

El codigo esta ahi, libre y esperando a ser compilado en un nuevo ordenador, cada usuario debe de decidir cuando es hora de una actualizacion.

* Pregunta: Soy nuevo en Linux y acabo de instalar una distribucion, como actualizo el kernel?

Respuesta: Te aconsejo que esperes un poquito. La distribucion que acabas de instalar (si es de las ultimas) viene con un kernel de los "ultimos", totalmente funcional y que te sirve sin problemas.

Utiliza el sistema un tiempo, familiarizate con el nuevo sistema que acabas de instalar, y cuando comprendas un poco mas como funcionan las cosas, actualiza el kernel. Un buen punto de partida para encontrar informacion sobre el kernel, lo tienes en estas paginas.

Enlaces sobre el kernel

* The Linux Kernel Archives Pagina principal/oficial sobre el kernel
* KernelNotes Mucha informacion sobre kernel
* Linux Mama Actualizaciones no oficiales
* Kernel Howto (Ingles)
* Kernel Como (castellano)
* LILO MiniHowto (Ingles)
* Guia de programacion de modulos para el kernel (ingles)
* The Linux Kernel Libro (ingles)