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> |