FSTAB en profundidad
Una de las grandes ventajas de Linux es la posibilidad de utilizar distintos tipos de sistemas de ficheros, desde los variados sistemas de Linux ( desde Ext2 a Ext3 paasndo por ReiserFS y XFS ), los sistemas de ficheros de red ( NFS o SMB ), los de Windows ( Vfat o NTFS ) e incluso los de otros tipos de Unix como por ejemplo el sistema UFS de los BSD.
Para poder trabajar con estos sistemas de ficheros es necesario tener el núcleo del sistemas preparado para ello, ya sea integrando estos sistemas de ficheros en el kernel o agregándolos como módulos.
Montar estos sistemas de ficheros puede ser algo tedioso, no es muy agradable tener que teclear mount y sus opciones cada vez que necesitamos montar un sistema, especialmente si es un sistema que utilizaremos con frecuencia. Es por ello que nos viene muy bien conocer fstab.
Fstab es un fichero que está alojado en el directorio /etc y que posee las configuraciones de los distintos sistemas de ficheros de nuestro sistema operativo, así como el lugar donde se montan y las opciones que se aplican a ellos. Configurar /etc/fstab es necesario para tener un acceso rapido a nuestros datos de Windows, así como para que dicha partición se monte automáticamente al iniciar nuestro Linux. Este artículo se dedicará a explicarnos cual es la estructura de dicho fichero y como configurarlo a nuestro gusto.
Antes que nada veremos mi /etc/fstab y explicaré una por una las columnas, su significado y su uso, para visualizarlo simplemente ejecutamos cat /etc/fstab en consola:
/dev/hda7 swap swap defaults 0 0
/dev/hda5 / ext3 defaults 1 1
/dev/hda2 /mnt/windows ntfs umask=0 0 0
/dev/hda6 /mnt/datos vfat user,umask=0 0 0
/dev/hdd /mnt/cdrom iso9660 noauto,user 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,umask=0,user 0 0
devpts /dev/pts devpts gid=5 0 0
proc /proc proc defaults 0 0
/dev/sda1 /mnt/usb vfat noauto,rw,umask=0,user,sync 0 0
none /sys sysfs defaults 0 0
/dev/hda3 /mnt/freebsd ufs umask=0,user,noauto 0 0
/dev/hda8 /boot ext3 defaults 1 1
Como puede apreciarse cada linea consiste en un sistema de ficheros configurado mediante 6 columnas, procedo ahora a realizar una descripción de cada una de las columnas:
Primer campo
Es el dispositivo o sistema de ficheros que se montará, normalmente sera un fichero ( en Linux todo es un fichero ) del directorio /dev. Con hda se denota el disco duro maestro IDE seguido de un número que indica el número de partición de dicho disco duro.
Para lso dispositivos USB suele usarse sda, tal como puede apreciarse en la linea 9 de mi fstab.
Hay que destacar que devpts y none se utilizan para los sistemas de ficheros que usa internamente Linux.
Segundo campo
Es el directorio en el cual se montará el sistema del primer campo. Hay que destacar que si no hemos creado ese directorio fallará el montaje de dicho sistema.
Tercer campo
Indica el tipo de sistema de ficheros. Como indicaba al principio del documento el núcleo de Linux admite multitud de sistemas de ficheros, tanto para el propio uso e instalación de nuestro sistema operativo como para sistemas auxiliares ( particiones vfat ) o sistemas de ficheros de red.
Muestro aquí una pequeña tabla con ejemplos de algunos de ellos:
EXT2 Sistema de ficheros sin registro para Linux
EXT3 Sistema de ficheros con registro para Linux
VFAT Sistema de Windows ( versión 95, 98 )
NTFS Sistema de Windows ( versión NT, 2000, XP )
NFS Sistema distribuido de Sun
ISO9660 Sistema estándar para CD-ROM
JFS Sistema de ficheros con registro de IBM
REISERFS Sistema de ficheros con registro para Linux
SWAP Espacio de intercambio para Linux
XFS Sistema de ficheros con registro de Silicon Graphics
UFS Sistema de ficheros de los Unix BSD
Los sistemas de ficheros que tiene compilado el núcleo pueden verse en el fichero /proc/filesystems.
Cuarto campo
Son opciones que se aplican a los sistemas de ficheros, haremos un recorrido por ellas por orden alfabético.
Async. Las escrituras se hacen asíncronamente
Auto. Se monta automáticamente, o con el comando mount -a.
Defaults. Esta opción reune las siguientes: async, auto, dev, exec, nouser, rw y suid.
Dev. Significa que el dispositivo es local al sistema.
Exec. Permite la ejecución de programas.
Gid. Establece el identificador de grupo del sistema de ficheros al identificador numérico del grupo.
Noauto. No se monta automáticamente. Ideal para medios extraibles.
Nouser. El sistema de ficheros solo puede ser montado por el administrador del sistema.
Owner. El dueño del sistema de ficheros se fija al usuario que lo monta.
Ro. Modo solo lectura ( read-only ).
Rw. Modo lectura escritura ( read-write ).
Suid. Permite que se ejecuten los bits setuid, no se debe aplicar a sistemas que no administremos nosotros mismos, ya que es un riesgo potencial de intrusiones al sistema.
Sync. Las escrituras se hacen síncronamente.
Uid. Establece el identificador de usuario del sistema de ficheros montado.
Umask. Establece una máscara. Esto es util para que a este sistema pueda acceder un usuario que no tenga privilegios, por ejemplo para montar un sistema y que puedan acceder a él todos los usuarios ponemos umask=0.
Quinto campo
Puede tener valor 0 o 1. Si vale 1 el programa de copias de seguridad del sistema Dump guarda el sistema de ficheros.
Sexto campo
Lo utiliza el inspector de consistencia. Si vale 1 se comprueba la consistencia del sistema de ficheros al reiniciar el sistema operativo. Si vale 0 fsck no comprueba el sistema de ficheros.
Noviembre 2005
Daniel Medianero García ( Meleagro )
Para poder trabajar con estos sistemas de ficheros es necesario tener el núcleo del sistemas preparado para ello, ya sea integrando estos sistemas de ficheros en el kernel o agregándolos como módulos.
Montar estos sistemas de ficheros puede ser algo tedioso, no es muy agradable tener que teclear mount y sus opciones cada vez que necesitamos montar un sistema, especialmente si es un sistema que utilizaremos con frecuencia. Es por ello que nos viene muy bien conocer fstab.
Fstab es un fichero que está alojado en el directorio /etc y que posee las configuraciones de los distintos sistemas de ficheros de nuestro sistema operativo, así como el lugar donde se montan y las opciones que se aplican a ellos. Configurar /etc/fstab es necesario para tener un acceso rapido a nuestros datos de Windows, así como para que dicha partición se monte automáticamente al iniciar nuestro Linux. Este artículo se dedicará a explicarnos cual es la estructura de dicho fichero y como configurarlo a nuestro gusto.
Antes que nada veremos mi /etc/fstab y explicaré una por una las columnas, su significado y su uso, para visualizarlo simplemente ejecutamos cat /etc/fstab en consola:
/dev/hda7 swap swap defaults 0 0
/dev/hda5 / ext3 defaults 1 1
/dev/hda2 /mnt/windows ntfs umask=0 0 0
/dev/hda6 /mnt/datos vfat user,umask=0 0 0
/dev/hdd /mnt/cdrom iso9660 noauto,user 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,umask=0,user 0 0
devpts /dev/pts devpts gid=5 0 0
proc /proc proc defaults 0 0
/dev/sda1 /mnt/usb vfat noauto,rw,umask=0,user,sync 0 0
none /sys sysfs defaults 0 0
/dev/hda3 /mnt/freebsd ufs umask=0,user,noauto 0 0
/dev/hda8 /boot ext3 defaults 1 1
Como puede apreciarse cada linea consiste en un sistema de ficheros configurado mediante 6 columnas, procedo ahora a realizar una descripción de cada una de las columnas:
Primer campo
Es el dispositivo o sistema de ficheros que se montará, normalmente sera un fichero ( en Linux todo es un fichero ) del directorio /dev. Con hda se denota el disco duro maestro IDE seguido de un número que indica el número de partición de dicho disco duro.
Para lso dispositivos USB suele usarse sda, tal como puede apreciarse en la linea 9 de mi fstab.
Hay que destacar que devpts y none se utilizan para los sistemas de ficheros que usa internamente Linux.
Segundo campo
Es el directorio en el cual se montará el sistema del primer campo. Hay que destacar que si no hemos creado ese directorio fallará el montaje de dicho sistema.
Tercer campo
Indica el tipo de sistema de ficheros. Como indicaba al principio del documento el núcleo de Linux admite multitud de sistemas de ficheros, tanto para el propio uso e instalación de nuestro sistema operativo como para sistemas auxiliares ( particiones vfat ) o sistemas de ficheros de red.
Muestro aquí una pequeña tabla con ejemplos de algunos de ellos:
EXT2 Sistema de ficheros sin registro para Linux
EXT3 Sistema de ficheros con registro para Linux
VFAT Sistema de Windows ( versión 95, 98 )
NTFS Sistema de Windows ( versión NT, 2000, XP )
NFS Sistema distribuido de Sun
ISO9660 Sistema estándar para CD-ROM
JFS Sistema de ficheros con registro de IBM
REISERFS Sistema de ficheros con registro para Linux
SWAP Espacio de intercambio para Linux
XFS Sistema de ficheros con registro de Silicon Graphics
UFS Sistema de ficheros de los Unix BSD
Los sistemas de ficheros que tiene compilado el núcleo pueden verse en el fichero /proc/filesystems.
Cuarto campo
Son opciones que se aplican a los sistemas de ficheros, haremos un recorrido por ellas por orden alfabético.
Async. Las escrituras se hacen asíncronamente
Auto. Se monta automáticamente, o con el comando mount -a.
Defaults. Esta opción reune las siguientes: async, auto, dev, exec, nouser, rw y suid.
Dev. Significa que el dispositivo es local al sistema.
Exec. Permite la ejecución de programas.
Gid. Establece el identificador de grupo del sistema de ficheros al identificador numérico del grupo.
Noauto. No se monta automáticamente. Ideal para medios extraibles.
Nouser. El sistema de ficheros solo puede ser montado por el administrador del sistema.
Owner. El dueño del sistema de ficheros se fija al usuario que lo monta.
Ro. Modo solo lectura ( read-only ).
Rw. Modo lectura escritura ( read-write ).
Suid. Permite que se ejecuten los bits setuid, no se debe aplicar a sistemas que no administremos nosotros mismos, ya que es un riesgo potencial de intrusiones al sistema.
Sync. Las escrituras se hacen síncronamente.
Uid. Establece el identificador de usuario del sistema de ficheros montado.
Umask. Establece una máscara. Esto es util para que a este sistema pueda acceder un usuario que no tenga privilegios, por ejemplo para montar un sistema y que puedan acceder a él todos los usuarios ponemos umask=0.
Quinto campo
Puede tener valor 0 o 1. Si vale 1 el programa de copias de seguridad del sistema Dump guarda el sistema de ficheros.
Sexto campo
Lo utiliza el inspector de consistencia. Si vale 1 se comprueba la consistencia del sistema de ficheros al reiniciar el sistema operativo. Si vale 0 fsck no comprueba el sistema de ficheros.
Noviembre 2005
Daniel Medianero García ( Meleagro )
Compilación de un Kernel de la serie 2.6 en Slackware
Una de las cosas a las que todo usuario de Linux termina enfrentándose antes o después es a la compilación de un núcleo. Esto es así por diversos motivos:
1- Búsqueda de una mejora del rendimiento. Un núcleo preparado específicamente para nuestra arquitectura nos proporciona una mejora de las prestaciones de nuestro software.
2- Querer tener la última versión del núcleo. Con esto corregiremos los agujeros de seguridad que se vayan conociendo e incluiremos nuevas funcionalidades. Es frecuente que las distribuciones no se centren en ofrecer los últimos núcleos, ya que se centran más en tener actualizados los paquetes y solo incorporen nuevos núcleos cada vez que sacan versiones estables de las distribuciones.
En este documento vamos a compilar un núcleo de la serie 2.6 en mi distribución de Linux, la Slackware 10.2. Esto no quiere decir que estos pasos no tengan validez para otra distribución, solo que en esta distribución está comprobado que el funcionamiento es el correcto.
Asimismo decir que el gestor de arranque que utilizo es el LILO, con lo cual si usas GRUB los últimos pasos serán ligeramente distintos.
1- CONVENCIONES
Seguiré la siguiente notación en el documento:
#mv linux-2.6.14.2.tar.gz /usr/src
Esto significa que lo que estamos ejecutando es un comando, que se introduce tal cual en la linea de comandos. El símblolo # sirve para representar que estos comandos han de ejecutarse con permisos de root.
map = /boot/System-2.6.14.2.map
Esto significa que son lineas que hay que copiar tal cual pero que van dentro de un fichero, con lo cual se edita dicho fichero y se copia la linea en su interior.
2- PRIMEROS PASOS
Lo primero que debemos hacer es bajar el núcleo, escogemos un servidor, por ejemplo la página web oficial (http://www.kernel.org) y bajamos el núcleo más moderno, en este caso el 2.6.14.2.
Podemos descargarlo en diversos formatos de compresión, en mi caso elijo el tar.gz, con lo cual el archivo descargado es el linux-2.6.14.2.tar.gz.
Una vez descargado lo colocamos en el directorio /usr/src:
#mv linux-2.6.14.2.tar.gz /usr/src
Y lo descomprimimos y desempaquetamos:
#tar zxvf linux-2.6.14.2.tar.gz
Entramos al directorio donde hemos descomprimido las fuentes del núcleo:
#cd linux-2.6.14.2
3- CONFIGURACIÓN Y COMPILACIÓN
Ahora procedemos a uno de los pasos más importantes, la generación del archivo de configuración en base al cual se compilará el núcleo:
#make xconfig
Hay que destacar que tenemos varias opciones, xconfig es para realizar la configuración en modo gráfico, menuconfig es para realizarlo en ncurses o incluso config para modo texto.
Es muy recomendable guardar la configuración en un archivo para utilizarlo por ejemplo en la compilación de núcleos posteriores, por defecto se guardará en el fichero /usr/src/linux-2.6.14.2/.config.
La configuración del núcleo determina para qué va a tener soporte nuestro núcleo, los módulos que serán creados y las opciones de sistema de archivos, red, etc.
Es importante saber muy bien lo que se está haciendo, si no hacemos este paso correctamente el núcleo probablemente no arrancará bien o incluso funcionará pero fallarán ciertas cosas.
Acto seguido procedemos a la compilación:
#make
Después compilamos los módulos:
#make modules
Una vez realizada la compilación de los módulos los instalamos:
#make modules_install
Esto nos colocará los módulos en el directorio /lib/modules/2.6.14.2
4- COLOCAR CADA COSA EN SU SITIO
Primero copiaremos el mapa del sistema al directorio de arranque:
#cp System.map /boot/System-2.6.14.2.map
El System-2.6.14.2.map es un fichero de texto plano que contiene dos columnas, en una están situadas las direcciones de memoria y en la contigua las funciones y llamadas al sistema que están alojadas en dichas direcciónes.
Ahora entramos al directorio en el cual se ha creado el núcleo:
#cd arch/i386/boot
Copiamos el núcleo al directorio de arranque:
#cp bzImage /boot/vmlinuz-2.6.14.2
Este fichero vmlinuz-2.6.14.2 es el núcleo propiamente dicho.
5- EDITANDO EL GESTOR DE ARRANQUE ( LILO )
Ahora debemos hacer que el núcleo pueda arrancar al iniciar el sistema, para ello tendremos en cuenta una consideración muy importante: No borrar la entrada ni el núcleo que utilizamos en este momento. Esto es así porque la carga de nuestro núcleo puede fallar por lo tanto debemos guardar tanto el núcleo como su entrada en el gestor de arranque para poder entrar a nuestro Slackware.
Editamos el fichero lilo.conf:
#vi /etc/lilo.conf
Ahora debemos meter por debajo de la opción boot la siguiente linea:
map = /boot/System-2.6.14.2.map
Y debajo de nuestra entrada actual de Linux meter la nueva entrada para nuestro núcleo:
image = /boot/vmlinuz-2.6.14.2
root = /dev/hda5
label = Slackware
La etiqueta image sirve para indicarle a LILO la ubicación del núcleo, la etiqueta root le indica en qué partición tenemos nuestro Linux ( probablemente la vuestra difiera de la mía ), la etiqueta label es simplemente el nombre que LILO mostrará en el arranque, es importante que no haya varias etiquetas label con el mismo identificador.
Una vez echo esto guardamos el fichero y actualizamos LILO:
#lilo
Si no ejecutamos esta orden los datos del fichero /etc/lilo.conf no serán transferidos al MBR ( Sector de Arranque Maestro ) del disco duro con lo cual al iniciar el ordenador no se nos ofrecerá la opción de entrar a Slackware con nuestro nuevo núcleo.
Una vez realizado esto ya solo debemos reiniciar el ordenador y ver si nuestro nuevo núcleo funciona.
Recomiendo no borrar la entrada en /etc/lilo.conf del antiguo núcleo hasta no haber comprobado que el nuevo funciona perfectamente. Hasta entonces no debemos borrar el antiguo núcleo. No es infrecuente que tengamos ciertos fallos del tipo de que no funcione Internet, que no se escuche el sonido, etc.
6- BORRADO DEL ANTIGUO KERNEL
Vamos a suponer que nuestro núcleo anterior era el 2.6.10 y que el que acabamos de compilar funciona correctamente, pues bien para borrar el antiguo tendremos que borrar los siguientes ficheros:
#rm /boot/vmlinuz-2.6.10
#rm /boot/System-2.6.10.map
#rm -r /lib/modules/2.6.10
También debemos borrar o comentar la entrada en /etc/lilo.conf, y si tenemos instaladas las fuentes del núcleo anterior borrarlas también:
#rm -r /usr/src/linux-2.6.10
#rm /usr/src/linux-2.6.10.tar.gz
Noviembre 2005
Daniel Medianero García
1- Búsqueda de una mejora del rendimiento. Un núcleo preparado específicamente para nuestra arquitectura nos proporciona una mejora de las prestaciones de nuestro software.
2- Querer tener la última versión del núcleo. Con esto corregiremos los agujeros de seguridad que se vayan conociendo e incluiremos nuevas funcionalidades. Es frecuente que las distribuciones no se centren en ofrecer los últimos núcleos, ya que se centran más en tener actualizados los paquetes y solo incorporen nuevos núcleos cada vez que sacan versiones estables de las distribuciones.
En este documento vamos a compilar un núcleo de la serie 2.6 en mi distribución de Linux, la Slackware 10.2. Esto no quiere decir que estos pasos no tengan validez para otra distribución, solo que en esta distribución está comprobado que el funcionamiento es el correcto.
Asimismo decir que el gestor de arranque que utilizo es el LILO, con lo cual si usas GRUB los últimos pasos serán ligeramente distintos.
1- CONVENCIONES
Seguiré la siguiente notación en el documento:
#mv linux-2.6.14.2.tar.gz /usr/src
Esto significa que lo que estamos ejecutando es un comando, que se introduce tal cual en la linea de comandos. El símblolo # sirve para representar que estos comandos han de ejecutarse con permisos de root.
map = /boot/System-2.6.14.2.map
Esto significa que son lineas que hay que copiar tal cual pero que van dentro de un fichero, con lo cual se edita dicho fichero y se copia la linea en su interior.
2- PRIMEROS PASOS
Lo primero que debemos hacer es bajar el núcleo, escogemos un servidor, por ejemplo la página web oficial (http://www.kernel.org) y bajamos el núcleo más moderno, en este caso el 2.6.14.2.
Podemos descargarlo en diversos formatos de compresión, en mi caso elijo el tar.gz, con lo cual el archivo descargado es el linux-2.6.14.2.tar.gz.
Una vez descargado lo colocamos en el directorio /usr/src:
#mv linux-2.6.14.2.tar.gz /usr/src
Y lo descomprimimos y desempaquetamos:
#tar zxvf linux-2.6.14.2.tar.gz
Entramos al directorio donde hemos descomprimido las fuentes del núcleo:
#cd linux-2.6.14.2
3- CONFIGURACIÓN Y COMPILACIÓN
Ahora procedemos a uno de los pasos más importantes, la generación del archivo de configuración en base al cual se compilará el núcleo:
#make xconfig
Hay que destacar que tenemos varias opciones, xconfig es para realizar la configuración en modo gráfico, menuconfig es para realizarlo en ncurses o incluso config para modo texto.
Es muy recomendable guardar la configuración en un archivo para utilizarlo por ejemplo en la compilación de núcleos posteriores, por defecto se guardará en el fichero /usr/src/linux-2.6.14.2/.config.
La configuración del núcleo determina para qué va a tener soporte nuestro núcleo, los módulos que serán creados y las opciones de sistema de archivos, red, etc.
Es importante saber muy bien lo que se está haciendo, si no hacemos este paso correctamente el núcleo probablemente no arrancará bien o incluso funcionará pero fallarán ciertas cosas.
Acto seguido procedemos a la compilación:
#make
Después compilamos los módulos:
#make modules
Una vez realizada la compilación de los módulos los instalamos:
#make modules_install
Esto nos colocará los módulos en el directorio /lib/modules/2.6.14.2
4- COLOCAR CADA COSA EN SU SITIO
Primero copiaremos el mapa del sistema al directorio de arranque:
#cp System.map /boot/System-2.6.14.2.map
El System-2.6.14.2.map es un fichero de texto plano que contiene dos columnas, en una están situadas las direcciones de memoria y en la contigua las funciones y llamadas al sistema que están alojadas en dichas direcciónes.
Ahora entramos al directorio en el cual se ha creado el núcleo:
#cd arch/i386/boot
Copiamos el núcleo al directorio de arranque:
#cp bzImage /boot/vmlinuz-2.6.14.2
Este fichero vmlinuz-2.6.14.2 es el núcleo propiamente dicho.
5- EDITANDO EL GESTOR DE ARRANQUE ( LILO )
Ahora debemos hacer que el núcleo pueda arrancar al iniciar el sistema, para ello tendremos en cuenta una consideración muy importante: No borrar la entrada ni el núcleo que utilizamos en este momento. Esto es así porque la carga de nuestro núcleo puede fallar por lo tanto debemos guardar tanto el núcleo como su entrada en el gestor de arranque para poder entrar a nuestro Slackware.
Editamos el fichero lilo.conf:
#vi /etc/lilo.conf
Ahora debemos meter por debajo de la opción boot la siguiente linea:
map = /boot/System-2.6.14.2.map
Y debajo de nuestra entrada actual de Linux meter la nueva entrada para nuestro núcleo:
image = /boot/vmlinuz-2.6.14.2
root = /dev/hda5
label = Slackware
La etiqueta image sirve para indicarle a LILO la ubicación del núcleo, la etiqueta root le indica en qué partición tenemos nuestro Linux ( probablemente la vuestra difiera de la mía ), la etiqueta label es simplemente el nombre que LILO mostrará en el arranque, es importante que no haya varias etiquetas label con el mismo identificador.
Una vez echo esto guardamos el fichero y actualizamos LILO:
#lilo
Si no ejecutamos esta orden los datos del fichero /etc/lilo.conf no serán transferidos al MBR ( Sector de Arranque Maestro ) del disco duro con lo cual al iniciar el ordenador no se nos ofrecerá la opción de entrar a Slackware con nuestro nuevo núcleo.
Una vez realizado esto ya solo debemos reiniciar el ordenador y ver si nuestro nuevo núcleo funciona.
Recomiendo no borrar la entrada en /etc/lilo.conf del antiguo núcleo hasta no haber comprobado que el nuevo funciona perfectamente. Hasta entonces no debemos borrar el antiguo núcleo. No es infrecuente que tengamos ciertos fallos del tipo de que no funcione Internet, que no se escuche el sonido, etc.
6- BORRADO DEL ANTIGUO KERNEL
Vamos a suponer que nuestro núcleo anterior era el 2.6.10 y que el que acabamos de compilar funciona correctamente, pues bien para borrar el antiguo tendremos que borrar los siguientes ficheros:
#rm /boot/vmlinuz-2.6.10
#rm /boot/System-2.6.10.map
#rm -r /lib/modules/2.6.10
También debemos borrar o comentar la entrada en /etc/lilo.conf, y si tenemos instaladas las fuentes del núcleo anterior borrarlas también:
#rm -r /usr/src/linux-2.6.10
#rm /usr/src/linux-2.6.10.tar.gz
Noviembre 2005
Daniel Medianero García
Un par de truquillos para FreeBSD
Recientemente he vuelto a utilizar FreeBSD, ya lo tuve mucho tiempo cuando la versión 5.4 y ahora con la salida de la 6.0 me he vuelto a enganchar.
A la hora de instalarlo se gana mucha soltura si hemos sido usuarios de Slackware, puesto que la instalación es similar, pero al arrancar el sistema hay ciertas cosillas que debemos hacer para ponerlo a punto.
Lo primero si somos usuarios de Kde es hacer un:
echo startkde > .xinitrc
Esto es para que al teclear startx nos lleve directamente al escritorio Kde.
Un problema muy habitual en FreeBSD recien instalado es que no nos ha detectado el sonido. esto puede llevarnos a pensar que vamos a morir en el intento o que pasaremos un rato configurando archivos de ALSA. Nada más lejos de la realidad, en FreeBSD lo normal es que nos falte cargar el módulo de sonido.
Ahora los más listillos estarán pensando que probar uno por uno los módulos de sonido es una tarea engorrosa y tenéis razón, por eso utilizaremos el ingenio y haremos lo siguiente:
# kldload snd_driver
Con esta órden hemos cargado todos los módulos de sonido y ahora nos debería funcionar perfectamente. Si, ya lo sé, esto no es una solución porque no hay porqué tener mil módulos cargados cuando solo queremos uno. El mundo está lleno de listillos asique seguid leyendo impacientes:
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0:
Con esta órden vemos que el módulo que está utilizando el kernel para el sonido es el snd_ich, asique ya podemos quitarlos todos y cargar unicamente el que necesitamos.
Lo haríamos metiendo esta linea en /boot/loader.conf:
snd_ich_load="YES"
Aplicaciones en Linux para las tareas más comunes
He hecho recientemente un artículo para Espacio Linux sobre las aplicaciones de que disponemos en Linxu para realizar las tareas más comunes.
Pongo un extracto del mismo y un enlace para elq ue le interese proseguir con su lectura:
Supongamos que acabamos de instalar nuestro Linux, ya sea Ubuntu, Slackware o cualquier otra distribución, y ahora queremos comprobar realmente su potencial, su velocidad, su estabilidad y demás, pero nos encontramos con un problema según iniciamos nuestro entorno gráfico (KDE o GNOME usualmente): ¿Qué programa uso para navegar por Internet? ¿Cómo lo hago para entrar en el Messenger?
Pues bien este artículo tratará de responder a esas preguntas presentando varias opciones para cada problema, analizándolas brevemente y aportando mi visión personal sobre las aplicaciones en cuestión. La estructuración será la siguiente:
1.Función que queremos desarrollar
2.Alternativas
3.Opinión personal
De esta manera, creo que podréis tener de forma separada mi opinión de usuario y la descripción "objetiva del programa".
Cabe destacar que cada usuario tiene sus gustos y preferencias, y que si de algo debemos sentirnos orgullosos los linuxeros es que tenemos la opción de elegir. Asimismo, comentar que daré solución a las aplicaciones más comunes; aplicaciones para tareas muy concretas quedan fuera del propósito de este artículo, y que hay muchas más opciones de las que yo comento, que apenas son un par de aplicaciones por problema. Las que yo comento son las más conocidas por mi.
El artículo continua en este enlace.
Hacer paquetes tgz para Slackware
En este pequeño documento vamos a aprender a crear un paquete tgz para Slackware a partir de un programa ya hecho, y del cual disponemos de su código fuente.
Para crear paquetes tgz lo primero de que debemos disponer es de las herramientas de desarrollo, es decir los kernel-headers, el compilador gcc y demás.
Para hacer el proceso lo más didáctico posible vamos a seguir el proceso creando nuestro primer paquete, en este caso utilizaremos el detector de intrusos Snort.
Bajamos de su página web Snort el archivo snort-2.4.3.tar.gz.
Procedemos a descomprimirlo:
#tar zxvf snort-2.4.3.tar.gz
Entramos en el directorio donde hemos descomprimido las fuentes:
#cd snort-2.4.3
Creamos un directorio sobre el cual pondremos el programa compilado y desde el que más tarde crearemos nuestro paquete, por convención se usa el nombre BUILD:
#mkdir BUILD
Ahora debemos usar el archivo configure de las fuentes para preparar el paquete a nuestras necesidades. Hay que destacar que el configure puede tener mil opciones que quedan fuera del propósito de este pequeño artículo, la idea es señalar las más usuales:
--prefix=/usr
Esta opción es para decirle donde queremos que nos inslale el programa cuando el paquete este ya creado, es decir, que cuando hagamos el installpkg nos coloque el programa en el directorio /usr del arbol principal.
--sysconfdir=/etc
Esta opción es para decirle donde queremos que nos coloque los archivos de configuración del programa, normalmente nos interesará que los coloque en /etc.
--localstatedir=/var/lib
Con esta opción le decimos donde queremos que nos coloque las librerías, usualmente será en el directorio /var/lib
Para una descripción detallada de las opciones podemos teclear:
# man ./configure –help
Nosotros para nuestro Snort le aplicaremos una opción adicional con la cual Snort se compila preparado para trabajar volcando sus reportes en las bases de datos de Mysql, la opción es:
--with-mysql=/usr, con ella le decimos que Mysql se encuentra en /usr, y así estas dos aplicaciones se relacionan internamente.
En definitiva nuestro comando /.configure es el siguiente:
#./configure –sysconfdir=/etc –prefix=/usr –localstatedir=/var/lib –with-mysql=/usr
El siguiente paso es compilar el programa propiamente dicho, si, es verdad, antes podríamos meterle unas opciones para optimizar la compilación pero el propósito de este artículo es crear paquetes de manera sencilla y por tanto asumiremos los valores por defecto de esas opciones. Compilamos simplemente con make:
#make
Ahora tenemos un paso importante, una vez compilado el programa debemos llevarlo al directorio en el cual queremos tener todo preparado para la creación del paquete, la ruta del directorio probablemente variará en cada pc dependiendo de donde descarguéis Snort:
#make install DESTDIR=/home/sinnis/snort-2.4-3/BUILD
Ahora entramos en el directorio BUILD y creamos un archivo de descripción, este archivo lo utilizará installpkg para mostrar por pantalla mientras instalemos nuestro tgz, el archivo debe llamarse slack-desc y debe constar de 11 lineas que comienzan con el nombre del programa seguido de la descripción que os parezca más oportuna, un ejemplo:
snort:
snort:
snort: Snort ( Detector de Intrusos )
snort: Versión: 2.4.3
snort:
snort: Paquete creado por:
snort: Daniel Medianero garcía
snort:
snort:
snort:
snort:
Este archivo debe colocarse dentro de un directorio llamado “install”, a su vez dentro del directorio BUILD que creamos al principio.
Ahora deberíamos comprobar que los permisos de los archivos que compondrán nuestro futuro paquete se encuentran en orden, para lo cual utilizaremos un par de comandos:
#find /home/sinnis/snort-2.4.3/BUILD -type f -exec chown root.root {} \;
#find /home/sinnis/snort-2.4.3/BUILD -type d -exec chown root.root {} \;
#find /home/sinnis/snort-2.4.3/BUILD -type f -exec chmod 644 {} \ ;
#find /home/sinnis/snort-2.4.3/BUILD -type d -exec chmod 755 {} \;
Ahora entramos en el directorio BUILD que creamos al principio y con todo ya listo creamos el paquete propiamente dicho usando la herramienta makepkg:
#makepkg -l y -c n snort-2.4.3-i686-1dmg.tgz
NOTA:
Por convención el nombre del paquete suele ser el programa seguido de su versión, después la aquitectura, un número que significa el número de compilación, por ejemplo si en un futuro creáis el paquete de nuevo pero añadiendo alguna otra opción en el ./configure le pondríais un 2. Finalmente antes del tgz se suele poner las iniciales de quien ha creado el paquete.
Una vez credo el paquete ya tenéis todo lo necesario, el código fuente que habéis descomprimido y el tar.gz que bajamos al principio podemos eliminarlo.
PARA TERMINAR:
Espero que os haya servido de ayuda, si queréis contactar conmigo podéis encontrarme en los foros de EspacioLinux ( http://www.espaciolinux.com/ ) con el nick de Meleagro, en el IRC servidor Freenode en los canales slackware-es y bsd-es como Meleagro, en mi Blog ( http://www.meleagro.esp.cc ) o en mi correo electrónico ( meleslack@gmail.com ).
Noviembre 2005
Daniel Medianero García
Para crear paquetes tgz lo primero de que debemos disponer es de las herramientas de desarrollo, es decir los kernel-headers, el compilador gcc y demás.
Para hacer el proceso lo más didáctico posible vamos a seguir el proceso creando nuestro primer paquete, en este caso utilizaremos el detector de intrusos Snort.
Bajamos de su página web Snort el archivo snort-2.4.3.tar.gz.
Procedemos a descomprimirlo:
#tar zxvf snort-2.4.3.tar.gz
Entramos en el directorio donde hemos descomprimido las fuentes:
#cd snort-2.4.3
Creamos un directorio sobre el cual pondremos el programa compilado y desde el que más tarde crearemos nuestro paquete, por convención se usa el nombre BUILD:
#mkdir BUILD
Ahora debemos usar el archivo configure de las fuentes para preparar el paquete a nuestras necesidades. Hay que destacar que el configure puede tener mil opciones que quedan fuera del propósito de este pequeño artículo, la idea es señalar las más usuales:
--prefix=/usr
Esta opción es para decirle donde queremos que nos inslale el programa cuando el paquete este ya creado, es decir, que cuando hagamos el installpkg nos coloque el programa en el directorio /usr del arbol principal.
--sysconfdir=/etc
Esta opción es para decirle donde queremos que nos coloque los archivos de configuración del programa, normalmente nos interesará que los coloque en /etc.
--localstatedir=/var/lib
Con esta opción le decimos donde queremos que nos coloque las librerías, usualmente será en el directorio /var/lib
Para una descripción detallada de las opciones podemos teclear:
# man ./configure –help
Nosotros para nuestro Snort le aplicaremos una opción adicional con la cual Snort se compila preparado para trabajar volcando sus reportes en las bases de datos de Mysql, la opción es:
--with-mysql=/usr, con ella le decimos que Mysql se encuentra en /usr, y así estas dos aplicaciones se relacionan internamente.
En definitiva nuestro comando /.configure es el siguiente:
#./configure –sysconfdir=/etc –prefix=/usr –localstatedir=/var/lib –with-mysql=/usr
El siguiente paso es compilar el programa propiamente dicho, si, es verdad, antes podríamos meterle unas opciones para optimizar la compilación pero el propósito de este artículo es crear paquetes de manera sencilla y por tanto asumiremos los valores por defecto de esas opciones. Compilamos simplemente con make:
#make
Ahora tenemos un paso importante, una vez compilado el programa debemos llevarlo al directorio en el cual queremos tener todo preparado para la creación del paquete, la ruta del directorio probablemente variará en cada pc dependiendo de donde descarguéis Snort:
#make install DESTDIR=/home/sinnis/snort-2.4-3/BUILD
Ahora entramos en el directorio BUILD y creamos un archivo de descripción, este archivo lo utilizará installpkg para mostrar por pantalla mientras instalemos nuestro tgz, el archivo debe llamarse slack-desc y debe constar de 11 lineas que comienzan con el nombre del programa seguido de la descripción que os parezca más oportuna, un ejemplo:
snort:
snort:
snort: Snort ( Detector de Intrusos )
snort: Versión: 2.4.3
snort:
snort: Paquete creado por:
snort: Daniel Medianero garcía
snort:
snort:
snort:
snort:
Este archivo debe colocarse dentro de un directorio llamado “install”, a su vez dentro del directorio BUILD que creamos al principio.
Ahora deberíamos comprobar que los permisos de los archivos que compondrán nuestro futuro paquete se encuentran en orden, para lo cual utilizaremos un par de comandos:
#find /home/sinnis/snort-2.4.3/BUILD -type f -exec chown root.root {} \;
#find /home/sinnis/snort-2.4.3/BUILD -type d -exec chown root.root {} \;
#find /home/sinnis/snort-2.4.3/BUILD -type f -exec chmod 644 {} \ ;
#find /home/sinnis/snort-2.4.3/BUILD -type d -exec chmod 755 {} \;
Ahora entramos en el directorio BUILD que creamos al principio y con todo ya listo creamos el paquete propiamente dicho usando la herramienta makepkg:
#makepkg -l y -c n snort-2.4.3-i686-1dmg.tgz
NOTA:
Por convención el nombre del paquete suele ser el programa seguido de su versión, después la aquitectura, un número que significa el número de compilación, por ejemplo si en un futuro creáis el paquete de nuevo pero añadiendo alguna otra opción en el ./configure le pondríais un 2. Finalmente antes del tgz se suele poner las iniciales de quien ha creado el paquete.
Una vez credo el paquete ya tenéis todo lo necesario, el código fuente que habéis descomprimido y el tar.gz que bajamos al principio podemos eliminarlo.
PARA TERMINAR:
Espero que os haya servido de ayuda, si queréis contactar conmigo podéis encontrarme en los foros de EspacioLinux ( http://www.espaciolinux.com/ ) con el nick de Meleagro, en el IRC servidor Freenode en los canales slackware-es y bsd-es como Meleagro, en mi Blog ( http://www.meleagro.esp.cc ) o en mi correo electrónico ( meleslack@gmail.com ).
Noviembre 2005
Daniel Medianero García
A vueltas con el caso Sony
No sé si estáis enterados del caso Sony, sino es así deberíais echarle un vistazo. Podéis encontrar la noticia en Kriptópolis.
Esto me hace pensar mucho en hasta dónde vamos a llegar en la intrusión en nuestras vidas para conseguirnos seguridad.
Pensar que ya no podemos siquiera estar tranquilos cuando ponemos un CD en nuestro ordenador es para preocuparse. En esta vida hay que mirar más allá y no quedarnos en el detalle, lo que yo me planteo es lo siguiente:
Si pasa con un simple CD, ¿ En qué otros ambitos no estará pasando ?
Es evidente que la tecnología está lo suficientemente desarrollada como para inmiscuirse en nuestras vidas sin que nos demos cuenta ( pensemos en la red Echelon ).
Pensando y pensando mi cabeza llega al extremo de recordar la aquella gran película de Will Smith en la que está continuamente vigilado por satélites. Si, estoy hablando de Enemigo publico.
Y como la cabeza no puede dejar de dar vueltas pensando en aquella película me viene a la mente Google Maps.
Curioso que muestren fotos aereas de la Zarzuela y que sin embargo no haya disponibles fotos de la Casa Blanca.
En fin, no deja de ser curioso que para proteger nuestra libertad el principal recurso a utilizar sea precisamente la restricción de libertades. vivimos en un mundo de locos.





