diff --git a/es_ES.ISO8859-1/books/handbook/kernelconfig/chapter.sgml b/es_ES.ISO8859-1/books/handbook/kernelconfig/chapter.sgml index 8e228bb5de..4fe7f3fe16 100755 --- a/es_ES.ISO8859-1/books/handbook/kernelconfig/chapter.sgml +++ b/es_ES.ISO8859-1/books/handbook/kernelconfig/chapter.sgml @@ -1,1534 +1,1534 @@ Jim Mock Actualizado y reestructurado por Jake Hamby Contribución original por - Configurando el Kernel de FreeBSD + Configuración del Kernel de FreeBSD Sinópsis kernel haciendo un kernel a la medida El kernel de FreeBSD es el corazón del sistema operativo. Es responsable del manejo y control de la memoria, reforzamiento de los controles de seguridad, manejo de redes, acceso a dispositivos, y mucho más. Mientras que FreeBSD se torna a un sistema más dinámico y configurable, en ocasiones es aún necesario reconfigurar y recompilar un kernel hecho a la medida de nuestras necesidades. Al término de este capítulo, usted sabrá: Por que puede ser necesario que compile un kernel personalizado. Como crear un fichero de configuración del kernel, o bien, editar un fichero existente. Como utilizar el fichero de configuración, para crear y compilar un nuevo kernel. Como instalar un kernel nuevo. Como crear los ficheros en /dev que pudiesen ser necesarios. Como resolver algunos problemas, si algo sale mal. - ¿Porqué Construir un Kernel Propio? + ¿Por qué Construír un Kernel Propio? Tradicionalmente FreeBSD ha contado con lo que se conoce como un kernel monolítico. Esto quiere decir que el kernel era un gran y único programa que soportaba una lista previa de dispositivos, y que si se deseaba modificar el comportamiento del kernel, se debia compilar un nuevo kernel, y reiniciar el sistema con el nuevo kernel. Hoy en día, FreeBSD esta moviendose rápidamente, hacía un modelo, donde la funcionalidad del kernel esta basada en módulos, los cuales pueden ser cargados y descargados dinámicamente, de acuerdo a las necesidades del kernel. Esto permite que el kernel se adapte a nuevo hardware que sale al mercado (tal como las tarjetas PCMCIA en las laptop), o bien el añadir nuevas funcionalidades al kernel, que no eran necesarias al momento de su compilación original. El término coloquial para esto es KLDs. A pesar de lo anterior, aun es necesario llevar a cabo cierta configuración estática en la configuración del kernel. En algunos casos esto se debe a que la funcionalidad del sistema esta tan ligada al kernel, que no puede realizarse por medio de carga dinámica de los modulos. En otros casos puede ser simplemente por que nadie se ha tomado el tiempo, para escribir un modulo que pueda ser cargado dinámicamente por el kernel, para esa funcionalidad específica. El construir un kernel propio, es uno de los más importantes rituales, que casi todo usuario de UNIX debe afrontar. Este proceso, aun cuando lleva un tiempo, traerá grandes beneficios a su sistema FreeBSD. A diferencia del kernel GENERIC, que contiene soporte para todo el hardware soportado por el sistema, un kernel propio unicamente contiene soporte para el hardware de su PC. Esto conlleva a grandes beneficios, como son: N de T.: El kernel GENERIC es el kernel GENERICO que instala el sistema por default, del cual su fichero de configuracion lleva el mismo nombre. Mayor rapidez en el arranque del sistema. En virtud de que el kernel solo tiene que probar el hardware que realmente esta en su sistema, el tiempo que toma a su sistema arrancar, se reducirá dramáticamente. Menor uso de memoria. Generalmente un kernel personalizado utiliza menos recursos de memoria que un kernel GENERIC, lo cual es importante, ya que el kernel debe encontrarse presente en memoria real. Por esta razón, un kernel personalizado puede ser de gran utilidad en sistemas con pequeña cantidad de memoria RAM. Soporte para hardware adicional. Un kernel personalizado le permite añadir dispositivos tal como tarjetas de sonido, las cuales no estan incluidas en el kernel GENERIC. Compilación e Instalación de un Kernel Personalizado kernel compilación / instalación En primer lugar, hagamos un breve recorrido por el directorio donde se lleva a cabo la compilación del kernel. Todos los directorios mencionados hacen referencia al directorio principal, que es /usr/src/sys, al cual también podemos acceder, mediante /sys. Existen gran cantidad de subdirectorios, que representan diferentes partes del kernel, pero el más importante para lo que deseamos hacer son arch y /conf, que es donde se llevara a cabo la edición del fichero de configuración y la compilación (compile) del mismo, que es el punto de partida para la personalización del kernel. El directorio arch representa la arquitectura del sistema, por lo que puede ser i386, alpha o bien pc98 (una arquitectura alternativa, similar a PC muy popular en Japón). Todo lo que existe dentro de un directorio de una arquitectura en particular, es específico para dicha arquitectura; el resto del código es común para todas las plataformas a las que FreeBSD es potencialmente portable. Note la organización lógica de la estructura de los directorios, con cada soporte para dispositivos, sistema de ficheros y opciones, en su propio subdirectorio. Si no existe el directorio /usr/src/sys en su sistema, quiere decir que las fuentes del kernel no fueron instaladas. La forma más sencilla de hacer esto es mediante el programa /stand/sysinstall, siendo usuario root, y seleccionando Configure, posteriormente Distributions, después src y finalmente sys. Si a usted no le agrada mucho utilizar sysinstall, y tiene acceso a un CDROM oficial de FreeBSD, entonces puede instalar las fuentes, por medio de la línea de comandos, de la siguiente forma: &prompt.root; mount /cdrom &prompt.root; mkdir -p /usr/src/sys &prompt.root; ln -s /usr/src/sys /sys &prompt.root; cat /cdrom/sys/ssys.[a-d]* | tar -xzvf Posteriormente, dirijase al directorio arch/conf y copie el fichero de configuración GENERIC con el nombre que desee. Por ejemplo: &prompt.root; cd /usr/src/sys/i386/conf &prompt.root; cp GENERIC MYKERNEL Tradicionalmente, este nombre se escribe con mayúsuculas y, si usted cuenta con varias maquinas FreeBSD, con diferente hardware, es una buena idea nombrar el kernel, igual que el nombre de host de cada maquina. En este caso, para efectos de este ejemplo, le llamaremos MYKERNEL . El guardar su fichero de configuración directamente bajo el directorio /usr/src, puede ser una mala idea. Si usted esta experimentando problemas, puede ser tentador simplemente eliminar /usr/src y comenzar de nuevo. Cinco segundos después de haber hecho esto, se dará cuenta de que ha eliminado el fichero de configuración de su kernel. Una alternativa es guardar este fichero de configuración en cualquier otra parte y crear un enlace simbólico al fichero localizado bajo el directorio i386. Por ejemplo: &prompt.root; cd /usr/src/sys/i386/conf &prompt.root; mkdir /root/kernels &prompt.root; cp GENERIC /root/kernels/MYKERNEL &prompt.root; ln -s /root/kernels/MYKERNEL Todo esto deberá llevarse a cabo como superusuario (root), o de lo contrario se tendra como resultado errores de negación de permisos (permission denied). Ahora edite el fichero de configuración MYKERNEL, con su editor de textos favorito. Si se trata de una instalación reciente probablemente el único editor disponible sea vi, del cual es complicado explicar su uso detallado en este documento, pero existen bastantes libros que detallan su uso, puede ver algunos en la bibliografía. De cualquier manera FreeBSD ofrece un editor de uso muy sencillo, llamado ee, el cual, si usted es principiante, será el editor de su elección. Sientase en libertad de modificar los comentarios en la parte superior, para que reflejen su configuración o bien los cambios realizados, para diferenciarlo del fichero GENERIC. Si ha compilado un kernel, bajo SunOS o algun otro sistema operativo BSD, seguramente la información de este fichero le será muy familiar. Por otro lado, si usted esta emigrando de otros sistemas operativos como DOS, el fichero GENERIC puede parecerle intimidante, así que siga las instrucciones descritas en El Fichero de Configuración detenidamente y con sumo cuidado. Asegurese siempre de verificar el fichero /usr/src/UPDATING, antes de realizar cualquier actualización del sistema, en el caso de que se sincronice con el source-tree, para contar con la última versión de FreeBSD. El fichero /usr/src/UPDATING cuenta con toda la información importante, relacionada con actualizaciones. Al ser distribuida con FreeBSD, esta información deberá estar más actualizada que la provista por el handbook. Ahora es momento de llevar a cabo la compilación del código fuente del kernel. Existen dos procedimientos para llevar esto a cabo, y el que usted utilice dependerá del por que esta personalizando su kernel, así como la versión de FreeBSD que este utilizando. Si unicamente ha instalado el código fuente del kernel, utilice el procedimiento 1. Si usted esta ejecutando un versión de FreeBSD anterior a 4.0, y no esta actualizando a la versión 4.0 o mayor, mediante el procedimiento make world, utilice el procedimiento 1. Si esta personalizando su kernel, sin actualizar el código fuente (quizás solo para añadir una nueva opción como IPFIREWALL) puede utilizar cualquier de los dos procedimientos. Si esta reconstruyendo su kernel, como parte del proceso de actualización por medio de make world, entonces utilice el metodo 2. Procedimiento 1. Compilando el Kernel de la forma <quote>tradicional</quote> Ejecute &man.config.8; para generar el código fuente del kernel. &prompt.root; /usr/sbin/config MYKERNEL Cambie de ruta, hacia el directorio de compilación. &prompt.root; cd ../../compile/MYKERNEL Compile el kernel. &prompt.root; make depend &prompt.root; make Instale el nuevo kernel. &prompt.root; make install Procedimiento 2. Compilando el kernel de una <quote>nueva</quote> forma Dirijase al directorio /usr/src . &prompt.root; cd /usr/src Compile el kernel. &prompt.root; make buildkernel KERNCONF=MYKERNEL Instale el nuevo kernel. &prompt.root; make installkernel KERNCONF=MYKERNEL Para versiones de FreeBSD 4.2 y anteriores, deberá reemplazar KERNCONF= con KERNEL=. Para versiones 4.2-STABLE que fueron obtenidas posterior al 2 de Febrero del 2001, si se reconoce este parámetro como KERNCONF=. cvsup CVS anónimo CTM CVS anónimo Si usted aun no ha actualizado su sistema fuente (source tree) (no ha ejecutado CVSup, CTM o bien usado anoncvs), entonces deberia utilizar la siguiente secuencia de comandos; config, make depend, make, make install. kernel.old El kernel nuevo será copiado al directorio raíz como /kernel y el antiguo kernel, será renombrado como /kernel.old. Ahora deberá reiniciar su sistema, utilizando su nuevo kernel. En caso de que se presente algun problema, hay algunos consejos para la resolución de problemas, al final de este capítulo. Asegurese de leer la sección que explica como recuperar el sistema, en caso de que su kernel no desee bootear. Si usted ha añadido nuevos dispositivos (tales como tarjetas de sonido) puede ser necesario que deba crear los ficheros de dispositivos, bajo el directorio /dev, antes de poder utilizarlos. Para más información al respecto, - revise la sección "Creando Ficheros de Dispositivos" más + revise la sección "Creación de Ficheros de Dispositivos" más adelante en este capítulo. El Fichero de Configuración kernel LINT LINT kernel fichero de configuración En realidad el formato general de un fichero de configuración es simple. Cada línea contiene una palabra clave con uno o más argumentos. Para efecto de simplificar, la mayoría de las líneas contienen sólo un argumento. Cualquier cosa que precede a # es considerado como un comentario, y por lo tanto es ignorado. La siguiente sección describe cada palabra clave, en el orden que normalmente encontrará en el fichero GENERIC, aunque algunas palabras claves han sido agrupadas de acuerdo a su uso (como es el caso de lo que se refiere a redes), aun cuando las podrá encontrar dispersas en el fichero GENERIC. Una mayor lista de opciones, así como explicaciones detalladas de cada dispositivo, podrán encontrarse en el fichero de configuración de ayuda LINT, localizado en el mismo subdirectorio que GENERIC. Si usted tiene alguna duda sobre si es necesaria alguna línea u opción, consulte el fichero LINT. El uso de numeros En todas las versiones de FreeBSD posteriores e incluyendo la 3.X, el proceso de &man.config.8; requiere que el uso de numeros como cadenas de texto, en el fichero de configuración, deben encontrarse entre comillas dobles. Este requerimiento ha sido removido, desde la rama 4.X, que es la que estamos cubriendo en este libro, por lo que si usted cuenta con un sistema anterior a 4.X, revise los ficheros /usr/src/sys/i386/conf/LINT y /usr/src/sys/i386/conf/GENERIC de su sistema para ver algunos ejemplos. kernel ejemplo del fichero de configuración A continuación encontrará un ejemplo del fichero GENERIC, con algunos comentarios adicionales para aclaraciones donde haya sido necesario. Este ejemplo debe ser igual, o muy simlar, a su copia localizada en /usr/src/sys/i386/conf/GENERIC . Para ver mas detalles sobre las posibles opciones del kernel, vea el fichero /usr/src/sys/i386/conf/LINT. N de T: En virtud de que el fichero que usted encontrará en su sistema es un fichero en inglés ;), he decidido dejar lo que corresponde al fichero GENERIC, tal como usted lo verá, y sólo traducir los comentarios previos de cada opción. En caso de que algún comentario del fichero sea traducido (por claridad), favor de considerarlo como un extra, que no encontrará en su fichero original. Gracias por su comprensión. # # GENERIC -- Generic kernel configuration file for FreeBSD/i386 # # For more information on this file, please read the handbook section on # Kernel Configuration Files: # # http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html # # The handbook is also available locally in /usr/share/doc/handbook # if you've installed the doc distribution, otherwise always see the # FreeBSD World Wide Web server (http://www.FreeBSD.ORG/) for the # latest information. # # An exhaustive list of options and more detailed explanations of the # device lines is also present in the ./LINT configuration file. If you are # in doubt as to the purpose or necessity of a line, check first in LINT. # # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246 2000/03/09 16:32:55 jlemon Exp $ Las siguientes palabras claves son obligatorias en todo kernel que se vaya a recompilar: opciones del kernel machine machine i386 Esto se refiere a la arquitectura de la maquina. La cual debe ser i386, alpha, o pc98. opciones del kernel cpu cpu I386_CPU cpu I486_CPU cpu I586_CPU cpu I686_CPU Lo anterior especifíca el tipo de procesador con que cuenta su sistema. En este caso puede dejar varias opciones (por ejemplo en el caso de que no este seguro si su procesador es I586_CPU o bien I686_CPU), de cualquier forma para un kernel personalizado siempre es preferible especificar el tipo de procesador con que cuenta su sistema. Si usted no esta seguro del tipo de procesador con que cuenta su sistema, puede utilizar el comando dmesg, para ver los mensajes de envió el kernel al arrancar el sistema, y donde podrá ver como detecto el CPU. opciones del kernel cpu type La arquitectura Alpha cuenta con diferentes valores para el cpu. Los cuales incluyen: cpu EV4 cpu EV5 Si usted utiliza un sistema Alpha, debe estar utilizando un tipo de CPU descrito en la parte superior. opciones del kernel ident ident GENERIC Este es el identificador del kernel. Esta opción deberá cambiarla a como desee nombrar su kernel, como en el ejemplo anterior; MYKERNEL. El valor que asigne en la opción ident, será el nombre que aparecerá en la pantalla, al momento de iniciar el kernel del sistema, de tal forma que es recomendable personalizar este parámetro, más aun si usted piensa contar con un kernel diferente al usual (por ejemplo, en el caso de que desee contar con un kernel experimental). opciones del kernel maxusers maxusers n La opción maxusers, establece el tamaño de un numero importante de tablas del sistema. Este numero supuestamente debe ser muy similar al numero de usuarios que usted espera ejecutar simultaneamente en su sistema. Comenzando con FreeBSD 4.5, el sistema automáticamente configurará esta opción para usted, si es que explicitamente le asigna el valor de 0 a esta opción El algoritmo de auto-configuración, establece para maxusers la cantidad igual a la cantidad de memoria en el sistema, con mínimo de 32 y un máximo de 384. . Si usted esta utilizando una versión de FreeBSD anterior, o bien usted desea controlar este parámetro, deberá establecer cuando menos un valor de 4, especialmente si usted utiliza el Sistema de Ventanas X, o compila software. La razón de esto es que una de las tablas más importantes que controla maxusers, es la que controla el numero máximo de procesos que se pueden ejecutar simultaneamente en el sistema, lo cual se establece como; 20 + 16 * maxusers, por lo que si establece este valor como 1, quiere decir que podrá ejecutar 36 procesos simultaneamente, incuyendo los de inicio, algo así como 18, y los 15 que se ejecutaran al arrancar el Sistema de Ventanas X. Incluso una simple tarea, como leer una pagina de ayuda man, incia como nueve procesos, para efecto de filtrar, descomprimir y visualizar. Establecer un valor de 64 a maxusers, le permitira ejecutar 1044 procesos simultaneamente, que debe ser suficiente para casi cualquier uso. De cualquier forma, si llega a notar su tabla de proc llena (proc table full), al tratar de iniciar algún proceso, o bien esta ejecutando un servidor con bastantes usuarios simultaneos (como ftp.FreeBSD.org), siempre puede incrementar este numero y recompilar su kernel. La opción maxusers no limita el numero de usuarios que pueden ingresar al sistema. Simplemente establece valores, para el tamaño de varias tablas del sistema, a valores razonables, considerando el numero de usuarios que usted espera tener en su sistema y el numero de procesos que cada uno de estos usuarios requiere correr. Una palabra clave que efectivamente limita el numero de logins remotos, es pseudo-device pty 16 . # Floating point support - do not disable. device npx0 at nexus? port IO_NPX irq 13 El dispositivo npx0 es la interfaz del punto flotante en FreeBSD, el cual es parte del hardware como co-procesador o bien el software emulador matemático. Este no es opcional. # Pseudo devices - the number indicates how many units to allocate. pseudo-device loop # Network loopback Este es el dispositivo genérico de TCP/IP, loopback. Si usted hace telnet o FTP a localhost (ej. 127.0.0.1), el enlace se realiza por medio de este pseudo-dispositivo. Este es obligatorio. Todo lo que veremos a continuación, es más o menos opcional. Vea las notas debajo de cada opción, para más información al respecto. #makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols options MATH_EMULATE #Support for x87 emulation Mediante esta línea podemos indicarle al kernel que simule un co-procesador matemático, si su maquina no cuenta con uno (386 o 486SX). Si usted cuenta con una 486DX, o una 387 o 486SX (con chip separado de 387 o 487), o más actual (Pentium, Pentium II, etc.), puede comentar esta línea sin problemas (N de T. Para comentar las líneas de este fichero deberá agregar el simbolo # antes de la línea, con lo cual la línea será ignorada). La rutina de emulación del co-procesador matemático que viene con FreeBSD, no es muy exacta. Si usted no cuenta con un co-procesador metamático, y requiere la mayor exactitud posible, es recomendable que modifique esta opción a quedar como GPL_MATH_EMULATE, para usar el soporte de GNU, que no se incluye por omisión, por cuestiones de licencia. options INET #InterNETworking Soporte para redes. Deje esta opción incluida, aun si no planea esta conectado a una red. La mayoría de los programas requieren cuando menos conexión con el dispositivo loopback (ej. al hacer conexión con su propia maquina), asi que esto es obligatorio. options INET6 #IPv6 communications protocols Esto habilita los protocolos de comunicación IPv6. options FFS #Berkeley Fast Filesystem options FFS_ROOT #FFS usable as root device [keep this!] Esto es el sistema de ficheros básico del disco duro. Incluyalo si desea arrancar su sistema del disco duro. options UFS_DIRHASH #Improve performance on big directories Esta opción incluye código para acelerar las operaciones del disco duro en directorios de gran tamaño, aunque esto implique sacrificar algo de memoria adicional. Usted normalmente dejaria esta opción si es para un servidor grande o bien una estación de trabajo interactiva y eliminarlo si esta utilizando FreeBSD en un sistema pequeño donde es importante conservar la memoria o bien si la velocidad del disco duro no es tan importante, tal como un firewall. options SOFTUPDATES #Enable FFS soft updates support Esta opción habilita soft updates en el kernel, lo cual acelera la escritura en los discos. Esta opción se habilita por default desde la rama 4.X, pero es posible que no este habilitada. Revise la respuesta que le da &man.mount.8; para verificar si cuenta con esta opción. Si no ve la opción soft-updates, deberá activarla usando &man.tunefs.8; o &man.newfs.8; para nuevos sistemas de ficheros. options MFS #Memory Filesystem options MD_ROOT #MD is a potential root device Este es el sistema de mapeo de memoria. Esto basicamente es el mapeo de la memoria RAM del disco para acceso rápido y almacenar ficheros temporales, útil si cuenta con bastante memoria swap, de la cual desee tomar ventaja. Un sitio perfecto para montar la partición MFS es el directorio /tmp, esto lo puede hacer añadiendo la siguiente línea al fichero /etc/fstab: /dev/ad1s2b /tmp mfs rw 0 0 Ahora simplemente necesita reiniciar su sistema o bien, ejecutar el comando mount /tmp. opciones del kernel NFS opciones del kernel NFS_ROOT options NFS #Network Filesystem options NFS_ROOT #NFS usable as root device, NFS required El sistema de ficheros de red. A menos de que planee montar particiones desde un servidor Unix através de TCP/IP, esta línea puede ser comentada. opciones del kernel MSDOSFS options MSDOSFS #MSDOS Filesystem El sistema de ficheros de MS-DOS. A menos de que planee montar una partición con formato de DOS, al momento de arrancar el sistema, puede deshabilitar esta opción sin problema alguno. Automáticamente será cargado la primera vez que monte una partición DOS, como se explicó anteriormente. Así mismo la excelente aplicación mtools (que esta disponible de la colección de ports), le permite accesar a diskettes con formato DOS, sin necesidad de montarlos o desmontarlos (y no requiere para nada de MSDOSFS). options CD9660 #ISO 9660 Filesystem options CD9660_ROOT #CD-ROM usable as root, CD9660 required El sistema de ficheros ISO 9660 para CDROMs. Comente esta opción si usted no cuenta con una unidad de CDROM o bien sólo monta CDs de datos ocasionalmente (en virtud de que será cargado dinámicamente la primera vez que se utilice para un CD de datos). Los CDs de audio no requieren de esta opción. options PROCFS #Process filesystem El sistema de ficheros de procesos. Este es un sistema de ficheros virtual, montado en /proc, que permite que programas como &man.ps.1; le den mayor información sobre los procesos que se están ejecutando. options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] Compatibilidad con 4.3BSD. Conserve esta opción; algunos programas se comportaran de una forma extraña si esta opción es comentada. options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI Esta opción le indica al kernel hacer una pausa de 15 segundos antes de realizar una prueba en cada dispositivo SCSI de sus sistema. Si usted sólo cuenta con dispositivos IDE, puede ignorar esta opción, de otra forma quizás desee reducir el tiempo a 5 segundos, para efecto de acelerar el arranque. Claro esta, que si hace esto, y FreeBSD tiene problemas para reconocer sus dispositivos SCSI, deberá incrementar este valor nuevamente. options UCONSOLE #Allow users to grab the console Permite el uso de la consola, que es muy útil para usuarios del sistema X. Por ejemplo, puede crear una consola xterm, al teclear xterm -C, que servira para desplegar mensajes (usando talk), así como enviar (usando write) mensajes, o bien, visualizar cualquier otro mensaje enviado por el kernel, sin necesidad de salir de su entorno gráfico. options USERCONFIG #boot -c editor Esta opción le permite ejecutar el editor de configuración, desde el menú de arranque. options VISUAL_USERCONFIG #visual boot -c editor Esta opción le permite ejecutar el editor visual de configuración, desde el menú de arranque. options KTRACE #ktrace(1) support Esta opción habilita el proceso de rastreo del kernel, que es de utilidad para efecto de depuración. options SYSVSHM #SYSV-style shared memory Esta opción provee memoria compartida, para el System V. El uso más común de esto es la extensión XSHM del servidor X, del cual muchos programas de gráficos-intensos, toman ventaja, para contar con mayor velocidad. Si usted utiliza el entorno gráfico X, definitivamente querra incluir esta opción. options SYSVSEM #SYSV-style semaphores Soporte para los semaforos del System V. Con menos uso que el anterior, pero sólo agregará unos cuantos cientos de bytes a su kernel. options SYSVMSG #SYSV-style message queues Soporte para mensajes de System V. Nuevamente, sólo añadirá unos cientos de bytes a su kernel. El comando &man.ipcs.1; le mostrará cualquier proceso que haga uso de estas componentes de System V. options P1003_1B #Posix P1003_1B real-time extensions options _KPOSIX_PRIORITY_SCHEDULING Extensiones de tiempo-real añadidas en POSIX en 1993. Algunas aplicaciones de la colección de ports, utilizan estas extensiones (tal como StarOffice). opciones del kernel ICMP_BANDLIM Negació de Servicio (DoS) options ICMP_BANDLIM #Rate limit bad replies Esta opción permite a ICMP manejar errores,en cuanto al límite de ancho de banda a utilzar. Es recomendable dejar esta opción tal cual, en virtud de que le permite protejer su sistema contra ataques de paquetes de Negación de Servicio (Denial of Service - DoS). opciones del kernel SMP # To make an SMP kernel, the next two are needed #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O Las opciones anteriores son necesarias si desea soporte para SMP. device isa Todas las PCs soportadas por FreeBSD cuentan con uno de estos. Si usted cuenta con una IBM PS/2 (Arquitectura de Micro Canal), en este momento usted no puede ejecutar FreeBSD (se esta trabajando en este soporte). device eisa Incluya esta opción, si cuenta con una tarjeta madre de tipo EISA. Esto habilita la autodetección y configuración del soporte para los dispositivos que hacen uso del bus EISA. device pci Incluya esta opción si cuenta con una tarjeta madre basada en PCI. Esto habilita la auto-detección de las tarjetas PCI y de los canales a utilizar en los buses PCI e ISA. # Floppy drives device fdc0 at isa? port IO_FD1 irq 6 drq 2 device fd0 at fdc0 drive 0 device fd1 at fdc0 drive 1 Este es el controlador para diskettes. El dispositivo fd0 corresponde a la disquetera A: y fd1 corresponde a la disquetera B:. device ata Este controlador da soporte a todos los dispositivos ATA y ATAPI. Usted sólo necesita incluir esta opción una sola vez (device ata), para que el kernel detecte todos los dispositivos PCI ATA/ATAPI de sus sistema. device atadisk # ATA disk drives Este es necesario junto con device ata para controladores de discos ATAPI. device atapicd # ATAPI CDROM drives Este es necesario junto con device ata para controladores de CDROM ATAPI. device atapifd # ATAPI floppy drives Este es necesario junto con device ata para controladores de disqueteras ATAPI. device atapist # ATAPI tape drives Este es necesario junto con device ata para controladores de cintas ATAPI. options ATA_STATIC_ID #Static device numbering Esta hace que el numero de controlador sea estático (como en el viejo controlador) o de lo contrario este numero es asignado dinámicamente. # ATA and ATAPI devices device ata0 at isa? port IO_WD1 irq 14 device ata1 at isa? port IO_WD2 irq 15 Utilice estos para sistemas antiguos no-PCI. # SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices device amd # AMD 53C974 (Teckram DC-390(T)) device dpt # DPT Smartcache - See LINT for options! device isp # Qlogic family device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets) device adv0 at isa? device adw device bt0 at isa? device aha0 at isa? device aic0 at isa? Controladores SCSI. Comente cualquiera que no se encuentre en su sitema. Si cuenta con un sistema unicamente IDE, puede eliminar todos. # SCSI peripherals device scbus # SCSI bus (required) device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) Periféricos SCSI. Nuevamente, comente todos los que no esten presentes en su sistema, si sólo cuenta con hardware IDE, puede eliminarlos por completo. # RAID controllers device ida # Compaq Smart RAID device amr # AMI MegaRAID device mlx # Mylex DAC960 family Controladores de soporte RAID. Si su sistema no cuenta con estos, puede comentarlos o eliminarlos. # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc0 at isa? port IO_KBD Este controlador (atkbdc) provee servicios de E/S a teclados AT y dispositivos de tipo PS/2. Este controlador es necesario para el teclado (atkbdc) y el dispositivo puntero (N de T: Mejor conocido como ratón) tipo PS/2 (psm). device atkbd0 at atkbdc? irq 1 El controlador atkbd, junto con el controlador atkbdc, provee acceso al teclado AT 84 o bien al teclado de tipo AT mejorado, que es conectado al controlador de teclado AT. device psm0 at atkbdc? irq 12 Utilice este controlador si su ratón se conecta al puerto PS/2. device vga0 at isa? El controlador para la tarjeta de video. # splash screen/screen saver pseudo-device splash Pantalla Splash al arranque! El protector de pantallas requiere de esto también. # syscons is the default console driver, resembling an SCO console device sc0 at isa? El dispositivo sc0 es el controlador por defaault, que recuerda a la consola SCO. Dado que la mayoría de los programas de pantalla—completa, accesan a su consola por medio de una librería de base de datos para terminales, como termcap, no debe importar si utiliza este o bien vt0, el controlador de compatibilidad de VT220. Si cuando accesa al sistema, tiene problemas para manejar programas que utilizan pantalla completa, cuando ingrese al sistema, establezca su variable TERM a scoansi. # Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver #device vt0 at isa? #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor # If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines #options PCVT_SCANSET=2 # IBM keyboards are non-std Este es el controlador de consola compatible con VT220, anteriormente compatible con VT100/102. Este sirve para algunas laptops que tienen incompatibilidad de hardware con sc0. También es recomendable establecer su variable de entorno TERM como vt100 o vt220. Este controlador ha probado ser de gran utilidad en diferentes máquinas en una red, donde las entradas para termcap o terminfo para el dispositivo sc0 no están disponibles — vt100 debe estar disponible en practicamente cualquier plataforma. # Power management support (see LINT for more options) device apm0 at nexus? disable flags 0x20 # Advanced Power Management Soporte para la Administración Avanzada de Energía. Muy útil en laptops. # PCCARD (PCMCIA) support device card device pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000 device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable Soporte para tarjetas PCMCIA. Debe conservar estas si usted utiliza una laptop. # Serial (COM) ports device sio0 at isa? port IO_COM1 flags 0x10 irq 4 device sio1 at isa? port IO_COM2 irq 3 device sio2 at isa? disable port IO_COM3 irq 5 device sio3 at isa? disable port IO_COM4 irq 9 Estos son los cuatro puertos seriales, conocidos en el mundo MS-DOS/Windows como COM1 a COM4. Si usted cuenta con un módem interno conectado al puerto COM4 y un puerto serial en COM2, deberá cambiar el IRQ del módem al 2 (por alguna obscura razón el IRQ 2 = IRQ 9), de manera que pueda accederlo desde FreeBSD. Si usted cuenta con una tarjeta serial de puertos múltiples, verifique la página de ayuda &man.sio.4; para más información sobre los valores que debe utilizar en estas líneas. Algunas tarjetas de video (principalmente aquellas basadas en chips S3) utilizan direcciones de E/S de la forma 0x*2e8, y dado que muchos chips no decodifican completamente el espacio de dirección de E/S de 16-bit, se congelan con estas tarjetas, haciendo que el uso del puerto COM4 sea prácticamente imposible. Es necesario que cada puerto serial cuente con su propia dirección IRQ (a menos que este utilizando una tarjeta de puertos múltiples, donde se permite el compartir IRQs), así que los IRQs que por default manejan los puertos COM3 y COM4, no pueden ser utilizados. # Parallel port device ppc0 at isa? irq 7 Esta es la interfaz para el puerto paralelo ISA. device ppbus # Parallel port bus (required) Provee soporte para el bus del puerto en paralelo. device lpt # Printer Soporte para impresoras de puerto en paralelo. Los tres anteriores son necesarios para habilitar el soporte para impresoras que esten conectadas al puerto en paralelo. device plip # TCP/IP over parallel Este es el controlador para dispositivos de red que utilizan el el puerto en paralelo. device ppi # Parallel port interface device El puerto de E/S para propósitos generales (geek port) + E/S IEEE1284. #device vpo # Requires scbus and da unidad zip Este es para la unidad Iomega Zip. Que requiere soporte scbus y da. Se tiene conocimiento de un mejor desempeño con puertos en modo EPP 1.9. # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (Tulip) device fxp # Intel EtherExpress PRO/100B (82557, 82558) device tx # SMC 9432TX (83c170 EPIC) device vx # 3Com 3c590, 3c595 (Vortex) device wx # Intel Gigabit Ethernet Card (Wiseman) Varios controladores de tarjetas de red PCI. Puede comentar o eliminar todas aquellas que no esten presentes en su sistema. # PCI Ethernet NICs that use the common MII bus controller code. device miibus # MII bus support El soporte del bus MII, es requerido por algunas tarjetas de red Ethernet PCI 10/100, específicamente aquellas con transistores dependientes de MII o bien aquellos con transistores que operan igual que MII. El añadir el soporte device miibus al fichero de configuración del kernel nos permite contar con soporte para todos los dispositivos API genericos de MII y controladores de PHY, incluyendo los genéricos de PHY para los cuales no hay un controlador específico. device dc # DEC/Intel 21143 and various workalikes device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (Starfire) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device ste # Sundance ST201 (D-Link DFE-550TX) device tl # Texas Instruments ThunderLAN device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang, Cyclone) Controladores que utilizan el código del bus MII. # ISA Ethernet NICs. device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 device ex device ep # WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really # exists only as a PCMCIA device, so there is no ISA attachment needed # and resources will always be dynamically assigned by the pccard code. device wi # Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will # work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP # mode (the factory default). If you set the switches on your ISA # card for a manually chosen I/O address and IRQ, you must specify # those parameters here. device an # The probe order of these is presently determined by i386/isa/isa_compat.c. device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 device fe0 at isa? port 0x300 device le0 at isa? port 0x300 irq 5 iomem 0xd0000 device lnc0 at isa? port 0x280 irq 10 drq 0 device cs0 at isa? port 0x300 device sn0 at isa? port 0x300 irq 10 # requires PCCARD (PCMCIA) support to be activated #device xe0 at isa? Controladores para tarjetas Ethernet ISA. Vea el fichero /usr/src/sys/i386/conf/LINT para ver que tarjetas están soportadas, y por cuales controladores. pseudo-device ether # Ethernet support El soporte ether sólo es necesario si cuenta con una tarjeta Ethernet. Este incluye el soporte genérico para el código Ethernet. pseudo-device sl 1 # Kernel SLIP El dispositivo sl es el soporte para SLIP. El cual casi ha sido suplantado por PPP, que es más sencillo de configurar, más adecuado para conexiones de módem a módem y más poderoso. El numero posterior a sl, especifíca cuantas sesiones simultaneas se pueden soportar por SLIP. pseudo-device ppp 1 # Kernel PPP Este es el soporte del kernel para conexiones PPP, por medio de teléfono. Existe también una versión de PPP como aplicación (userland), que utiliza el dispositivo tun y ofrece mayor flexibilidad y funciones, tal como el marcado a petición. El numero posterior a ppp especifíca cuantas conexiones PPP se pueden mantener de manera simultanea. pseudo-device tun # Packet tunnel. Este dispositivo es utilizado por la aplicación PPP userland. El numero posterior a tun, especifíca el soporte máximo de sesiones PPP simultaneas. Vea la sección PPP de este libro, para mayor información al respecto. pseudo-device pty # Pseudo-ttys (telnet etc) Esta es una pseudo-terminal o bien un puerto de acceso simulado. Es utilizado para conexiones por medio de telnet y sesiones rlogin, xterm, y algunas otras aplicaciones tal como emacs. Un numero después de pty indica el numero de ptys a crear. Si usted requiere de más de las 16 xterm y/o logins remotos que se crean por default, asegurese de incrementar el numero de acuerdo a sus necesidades, sin exceder el máximo de 256. pseudo-device md # Memory disks Pseudo-dispositivos para la memoria de discos. pesudo-device gif o pseudo-device gif 4 # IPv6 and IPv4 tunneling Esto permite el envío de IPv6 sobre IPv4, IPv4 sobre IPv6, IPv4 sobre IPv4 e IPv6 sobre IPv6. Desde la versión 4.4 de FreeBSD, el dispositivo gif es auto-clonable, y usted debiese utilizar el primer ejemplo (sin el numero después de gif). Versiones anteriores de FreeBSD requieren de este numero. pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation) Este pseudo-dispositivo captura los paquetes que han sido enviados y los redirecciona hacia el demonio traductor de IPv4/IPv6. # The `bpf' pseudo-device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! pseudo-device bpf # Berkeley packet filter Este es el Filtro de Paquetes de Berkeley. Este pseudo-dispositivo permite a las interfaces de red colocarse en modo promiscuo, capturando cada paquete en una transmisión de red (ej. una Ethernet). Estos paquetes pueden ser capturados y examinados por medio del programa &man.tcpdump.1;. La opción bpf pseudo-device también es utilizada por &man.dhclient.8; para obtener la dirección IP del ruteador por default (gateway). Si usted utiliza DHCP, deje esta opción habilitada. # USB support #device uhci # UHCI PCI->USB interface #device ohci # OHCI PCI->USB interface #device usb # USB Bus (required) #device ugen # Generic #device uhid # Human Interface Devices #device ukbd # Keyboard #device ulpt # Printer #device umass # Disks/Mass storage - Requires scbus and da #device ums # Mouse # USB Ethernet, requires mii #device aue # ADMtek USB ethernet #device cue # CATC USB ethernet #device kue # Kawasaki LSI USB ethernet Soporte para varios dispositivos USB. Para más información y para ver todos los dispositivos soportados por FreeBSD, favor de consultar el fichero /usr/src/sys/i386/conf/LINT. - Creando Nodos para los Dispositivos + Creación de Nodos para los Dispositivos nodos para los dispositivos MAKEDEV Casi todo dispositivo señalado en el kernel, cuenta con su correspondiente fichero nodo, bajo el directorio /dev. Estos nodos parecen ficheros comunes, pero de hecho son ficheros especiales que indican que dispositivos deben ser utilizados por cada programa. El script de shell /dev/MAKEDEV, que es ejecutado cuando usted instala por primera vez el sistema operativo, crea el nodo para casi todos los dispositivos soportados. Aun así no los crea a todos, así que cuando recompila su kernel y agrega soporte para un nuevo dispositivo, es importante asegurarse de que existen las entradas correspondientes en este directorio, y si no es así crearlas. He aqui un pequeño ejemplo: Supongamos que ha añadido soporte en su kernel para un dispositivo CDROM tipo IDE. La línea a añadir es: device acd0 Esto significa que debe buscar alguna entrada que comience con acd0 en el directorio /dev, posiblemente seguido de una letra, tal como c, o bien precedido de una letra como r, que significa que es el dispositivo raw . Resulta que esos ficheros no existen en el directorio /dev, así que debe dirijirse a este directorio y teclear lo siguiente: MAKEDEV &prompt.root; sh MAKEDEV acd0 Cuando este script termine, encontrará que ahora existen los ficheros acd0c y racd0c en el directorio /dev, de tal forma que sabrá que se ha ejecutado con exito. Para tarjetas de sonido, debe ejecutar el siguiente comando para crear las entradas correspondientes: &prompt.root; sh MAKEDEV snd0 Si existen otras personas con acceso a su sistema, cuando cree ficheros-nodo para dispositivos tales como tarjetas de sonido, es recomendable proteger estos dispositivos, añadiendolos al fichero /etc/fbtab. Vea la página de ayuda &man.fbtab.5; para más información al respecto. El procedimiento mencionado puede servirle para añadir cualquier otro dispositivo no-generico o bien que no exista en el fichero /usr/src/sys/i386/conf/GENERIC, para el cual no existan las entradas apropiadas. Todos los controladores SCSI utilizan las mismas entradas en /dev, así que no es necesario crearlas. Así mismo, las tarjetas de red y pseudo-dispositivos de tipo SLIP/PPP, no cuentan con entradas en el directorio /dev, por lo que tampoco tiene por que preocuparse de estas. En Caso de que Algo No Funcione Existen cinco tipos de problemas que se pueden presentar al momento de estar personalizando/compilando un kernel. Estas son: Que el comando config de como resultado un error: Si el comando config da como resultado un error al momento de de su ejecución, puede ser que simplemente haya cometido un error de tipografía en su documento personal de configuración (que habiamos llamado MYKERNEL). Afortunadamente el comando config le dará información sobre el error, como es el numero de línea que contiene el error, de tal forma que puede dirijirse directamente a dicha línea con vi y corregir el error. Por ejemplo si visualiza: config: line 17: syntax error Puede ir directamente al problema en vi, al teclear 17G en el modo de comando. Asegurese de que la palabra clave ha sido escrita correctamente, al compararla con la que corresponde al fichero GENERIC o alguna otra referencia. Cuando el comando make falla: Cuando el comando make da como resultado un error, generalmente es indicio de que el fichero de configuración tiene un error, pero que este error no es tan grave como para que config lo detecte. Revise nuevamente su fichero y si aun así no puede detectar el error, envíe un correo a &a.questions; adjuntando el fichero personalizado de su kernel, y debiese ser diagnosticado rápidamente. Al instalar el nuevo kernel se presenta una falla Si el kernel termino de compilarse correctamente, pero presenta una falla al instalarlo (esto es cuando el comando make install o make installkernel da como resultado un Error), lo primero que es necesario revisar, es si su sistema esta ejecutandose en securelevel 1 o mayor (vea &man.init.8;). Aqui lo que sucede es que la instalación del kernel intenta remover la marca (flag) de inmutable del kernel actual y colocar dicha marca al nuevo kernel. Y en virtud de que securelevel 1 o mayor evita que dicha marca sea removida de cualquier fichero del sistema, la instalación del nuevo kernel debe ser realizada en securelevel 0 o menor. El nuevo kernel no arranca: Si su nuevo kernel no se ejecuta correctamente al arrancar el sistema, o bien falla en reconocer sus dispositivos, no entre en pánico! Afortunadamente BSD cuenta con un excelente mecanismo para recuperarse de un kernel recien instalado que presenta este tipo de errores. Simplemente seleccione el kernel que desea arrancar, al momento que se esta incializado en su sistema FreeBSD, el cargador de arranque (boot loader). Puede accesar a este cuando su sistema se encuentra en cuenta regresiva desde 10. Pulse cualquier tecla excepto la tecla enter, posteriormente teclee unload y posteriormente teclee boot kernel.old, o bien el nombre de fichero de cualquier otro kernel que usted sabe que arranacará correctamente. Cuand personalice un kernel, siempre es buena idea contar con un kernel que sabemos que su funcionamiento es correcto, a la mano. Recuerde que si tiene problemas para personalizar su kernel, es recomendable asegurarse de contar con un kernel de tipo GENERIC, o algún otro que tenga la seguridad de su funcionamiento y que tenga un nombre que no será borrado en la siguiente compilación de kernel. No puede confiar en el kernel.old, ya que en cada instalación de un nuevo kernel, este se sustituye con el último kernel instalado, que pudiese se un kernel no funcional. También recuerde que, en cuanto le sea posible, debe mover el kernel funcional a la ubicación correcta del kernel, o bien, comandos como &man.ps.1; no trabajarán correctamente. El comando para desbloquear el fichero del kernel que instala el comando make (para efecto de usar permanentemente otro kernel) es: &prompt.root; chflags noschg /kernel Si no puede ejecutar esto, probablemente su sistema se este ejecutando en un valor mayor a cero de &man.securelevel.8;. Edite la línea kern_securelevel del fichero /etc/rc.conf y establezca este valor como -1, y reinicie su sistema. Posteriormente puede regresar este al valor original, cuando este contento con su nuevo kernel. Y si usted desea bloquear su nuevo kernel en su ubicación, o cualquier otro fichero, de tal forma que no pueda ser movido o modificado, puede hacerlo con el comando: &prompt.root; chflags schg /kernel El kernel funciona, pero ps ha dejado de funcionar!: Si usted ha instalado un kernel que pertenece a una versión diferente a la del sistema en cuestión, por ejemplo, un kernel 4.X sobre un sistema 3.X, gran variedad de comandos de sistema, como son: &man.ps.1; y &man.vmstat.8; ya no van a funcionar. Deberá recompilar la librería libkvm, así como sus utilidades. Es por esta razón, que no es una buena idea utilizar un kernel de una versión diferente al resto del sistema operativo.