<!-- 0,1 -->
<!-- Kernel,0 -->
<!-- Brian,Ward,bri@blah.math.tu-graz.ac.at -->
<!-- 0.75,1996-12-29 -->
<!-- Kernel -->
<!-- Juan José,Amor,jjamor@ls.fi.upm.es -->
<!-- 2.1,1996-12-29 -->
<!-- kernel,núcleo,compilación -->
<!-- Software,Kernel -->

<!doctype linuxdoc system>

<!-- This is the Linux Kernel HOWTO, SGML source -- >
<!-- Versión Castellano -- >

<!-- Revisión 2.0 -- >
<!-- Traductor: Juan Jose Amor, jjamor@ls.fi.upm.es                     -- >

<!-- Revisión 2.1, 29/12/96, Fco. J. Montilla,                          -- >
<!-- (pacopepe@insflug.org) ordenación del texto, actualización,            -- > 
<!-- SGMLización total (sgml2latex no se lo tragaba) y pequeñas adi-    -- >
<!-- ciones/correcciones que sólo vemos los que _no_ lo hemos hecho ;-) -- >

<article>

<title>Kernel-Como
<author>Brian Ward, 
<tt><htmlurl url="mailto:bri@blah.math.tu-graz.ac.at" 
name="bri@blah.math.tu-graz.ac.at"></tt> &nl;
Traducción de Juan José Amor,
<tt><htmlurl url="mailto:jjamor@ls.fi.upm.es" 
name="jjamor@ls.fi.upm.es"></tt>
<date>Revisión 2.1, 22 de Diciembre de 1996

<abstract>

Lo que sigue es una guía detallada de la configuración del núcleo,
cubriendo detalles de compilación y de actualizaciones.  El traductor ha
intentado respetar el documento original, aunque no ha podido evitar
añadir cosas de su propia cosecha, sobre todo en lo que respecta a
opciones aún no documentadas.
</abstract>

<toc>

<sect> Introducción 

<p>

Esta es la versión 0.75 del documento ``<it/Kernel-HOWTO/'' original. La
de la traducción es la 2.1 ¿Debe Vd. leer este documento? Bien, veamos si
tiene alguno de los siguientes síntomas:

<itemize>

<item> ``¡Jo! El <tt/dosemu-0.99.9/ requiere el núcleo <tt/1.8.193/ y yo
estoy aún con el <tt/1.2.3/''

<item> Hay un manejador (<it/driver/) que sólo está en los núcleos más
 recientes y Vd. lo necesita.

<item> Vd. realmente no tiene ni idea de cómo se compila el núcleo.

<item> Vd. lo ha intentado pero no le ha funcionado.

</itemize>

<sect1> ¡Lea esto primero! 

<p>

Algunos de los ejemplos aquí puestos suponen que se tiene el <tt>tar</tt>
de <it/GNU/, así como <tt>find</tt> y <tt>xargs</tt>. Son casi estándares,
pero por si acaso... También se asume que conoce la organización del
sistema de ficheros; si no lo conoce, copie la salida del comando
<tt>mount</tt> en condiciones normales (o el fichero <tt>/etc/fstab</tt>
si puede acceder a él). Esta información es importante, y no cambiará a
menos que reparticione el disco, añada uno nuevo, reinstale el sistema o
similar. 

La última versión de <it/producción/ del núcleo que se conoce ahora mismo
es la <tt/2.0.10/<footnote><tt/2.0.27/ es la última versión estable al día
de hoy, 22 de Diciembre de 1996.</footnote>, de manera que nuestros
ejemplos irán para esa versión. 

Se intenta que tampoco dependa mucho de esto, pero si Vd. usa una versión
distinta habrá siempre algunas diferencias, ya que el núcleo está en
continuo desarrollo. Esto no debe crear problemas, si acaso un ligero
despiste al principio. 

Hay dos versiones de las fuentes del núcleo de Linux: las de
<it/producción/ y las de <it/desarrollo/. Las versiones de <it/producción/
empezaron a numerarse en la <tt/1.0.x/ y siempre se nombran con número
par.  Así, se pasó de las <tt/1.0.x/ a las <tt/1.2.x/ y de ésta a la
<tt/2.0.x/ (por no ir a la <tt/1.4.x/ <tt>;)</tt> ). 

Estas versiones se consideran <it/estables/ y <it/libres de errores/
(hasta el momento). Las versiones de <it/desarrollo/ se numeran en impar
(<tt/1.1.x, 1.3.x, 2.1.x/...) y son de prueba, con lo que posiblemente
tengan muchos fallos.

<sect1>Sobre el estilo

<p>

<tt>El texto con el aspecto de esta frase</tt> se corresponderá con las
cosas que deban aparecer en la pantalla, un fichero o algo que pueda ser
tecleado como opciones de comandos (si está utilizando la versión ASCII de
este documento, no verá diferencia alguna). Los comandos son
entrecomillados (con ` ') lo que causa un problema con la puntuación:  al
acabar frases con un comando, el estilo americano pone el punto dentro de
las comillas, lo que confundirá a algún lector creyendo que hay que
teclear también el punto (algo de sentido común, aunque en realidad
pretenden que el ``<it/sentido común/'' sea solo el estilo americano de
puntuación). Esto se soluciona no poniendo tal punto, aunque no sea
correcto ortográficamente. Por ejemplo, pondremos `<tt>make config</tt>' y
no `<tt>make config</tt>.'

<sect>Preguntas y respuestas importantes 

<p>

<sect1>Pero, ¿qué hace el núcleo? 

<p>

El núcleo de <it/Unix/ actúa como intermediario entre sus programas y el
ordenador. En primer lugar, gestiona la memoria de todos los programas o
procesos, y se asegura de que se reparten los ciclos del procesador. 
Además, proporciona una interfaz portable para que los programas
<tt/hablen/ fácilmente con su hardware. 

Realmente, el núcleo hace más cosas, pero las anteriores son las más
importantes.

<sect1>¿Por qué puedo necesitar actualizar el núcleo? 

<p>

Los núcleos nuevos normalmente ofrecen la posibilidad de entenderse con
más accesorios hardware (o sea, incluyen más manejadores), se ejecutan más
rápidamente, son más estables o corrigen errores de otras versiones. Mucha
gente se actualiza el núcleo para poder usar nuevos manejadores que
necesitan o librarse de ``<it/bugs/'' de la versión que usaban. 

<sect1>¿Qué hardware nuevo soportan los nuevos núcleos? 

<p>

Véanse el documento <it/Hardware-HOWTO/, el fichero <tt>config.in</tt> de
las fuentes o simplemente verá lo que hay cuando haga <tt>`make
config'</tt>.  Esto le mostrará lo soportado por la distribución estándar,
pero no todo, pues algunos son módulos cargables en ejecución (como
manejadores de PCMCIA) y se mantienen y distribuyen por vías distintas. 

<sect2>Anexo de la revisión.  
<p>

Actualmente, muy pocos módulos (los <it/no-oficiales/) no están incluidos
en los fuentes <it/oficiales/ del kernel. Prácticamente, todos los
controladores son <it/modularizables/. 

He aquí un extracto de lo que aparece en
<tt>/usr/src/linux/Documentation/modules.txt</tt>, algo que se <bf/debe/
leer:<footnote>Hoy mismo se liberará una traducción.  </footnote>: 

<tscreen><verb>
        La mayoria de los sistemas de ficheros: 
		
	minix, xiafs, msdos, umsdos, sysv, isofs, hpfs, smbfs, nfs.

         Soporte SCSI de medio nivel (requeridos por controladores SCSI de
	 alto y bajo nivel)		
        
 	La mayoria de los controladores SCSI de bajo nivel: (i.e. aha1542, in2000)
        Todos los controladores SCSI de alto nivel: disk, tape, cdrom, generic.

        La mayoria de los controladores ethernet: (demasiados para enumerarlos todos, ver:
                     /usr/src/linux/Documentation/networking/net-modules.txt)

        La mayoria de los controladores de CDROM (propietarios):
                aztcd:     Aztech,Orchid,Okano,Wearnes
                cm206:     Philips/LMS CM206
                gscd:      Goldstar GCDR-420
                mcd, mcdx: Mitsumi LU005, FX001
                optcd:     Optics Storage Dolphin 8000AT
                sjcd:      Sanyo CDR-H94A
                sbpcd:     Matsushita/Panasonic CR52x, CR56x, CD200,
                           Longshine LCS-7260, TEAC CD-55A
                sonycd535: Sony CDU-531/535, CDU-510/515

        Y un monton de modulos, como:
                lp: impresora p. paralelo
                binfmt_elf: cargador elf 
                binfmt_java: cargador java 
                isp16: interfaz cdrom 
                serial: interfaz serial (tty) 
</verb></tscreen>

<sect1>¿Qué versión de <tt/gcc/ y <tt/libc/ necesito? 
<p>

Linus recomienda una en el fichero <tt/README/ de las fuentes del núcleo.
Si no la tiene, probablemente tenga que actualizarse las librerías
<tt/libc/, algo que tampoco es difícil. 

<sect1>¿Qué es un módulo cargable? 
<p>

Hay partes del código del núcleo que no se enlazan directamente en el
núcleo. Se compilan por separado y luego se incorporan al núcleo que ya
está corriendo. Es la forma preferida de usar algunos manejadores como los
de dispositivos <tt/PCMCIA/ o de cintas <tt>QIC-80/40</tt><footnote> Hoy
en día la tendencia es modulizar todos los controladores posibles, salvo
aquellos estrictamente necesarios para arrancar (<tt/ext2/, <tt/ide/, o
<tt/SCSI/, según el caso), aunque siempre se puede hacer una imagen
<tt/initrd/ y se sigue pudiendo arrancar con <tt/LILO/. <tt/kerneld/ se
encargará de cargarlos y descargarlos por nosotros cuando el sistema los
necesite o no.  </footnote>. 

<sect1>¿Cuánto espacio en disco necesito? 
<p>

Depende de su configuración. La versión <tt/2.0.10/ del núcleo ocupa,
comprimida, 6 <it/megabytes/, pero al descomprimir ocupará unos 24 MB. 
Pero aquí no acaba la cosa: para compilar se necesita espacio para
ficheros temporales, dependiendo de la configuración que se elija. Por
ejemplo, en un 386, con manejador de red de <it/3Com/ y cinco sistemas de
ficheros supone 30 MB. Si a esto añadimos las fuentes comprimidas, serán
36 MB. En otro sistema con menos cosas puede ocupar menos. Además, un
núcleo nuevo tendrá por lo general muchos más ficheros que el antiguo, con
lo que debe asegurarse de que hay espacio de disco suficiente (además, con
los precios que tienen ahora los discos, me puedo permitir el recomendarle
que se compre un disco nuevo para el Linux). 

<sect1>¿Cuánto se tarda en compilar? 
<p>

Para mucha gente, se tarda ``<it/muchísimo/''. La velocidad del sistema y
la cantidad de memoria son determinantes. En un <it>486DX4/100</it> con 16
MB, se tarda unos 20 minutos en compilar el núcleo v1.2 con cinco sistemas
de ficheros, soporte de red y manejadores de tarjetas de sonido. En un
<it>386DX/40</it> con 8 MB de RAM se tarda una hora y media. Por lo
general se recomienda prepararse un café o ver la televisión (o lo que se
le ocurra<footnote>O ponerse a hacer cualquier cosa; para eso estamos en
multitarea <tt/:-)/ </footnote>)  mientras se compila el núcleo. Otra
posibilidad es compilarlo en un PC más rápido que el suyo, de algún amigo. 

