Gentoo Archives: gentoo-commits

From: "John Christian Stoddart (chiguire)" <chiguire@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo commit in xml/htdocs/doc/es: initramfs-guide.xml
Date: Sat, 07 Apr 2012 14:20:42
Message-Id: 20120407142032.3B2592004B@flycatcher.gentoo.org
1 chiguire 12/04/07 14:20:32
2
3 Added: initramfs-guide.xml
4 Log:
5 first spanish translation
6
7 Revision Changes Path
8 1.1 xml/htdocs/doc/es/initramfs-guide.xml
9
10 file : http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/doc/es/initramfs-guide.xml?rev=1.1&view=markup
11 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/doc/es/initramfs-guide.xml?rev=1.1&content-type=text/plain
12
13 Index: initramfs-guide.xml
14 ===================================================================
15 <?xml version='1.0' encoding="UTF-8"?>
16 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/es/initramfs-guide.xml,v 1.1 2012/04/07 14:20:32 chiguire Exp $ -->
17
18 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
19
20 <guide lang="es">
21 <title>Guía Gentoo Linux de Sistemas de Archivos Iniciales en RAM</title>
22
23 <author title="Autor">
24 <mail link="swift@g.o">Sven Vermeulen</mail>
25 </author>
26 <author title="Traductor">
27 <mail link="chiguire"/>
28 </author>
29
30 <abstract>
31 Cada vez más sistemas requieren de un sistema de archivos iniciales en
32 RAM o initramfs para iniciar correctamente. En esta guía, tratamos de
33 entender los conceptos de los initramfs al igual que como crearlos
34 correctamente y manejar sus instancias.
35 </abstract>
36
37 <!-- The content of this document is licensed under the CC-BY-SA license -->
38 <!-- See http://creativecommons.org/licenses/by-sa/3.0 -->
39 <license/>
40
41 <version>1</version>
42 <date>2012-03-31</date>
43
44 <chapter>
45 <title>Conceptos de los initramfs</title>
46 <section>
47 <title>Introducción</title>
48 <body>
49
50 <p>
51 Para muchos usuarios un sistema initramfs no es asunto de
52 preocupación. Sus sistemas usan esquemas sencillos de particiones de
53 disco, sin manejadores o configuraciones exóticas (tales como sistemas
54 de archivo encriptados), de manera que el núcleo Linux kernel bien
55 puede entregar el control al binario <c>init</c> de su sistema. Sin
56 embargo, para muchos sistemas, un initramfs es prácticamente
57 obligatorio.
58 </p>
59
60 <p>
61 El concepto clave para entender lo que es un initramfs (o para qué
62 sirve) sería comprender como funciona el proceso de arranque de Linux,
63 aún aproximándolo a un alto nivel.
64 </p>
65 </body>
66 </section>
67
68 <section>
69 <title>El proceso de arranque de Linux</title>
70 <body>
71
72 <p>
73 Una vez que el núcleo Linux obtiene control sobre el sistema (lo cual
74 ocurre luego de ser cargado por el gestor de arranque), prepara las
75 estructuras de memoria y los manejadores de la mejor forma que
76 pueda. Luego entrega el control a otra aplicación (usualmente
77 <c>init</c>), cuya tarea es continuar la adecuación del sistema y
78 asegurarse que al concluir el proceso de arranque todos los servicios
79 necesarios estan disponible y que el usuario pueda ingresar. La
80 aplicación <c>init</c> hace esto iniciando, entre otros servicios al
81 demonio <c>udev</c> que a su vez tmbién cargará y preparará el sistema
82 en base a los dispositivos detectados. Al iniciar <c>udev</c>, todos
83 los sistema de archivos que quedan que deben ser montados, se montan y
84 los servicios faltantes iniciados.
85 </p>
86
87 <p>
88 Para sistemas donde todos los archivos y herramientas necesarias
89 residen en el mismo sistema de archivos, la aplicación <c>init</c>
90 puede controlar perfectamente el resto del proceso de arranque. Sin
91 embargo, cuando se han definido múltiples sistemas de archivos (o
92 necesitamos configuraciones más exóticas), esto podría ser un poco más
93 difícil:
94 </p>
95
96 <ul>
97 <li>
98 Cuando la partición <path>/usr</path> está en un sistema de
99 archivos separado, las herramientas y manejadores con archivos
100 almacenados en <path>/usr</path> no pueden usarse a no ser que
101 <path>/usr</path> esté disponible. Si esas herramientas se
102 necesitan para que <path>/usr</path> sea disponible, entonces el
103 sistema no podrá arrancar.
104 </li>
105 <li>
106 Si el sistema de archivos raíz está encriptado, entonces el núcleo
107 Linux no podrá encontrar la aplicación <c>init</c>, lo cual
108 resultará en un sistema que no iniciará.
109 </li>
110 </ul>
111
112 <p>
113 La solución a este problema ha sido desde hace tiempo utilizar un
114 <e>initrd</e> (dispositivo de raíz inicial).
115 </p>
116 </body>
117 </section>
118
119 <section>
120 <title>El dispositivo de raíz inicial</title>
121 <body>
122
123 <p>
124 Un <e>initrd</e> es una estructura de disco en memoria (ramdisk) que
125 contiene las herramientas y guiones necesarios para montar los
126 sistemas de archivos necesitados antes de pasar el control a la
127 aplicación <c>init</c> en el sistema de archivos raíz. El núcleo Linux
128 ejecuta el guión de configuración (usualmente, pero no
129 obligatoriamente llamado <c>linuxrc</c>) en este disco raíz, que
130 prepara al sistema, cambia al verdadero sistema de archivos raíz y
131 luego llama a <c>init</c>.
132 </p>
133
134 <p>
135 Aunque el método initrd es todo lo que se requiere, tiene algunas desventajas:
136 </p>
137
138 <ul>
139 <li>
140 Es un dispositivo de bloque de pleno derecho que requiere la carga
141 de llevar un sistema de archivos completo con un estado fijo. Si
142 escoje un initrd muy pequeño, no podremos incluir todos los
143 guiones necesarios y si lo hacemos muy grande estamos
144 desperdiciando memoria.
145 </li>
146 <li>
147 Como es un dispositivo verdadero, también consume memoria caché en
148 el núcleo Linux y es propenso a los métodos de manejo de memoria y
149 archivos en uso (como paginación), empeorando la situación con
150 respecto al consumo de memoria.
151 </li>
152 </ul>
153
154 <p>
155 El initramfs se creó para resolver estos (para algunos) problemas.
156 </p>
157 </body>
158 </section>
159
160 <section>
161 <title>El sistema de archivos inicial en ram</title>
162 <body>
163
164 <p>
165 Un <e>initramfs</e> es un sistema de archivos inicial basado en
166 <e>tmpfs</e> (un sistema de archivos en memoria liviano y flexible en
167 cuanto a tamaño), que requiere dispositivos de bloque separados (de
168 manera que no requiere caché y la carga mencionada antes
169 desaparece). Tal como el initrd, contiene las herramientas y los
170 guiones necesarios para montar los sistemas de archivos antes de
171 llamar el binario <c>init</c> en el verdadero sistema de archivos
172 raíz. Estas herramientas pueden ser capas de abstracción para
173 desencriptación (para los sistemas de archivo encriptados),
174 manejadores de volúmenes lógicos, raid en software, cargadores de
175 sistemas de archivo basados en manejadores bluetooth, etc.
176 </p>
177
178 <p>
179 El contenido del initramfs se realiza creando un archivo. <c>cpio</c>
180 es una antigua (pero de uso comprobado) solución de archivos (sus
181 archivos son conocidos como <e>archivos cpio</e>). Son definitivamente
182 comparados con <c>tar</c>. La escogencia de <c>cpio</c> en este caso
183 es porque era más fácil de implementar (en términos de código) y
184 soporta (aún en épocas antiguas) los archivos de dispositivos (lo cual
185 <c>tar</c> no puede hacer).
186 </p>
187
188 <p>
189 Todos los archivos, herramientas, librerías configuraciones (si
190 aplican), etc. son colocadas en el archivo cpio. Este archivo se
191 comprime con la herramienta <c>gzip</c> y almacenado junto al núcleo
192 Linux. El gestor de arranque se lo ofrecerá al núcleo al momento de
193 arranque de modo que el núcleo sabrá que se requiere un initramfs.
194 </p>
195
196 <p>
197 Una vez detectado, el núcleo Linux creará un sistema de archivos
198 tmpfs, allí extraerá el contenido del archivo e iniciará el guión
199 <c>init</c> en la raíz del sistema de archivos tmpfs. Este guión luego
200 montará el verdadero sistema de archivos raíz (luego de asegurar que
201 lo puede montar, por ejemplo, cargando módulos adicionales, preparando
202 una capa de abstracción para manejar encriptación, etc.) al igual que
203 otros sistemas de archivos vitales (como <path>/usr</path> y
204 <path>/var</path>).
205 </p>
206
207 <p>
208 Una vez que el sistema de archivos raíz y otros sistemas de archivos
209 vitales estan montados, el guión <c>init</c> del initramfs cambiará la
210 raíz al verdadero sistema de archivos raíz y finalmente llamar a
211 <c>/sbin/init</c> en ese sistema para continuar con el proceso de
212 arranque.
213 </p>
214 </body>
215 </section>
216 </chapter>
217
218 <chapter>
219 <title>Creando un initramfs</title>
220 <section>
221 <title>Introducción y configuración del gestor de arranque</title>
222 <body>
223
224 <p>
225 Para crear un initramfs, es importante saber cuales manejadores,
226 guiones y herramientas adicionales van a ser requeridos para arrancar
227 el sistema. Por ejemplo, si usa LVM, entonces deberá soportar las
228 herramientas LVM en el initramfs. De igual manera, si usa RAID en
229 software, hará falta <c>mdadm</c>, etc.
230 </p>
231
232 <p>
233 Algunas herramientas ayudan a crear initramfs (archivos cpio
234 comprimidos) para el sistema. Para los que quieren un control total,
235 se puede crear fácilmente initramfs propios también.
236 </p>
237
238 <p>
239 Una vez creados, debemos ajustar la configuración del gestor de
240 arranque para que sepa que se usará un initramfs. Por ejemplo, si el
241 archivo del initramfs file está almacenado como
242 <path>/boot/initramfs-3.2.2-gentoo-r5</path>, entonces la
243 configuración en <path>/boot/grub/grub.conf</path> sería:
244 </p>
245
246 <pre caption="Ejemplo en grub.conf para arrancar con un initramfs">
247 title Gentoo Linux 3.2.2-r5
248 root (hd0,0)
249 kernel /boot/kernel-3.2.2-gentoo-r5
250 initrd /boot/initramfs-3.2.2-gentoo-r5
251 </pre>
252 </body>
253 </section>
254
255 <section id="genkernel">
256 <title>Usando genkernel</title>
257 <body>
258
259 <p>
260 <c>genkernel</c>, la herramienta de Gentoo para construir núcleos,
261 puede ser utilizada para generar un initramfs, aunque no haya usado
262 <c>genkernel</c> para configurar o construir el núcleo.
263 </p>
264
265 <p>
266 Para usar <c>genkernel</c> para generar un initramfs, se recomienda
267 incluir todos los manejadores y código necesario para montar los
268 sistemas de archivos <path>/</path> y <path>/usr</path> al construir
269 el núcleo (no como módulos). Luego, llamar a <c>genkernel</c> de la
270 siguiente manera:
271 </p>
272
273 <pre caption="Ejecutando genkernel para crear un initramfs">
274 # <i>genkernel --install --no-ramdisk-modules initramfs</i>
275 </pre>
276
277 <p>
278 Dependiendo del sistema, tal vez quiera agregar una o más de las
279 siguientes opciones:
280 </p>
281
282 <table>
283 <tr>
284 <th>Opción</th>
285 <th>Descripción</th>
286 </tr>
287 <tr>
288 <ti>--disklabel</ti>
289 <ti>Agrega soporte para configurar con <c>LABEL=</c> en el
290 <path>/etc/fstab</path></ti>
291 </tr>
292 <tr>
293 <ti>--dmraid</ti>
294 <ti>Agrega soporte para RAID falso en hardware</ti>
295 </tr>
296 <tr>
297 <ti>--firmware</ti>
298 <ti>Agregar código firmware para el sistema</ti>
299 </tr>
300 <tr>
301 <ti>--gpg</ti>
302 <ti>Agregar soporte para GnuPG</ti>
303 </tr>
304 <tr>
305 <ti>--iscsi</ti>
306 <ti>Agregar soporte para iSCSI</ti>
307 </tr>
308 <tr>
309 <ti>--luks</ti>
310 <ti>Agregar soporte para contenedores de encriptación luks</ti>
311 </tr>
312 <tr>
313 <ti>--lvm</ti>
314 <ti>Agregar soporte para LVM</ti>
315 </tr>
316 <tr>
317 <ti>--mdadm</ti>
318 <ti>Agregar soporte para RAID en software</ti>
319 </tr>
320 <tr>
321 <ti>--multipath</ti>
322 <ti>Agregar soporte para acceso E/S múltiple a un SAN</ti>
323 </tr>
324 <tr>
325 <ti>--zfs</ti>
326 <ti>Agregar soporte para ZFS</ti>
327 </tr>
328 </table>
329
330 <p>
331 Al terminar, el initramfs resultante estará almacenado en
332 <path>/boot</path>.
333 </p>
334 </body>
335 </section>
336
337 <section id="dracut">
338 <title>Usando dracut</title>
339 <body>
340
341 <warn>
342 Al momento de escribir, dracut todavía no está marcado como estable,
343 de manera que tal vez tenga que desenmascarlo antes de continuar.
344 </warn>
345
346 <p>
347 La herramienta <c>dracut</c> fue creada con el solo propósito de
348 manejar archivos initramfs. Utiliza un enfoque altamente modular
349 acerca de la inclusión o no del soporte deseado.
350 </p>
351
352 <p>
353 Al instalar <c>dracut</c>, asegúrese de incluir soporte para los
354 <c>DRACUT_MODULES</c> adecuados. Esta es una variable de entorno
355 configurable en <path>/etc/make.conf</path> para incluir soporte para
356 configuraciones específicas:
357 </p>
358
359 <pre caption="Preparando para instalar dracut">
360 DRACUT_MODULES="dmraid lvm syslog -biosdevname -btrfs -caps -crypt -crypt-gpg
361 -dmsquash-live -gensplash -iscsi -livenet -mdraid -multipath -nbd -nfs -plymouth
362 -ssh-client"
363 </pre>
364
365 <p>
366 Es aconsejable activar (o desactivar) los módulos que necesite (y no
367 necesite). Luego, haga <c>emerge dracut</c> para instalar la
368 herramienta en el sistema.
369 </p>
370
371 <p>
372 El siguiente paso es configurar <c>dracut</c> modificando
373 <path>/etc/dracut.conf</path>. En el archivo de configuración, por
374 cierto bien comentado, podemos agregar soporte para módulos
375 específicos en caso de necesidad.
376 </p>
377
378 <p>
379 Una vez lista la configuración, podemos crear un initramfs ejecutando
380 <c>dracut</c> así:
381 </p>
382
383 <pre caption="Ejecutando dracut para generar un initramfs">
384 # <i>dracut</i>
385 </pre>
386
387 <p>
388 La imagen resultante soporta arranque de sistemas genéricos basados en
389 la configuración en <path>/etc/dracut.conf</path>. También podemos
390 optar por generar un initramfs específicamente configurado para el
391 sistema (en el cual <c>dracut</c> intenta detectar las herramientas,
392 manejadores, etc. del sistema actual). Si conoce el soporte necesario
393 (código y manejadores) que forma parte del núcleo (no como módulos),
394 entonces hasta puede agregar la opción <c>--no-kernel</c>:
395 </p>
396
397 <pre caption="Permitiendo que dracut genere un initramfs específico">
398 # <i>dracut --host-only --no-kernel</i>
399 </pre>
400
401 <p>
402 Para más información, revise las páginas man <c>dracut</c> y <c>dracut.cmdline</c>.
403 </p>
404 </body>
405 </section>
406 </chapter>
407
408 <chapter>
409 <title>Recursos adicionales</title>
410 <section>
411 <title>Específicos a Gentoo</title>
412 <body>
413
414 <ul>
415 <li>
416 <uri
417 link="http://en.gentoo-wiki.com/wiki/Initramfs">Initramfs</uri>
418 (en inglés) en Gentoo-wiki.com
419 </li>
420 <li>
421 <uri link="http://wiki.gentoo.org/wiki/Initramfs">Initramfs</uri>
422 (en inglés) en el Wiki oficial Gentoo
423 </li>
424 <li>
425 <uri link="http://wiki.gentoo.org/wiki/Dracut">Dracut</uri> (en
426 inglés) en el wiki Gentoo oficial
427 </li>
428 </ul>
429 </body>
430 </section>
431
432 <section>
433 <title>Recursos generales</title>
434 <body>
435
436 <ul>
437 <li>
438 <uri
439 link="https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt">ramfs-rootfs-initramfs.txt</uri>
440 (en inglés) dentro de la propia documentación del núcleo Linux
441 </li>
442 </ul>
443 </body>
444 </section>
445 </chapter>
446 </guide>