Translation

(itstool) path: sect2/para
For more debugging you should also include WITNESS support, which will alert you of mistakes in locking:
146/1040
Context English Spanish State
Documentation Documentación
Documentation on kernel programming is scarce — it is one of few areas where there is nearly nothing in the way of friendly tutorials, and the phrase <quote>use the source!</quote> really holds true. However, there are some bits and pieces (some of them seriously outdated) floating around that should be studied before beginning to code: La documentación sobre la programación del kernel es escasa — es una de las pocas áreas donde casi no hay tutoriales amigables, y la frase, <quote>¡usa el código fuente!</quote>, realmente es cierta. Sin embargo, hay algunos trozos (algunos de ellos muy desactualizados) flotando alrededor que deben estudiarse antes de comenzar a programar:
The <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/developers-handbook/index.html">FreeBSD Developer's Handbook</link> — part of the documentation project, it does not contain anything specific to kernel programming, but rather some general useful information. El <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/developers-handbook/index.html">Manual del desarrollador de FreeBSD</link> — parte del proyecto de documentación, no contiene nada específico sobre la programación del kernel, sino más bien información general de utilidad.
The <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/arch-handbook/index.html">FreeBSD Architecture Handbook</link> — also from the documentation project, contains descriptions of several low-level facilities and procedures. The most important chapter is 13, <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/arch-handbook/driverbasics.html">Writing FreeBSD device drivers</link>. El <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/arch-handbook/index.html">Manual de arquitectura de FreeBSD</link> — también del proyecto de documentación, contiene descripciones de varios recursos y procedimientos de bajo nivel. El capítulo más importante es el 13, <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/arch-handbook/driverbasics.html">Escribir controladores de dispositivos en FreeBSD</link>.
The Blueprints section of <link xlink:href="http://www.freebsddiary.org">FreeBSD Diary</link> web site — contains several interesting articles on kernel facilities. La sección Blueprints del sitio web <link xlink:href="http://www.freebsddiary.org">FreeBSD Diary</link> — contiene varios artículos interesantes sobre recursos del kernel.
The man pages in section 9 — for important documentation on kernel functions. Las páginas man en la sección 9 — para documentación importante sobre las funciones del kernel.
The <citerefentry><refentrytitle>geom</refentrytitle><manvolnum>4</manvolnum></citerefentry> man page and <link xlink:href="http://phk.freebsd.dk/pubs/">PHK's GEOM slides</link> — for general introduction of the GEOM subsystem. La página man de <citerefentry><refentrytitle>geom</refentrytitle><manvolnum>4</manvolnum></citerefentry> y <link xlink:href="http://phk.freebsd.dk/pubs/">las diapositivas GEOM de PHK</link> — para la introducción general del subsistema GEOM.
Man pages <citerefentry><refentrytitle>g_bio</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_event</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_data</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_geom</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_provider</refentrytitle><manvolnum>9</manvolnum></citerefentry> <citerefentry><refentrytitle>g_consumer</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_access</refentrytitle><manvolnum>9</manvolnum></citerefentry> &amp; others linked from those, for documentation on specific functionalities. Las páginas man de <citerefentry><refentrytitle>g_bio</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_event</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_data</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_geom</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_provider</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_consumer</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_access</refentrytitle><manvolnum>9</manvolnum></citerefentry> y otras vinculadas a partir de ellas, para documentación sobre funcionalidades específicas.
The <citerefentry><refentrytitle>style</refentrytitle><manvolnum>9</manvolnum></citerefentry> man page — for documentation on the coding-style conventions which must be followed for any code which is to be committed to the FreeBSD tree. La página man de <citerefentry><refentrytitle>style</refentrytitle><manvolnum>9</manvolnum></citerefentry> — para la documentación sobre las convenciones de estilo de codificación que se deben seguir para cualquier código con el que se haga commit en el árbol de FreeBSD.
Preliminaries Preliminares
The best way to do kernel development is to have (at least) two separate computers. One of these would contain the development environment and sources, and the other would be used to test the newly written code by network-booting and network-mounting filesystems from the first one. This way if the new code contains bugs and crashes the machine, it will not mess up the sources (and other <quote>live</quote> data). The second system does not even require a proper display. Instead, it could be connected with a serial cable or KVM to the first one. La mejor forma de hacer el desarrollo del kernel es tener (al menos) dos ordenadores separados. Uno de ellos debería de tener el entorno de desarrollo y el código fuente, y el otro sería usado para probar el código recién escrito, inicializando a través de la red y montando su sistema de archivos desde el primer ordenador. De esta forma, si el nuevo código contiene errores y bloquea el ordenador, esto no dañará el código fuente (ni ningún otro dato que este ejecutándose en <quote>caliente</quote>). El segundo sistema ni siquiera necesita un monitor adecuado. En su lugar, podría estar conectado con un cable serie o KVM al primer ordenador.
But, since not everybody has two or more computers handy, there are a few things that can be done to prepare an otherwise <quote>live</quote> system for developing kernel code. This setup is also applicable for developing in a <link xlink:href="http://www.vmware.com/">VMWare</link> or <link xlink:href="http://www.qemu.org/">QEmu</link> virtual machine (the next best thing after a dedicated development machine). Pero, dado que no todo el mundo tiene dos o más ordenadores a mano, hay algunas cosas que se pueden hacer para preparar un sistema <quote>live</quote> para desarrollar el código del kernel. Esta configuración también es aplicable para el desarrollo en una máquina virtual <link xlink:href="http://www.vmware.com/">VMWare</link> o <link xlink:href="http://www.qemu.org/">QEMU</link> (la mejor opción después de un ordenador de desarrollo dedicado).
Modifying a System for Development Modificar un sistema para el desarrollo
For any kernel programming a kernel with <option>INVARIANTS</option> enabled is a must-have. So enter these in your kernel configuration file: Para cualquier programación del kernel, es obligatoria tener activada la opción <option>INVARIANTS</option>. Así que añada estas líneas a su archivo de configuración del kernel:
options INVARIANT_SUPPORT
options INVARIANTS
options INVARIANT_SUPPORT
options INVARIANTS
For more debugging you should also include WITNESS support, which will alert you of mistakes in locking: Para tener un mayor nivel de depuración, también debe incluir el soporte de WITNESS, que le advertirá sobre errores relacionados con los bloqueos:
options WITNESS_SUPPORT
options WITNESS
options WITNESS_SUPPORT
options WITNESS
For debugging crash dumps, a kernel with debug symbols is needed: Para depurar los volcados de memoria, se necesita un kernel con símbolos de depuración:
makeoptions DEBUG=-g makeoptions DEBUG=-g
With the usual way of installing the kernel (<command>make installkernel</command>) the debug kernel will not be automatically installed. It is called <filename>kernel.debug</filename> and located in <filename>/usr/obj/usr/src/sys/KERNELNAME/</filename>. For convenience it should be copied to <filename>/boot/kernel/</filename>. Con la forma habitual de instalar el kernel (<command>make installkernel</command>), el kernel de depuración no se instalará automáticamente. Se llama <filename>kernel.debug</filename> y se encuentra en <filename>/usr/obj/usr/src/sys/KERNELNAME/</filename>. Por convención, se debe copiar a <filename>/boot/kernel/</filename>.
Another convenience is enabling the kernel debugger so you can examine a kernel panic when it happens. For this, enter the following lines in your kernel configuration file: Otra convención es habilitar la depuración del kernel para que pueda examinar el kernel panic cuando suceda. Para esto, introduzca las siguientes líneas en su archivo de configuración del kernel:
options KDB
options DDB
options KDB_TRACE
options KDB
options DDB
options KDB_TRACE
For this to work you might need to set a sysctl (if it is not on by default): Para que esto funcione, es posible que necesite establecer un sysctl (si no está activado de forma predeterminada):
debug.debugger_on_panic=1 debug.debugger_on_panic=1
Kernel panics will happen, so care should be taken with the filesystem cache. In particular, having softupdates might mean the latest file version could be lost if a panic occurs before it is committed to storage. Disabling softupdates yields a great performance hit, and still does not guarantee data consistency. Mounting filesystem with the <quote>sync</quote> option is needed for that. For a compromise, the softupdates cache delays can be shortened. There are three sysctl's that are useful for this (best to be set in <filename>/etc/sysctl.conf</filename>): Ocurrirán kernel panics, por lo que se debe tener cuidado con la cache del sistema de archivos. En particular, tener habilitadas las softupdates puede significar que la última versión del archivo podría perderse si se produce un kernel panic antes de que se haya hecho commit al almacenamiento. Deshabilitar las softupdates produce un gran impacto en el rendimiento, y no garantiza la consistencia de los datos. Para eso es necesario montar el sistema de archivos con la opción <quote>sync</quote>. Como propuesta, los delays de la cache de softupdates pueden ser acortados. Hay tres sysctls que son útiles para esto (lo mejor es establecerlas en <filename>/etc/sysctl.conf</filename>):
kern.filedelay=5
kern.dirdelay=4
kern.metadelay=3
kern.filedelay=5
kern.dirdelay=4
kern.metadelay=3
The numbers represent seconds. Los números representan segundos.
For debugging kernel panics, kernel core dumps are required. Since a kernel panic might make filesystems unusable, this crash dump is first written to a raw partition. Usually, this is the swap partition. This partition must be at least as large as the physical RAM in the machine. On the next boot, the dump is copied to a regular file. This happens after filesystems are checked and mounted, and before swap is enabled. This is controlled with two <filename>/etc/rc.conf</filename> variables: Para depurar los kernel panics, los volcados del kernel son necesarios. Dado que un kernel panic podría inutilizar los sistemas de archivos, este volcado de memoria se graba primero en una partición sin formato (raw). Por lo general, esta es la partición swap. Esta partición debe ser al menos tan grande como la RAM física del ordenador. En el siguiente arranque, el volcado se copia en un archivo normal. Esto sucede después de que los sistemas de archivos se verifiquen y monten, y antes de habilitar la swap. Esto se controla con dos variables en <filename>/etc/rc.conf</filename>:
dumpdev="/dev/ad0s4b"
dumpdir="/usr/core
dumpdev="/dev/ad0s4b"
dumpdir="/usr/core
The <varname>dumpdev</varname> variable specifies the swap partition and <varname>dumpdir</varname> tells the system where in the filesystem to relocate the core dump on reboot. La variable <varname>dumpdev</varname> especifica la partición de swap y <varname>dumpdir</varname> informa al sistema dónde se encuentra en el sistema de archivos para reubicar el volcado del kernel al reiniciar.
Writing kernel core dumps is slow and takes a long time so if you have lots of memory (&gt;256M) and lots of panics it could be frustrating to sit and wait while it is done (twice — first to write it to swap, then to relocate it to filesystem). It is convenient then to limit the amount of RAM the system will use via a <filename>/boot/loader.conf</filename> tunable: Escribir volcados del kernel es lento y lleva mucho tiempo, por lo que si tiene mucha memoria (&gt;256M) y muchos kernel panics, puede ser frustrante sentarse y esperar mientras se hace (dos veces — primero escribirlo en el swap, luego reubicarlo al sistema de archivos). Es conveniente limitar la cantidad de RAM que utilizará el sistema a través de una variable en <filename>/boot/loader.conf</filename>:

Loading…

User avatar None

New source string

FreeBSD Doc / articles_geom-classSpanish

New source string a year ago
Browse all component changes

Glossary

English Spanish
No related strings found in the glossary.

Source information

Source string comment
(itstool) path: sect2/para
Source string location
article.translate.xml:147
String age
a year ago
Source string age
a year ago
Translation file
articles/es_ES/geom-class.po, string 26