<sect>Cómo configurar el núcleo. 
<p>

<sect1>Obtención de los fuentes. 
<p>

Se pueden obtener las fuentes por FTP anónimo de <tt><htmlurl
url="ftp://ftp.funet.fi/pub/OS/Linux/PEOPLE/Linus/"
name="ftp://ftp.funet.fi/pub/OS/Linux/PEOPLE/Linus/"></tt>, en un
``<it/mirror/''<footnote>En España contamos con el veloz y magnífico
<tt><htmlurl url="ftp://sunsite.rediris.es" 
name="ftp://sunsite.rediris.es"></tt></footnote> o en otros servidores. 
Típicamente tienen el nombre <tt>linux-x.y.z.tar.gz</tt>, donde
<tt>x.y.z</tt> es el número de versión. Las versiones se encuentran en
directorios <tt>v1.1</tt>, <tt>v1.2</tt> y <tt>v1.3</tt><footnote>Y
<tt/2.0/ y <tt/2.1/</footnote>. El número mayor es el de la última
versión, en este caso versión de desarrollo. Le sugerimos que utilice un
servidor ``<it/mirror/'' de <tt>ftp.funet.fi</tt>, por ejemplo: 

<itemize>

<item>EE.UU.:
<tt><htmlurl url="ftp://tsx-11.mit.edu/pub/linux/sources/system"
name="ftp://tsx-11.mit.edu/pub/linux/sources/system"></tt>

<item>EE.UU.:
<tt><htmlurl url="ftp://sunsite.unc.edu/pub/Linux/kernel"
name="ftp://sunsite.unc.edu/pub/Linux/kernel"></tt>

<item>Inglaterra:
<tt>
<htmlurl 
url="ftp://sunsite.doc.ic.ac.uk/pub/unix/Linux/sunsite.unc-mirror/kernel/" 
name="ftp://sunsite.doc.ic.ac.uk/pub/unix/Linux/sunsite.unc-mirror/kernel/">
</tt>

<item>Austria: 
<tt><htmlurl url="ftp://fvkma.tu-graz.ac.at/pub/linux/linus"
name="ftp://fvkma.tu-graz.ac.at/pub/linux/linus"></tt>

<item>Alemania:
<tt>
<htmlurl url="ftp://ftp.Germany.EU.net/pub/os/Linux/Local.EUnet/Kernel/Linus" 
name="ftp://ftp.Germany.EU.net/pub/os/Linux/Local.EUnet/Kernel/Linus"></tt>

<item>Alemania:
<tt><htmlurl url="ftp://ftp.dfv.rwth-aachen.de/pub/linux/kernel"
name="ftp://ftp.dfv.rwth-aachen.de/pub/linux/kernel"></tt>

<item>Francia: 
<tt><htmlurl url="ftp://ftp.ibp.fr/pub/linux/sources/system/patches"
name="ftp://ftp.ibp.fr/pub/linux/sources/system/patches"></tt>

<item>Australia: 
<tt><htmlurl url="ftp://kirk.bond.edu.au/pub/OS/Linux/kernel"
name="tp://kirk.bond.edu.au/pub/OS/Linux/kernel"></tt>

<item>España:
<tt><htmlurl url="ftp://sunsite.rediris.es/pub/linux/kernel/sources"
name="ftp://sunsite.rediris.es/pub/linux/kernel/sources"></tt>

</itemize>

Si no tiene acceso <tt/FTP/, encontrará una lista de <it/BBS/ con lo mismo
en el grupo <tt/comp.os.linux.announce/ de USENET News.

<sect1>Descompresión de los fuentes 

<p>

Entre en la cuenta <tt>root</tt> y vaya al directorio <tt>/usr/src</tt>. 
Si instaló las fuentes cuando instaló Linux, habrá aquí un directorio
<tt>linux</tt>, con las fuentes antiguas. Si quiere preservar esas fuentes
(y tiene espacio de sobra), renombre (con <tt>mv</tt>) ese directorio a
<tt>linux-x.y.z</tt> (la versión actual <tt/x.y.z/ la puede obtener con el
comando <tt>uname -r</tt>).  Es importante que antes de descomprimir las
nuevas fuentes no haya ningún directorio <tt>/usr/src/linux</tt>. 

Ahora, en <tt>/usr/src</tt>, descomprima las fuentes con

<tscreen><verb>
tar xvfzp linux-x.y.z.tar.gz 
</verb></tscreen>

(si sólo tiene un fichero <tt/.tar/, sin <tt/.gz/, elimine la <tt/z/ del
comando <tt>tar</tt>). Los contenidos del fichero se expandirán en
<tt>/usr/src/linux</tt>. Vaya ahora a ese directorio y lea el fichero
<tt/README/. Encontrará una sección ``<it/INSTALLING the kernel/''. Siga
las instrucciones que allí se digan (aunque en las siguientes líneas le
diremos cómo tiene que hacer casi todo esto).

<sect1>Configuración del núcleo 

<p>

Nota: Este texto es parcialmente una repetición de lo que hay en el
fichero <tt>README</tt> de las fuentes. 

<p>

El comando 

<tscreen><verb>
make config 
</verb></tscreen>

invocado en el directorio <tt>/usr/src/linux</tt> inicia un programa
<it/shell-script/ de configuración que le preguntará bastantes cosas.
Requiere que esté instalado <tt/bash/, con lo que debe existir
<tt>/bin/bash</tt>, <tt>/bin/sh</tt> o la variable <tt>&dollar;BASH</tt>. 

<sect2>Anexo de la revisión 2.1.
<p>

 Si los fuentes que posee son superiores al <tt/2.0.x/, existen dos
métodos bastante más agradables e interactivos de llevar a cabo la
configuración; invocando desde modo texto, en el mismo directorio
mencionado anteriormente

<tscreen><verb>
make menuconfig
</verb></tscreen>

Iniciará un colorido programa (escrito con <tt/lxdialog/) muy agradable y
bastante más funcional que el <tt/make config/ a secas, para llevar a cabo
la configuración del kernel. 

Observará que su uso es bastante intuitivo; las opciones con un <tt/&lt;
&gt;/ indican la posibilidad de modularizar; si en ella presionamos <tt/M/
la seleccionaremos como módulo. Si presionamos <tt/ESPACIO/ aparecerá un
<tt/*/ indicando que será incluido en el kernel. Finalmente, si
presionamos <tt/N/ lo deseleccionaremos. 

Las opciones marcadas con <tt/[ ]/ no son modularizables.

Si Vd. es un <it/fan/ de las X, entonces puede arrancar desde un
<tt/xterm/ el <tt/script/ equivalente, ejecutando

<tscreen><verb>
make xconfig
</verb></tscreen>

Aparecerá ante sus ojos un maravilloso y gráfico programa de selección y
configuración del kernel bajo <it/X Window/ <tt/;-)/. 

Aquí seguro que sabrá manejarse a golpe de ratón sin problema alguno; las
opciones modularizables tendrán tres casillas posibles a rellenar: <tt/y/
indica que se incluirá en la parte monolítica del kernel; <tt/m/ que lo
hará como módulo, y <tt/n/ que no será seleccionado. 

<sect1>Continuación

<p>

Ahora <footnote>Lo que sigue está dirigido a los usuarios
(<it/¿masoquistas?/ del <tt/make config/, si emplea <tt/make menuconfig/ o
<tt/make xconfig/ encontrará mucho más intuitiva la configuración, si bien
debe leer a continuación qué significan las opciones.</footnote>se trata
de contestar las preguntas, normalmente con sí (`<tt>y</tt>')  o no
(`<tt>n</tt>'). Los manejadores de dispositivos incorporan, además, la
opción de módulo (`<tt>m</tt>'), opción interesante puesto que no
incorpora el manejador al núcleo en tiempo de compilación, sino que se
hace durante la ejecución del mismo, cuando sea necesario (por ejemplo,
cargar el módulo <it/PPP/ solo cuando vayamos a usar el módem).

Algunas otras opciones obvias o poco importantes no son descritas aquí.
Vea la sección <ref id="otras"> para descripciones de otras muchas.

Además, cuando configure el núcleo 2.0.x, podrá poner la opción `<tt/?/',
lo que le dará una breve descripción de la misma. 

<sect2> Emulación de coprocesador (<tt/Kernel math emulation/) 

<p>

Si no tiene coprocesador matemático (o un 486), debe contestar `<tt/y/' a
esto.  Si tiene coprocesador y contesta `<tt/y/' la emulación será
instalada pero no usada; funcionará, pero le ocupará memoria
innecesariamente. Además, he oído que la emulación es lenta, lo que se
traducirá en unas pesadas <it/X-Window/. 

<sect2> Soporte de discos IDE y MFM/RLL normales (<tt>Normal (MFM/RLL) disk
and IDE disk/cdrom support</tt>)

<p>

Normalmente necesitará este soporte, pues es el de los discos habituales
en los PCs. Este manejador no gestiona discos <it/SCSI/, para eso está la
opción específica que luego veremos. 

Ahora se le preguntará si quiere usar ``<tt/old disk-only/'' y manejadores
``<tt/new IDE/''. Tiene que elegir uno de ellos. La diferencia principal
es que el nuevo (<tt/new IDE/) maneja controladoras secundarias y CD-ROMs
<it>IDE/ATAPI</it>, hasta cuatro dispositivos, pero ocupa 4 KB más que el
antiguo. Se supone que los nuevos manejadores mejoran también velocidad y
fiabilidad, en especial si dispone de dispositivos <it/EIDE/. 

<sect2>Soporte de redes (<tt/Networking support/) 

<p>

En principio, contestaría afirmativamente si la máquina estuviera en una
red local o conectada a la Internet con <tt>SLIP/PPP</tt>. Sin embargo,
muchos programas, como ocurre con el sistema X Window, requieren el
soporte de red, así que lo mejor es contestar `<tt/y/' siempre. Después se
le preguntará si quiere soporte <tt>TCP/IP</tt>: conteste afirmativamente
aun no estando seguro.

<sect2> Limitar memoria a 16 Mb (<tt/Limit memory to low 16MB/)

<p>

Hay controladores de DMA en 386 con problemas para direccionar más de 16
MB de RAM. Contestar `<tt/y/' en el caso (raro) de que tenga uno de éstos. 

<sect2>Comunicación entre procesos <it/System V/ (<tt/System V IPC/) 

<p>

Una de las mejores definiciones del IPC está en el glosario del libro del
Perl. Curiosamente, los programadores de Perl suelen usar IPC para
comunicar sus procesos, así como muchas otras aplicaciones (como
<tt/DOOM/, sobre todo), por lo que no es buena idea contestar `<tt/n/' si
no se está seguro de lo que hace.

<sect2> Tipo de CPU (386, 486, Pentium, PPro) (<tt/Processor type (386,
486, Pentium, PPro/) )

<p>
 
Nota: En anteriores núcleos, la opción era "Usar el parámetro <tt/-m486/
en el compilador" (<tt/Use -m486 flag for 486-specific optimizations/) 

Tradicionalmente, esto era una optimización compatible con todos los
chips, aunque más rápido en la CPU elegida (y en todo caso, ocupaba algo
más). Actualmente, esto puede no ser cierto, con lo que deberá elegir
siempre la CPU que tenga (aunque la versión de 386 funcionará en todas las
máquinas). 

<sect2>Soporte SCSI (<tt/SCSI support/) 

<p>

Si tiene dispositivos SCSI, conteste `<tt/y/'. Se le preguntarán entonces
más cosas: soporte de CD-ROM, discos y qué clase de adaptador utiliza. Vea
el documento <it/SCSI-HOWTO/ para más detalle.

<sect2> Soportes de tarjetas de red (<tt/Network device support/)

<p>

Si tiene tarjeta de red, o quiere usar <tt/PPP/, <tt/SLIP/ o <tt/PLIP/
(puerto paralelo usado para conectarse a Internet), conteste
afirmativamente. El script le preguntará ahora qué tarjeta tiene y qué
protocolo usar. 

<sect2>Sistemas de ficheros (<tt/Filesystems/) 

<p>

El programa le preguntará si quiere soporte para los siguientes
sistemas de ficheros:

<tt/Standard (minix)/ - Las nuevas distribuciones no crean sistemas Minix,
y mucha gente no las usa para nada, pero puede convenir elegirla. Algunos
``<it/discos de rescate/'' usan el sistema Minix como formato de sus
disquetes, ya que da menos problemas.

<tt/Extended fs/ - Fue la primera versión del sistema extendido, pero ya
no se usa. No necesita seleccionarla.

<tt/Second extended/ - Este es el sistema más usado. Seguramente lo usará
Vd. también. Seleccione `<tt/y/'.<footnote>Ojo con seleccionarlo como
módulo;  aunque se puede, el sistema de ficheros en el que esté su
partición <tt>/</tt> debe estar incluido el el kernel
<it/no-modularmente/, ya que de lo contrario no podrá arrancar.</footnote>

<tt/xiafs filesystem/ - Hace mucho pudo ser usado, pero ahora mismo no
conocemos a nadie que lo utilice.

<tt/msdos/ - Selecciónelo si quiere acceder desde Linux a sus particiones
de MS-DOS o quiere montar disquetes de ese sistema.

<tt/umsdos/ - Este sistema permite añadir a un sistema MS-DOS las
características típicas de Unix como nombres largos o enlaces. Sirve para
quienes quieran instalar Linux en la partición DOS, pero nada más. 

<tt>/proc</tt> - Uno de los grandes inventos desde la leche condensada. 
(una idea robada descaradamente a <it/Bell Labs/, si no me equivoco) No se
trata de algo que se guarde en el disco, sino de una interfaz por medio de
ficheros con la tabla de procesos del núcleo, usada por programas como
`<tt>ps</tt>'. Pruebe a teclear `<tt>cat /proc/meminfo</tt>' o `<tt>cat
/proc/devices</tt>'. Algunos shells (<tt/rc/, concretamente) hacen uso de
<tt>/proc/self/fd</tt> (en lugar de <tt>/dev/fd</tt>) para E/S. Debe
contestar afirmativamente a la pregunta: muchas utilidades de Linux lo
necesitan. 

<tt/NFS/ - Si su máquina está en red y quiere acceder a sistemas de
ficheros remotos con NFS, conteste `<tt/y/' a esta pregunta.

<tt/ISO9660/ - Típico en los CD-ROMs. Si tiene un CD-ROM,
seleccione esta opción.

<tt>OS/2 HPFS</tt> - En el momento de escribir esto, el soporte HPFS es de
sólo lectura.<footnote>Y por lo que se ``oye'', así se quedará...</footnote>

<tt/System V and Coherent/ - para particiones de sistemas Coherent y
System V (otras variantes de Unix para PC).

<bf>Adiciones desde la edición del</bf> <it/Howto/ <bf/original (Rev. 2.1)/:

<tt/quota support/ - Selecciónelo si quiere administrar el espacio que
consumen en disco los usuarios del sistema; necesitará además las
utilidades <tt/quotas-1.55/, disponibles en: 

<tt><htmlurl
url="ftp://ftp.funet.fi/pub/Linux/kernel/src/subsystems/quota/all.tar.gz" 
name="ftp://ftp.funet.fi/pub/Linux/kernel/src/subsystems/quota/all.tar.gz"></tt>

Tenga en cuenta que este tipo de control restrictivo sólo funcionará sobre 
sistemas de ficheros <tt/ext2/.

<tt/mandatory lock support/: Cambia el algoritmo para proporcionar un
sistema de bloqueos más seguro, a fin de evitar la corrupción de ficheros
por parte de las aplicaciones en los accesos a disco simultáneo. Esto
puede interesar probable y únicamente cuando se usen grandes bases de
datos o dedique su sistema Linux a servidor de ficheros. Tenga en cuenta
que deberá tener servidores (<tt/samba/, <tt/mars-nwe/, etc...) que
soporten esta nueva característica.

<tt/vfat/. En conjunción con el sistema de fichero <tt/fat/ o <tt/msdos/
nos permitirá acceso a las particiones de w95, con soporte de nombres
``largos'' y demás. En el momento de escribir esto, se desconoce si
soportará la ``nueva'' <it/fat32/ del recién aparecido w95-<it/OSR2/. 

<tt/SMB filesystem support/: En conjunción con el paquete
<tt/samba/<footnote> Cuyo COMO está disponible en castellano, mire en la
sección <ref id="Grupos"> para más información.</footnote> nos permitirá
montar volúmenes compartidos por clientes de red <it/NetBios/. 

<tt/SMB w95 bug workaround/ - <tt/:-)/ qué decir... corrije un bug que
experimentan los volúmenes exportados por servidores w95. 

<tt/Amiga FFS support/ - Soporte para el sistema de ficheros <it/Fast File
System/ de <it/Amiga/. 

<tt/UFS filesystem support/ - Soporte para el <it/Unix FileSystem/,
empleado por algunos *nixes BSD, como <it>SunOS, FreeBSD, NetBSD,
NeXTstep</it>.  Permite montar dichas particiones o disquetes en modo de
sólo lectura. 

Esta opción contiene otras dos opciones adicionales relacionadas con las
tablas de partición de los discos según provengan de uno u otro *nix.
Escoja el menú en línea <tt/help/ para mayor información. 

<tt/NCP filesystem support/ - Permite montar volúmenes <it/NetWare/. 
Necesitará programas cliente para llevarlo a cabo, no obstante. 

<tt/root filesystem on NFS/ - necesario para estaciones de trabajo sin
disco duro, que arranquen por red y monten todo su sistema de ficheros por
<it/NFS/.

<tt/BOOTP support/ - Si su caso es el anterior, y arranca por red, este
protocolo le permitirá obtener su <tt/IP/ dinámicamente, usando el
protocolo <tt/BOOTP/. (Siempre que su tarjeta de red incorpore una
<it/ROM/ que lo permita). 

<tt/RARP support/ - Idem de lo anterior, en este caso usando el protocolo 
<it/RARP/.

<tt/Sys V and Coherent filesystem support/ permitirá montar particiones de
otros *nixes System V, como <it/SCO Unix/, <it/Xenix/ y <it/Coherent/. Lea
la ayuda asociada. 

Actualmente, hay un módulo <it/no oficial/ que permite acceso a sistemas
de ficheros <it/NTFS/, usados por wNT, su autor es Martin von Löwis,
<tt><htmlurl url="mailto:loewis@informatik.hu-berlin.de"
name="loewis@informatik.hu-berlin.de"></tt>. Su nivel de soporte es
ciertamente rudimentario todavía, pero siempre es bueno saberlo... 

más información en <tt><htmlurl
url="http://www.informatik.hu-berlin.de:80/&tilde;loewis/ntfs" 
name="http://www.informatik.hu-berlin.de:80/&tilde;loewis/ntfs"></tt>


<sect3>¡Pero no sé qué sistemas de ficheros necesito!

<p>

De acuerdo, teclee `<tt>mount</tt>'. La salida será como esta:

<tscreen><verb>
 blah# mount
 /dev/hda1 on / type ext2 (defaults)
 /dev/hda3 on /usr type ext2 (defaults)
 none on /proc type proc (defaults)
 /dev/fd0 on /mnt type msdos (defaults)
</verb></tscreen>

Observe cada línea; la palabra que sigue a `<tt>type</tt>' es el tipo de
sistema usado. En este ejemplo, los sistemas raíz (<tt>/</tt>) y
<tt>/usr</tt> usan el sistema ``<it/second extended/'', además usamos
sistema ``<it/proc/'' y hay montado un disquete MS-DOS. 

Para saber qué sistemas de ficheros usa en el núcleo actual puede teclear
`<tt>cat /proc/filesystems</tt>' siempre y cuando tenga al menos soporte
<tt/proc/. 

Otros sistemas de ficheros más raramente usados ocupan también mucho. 
Quizás le interese meterlos como módulos (vea la correspondiente sección,
y vea también la sección <ref id="lentos"> para saber por qué no se
recomiendan núcleos que ocupen mucho).

<sect2> Manejadores de tipo carácter (<tt/Character devices/)

<p>

Aquí se activan los manejadores para impresoras (por puerto paralelo),
ratones de bus, ratones <it>PS/2</it> (usado también en muchos
<it/trackballs/ de los portátiles), algunos manejadores de cintas y otros.
Conteste según su hardware.

Nota: ``<it/Selection/'' es un programa que le permite usar el ratón para
cortar y pegar texto entre consolas virtuales, fuera de las X-Window.
Actualmente no es una opción de configuración, sino un estándar. 

Nota 2: `Selection' está bastante obsoleto. Es mucho mejor el programa
``<tt/gpm/''<footnote><it/General Purpose Mouse support/, <it/Soporte
Genérico para Ratones/</footnote> puesto que hace cosas como manejar
diversos protocolos de ratones, etc.

<sect2>Tarjeta de sonido (<tt/Sound card/) 

<p>

Si siente gran necesidad de oír el ladrido del `<tt>biff</tt>', conteste
`<tt/y/' y después otro programa de configuración le preguntará acerca de
la tarjeta de sonido que tiene. Una observación: cuando le pregunte si
quiere instalar la versión completa del manejador, conteste `<tt/n/' y
ahorrará memoria, aunque tendrá que elegir qué características desea
incluir. Le recomiendo aquí que lea el
<it/Sonido-Como/<footnote>Disponible en castellano, obviamente</footnote>
donde encontrará mucha más información. 

<sect2>Otras opciones de configuración <label id="otras">

<p>

No todas las opciones se han listado ya que cambian mucho y otras son
completamente evidentes (por ejemplo, el soporte <tt/3Com 3C509/). Hay una
lista más extensa en el siguiente <it/URL/ de Axel Boldt, <tt><htmlurl
url="mailto:axel@uni-paderborn.de" name="axel@uni-paderborn.de"></tt>: 

<tt><htmlurl
url="http://math-www.uni-paderborn.de/&tilde;axel/config&lowbar;help.html" 
name="http://math-www.uni-paderborn.de/&tilde;axel/config&lowbar;help.html"></tt>

o por <it/FTP/ anónimo en:

<tt><htmlurl
url="ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl&lowbar;cnfg&lowbar;hlp.x.yz.tgz" 
name="ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl&lowbar;cnfg&lowbar;hlp.x.yz.tgz"></tt>

donde <tt/x.yz/ se refiere a la versión del núcleo.  En las últimas
versiones (<tt/2.0.x/) se incluyen estos documentos entre los ficheros de
las fuentes del núcleo (directorio <tt>Documentation/</tt>...).

<sect2><tt/Kernel hacking/ 

<p>

Traducción del fichero <tt/README/ de Linus:

La configuración ``<tt/kernel hacking/'' suele dar lugar a un núcleo más
grande y/o lento, y puede hacerlo menos estable al configurar algunas
rutinas especiales para encontrar errores del núcleo (<tt/kmalloc()/).
Para un núcleo de ``<it/producción/'' deberá contestar `<tt/n/' a la
pregunta. 

<sect1>¿Y ahora qué? (El fichero <tt/Makefile/). 

<p>

Tras hacer <tt>make config</tt>, un mensaje le dirá que ya está preparado
el núcleo y que ``revise el fichero <tt/Makefile/ para opciones
adicionales'', etc.

Por tanto, veamos el <tt>Makefile</tt>. Probablemente no tendrá que
cambiar nada, pero debe mirarse. Sus opciones podrán cambiarse con el
comando `<tt>rdev</tt>' una vez que el núcleo esté compilado.

<sect>Compilación del núcleo <label id="compilacion">

<p>

<sect1>Limpieza y dependencias 

<p>

Cuando se termina de configurar, se le instará a ejecutar `<tt>make
dep</tt>' y `<tt>clean</tt>'. Haga `<tt>make dep</tt>', lo que preparará
las dependencias en poco tiempo, a menos que su PC sea muy lento. Cuando
acabe, haga `<tt>make clean</tt>'. Esto elimina ficheros objetos y demás
de la versión anterior. <em>No olvidar</em> este paso.

<sect1>El momento de compilar <label id="momento">

<p>

Después de preparar dependencias, puede ejecutar `<tt>make zImage</tt>' o
`<tt>make zdisk</tt>' (esta es la parte que tarda más tiempo). `<tt>make
zImage</tt>' compilará el núcleo y lo dejará comprimido en
<tt>arch/i386/boot/zImage</tt> junto a otros ficheros. Con `<tt>make
zdisk</tt>' el nuevo núcleo se copiará además en el disquete que esté
puesto en la disquetera ``A:''.  `<tt>zdisk</tt>' es interesante para
probar núcleos; si explota (o simplemente no hace nada) se quita el
disquete de la disquetera y podrá arrancar el núcleo antiguo. Además sirve
para arrancar si borró accidentalmente el núcleo del disco duro. También
puede usarlo para instalar nuevos sistemas simplemente volcando el
contenido de un disco en otro (``¡¡ todo esto y más !! Ahora, ¿cuánto
pagaría?''). 

Los núcleos recientes están comprimidos, con una `<tt>z</tt>' comenzando
su nombre. Un núcleo comprimido se descomprime automáticamente al ser
ejecutado. 

<sect1> Otras opciones del `<tt/make/'

<p>

Con `<tt>make mrproper</tt>' hará una limpieza mucho más ``intensa''. 
Suele hacer falta cuando se actualiza (parchea) el núcleo. Pero esta
opción borra también su fichero de configuración del núcleo, así que
guarde una copia del correspondiente fichero <tt>.config</tt> si cree que
le interesa. 

La opción `<tt>make oldconfig</tt>' intentará configurar el núcleo con un
fichero de configuración anterior<footnote>A partir del <tt/2.0.xx/ no es
necesario, <tt/make/ <it/recuerda/ la última configuración</footnote>
evitando todo el proceso del `<tt>make config</tt>'. Si no ha compilado
anteriormente el núcleo o no tiene un fichero de configuración anterior,
no lo elija pues normalmente querrá algo que se salga de la configuración
por defecto.

Para compilación con módulos, vea la sección correspondiente. 

<sect1>Instalación del núcleo

<p>

Una vez que tenga un nuevo núcleo que parezca funcionar como desea, será
el momento de instalarlo. Casi todo el mundo utiliza <tt/LILO/ (LInux
LOader)  para esto. Con `<tt>make zlilo</tt>' se instalará el núcleo
ejecutando <tt/LILO/, quedando listo para rearrancar, pero esto solo
funcionará si <tt/LILO/ está bien configurado para su sistema: el núcleo
es <tt>/vmlinuz</tt>, <tt/LILO/ está en <tt>/sbin</tt> y la configuración
de <tt/LILO/ (<tt>/etc/lilo.conf</tt>) es coherente con lo anterior.

En otro caso, necesitará usar <tt/LILO/ directamente. Hay un paquete que
lo instala de manera adecuada, pero su fichero de configuración tiende a
confundir a la gente. Observe el fichero de configuración (estará en
<tt>/etc/lilo.conf</tt> o en <tt>/etc/lilo/config</tt> para versiones más
antiguas), y vea cuál es la configuración actual. El fichero de
configuración será como éste:

<tscreen><verb>
image = /vmlinuz
	label = Linux
	root = /dev/hda1
	...
</verb></tscreen>

La línea `<tt>image =</tt>' apunta al núcleo instalado actualmente. Casi
siempre es <tt>/vmlinuz</tt>. `<tt>label</tt>' es el identificador usado
para seleccionar qué sistema arrancar, y `<tt>root</tt>' es el disco o
partición a usar para el directorio raíz. Haga una copia de seguridad de
su antiguo núcleo y copie en <tt>/vmlinuz</tt> o donde diga el fichero
anterior el fichero zImage que haya generado el proceso de compilación.
Ahora, ejecute <tt/LILO/ (en sistemas modernos, será simplemente teclear
`<tt>lilo</tt>'. En sistemas antiguos, habrá que poner
`<tt>/etc/lilo/install</tt>' o <tt>`/etc/lilo/lilo -C
/etc/lilo/config</tt>'.)

Si quiere saber más sobre la configuración de <tt/LILO/, o no tiene
<tt/LILO/, obtenga la versión más reciente de su servidor <tt/FTP/
favorito y siga las instrucciones que le acompañan.

Para arrancar uno de sus antiguos núcleos, copie las líneas anteriores
incluyendo `<tt>image = xxx</tt>' al principio del fichero de
configuración de <tt/LILO/, y cambie `<tt>image = xxx</tt>' por `<tt>image
= yyy</tt>' donde `<tt>yyy</tt>' es el nombre de camino completo al
fichero de la copia de seguridad guardada. Ahora, cambie `<tt>label =
zzz</tt>' por `<tt>label = linux-backup</tt>' y reejecute <tt/LILO/. Puede
ser que necesite poner una línea en el fichero con `<tt>delay=x</tt>'
donde x son las centésimas de segundo que <tt/LILO/ esperará antes de
arrancar con la primera opción, de modo que pueda interrumpirse (con la
tecla <tt/SHIFT/) y seleccionarse qué núcleo desea arrancar (tecleando la
etiqueta (<tt/label/) asignada).

<bf/Inciso de la revisión 2.1/

Una forma muy cómoda de llevar todo el tema del <tt/LILO/, si lo tenemos
instalado, y las compilaciones, etc, es añadir lo siguiente en el
<tt>/etc/lilo.conf</tt>: 

<tscreen><verb>
...
image=/vmlinuz
        label=ultimo
        root=/dev/hd[loquesea]
        read-only
        append = ""
image=/vmlinuz.old
        label=anterior
        root=/dev/hd[loquesea]
        read-only
        append = ""
</verb></tscreen>

Al compilar, si lo hacemos con la secuencia de comandos

<tscreen><verb>
# make dep; make clean; make zlilo; make modules; make modules_install
</verb></tscreen>

el <tt/make zlilo/ renombrará la anterior imagen del kernel a
<tt>/vmlinuz.old</tt> , dejando la nueva como <tt>/vmlinuz</tt>, e
instalará <tt/LILO/, a continuación con lo cual lo hacemos todo
<it/automágicamente/. 

La órdenes <tt/make modules; make modules&lowbar;install/ compilarán los
módulos que hayamos seleccionado, y los instalarán. No olvidar ejecutar
<tt/depmod -a/ en cuanto hayamos arrancado con dicho núcleo. 

En caso de que estemos compilando por segunda vez una misma versión de
núcleo, y hayamos variado el número de módulos a compilar, es posible que
la ejecutar <tt/make dep/ nos encontremos con un mensaje de error; esto se
debe a que los antiguos módulos que no hayamos compilado ahora no son
borrados. Pueden borrarse tranquilamente. 

<sect>Parchear el núcleo 

<p>

<sect1>Aplicación de un parche 

<p>

Las actualizaciones incrementales del núcleo se distribuyen como
parches<footnote>No tomar con sentido peyorativo el término
``<it/parche/'', no se trata de un ``<it/remiendo/'', o ``<it/chapuza/'',
lo que hacemos al ``<it/parchear/'' es modificar directamente los
<bf/fuentes/ del núcleo, incluyendo las variaciones que se hayan
introducido.ver el comando <tt/diff/ y <tt/patch/ para más
referencias.</footnote> Por ejemplo, si tiene la versión <tt/1.1.45/ y ve
que existe un parche `<tt/patch46.gz/', con ese fichero podrá actualizarse
a la <tt/1.1.46/.  Debería antes de nada guardar una copia del árbol de
directorios de las fuentes del núcleo actual (haciendo `<tt>make
clean</tt>', luego `<tt>tar cvfz antiguas-fuentes.tar.gz linux</tt>' desde
el directorio <tt>/usr/src</tt>).

<p>

Ahora, supongamos que tiene `<tt/patch46.gz/' en <tt>/usr/src</tt>. Vaya a
ese directorio y escriba

<tscreen><verb>
zcat patch46.gz | patch -p0 
</verb></tscreen>

(o bien
<tscreen><verb>
patch -p0 < patch46 
</verb></tscreen>

si ya estaba descomprimido). Verá rápida (o lentamente, depende del
ordenador) una serie de mensajes que le dicen que se intentan aplicar los
cambios, cuáles tienen éxito y cuáles no.  Normalmente, esto irá bien y no
habrá que preocuparse de tanto mensaje, aunque con la opción <tt>-s</tt>
solo saldrán los mensajes de error.

<bf/Inciso de la revisión 2.1:/

No es infrecuente que haya que borrar el árbol de los fuentes entero y
reinstalarlos de nuevo; muchas veces, se tiene un <tt/.tar.gz/ con los
fuentes más un montón de parches; para evitarse el tener que parchear uno
a uno, puede invocar lo siguiente desde la línea de comandos: (asumo que
tratamos de parchear p. ej. con parches a partir del <tt/2.0.20/ hasta el
<tt/2.0.27/, usamos <tt/bash/ y estamos en <tt>/usr/src</tt>, teclee
<tt/pwd/ para cerciorarse).

<tscreen><verb>
# for i in patch-2.0.2[1234567].gz; do
>zcat $i | patch -p0
>done
</verb></tscreen>

Investigue por su cuenta, verá qué potencia hay en la línea de comandos
*nix... 

<bf/fin del inciso/

Para ver qué partes no se han modificado correctamente, busque los
ficheros <tt/.rej/ en el directorio de las fuentes. Si se usan algunas
versiones de <tt/patch/ (antiguas, sobre todo) esos ficheros tendrán
extensión `<tt/&num;/'. Con el comando <tt/find/ encontrará fácilmente los
ficheros: 

<tscreen><verb>
find . -name '*.rej' -print
</verb></tscreen>

imprime todos los ficheros <tt>.rej</tt> que están en el directorio actual
o subdirectorios. 

Si todo ha ido bien, haga `<tt/make clean/', `<tt/config/' y `<tt/dep/'
como se describió en las secciones <ref id="compilacion"> y <ref
id="momento">. 

Hay algunas opciones más en el comando <tt/patch/. Con <tt>-s</tt>, como
hemos dicho, se suprimen todos los mensajes salvo los errores. Si guarda
las fuentes del núcleo en otro lugar que no sea <tt>/usr/src/linux</tt>,
con <tt>patch -p1</tt> se parchearán las cosas limpiamente. Otras opciones
de interés se encuentran bien documentadas en las páginas <tt/man/.

<sect1>Si algo va mal 

<p>

El problema más común es que una ejecución de <tt/patch/ intente modificar
el fichero `<tt>config.in</tt>' y no parezca quedar bien, porque haya
hecho cambios en él de acuerdo con su máquina. Este problema sucede con
versiones antiguas. Para corregirlo, busque el fichero
<tt>config.in.rej</tt>, y vea qué tiene el parche originado. Los cambios
suelen ir marcados con `<tt/+/' o `<tt/-/' al principio de las líneas.
Edítelo, recordando si las opciones estaban puestas a <tt/Y/ o a <tt/N/, y
ejecute

<tscreen><verb>
patch -p0 < config.in.rej 
</verb></tscreen>

 y si no tiene fallos, puede continuar con el resto del proceso. El
fichero <tt>config.in.rej</tt> permanecerá, aunque puede borrarlo.

Si encuentra otros problemas, puede que haya aplicado un parche fuera de
orden. Si el programa <tt/patch/ responde con

<tscreen><verb>
previously applied patch detected: Assume -R? 
</verb></tscreen>

probablemente estará intentando aplicar un parche anterior a su versión
actual. Si responde `<tt/y/', intentará degradar sus fuentes, y
normalmente fallará, obligándole a preparar un nuevo árbol de fuentes. 

Para anular el efecto de un parche, use `<tt>patch -R</tt>' con el parche
original.

Lo mejor ante un problema es reinstalar un árbol de fuentes limpio y
empezar de nuevo. 

<sect1>Limpieza de ficheros <tt/.orig/ 

<p>

Después de algunos parches, los ficheros <tt>.orig</tt> empezarán a
abultar mucho. Por ejemplo, si estamos ya con el núcleo 1.1.51 y empezamos
con el <tt/1.1.48/, borrar los <tt/.orig/ nos ahorrara medio megabyte. Con

<verb>
find .-name '*.orig' -exec rm -f {} ';'
</verb>

se automatizará esa limpieza. En versiones que usen el <tt>&num;</tt> en
lugar de <tt>.rej</tt>, sustituya el <tt/.orig/ por un `<tt>&tilde;</tt>'. 

Una forma mejor de hacer esto es usar <tt>xargs</tt> de <it/GNU/: 

<verb>
find .-name '*.orig' | xargs rm
</verb>

o el método ``más seguro pero más pesado'':

<verb>
find . -name '*.orig' -print0 | xargs --null rm --
</verb>

<sect1>Otros parches 

<p>

Hay otros parches (los llamaremos ``no estándares'') que si se aplican,
probablemente provocarán que los parches de Linus no funcionen
correctamente, teniendo que retroceder, corregir las fuentes o el parche,
instalar de nuevo las fuentes, o una combinación de lo anterior.

<bf/inciso de la R. 2.1:/
Existe una página con información centralizada sobre este tipo de parches
en:

<tt><htmlurl url="http://www.ecsnet.com/html/linux&lowbar;21&lowbar;upatch.html"
name="http://www.ecsnet.com/html/linux&lowbar;21&lowbar;upatch.html"></tt>

Este es un buen sitio para buscar si necesita soporte para algún
dispositivo esotérico o implementación reciente. Tenga en cuenta, no
obstante, que la mayoría serán para el kernel actual de desarrollo, aunque
puedan aplicarse algunos ( eiste otra página en la misma localización
citada anteriormente) en el kernel de producción. 

<bf/fin del inciso/

Por ejemplo, el autor utilizaba el parche `<tt/noblink/' que anula el
parpadeo del cursor en las consolas virtuales. Este parche se actualiza (o
actualizaba) frecuentemente para los nuevos núcleos. Como ahora muchos
manejadores se pueden cargar como módulos, los parches ya son menos
necesarios. 

<sect>Paquetes adicionales <label id="adicionales">

<p>

El núcleo de Linux tiene más características no documentadas en el código; 
éstas se utilizan normalmente vía parches no estándares. Algunas
características se listan a continuación. 

<sect1><tt/kbd/

<p>

La consola de Linux tiene más prestaciones que las conocidas, como cambiar
las fuentes, cambiar el modo de vídeo, etc. El paquete <tt/kbd/ tiene
programas que permiten al usuario hacer esto, junto con nuevas fuentes de
texto y mapas de teclado, y se encuentra disponible en los mismos sitios
donde están las fuentes del núcleo. 

<sect1><tt/util-linux/

<p>

Rik Faith, <tt><htmlurl url="mailto:faith@cs.unc.edu"
name="faith@cs.unc.edu"></tt> recopiló una gran colección de utilidades de
Linux conocidas como `<tt/util-linux/', que ahora mantiene Nicolai
Langfeldt, <tt><htmlurl url="mailto:util-linux@math.uio.no"
name="util-linux@math.uio.no"></tt>. Se encuentran en <tt><htmlurl
url="ftp://sunsite.unc.edu/pub/Linux/system/Misc" 
name="ftp://sunsite.unc.edu/pub/Linux/system/Misc"></tt>, con programas
como <tt>setterm</tt>, <tt>rdev</tt> y <tt>ctrlaltdel</tt>, importantes
para el núcleo. Como dice Rik, no lo instale sin pensarlo, instalarlo todo
sin necesidad puede causarle después algunos problemas.

<sect1><tt/hdparm/

<p>

Son programas hechos con el núcleo oficial, para optimizar y jugar
con con los parámetros del disco duro, distribuyéndose por separado.

<sect>Problemas típicos <label id="tipicos">

<p>

<sect1><tt/make clean/ 

<p>

Si su nuevo núcleo hace cosas raras, puede ser que se le olvidara hacer
`<tt/make clean/' antes de compilar. Los síntomas suelen ser extraños
cuelgues, problemas de E/S... asegúrese también de hacer `<tt>make
dep</tt>'.

<sect1>Núcleos muy lentos o muy grandes <label id="lentos">

<p>

Si su núcleo consume mucha memoria, o la compilación se hace eterna
incluso con su nuevo <it>786DX6/440</it>, probablemente se deberá a haber
elegido demasiados manejadores, sistemas de ficheros, etc. a soportar en
el sistema. Si no los va a usar, no los incluya, puesto que consumen
memoria.  Lo típico en estos casos es que se recurre demasiado al
intercambio con el disco, lo que se aprecia en un ruido `excesivo' del
disco duro. 

Puede ver cuánta memoria ocupa su núcleo comparando los valores obtenidos
al ver el fichero <tt>/proc/meminfo</tt>, o con el comando <tt/dmesg/ o el
log de los mensajes del núcleo, donde verá algo parecido a esto:

<tscreen><verb>
Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data)
</verb></tscreen>

En mi 386 (con pocos drivers configurados) sale:

<tscreen><verb>
Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k data)
</verb></tscreen>

<sect1>El núcleo no compila 

<p>

Si no compila, puede ser por un fallo de parcheo, u otro tipo de
corrupción en los ficheros fuente. Además, la versión de <tt/gcc/ puede no
ser correcta o los propios ficheros de <tt>&num;include</tt>. Asegúrese
que los enlaces simbólicos necesarios (descritos en el fichero <tt/README/
de Linus) existen. En general, cuando un núcleo estándar no se puede
compilar, es porque hay algún problema serio en el sistema, y será
necesario reinstalar algunos programas.

También puede suceder que le den errores compilando el núcleo <tt/1.2.x/
con un <tt/gcc/ <it/ELF/ (<tt/2.6.3/ o superior). Se puede intentan
arreglar añadiendo las siguientes líneas al fichero
<tt>arch/i386/Makefile</tt>:

<tscreen><verb>
AS=/usr/i486-linuxaout/bin/as
LD=/usr/i486-linuxaout/bin/ld -m i386linux
CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
</verb></tscreen>

Ahora, haga `<tt/make dep/' y `<tt/make zimage/' de nuevo.

En algunos casos muy raros el <tt/gcc/ romperá con un mensaje similar a
``<tt/xxx exited with signal 15/''. En este caso la solución puede estar
en desactivar la caché de segundo nivel, pensar en un fallo hardware de la
memoria... o reinstalar de nuevo el <tt/gcc/. 

<sect1>El nuevo núcleo no parece arrancar 

<p>

No se ejecutó <tt/LILO/, o no está bien configurado. A veces, se ponen
errores como `<tt>boot = /dev/hda1</tt>' en lugar de `<tt>boot =
/dev/hda</tt>'.

<sect1> Se olvidó ejecutar <tt/LILO/, y el sistema ya no arranca

<p>

¡Vaya problema! Lo mejor que puede hacerse ahora es arrancar con un
disquete y preparar otro disquete para arrancar Linux (con <tt>`make
zdisk'</tt> se hizo uno). Necesita saber qué sistema de ficheros raíz
(<tt>/</tt>) tiene, dónde está y su tipo (por ejemplo, <tt/ext2/ o
<tt/minix/). En este ejemplo, también hay que saber dónde están los
ficheros de <tt>/usr</tt>, en otra partición. 

En el siguiente ejemplo, <tt>/</tt> es <tt>/dev/hda1</tt>, y el sistema
con las fuentes del núcleo es <tt>/dev/hda3</tt>, montado como
<tt>/usr</tt> normalmente. Ambos son sistemas <tt/ext2/. La imagen
compilada estará en el sistema de las fuentes.

La idea es que si hay un fichero <tt>zImage</tt> correcto, puede salvarse
en un disquete. Otra posibilidad (que funcionará mejor o peor, según el
caso) se verá en otro ejemplo.

En primer lugar, arranque con un disquete de instalación o de rescate, y
monte el sistema de ficheros que contenga el núcleo a usar:

<tscreen><verb>
 mkdir /mnt
 mount -t ext2 /dev/hda3 /mnt
</verb></tscreen>

Si <tt>mkdir</tt> le dice que el directorio ya existe, no hay problema. 
Ahora, pase al directorio donde está el núcleo compilado. Vea que

<tscreen><verb>
/mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot
</verb></tscreen>

Ponga un disco con formato en la unidad ``A:'' (que no sea el disquete con
el que ha arrancado) y copie el núcleo a él:

<tscreen><verb>
 cd /mnt/src/linux/arch/i386/boot
 dd if=zImage of=/dev/fd0
 rdev /dev/fd0 /dev/hda1
</verb></tscreen>

vaya a <tt>/</tt> y desmonte el sistema de ficheros:

<tscreen><verb>
 cd /
 umount /mnt
</verb></tscreen>

Ahora puede rearrancar el sistema desde el disquete. ¡No olvide ejecutar
<tt/LILO/!

Como se ha dicho, hay otra alternativa. Si el núcleo está en el directorio
raíz (por ejemplo <tt>/vmlinuz</tt>), puede usarlo para un disquete de
arranque. Suponiendo las condiciones anteriores, haríamos los cambios
siguientes en el ejemplo anterior: <tt>/dev/hda3</tt> por
<tt>/dev/hda1</tt> (el sistema raíz), <tt>/mnt/src/linux</tt> por
<tt>/mnt</tt>, y `<tt>if=zImage</tt>' por `<tt>if=vmlinuz</tt>'. El resto
puede ignorarse. 

Usar <tt/LILO/ con discos grandes (de más de 1024 cilindros) puede dar
problemas. Le recomendamos que lea el <it/mini-HOWTO/ sobre LILO para más
información.<footnote>Así como el <it/Discos-Grandes-mini-Como/,
disponible en castellano, ver sección <ref id="Grupos">.</footnote>.

<sect1>Mensaje de aviso: `<tt/warning: bdflush not running/' 

<p>

Es un problema muy importante. Desde la versión <tt/1.0/ del núcleo (20 de
Abril de 1994), hay un programa, `<tt>update</tt>' que, periódicamente,
vuelca al disco la caché de <it/buffers/ del sistema. Obtenga las fuentes
de `<tt>bdflush</tt>' (está donde se distribuyen las fuentes del núcleo) e
instálelas (quizás deba usar mientras lo hace el núcleo antiguo). Después
del rearranque, se instalará en memoria como `<tt>update</tt>' y ya no
habrá más avisos.

<sect1>Salen mensajes sobre símbolos no definidos, y no compila

<p>

Esto será probablemente porque tenga un compilador <it/ELF/ (<tt/gcc
2.6.3/ y posteriores) y las fuentes <tt/1.2.x/ o anteriores. Habitualmente
esto se corrige añadiendo las siguientes líneas al archivo
<tt>arch/i386/Makefile</tt>: 

<tscreen><verb>
AS=/usr/i486-linuxaout/bin/as
LD=/usr/i486-linuxaout/bin/ld -m i386linux
CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
</verb></tscreen>

Esto permitirá compilar el núcleo <tt/1.2.x/ con librerías <tt/a.out/.

<sect1>No consigo que me detecte mi CD-ROM <it>IDE/ATAPI</it>

<p>

Mucha gente tiene este problema, siendo las causas muy diversas.

El error más común es tener el dispositivo en una interfaz IDE sin
compañía de otro disco, para lo que debe ser configurado como ``maestro''
(master) o ``único'' (single), nunca como ``esclavo'' (slave).

<it/Creative Labs/ está poniendo interfaces IDE en sus tarjetas de sonido.
Sin embargo, esto es un problema cuando se tienen ya dos interfaces IDE en
la placa, en la <it/IRQ 15/. Entonces se suele configurar el IDE de la
tarjeta de sonido en la <it/IRQ 11/, y los núcleos <tt/1.2.x/ no saben
manejar esto (tener, en la práctica, tres IDE).

En las versiones <tt/1.3.x/ se empieza a intentar soportar esto, pero está
en desarrollo y en todo caso no incluye autodetección. Para utilizarlo,
pues, deberá hacer algunas cosas.

Si no tiene segunda IDE en placa, cambie los ``<it/jumpers/'' de la
tarjeta de sonido referentes a la interfaz IDE para que ocupen la <it/IRQ
15/ (segunda interfaz). Esto debería funcionar.

Si por el contrario hay en total tres interfaces, obtenga un núcleo
<it/1.3.x/ (por ejemplo, el <tt/1.3.57/ lo incluye) y lea el documento
<tt>drivers/block/README.ide</tt>, donde encontrará más información.

<sect1>Salen mensajes sobre cosas de encaminamiento obsoletas 

<p>

Consiga nuevas versiones de los programas `<tt>route</tt>' y otros que
manipulan tablas de encaminamiento. El fichero
<tt>/usr/include/linux/route.h</tt> tiene cambios al respecto. 

<sect1>La función de cortafuegos no funciona en el núcleo <tt/1.2.0/

<p>

Actualícese al menos a la <tt/1.2.1/.

<sect1> Mensaje: ``<tt/Not a compressed kernel Image file/''

<p>

No utilice el fichero <tt/vmlinux/ creado en <tt>/usr/src/linux</tt> para
arrancar, sino el mencionado <tt/zImage/. 

<sect1> Hay problemas con la consola al pasarse a la <tt/1.3.x/

<p>

Ponga `<tt>linux</tt>' en la entrada `<tt>console</tt>' del fichero
<tt>/etc/termcap</tt>. Además, deberá hacer una entrada en <tt/terminfo/. 

<sect1> Algunas cosas no compilan después de la actualización

<p>

El núcleo incluye ciertos ficheros <tt>&num;include</tt> (acaban en
<tt/.h/)  que se referencian desde <tt>/usr/include</tt>. Típicamente se
referencian con la línea:

<tscreen><verb>
#include <linux/xyzzy.h>
</verb></tscreen>

Normalmente, hay un enlace simbólico `<tt>linux</tt>' de &nl; 
<tt>/usr/include</tt> al directorio <tt>/usr/src/linux/include/linux</tt>. 
Si no existe tal enlace, o apunta a un lugar incorrecto, muchas cosas
compilarán mal. Por ejemplo, el problema es obvio si borró las fuentes del
núcleo porque le ocupaban mucho. Otro problema puede tener relación con
los permisos de los ficheros, tal vez debido a un <tt/umask/ de la cuenta
<tt/root/ que obligue a crear los ficheros ocultos a otros usuarios por
defecto.  Puede solucionar esto con el comando <tt/chmod/, pero será más
cómodo descomprimir las fuentes del núcleo añadiendo la opción <tt/-p/
(preservar modo)  al comando <tt/tar/: 

<tscreen><verb>
blah# tar zxvpf linux.x.y.z.tar.gz linux/include
</verb></tscreen>

Nota: Con ``<tt>make config</tt>'' se crea el enlace
<tt>/usr/src/linux</tt> si no existe. 

<sect> Notas sobre la actualización a la versión <tt/2.0.x/

<p>

La versión <tt/2.0.x/ se instala de manera algo diferente a otras
versiones, y requiere actualizar software auxiliar. El fichero
<tt>Documentation/Changes</tt> de las fuentes contiene información muy
importante sobre esto, como lo referente a los paquetes que debe
actualizar (<tt/gcc/, <tt/libc/...).

<sect> Módulos

<p>

Los módulos del núcleo cargables le permitirán simplificar la
configuración del núcleo y ahorrar memoria. Sirven para añadir
dinámicamente nuevos soportes de sistemas de ficheros o manejadores, a un
núcleo que ya está corriendo. 

<sect1>Instalación de las utilidades asociadas

<p>

Estas utilidades están disponibles allí donde esté el núcleo, como
<tt>modules-x.y.z.tar.gz</tt>. Elija el que corresponda a su núcleo. 
Descomprímalo con `<tt>tar zxvf modules-x.y.z.tar.gz</tt>', cambie al
directorio que crea (<tt>modules-x.y.z</tt>), léase el fichero
<tt/README/, y siga las instrucciones de instalación (normalmente, tan
simple como `<tt>make install</tt>'). Con ello tendrá las utilidades
<tt>insmod</tt>, <tt>rmmod</tt>, <tt>ksyms</tt>, <tt>lsmod</tt>,
<tt>genksyms</tt>, <tt>modprobe</tt> y <tt>depmod</tt> en <tt>/sbin</tt>.
Si lo desea, puede probar el manejador ejemplo ``<tt/hw/'' con
<tt>insmod</tt>; lea el fichero <tt/INSTALL/ para más detalle.

<tt>insmod</tt> inserta un módulo en el núcleo arrancado. Generalmente los
módulos son ficheros <tt/.o/; el manejador ejemplo es
<tt>drv&lowbar;hello.o</tt>, con lo que para insertarlo se usaría
`<tt>insmod drv&lowbar;hello.o</tt>'. Para ver los módulos cargados,
pruebe <tt/lsmod/. La salida será como ésta:

<tscreen><verb>
 blah# lsmod
 Module:#pages:Used by:
 drv_hello1
</verb></tscreen>

`<tt/drv&lowbar;hello/' es el nombre del módulo, que usa una página (4k) 
de memoria, y no hay módulos que dependan de él en este momento. Para
quitar el módulo, teclee `<tt>rmmod drv&lowbar;hello</tt>'. Vea que
<tt/rmmod/ necesita el nombre del módulo, no del fichero. Ese nombre lo
obtiene al listar los módulos instalados. Las otras utilidades de módulos
se encuentran documentadas en los manuales <it/on-line/. 

<bf/Inciso de la revisión 2.1/

Tres cosas relativas a módulos:

<itemize>

<item>Siempre que compile un kernel nuevo, y sus correspondientes módulos
(con <tt/make modules; make modules&lowbar;install/ tras los <tt>make dep; 
make clean; make zImage<footnote>O <tt/make zlilo/, si usa <tt/LILO/ como
gestor de arranque.</footnote></tt> lo primero que ha de hacer al arrancar
con el mismo, para computar las dependencias entre módulos, es invocar el
comando

<tscreen><verb>
depmod -a
</verb></tscreen>

<item>Desde la aparición de <tt/kerneld/, el andar insertando y retirando
módulos de memoria a mano no se estila mucho, en su lugar es <tt/kerneld/
quien se encarga de esto. Para hacer uso de él, asegúrese de responder sí
al soporte <tt/kerneld/ durante la configuración del núcleo, y llámelo
desde los <it/scripts/ de inicialización del sistema, que están
típicamente en <tt>/etc/rc.d/rc.x</tt>.

Sigue pudiendo cargar módulos a voluntad; el comando recomendado es
<tt/modprobe modulo/, que tendrá en cuenta las dependencias entre módulos,
cargando todos los necesarios (como por ejemplo el módulo <tt/slhc/ en el
caso de que queramos cargar el módulo <tt/ppp/.) 

<bf/Atención:/ El soporte de compresión CCP (<tt/bsd&lowbar;comp/) no está
incluído en esto debido a problemas de <it/copyright/, por lo que
deberemos cargarlo a mano; o bien ejecutamos la orden <tt/modprobe
bsd&lowbar;comp/ cuando queramos cargar <tt/ppp/, o bien lo insertamos
<bf/después/ de haber cargado <tt/ppp/ y <tt/slhc/, con por ejemplo,
<tt/modprobe ppp/.

Lea el fichero <tt>/usr/src/linux/Documentation/modules.txt</tt>,
disponible en castellano en <tt><htmlurl
url="http://www.insflug.org/pub/online/modulos.txt" 
name="http://www.insflug.org/pub/online/modulos.txt"></tt> para
profundizar sobre este tema, así como sobre el tercero de los ítems: 

<item><tt>/etc/modules.conf</tt> o <tt>/etc/conf.modules</tt>. Lea el
anterior fichero (<tt/modulos.txt/). 

</itemize>

<sect1>Módulos distribuidos con el núcleo <tt/1.2.2/

<p>

Algunos sistemas de ficheros, manejadores SCSI y de tarjetas de red, así
como otras utilidades son cargables como módulos. Para usarlos, lo
primero, no incluirlos en el núcleo principal (al compilarlo, no decir que
`sí' al manejador correspondiente durante el `<tt>make config</tt>').
Luego se arranca ese núcleo<footnote>Esto es obsoleto en el caso de los
núcleos <tt/2.0.x/, recuérdelo; con los <tt/2.0.x/ puede compilarlo todo
seguido, y arrancar posteriormente, ejecutar <tt/depmod -a/ y estará todo
listo.  </footnote> y se entra de nuevo en <tt>/usr/src/linux</tt> para
hacer `<tt>make modules</tt>', lo que compilará módulos para todas
aquellas opciones que no se eligieron durante el `<tt>make config</tt>', y
los dejará en <tt>/usr/src/linux/modules</tt>. Puede ahora ejecutar
`<tt>make modules&lowbar;install</tt>' que los instalará en
<tt>/lib/modules/x.y.z</tt> siendo <tt/x.y.z/ la versión del núcleo. 

Esto es especialmente útil con los sistemas de ficheros que, como
<tt/minix/ o <tt/msdos/, no se usan normalmente. Así, cuando se quiera
leer un disquete MSDOS, primero se cargaría el módulo con
<tt>insmod</tt><footnote>Mejor <tt/modprobe/, que como hemos comentado,
tendrá en cuenta las dependencias entre módulos que ha generado <tt/depmod
-a/, cargándolos todos.</footnote> y se descargaría al finalizar. Esto
ahorrará unos 50K de memoria en la operación normal del núcleo. Notar que
el sistema Minix siempre deberá estar dentro del núcleo (no como módulo) 
si se quiere hacer un disquete de rescate con él. 

<sect>Otras opciones de configuración. 

<p>

Esta sección contiene información sobre otras opciones de configuración
que se ofrecen durante `<tt>make config</tt>'.

<sect1>Opciones generales 

<p>

<tt>Normal floppy disk support</tt> (soporte de floppy normal): es
exactamente eso. Lea el fichero <tt>drivers/block/README.fd</tt>, es
importante para usuarios de <it/IBM Thinkpad/.

<tt>XT harddisk support</tt> (soporte de disco duro de XT): interesante si
quiere usar una controladora XT de 8 bits. 

<tt>PCI bios support</tt>(soporte de Bios PCI): si tiene PCI, puede
interesarle. Vaya con cuidado: algunas placas PCI antiguas pueden colgar
al sistema con esta opción. Más información al respecto se encontrará en
el documento <it/PCI-HOWTO/.

<tt>Kernel support for ELF binaries</tt> (soporte para binarios <it/ELF/): 
<it/ELF/ es un intento de uniformizar arquitecturas y sistemas operativos. 
Linux también pretende conseguirlo<footnote>De hecho, es el estándar
actual para todo el software en Linux. Podrá seguir ejecutando sus
(posiblemente obsoletos) antiguos binarios <tt/a.out/, dotando al kernel,
--modularmente, por ejemplo-- de soporte para los mismos.</footnote>. 

<tt>Set version information on all symbols for modules</tt> (mantener
información de versión en los símbolos de los módulos): en el pasado, los
módulos se recompilaban con cada nuevo núcleo. Si responde
afirmativamente, podrá usar módulos de otra versión. Para más detalle,
consulte el fichero <tt>README.modules</tt>.

<tt>Enable loadable module support</tt> Responda que sí a esto si pretende
hacer uso de los módulos cargables en tiempo de ejecución.

<tt>Kernel daemon support (e.g. autoload for modules)</tt>Esto es
absolutamente necesario si pretende hacer uso de <tt/kerneld/. En breve se
dispondrá de una versión en castellano del <it/Kerneld Mini-HOWTO/. Ver
sección <ref id="Grupos">.  <sect1>Opciones de red

<p>

Se describen en el documento <it/NET-2-HOWTO/ (o <it/NET-algo-HOWTO/).

<sect>Consejos y trucos <label id="trucos">

<p>

<sect1>Redirección de la salida de compilación o parcheado. 

<p>

Si le interesa tener ``<it/logs/'' de lo que hagan los comandos
`<tt/make/' o `<tt/patch/', puede hacerlo redirigiendo su salida a un
fichero. Primero, debe saber qué shell está utilizando (con el comando
`<tt>grep root /etc/passwd</tt>' puede saberlo, buscando en el resultado
algo así como `<tt>/bin/csh</tt>' o `<tt>/bin/sh</tt>'). Una vez
localizado, si utiliza <tt/sh/ o <tt/bash/, puede redirigir la salida de
un comando como `<tt>make</tt>' con: 

<tscreen><verb>
(comando) 2>&1 | tee (fich)
</verb></tscreen>

La línea anterior pondrá la salida de `<tt>(comando)</tt>' en el fichero
`<tt>(fich)</tt>'.

Si se trata de <tt/csh/ o <tt/tcsh/, teclee,

<tscreen><verb>
 (comando) |& tee (fich)
</verb></tscreen>

Para <tt/rc/ (shell que raramente usará) se teclearía,

<tscreen><verb>
 (comando) >[2=1] | tee (fich)
</verb></tscreen>

<sect1>Instalación condicional del núcleo 

<p>

Hay más métodos para probar un nuevo núcleo que no sea usar un disquete. A
diferencia de otros Unix, <tt/LILO/ puede arrancar cualquier fichero con
el núcleo que se encuentre en el disco<footnote>Así como montar
particiones de disco distintas según se le indique, con lo cual podemos
tener varias instalaciones distintas y poder arrancar con una y otra,
incluso compartiendo alguna de ellas.</footnote> (siempre y cuando éste
esté por debajo de los 1024 cilindros, lea la documentación de <tt/LILO/
para más detalle).  Puede tener al final de <tt>/etc/lilo.conf</tt> una
línea parecida a ésta:

<verb>
 image = /usr/src/linux/arch/i386/zImage
 label = nuevo_nucleo
</verb>

lo que le permitirá seleccionar en el arranque (habiendo ejecutado antes
lilo para reconfigurar) el <it>nuevo_nucleo</it> en lugar del habitual que
será probablemente <tt>/vmlinuz</tt>. Para poder hacer esta selección hay
que mantener pulsada la tecla SHIFT al arrancar, para que aparezca el
<it/prompt/ de <tt/LILO/ que le permita teclear la etiqueta
(nuevo&lowbar;nucleo u otra)  del núcleo elegido.

Si desea tener varios fuentes de núcleos distintos en el disco (¡cuidado!,
le puede suponer muchos <it/megas/), lo normal es tener cada versión
<tt/x.y.z/ en el directorio <tt>/usr/src/linux-x.y.z</tt> y
``seleccionar'' o activar cada núcleo sin más que redefinir el enlace
simbólico <tt>/usr/src/linux</tt> apuntando al directorio que desee (por
ejemplo, yo hice `<tt>ln -sf /usr/src/linux-1.2.3 /usr/src/linux</tt>' en
su momento).  Asegúrese que <tt>/usr/src/linux</tt> no es ya un
directorio, sino como mucho antiguos enlaces simbólicos. De otro modo, el
resultado del anterior comando no será el esperado. 

<sect1>Actualizaciones del núcleo 

<p>

Russell Nelson, <tt><htmlurl url="mailto:nelson@crynwr.com"
name="nelson@crynwr.com"></tt> lleva una lista que resume los cambios en
las nuevas versiones del núcleo. Son breves pero interesantes antes de
decidirse por instalar una nueva versión. Se puede encontrar por FTP
anónimo en <tt><htmlurl url="ftp://ftp.emlist.com/pub/kchanges"
name="ftp://ftp.emlist.com/pub/kchanges"></tt> o a través del URL: 

<tt><htmlurl url="http://www.crynwr.com/kchanges" 
name="http://www.crynwr.com/kchanges"></tt>

<sect>Otros documentos <it/COMO/ que pueden serle útiles

<p>

<itemize>
<item> <it/Sonido-Como/<footnote>Aquellos cuyo nombre incluya la
palabra ``<it/Como/'' están disponibles traducidos.</footnote>: tarjetas de 
sonido y utilidades
<item> <it/SCSI-HOWTO/: todo sobre controladores y dispositivos SCSI
<item> <it/NET-2-HOWTO/: todo sobre redes
<item> <it/PPP-Como/: redes con PPP concretamente
<item> <it/PCMCIA-HOWTO/: acerca de manejadores para portátiles
<item> <it/ELF-HOWTO/: <it/ELF/: qué es, cómo migrar...
<item> <it/Hardware-HOWTO/: revisión del hardware soportado por Linux
</itemize>

<sect>Miscelánea 

<p>

<sect1>El autor 

<p>

El autor y encargado de mantener el original de este documento en Inglés
es Brian Ward <tt><htmlurl url="mailto:bri@blah.math.tu-graz.ac.at" 
name="bri@blah.math.tu-graz.ac.at"></tt>. Envíenme cualquier comentario,
añadidos o correcciones que considere oportunos. En particular, lo que más
me interesa son las correcciones. Si quiere agradecerme de alguna forma
especial que haya escrito este documento, siempre podrá enviarme
ordenadores o CD-ROMs que no use, o simplemente una bonita postal de su
zona... 

Puede ver mi página principal de WWW en los URLs:  

<tt><htmlurl
url="http://www.math.psu.edu/ward/" name="http://www.math.psu.edu/ward/"></tt>

<tt><htmlurl url="http://blah.tu-graz.ac.at/&tilde;ward/" 
name="http://blah.tu-graz.ac.at/&tilde;ward/"></tt>

Aunque intento atender en lo posible el correo, recuerde que sin embargo
recibo <it>muchos</it> mensajes diarios, lo que hará que pueda pasar
tiempo antes de contestar su mensaje. Especialmente, si me envía alguna
consulta, trate de ser lo más claro y detallado posible en su mensaje. Por
ejemplo, si se trata de hardware que no funcione, trate de explicarme con
el máximo detalle la configuración de que se trata. No se preocupe si hace
preguntas simples, puesto que si no se la pregunta a nadie ¡nunca tendría
respuesta!. Agradeceré también las sugerencias.

Si me escribe y no obtiene respuesta en mucho tiempo (digamos, más de tres
semanas), puede que accidentalmente haya borrado su mensaje (lo siento,
inténtelo de nuevo).

Recibo muchos mensajes sobre cosas que realmente son problemas de
hardware. Está bien, pero tenga en cuenta que yo no conozco todo el
hardware existente en el mundo y no siempre puedo ayudarle. Personalmente,
uso máquinas con discos IDE y SCSI, CD-ROMs SCSI, tarjetas de red 3Com y
WD, ratones serie, placas base con PCI, controladoras SCSI NCR 810, CPUs
AMD 386DX40 con coprocesador Cyrix, procesadores AMD 5x86, 486DX4 y
también de Intel (todo esto es una lista de lo que conozco, pero
ciertamente no es una recomendación para su equipo, aunque si quiere,
puede preguntarme <tt>:-) </tt>).

La versión -0.1 se escribió el 3 de Octubre de 1994. Este documento está
disponible en SGML, PostScript, TeX, roff y ASCII. 

<bf/Nota del traductor/: Al igual que el autor original, me pongo a su
disposición para resolver problemas que estén en mi mano, y sobre todo,
aceptar sugerencias sobre esta traducción, perteneciente al proyecto
<it>LUCAS</it> (LinUx en CAStellano) coordinado por Ramón Gutiérrez.
Actualmente, se han preparado versiones SGML, HTML y ASCII. 

<bf/Nota de la revisión 2.1:/ Ver la sección <ref id="Grupos">. Me sumo a
las propuestas anteriores. A partir de esta revisión, este <it/COMO/ está
disponible en SGML, HTML, ASCII, PostScript, DVI, LyX, y cualquier otro
formato soportado por <tt/linuxdoc-sgml/. Le recomiendo encarecidamente
que si piensa imprimirlo, lo haga con las versiones <tt/.dvi/ o <tt/.ps/,
la calidad no tiene color en comparación con las otras versiones para
imprimir. Y al fin y al cabo, me he tomado el trabajo de revisarlo
precisamente por esto <tt/:-)/, asi como actualizarlo un poco.

El traductor, Juan José Amor, <tt><htmlurl
url="mailto:jjamor@ls.fi.upm.es" name="jjamor@ls.fi.upm.es"></tt> se
encuentra disponible por correo electrónico y también en el WWW: 

<tt><htmlurl url="http://lml.ls.fi.upm.es/&tilde;jjamor" 
name="http://lml.ls.fi.upm.es/&tilde;jjamor"></tt>.

<sect1>Pendiente de hacer

<p>

La sección <ref id="trucos"> es pequeña. Espero poderla agrandar
gracias a sus sugerencias.

Lo mismo para la sección <ref id="adicionales">.

Hay que añadir más información acerca de recuperación de cuelgues y
errores. 

<sect1>Colaboraciones 

<p>

Se incluyó una pequeña parte del <tt/README/ de Linus (acerca de las
opciones de ``<tt/kernel hacking/''). (¡Gracias, Linus!).

<tt><htmlurl url="mailto:uc@brian.lunetix.de"
name="uc@brian.lunetix.de"></tt> (Ulrich Callmeier): <tt/patch -s/ y
<tt/xargs/. 

<tt><htmlurl url="mailto:quinlan@yggdrasil.com"
name="quinlan@yggdrasil.com"></tt> (Daniel Quinlan): muchas correcciones y
añadidos. 

<tt><htmlurl url="mailto:nat@nataa.frmug.fr.net"
name="nat@nataa.frmug.fr.net"></tt> (Nat Makarevitch): <tt/mrproper/,
<tt/tar -p/. 

<tt><htmlurl url="mailto:boldt@math.ucsb.edu"
name="boldt@math.ucsb.edu"></tt> (Axel Boldt): recopiló descripciones de
configuraciones del núcleo en la red, luego me envió la lista. 

<tt><htmlurl url="mailto:lembark@wrkhors.psyber.com"
name="lembark@wrkhors.psyber.com"></tt> (Steve Lembark): sobre múltiples
formas de arrancar.

<tt><htmlurl url="mailto:kbriggs@earwax.pd.uwa.edu.au" 
name="kbriggs@earwax.pd.uwa.edu.au"></tt> (Keith Briggs): algunas
correcciones y sugerencias.

<tt><htmlurl url="mailto:rmcguire@freenet.columbus.oh.us" 
name="mailto:rmcguire@freenet.columbus.oh.us"></tt> (Ryan McGuire):
adiciones realizables. 

<tt><htmlurl url="mailto:dumas@excalibur.ibp.fr"
name="dumas@excalibur.ibp.fr"></tt> 
(Eric Dumas): traducción al Francés.

<tt><htmlurl url="mailto:simazaki@yu-gate.yamanashi.ac.jp" 
name="simazaki@yu-gate.yamanashi.ac.jp"></tt> (Yasutada Shimazaki): 
traducción al Japonés. 

<tt><htmlurl url="mailto:jjamor@lml.ls.fi.upm.es" 
name="jjamor@lml.ls.fi.upm.es"></tt> (Juan José Amor Iglesias): traducción
al Castellano. <tt>;-)</tt>

<tt><htmlurl url="mailto:donahue@tiber.nist.gov" 
name="donahue@tiber.nist.gov"></tt> (Michael J Donahue): errores
tipográficos, ganador de la ``sliced bread<footnote>Proviene de la popular
expresión anglosajona ``<it/... it's the best thing since sliced bread/'',
algo así como (literalmente) ``<it/... es lo mejor que se ha inventado
desde las tostadas/'', suele utilizarse para expresar ``<it/... es lo
mejor que haya parido mente humana/''.</footnote> competition''. 

<tt><htmlurl url="mailto:rms@gnu.ai.mit.edu" 
name="rms@gnu.ai.mit.edu"></tt> (Richard Stallman):  concepto sobre la
documentación de libre distribución. 

<tt><htmlurl url="mailto:dak@Pool.Informatik.RWTH-Aachen.DE" 
name="dak@Pool.Informatik.RWTH-Aachen.DE"></tt> (David Kastrup): El tema
del NFS. 

La gente que me ha enviado correo con preguntas y problemas también me ha
sido de extrema ayuda. 

<sect1>Notas sobre el Copyright, Licencia y Todo Eso

<p>

Nota del traductor: Aunque se traducen las notas siguientes, se copian
también intactas para respetar los términos de la Licencia. 

<p>

<tscreen><verb>
===========Copyright notice, License, and all that stuff ==================

Copyright (c) Brian Ward, 1994-1996.
Permission is granted to make and distribute copies of this manual provided
the copyright notice and this permission notice are preserved on all
copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the derived
work is distributed under the terms of a permission notice identical to
this one. Translations fall under the catagory of ``modified versions.''


Warranty: None.

Recommendations
:
Commercial redistribution is allowed and encouraged; however, it is
strongly recommended that the redistributor contact the author before the
redistribution, in the interest of keeping things up-to-date (you could
send me a copy of the thing you're making while you're at it). Translators
are also advised to contact the author before translating. The printed
version looks nicer. Recycle.

=============================================================================
</verb></tscreen>

Copyright &copy; Brian Ward, 1994, 1995.

Se concede permiso para realizar y distribuir copias de este documento,
siempre proporcionando esta nota y la del Copyright en todas las copias. 

Se concede permiso para copiar y distribuir versiones modificadas de este
documento, bajo las condiciones propuestas para copias completas. Las
traducciones se incluyen en la categoría de ``versiones modificadas''. 

Garantías: Ninguna.

Recomendaciones: Se permite y recomienda redistribuir comercialmente este
documento; sin embargo, se sugiere que el distribuidor contacte antes con
el autor, con el fin de mantener las cosas al día. Con este mismo
propósito se recomienda también a los traductores que contacten con el
autor. 

<sect>Anexo: El INSFLUG <label id="Grupos">
<p>

El <em/INSFLUG/ forma parte del grupo internacional 
<it/Linux Documentation Project/, 
encargándose de las traducciones al castellano de los Howtos (Comos),
así como la producción de documentos originales en aquellos casos
en los que no existe análogo en inglés.

En el <bf/INSFLUG/ se orienta preferentemente a la traducción de documentos
breves, como los <em/COMOs/ y <em/PUFs/ (<bf/P/reguntas de
<bf/U/so <bf/F/recuente, las <it/FAQs/. <tt/:)/ ), etc.

Diríjase a la sede del INSFLUG para más información al respecto.

En la sede del INSFLUG encontrará siempre las <bf/últimas/ versiones 
de las traducciones:  <tt><htmlurl url="www.insflug.org" 
name="www.insflug.org"></tt>. Asegúrese de comprobar cuál es la última versión 
disponible en el Insflug antes de bajar un documento de un servidor réplica.

Se proporciona también una lista de los servidores
réplica (<it/mirror/) del Insflug más cercanos a Vd.,  
e información relativa a otros recursos en castellano.

Francisco José Montilla, <tt><htmlurl url="mailto:pacopepe@insflug.org"
name="pacopepe@insflug.org"></tt>.

</article>
