Linux From Scratch
Versin 6.0
Gerard Beekmans
Linux From Scratch: Versin 6.0
por Gerard Beekmans
Copyright 19992004 Sobre el texto original: Gerard Beekmans.
Copyright 20022004 Sobre la traduccin al castellano: Proyecto LFS-ES.
Traducido por el proyecto LFS-ES
Versin de la traduccin: FINAL del 8 de Diciembre de 2004
Copyright (c) 20022004, Proyecto LFS-ES
El presente texto se distribuye bajo la Licencia GNU de documentacin libre (GFDL). Para todo aquello no especificado en dicha licencia son de aplicacin las
condiciones de uso del documento original en el que se basa esta traduccin, citadas a continuacin.
Copyright (c) 19992004, Gerard Beekmans
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions in any form must retain the above copyright notice, this list of conditions and the following disclaimer.
Neither the name of Linux From Scratch nor the names of its contributors may be used to endorse or promote products derived from this material without
specific prior written permission.
Any material derived from Linux From Scratch must contain a reference to the Linux From Scratch project.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Linux From Scratch - Versin 6.0
Tabla de contenidos
Prlogo .....................................................................................................................................................vii
1. Prefacio ..........................................................................................................................................vii
2. Audiencia ......................................................................................................................................viii
3. Prerrequisitos ................................................................................................................................... x
4. Tipografa ........................................................................................................................................xi
5. Estructura .......................................................................................................................................xii
I. Introduccin ............................................................................................................................................ 1
1. Introduccin ..................................................................................................................................... 3
1.1. Cmo construir un sistema LFS .............................................................................................. 3
1.2. Recursos .................................................................................................................................. 4
1.3. Ayuda ...................................................................................................................................... 6
1.4. Sobre el CD incluido ............................................................................................................... 8
2. Preparar una nueva particin ........................................................................................................... 9
2.1. Introduccin ............................................................................................................................ 9
2.2. Crear una nueva particin ..................................................................................................... 10
2.3. Crear un sistema de ficheros en la particin ......................................................................... 11
2.4. Montar la nueva particin ..................................................................................................... 12
II. Preparativos para la construccin ........................................................................................................ 13
3. Paquetes y parches ......................................................................................................................... 15
3.1. Introduccin .......................................................................................................................... 15
3.2. Todos los paquetes ................................................................................................................ 16
3.3. Parches necesarios ................................................................................................................ 20
4. ltimos preparativos ...................................................................................................................... 23
4.1. Sobre $LFS ........................................................................................................................... 23
4.2. Creacin del directorio $LFS/tools ....................................................................................... 24
4.3. Aadir el usuario lfs .............................................................................................................. 25
4.4. Configuracin del entorno .................................................................................................... 26
4.5. Sobre los SBUs ..................................................................................................................... 28
4.6. Sobre los bancos de pruebas ................................................................................................. 29
5. Construir un sistema temporal ....................................................................................................... 31
5.1. Introduccin .......................................................................................................................... 31
5.2. Requisitos del sistema anfitrin ............................................................................................ 32
5.3. Notas tcnicas sobre las herramientas ................................................................................... 33
5.4. Binutils-2.15.91.0.2 - Fase 1 ................................................................................................. 36
5.5. GCC-3.4.1 - Fase 1 ............................................................................................................... 38
5.6. Linux-Libc-Headers-2.6.8.1 .................................................................................................. 40
5.7. Cabeceras de Linux-2.6.8.1 .................................................................................................. 41
5.8. Glibc-2.3.4-20040701 ........................................................................................................... 42
5.9. Ajustar las herramientas ........................................................................................................ 45
5.10. Tcl-8.4.7 .............................................................................................................................. 47
5.11. Expect-5.42.1 ...................................................................................................................... 49
5.12. DejaGNU-1.4.4 ................................................................................................................... 51
5.13. GCC-3.4.1 - Fase 2 ............................................................................................................. 52
5.14. Binutils-2.15.91.0.2 - Fase 2 ............................................................................................... 55
5.15. Gawk-3.1.4 .......................................................................................................................... 57
5.16. Coreutils-5.2.1 ..................................................................................................................... 58
5.17. Bzip2-1.0.2 .......................................................................................................................... 59
iii
Linux From Scratch - Versin 6.0
5.18. Gzip-1.3.5 ........................................................................................................................... 60
5.19. Diffutils-2.8.1 ...................................................................................................................... 61
5.20. Findutils-4.1.20 ................................................................................................................... 62
5.21. Make-3.80 ........................................................................................................................... 63
5.22. Grep-2.5.1 ........................................................................................................................... 64
5.23. Sed-4.1.2 ............................................................................................................................. 65
5.24. Gettext-0.14.1 ..................................................................................................................... 66
5.25. Ncurses-5.4 ......................................................................................................................... 67
5.26. Patch-2.5.4 .......................................................................................................................... 68
5.27. Tar-1.14 ............................................................................................................................... 69
5.28. Texinfo-4.7 .......................................................................................................................... 70
5.29. Bash-3.0 .............................................................................................................................. 71
5.30. M4-1.4.2 .............................................................................................................................. 72
5.31. Bison-1.875a ....................................................................................................................... 73
5.32. Flex-2.5.31 .......................................................................................................................... 74
5.33. Util-linux-2.12b .................................................................................................................. 75
5.34. Perl-5.8.5 ............................................................................................................................. 76
5.35. Udev-030 ............................................................................................................................. 77
5.36. Eliminacin de Smbolos .................................................................................................... 78
III. Construccin del sistema LFS ........................................................................................................... 79
6. Instalacin de los programas del sistema base ............................................................................... 81
6.1. Introduccin .......................................................................................................................... 81
6.2. Montar los sistemas de ficheros virtuales del ncleo ............................................................ 82
6.3. Entrar al entorno chroot ........................................................................................................ 83
6.4. Cambio del propietario ......................................................................................................... 84
6.5. Creacin de los directorios .................................................................................................... 85
6.6. Creacin de enlaces simblicos esenciales ........................................................................... 86
6.7. Creacin de los ficheros de contraseas, grupos y registro .................................................. 87
6.8. Poblar /dev ............................................................................................................................ 89
6.9. Linux-Libc-Headers-2.6.8.1 .................................................................................................. 90
6.10. Man-pages-1.67 .................................................................................................................. 91
6.11. Glibc-2.3.4-20040701 ......................................................................................................... 92
6.12. Reajustar las herramientas .................................................................................................. 98
6.13. Binutils-2.15.91.0.2 .......................................................................................................... 100
6.14. GCC-3.4.1 ......................................................................................................................... 103
6.15. Coreutils-5.2.1 ................................................................................................................... 106
6.16. Zlib-1.2.1 ........................................................................................................................... 111
6.17. Mktemp-1.5 ....................................................................................................................... 113
6.18. Iana-Etc-1.01 ..................................................................................................................... 114
6.19. Findutils-4.1.20 ................................................................................................................. 115
6.20. Gawk-3.1.4 ........................................................................................................................ 116
6.21. Ncurses-5.4 ....................................................................................................................... 117
6.22. Readline-5.0 ...................................................................................................................... 119
6.23. Vim-6.3 ............................................................................................................................. 121
6.24. M4-1.4.2 ............................................................................................................................ 124
6.25. Bison-1.875a ..................................................................................................................... 125
6.26. Less-382 ............................................................................................................................ 126
6.27. Groff-1.19.1 ...................................................................................................................... 127
6.28. Sed-4.1.2 ........................................................................................................................... 130
6.29. Flex-2.5.31 ........................................................................................................................ 131
6.30. Gettext-0.14.1 ................................................................................................................... 133
6.31. Inetutils-1.4.2 .................................................................................................................... 135
iv
Linux From Scratch - Versin 6.0
6.32. Iproute2-2.6.8-040823 ...................................................................................................... 137
6.33. Perl-5.8.5 ........................................................................................................................... 139
6.34. Texinfo-4.7 ........................................................................................................................ 141
6.35. Autoconf-2.59 ................................................................................................................... 143
6.36. Automake-1.9.1 ................................................................................................................. 145
6.37. Bash-3.0 ............................................................................................................................ 147
6.38. File-4.10 ............................................................................................................................ 149
6.39. Libtool-1.5.8 ..................................................................................................................... 150
6.40. Bzip2-1.0.2 ........................................................................................................................ 151
6.41. Diffutils-2.8.1 .................................................................................................................... 153
6.42. Kbd-1.12 ........................................................................................................................... 154
6.43. E2fsprogs-1.35 .................................................................................................................. 156
6.44. Grep-2.5.1 ......................................................................................................................... 159
6.45. Grub-0.95 .......................................................................................................................... 160
6.46. Gzip-1.3.5 ......................................................................................................................... 162
6.47. Man-1.5o ........................................................................................................................... 164
6.48. Make-3.80 ......................................................................................................................... 166
6.49. Module-Init-Tools-3.0 ...................................................................................................... 167
6.50. Patch-2.5.4 ........................................................................................................................ 169
6.51. Procps-3.2.3 ...................................................................................................................... 170
6.52. Psmisc-21.5 ....................................................................................................................... 172
6.53. Shadow-4.0.4.1 ................................................................................................................. 174
6.54. Sysklogd-1.4.1 .................................................................................................................. 177
6.55. Sysvinit-2.85 ..................................................................................................................... 179
6.56. Tar-1.14 ............................................................................................................................. 182
6.57. Udev-030 ........................................................................................................................... 183
6.58. Util-linux-2.12b ................................................................................................................ 185
6.59. Sobre los smbolos de depuracin ..................................................................................... 189
6.60. Eliminar los smbolos de nuevo. ....................................................................................... 190
6.61. Limpieza ........................................................................................................................... 191
7. Configurar los guiones de arranque del sistema .......................................................................... 193
7.1. Introduccin ........................................................................................................................ 193
7.2. LFS-Bootscripts-2.2.2 ......................................................................................................... 194
7.3. Cmo funcionan los guiones de arranque? ....................................................................... 196
7.4. Manejo de dispositivos y mdulos en un sistema LFS ....................................................... 198
7.5. Configuracin del guin setclock ....................................................................................... 201
7.6. Configurar la consola Linux ............................................................................................... 202
7.7. Crear el fichero /etc/inputrc ................................................................................................ 204
7.8. Los ficheros de inicio de Bash ............................................................................................ 206
7.9. Configuracin del guin sysklogd ...................................................................................... 208
7.10. Configuracin del guin localnet ...................................................................................... 209
7.11. Creacin del fichero /etc/hosts .......................................................................................... 210
7.12. Configuracin del guin network ..................................................................................... 211
8. Hacer el sistema LFS arrancable .................................................................................................. 213
8.1. Introduccin ........................................................................................................................ 213
8.2. Creacin del fichero /etc/fstab ............................................................................................ 214
8.3. Linux-2.6.8.1 ....................................................................................................................... 215
8.4. Hacer el sistema LFS arrancable ......................................................................................... 218
9. El final .......................................................................................................................................... 221
9.1. El final ................................................................................................................................. 221
9.2. Registrarse ........................................................................................................................... 222
9.3. Reinicio del sistema ............................................................................................................ 223
v
Linux From Scratch - Versin 6.0
9.4. Y ahora, qu? .................................................................................................................... 224
IV. Apndices ........................................................................................................................................ 225
A. Acrnimos y trminos ................................................................................................................. 227
B. Agradecimientos .......................................................................................................................... 231
ndice ...................................................................................................................................................... 235
vi
Linux From Scratch - Versin 6.0
Prlogo
1. Prefacio
Mis aventuras con Linux empezaron hace 6 aos cuando descargu e instal mi primera distribucin. Tras
trabajar cierto tiempo con ella descubr algunos aspectos que definitivamente quera ver mejorados. Por
ejemplo, no me gustaba la forma en la que estaban organizados los guiones de arranque. Intent con otras
distribuciones para solventar estos detalles, pero todas tenan sus ventajas e inconvenientes. Llegu a darme
cuenta de que si quera estar completamente satisfecho con el sistema Linux, tena que construir el mo
propio desde cero.
Qu significaba esto? Decid no utilizar paquetes precompilados de ningn tipo, ni CD-ROMs o discos de
arranque que instalasen las utilidades bsicas. Quera usar mi actual sistema Linux para desarrollar mi
propio sistema personalizado. Este sistema Linux perfecto debera tener toda la potencia de los otros
sistemas sin sus debilidades. Al principio, la idea fue bastante desalentadora, pero me mantuve aferrado a la
idea de que poda construir un sistema que tuviese en consideracin mis necesidades y deseos en vez de usar
un estndar que no se ajustaba a lo que andaba buscando.
Despus de sortear todos los problemas de dependencias circulares y errores de compilacin, cre un sistema
Linux personalizado hecho a medida y completamente funcional. Este proceso me permiti adems crear un
sistema compacto y ajustado que era ms rpido y ocupaba menos espacio que cualquier sistema operativo
tradicional. Llam a este sistema Linux From Scratch (Linux Desde Cero), o sistema LFS para acortar.
Cuando compart mis metas y experiencias con otros miembros de la comunidad Linux se hizo palpable que
haba un amplio inters en las ideas que surgieron de mis aventuras con Linux. No slo porque dicho sistema
LFS de construccin personalizada poda cubrir las especificaciones y requerimientos del usuario, sino
tambin porque ofreca una gran oportunidad para el aprendizaje a los programadores y administradores de
sistemas y ampliar su conocimiento sobre Linux. Con este creciente inters naci el Proyecto Linux From
Scratch.
El libro Linux From Scratch otorga a los lectores el conocimento y las instrucciones para disear y construir
un sistema Linux a medida. Este libro resalta el proyecto Linux From Scratch y los beneficios que conlleva
el uso de este sistema. Los usuarios pueden definir todos los aspectos de su sistema, incluida la jerarqua de
directorios, los guiones de arranque y la seguridad. El sistema resultante se compilar a partir del cdigo
fuente y el usuario podr especificar dnde, por qu y cmo se instalarn los programas. Este libro permite a
sus lectores adaptar por completo sus sistemas Linux segn sus propias necesidades y ofrece a los usuarios
un mayor control sobre el sistema.
Espero que pasis buenos momentos trabajando en vuestro sistema LFS y que disfrutis de los numerosos
beneficios de tener un sistema que es realmente vuestro.
-Gerard Beekmans
[email protected]
vii
Linux From Scratch - Versin 6.0
2. Audiencia
Existen muchas razones por las que alguien podra querer leer este libro. La principal razn es instalar un
sistema Linux a partir del cdigo fuente. La pregunta que mucha gente se hace es Por qu pasar por todo
el embrollo de instalar manualmente un sistema Linux desde cero cuando te puedes limitar a descargar e
instalar uno ya existente?. Es una buena pregunta y es el motivo de esta seccin del libro.
Una importante razn para la existencia de LFS es ensear a la gente cmo trabaja internamente un sistema
Linux. Construir un sistema LFS ayuda a demostrar lo que hace que Linux funcione, cmo trabajan juntas
las distintas partes y cmo unas dependen de otras. Una de las mejores cosas que este proceso de aprendizaje
proporciona es la habilidad para adaptar Linux a tus propios gustos y necesidades.
Uno de los beneficios claves de LFS es que tienes el control de tu sistema sin tener que confiar en la
implementacin de Linux de nadie. Con LFS tu ests en el asiento del conductor y puedes dictar cada
aspecto de tu sistema, como la estructura de directorios y la configuracin de los guiones de arranque.
Tambin podrs decidir dnde, por qu y cmo se instalan los programas.
Otro beneficio de LFS es que puedes crear un sistema Linux verdaderamente compacto. Cuando instalas una
distribucin normal acabas instalando muchos programas que probablemente nunca usars. Tan slo estn
ah ocupando precioso espacio de disco (o peor an, ciclos de CPU). No es muy difcil conseguir un sistema
LFS instalado en menos de 100 MB. Todava te parece demasiado? Algunos de nosotros hemos estado
trabajando para crear un sistema LFS embebido realmente pequeo. Hemos instalado un sistema que
contiene lo suficiente para ejecutar un servidor web Apache utilizando tan slo 8 MB de espacio en disco.
Con un repaso adicional para reducirlo, se podra llegar a 5 MB o menos. Intenta eso con una distribucin
normal. Esta es una de las muchas ventajas que te ofrece disear tu propio sistema Linux.
Podramos comparar una distribucin de Linux con una hamburguesa que compras en un restaurante de
comida rpida. No tienes idea de lo que te ests comiendo. En cambio, LFS no te da una hamburguesa, sino
la receta para hacer la hamburguesa. Te permite revisarla, eliminar los ingredientes no deseados y aadir tus
propios ingredientes para mejorar el sabor de tu hamburguesa. Cuando ests satisfecho con la receta
entonces empiezas a prepararla. Tu la cocinas de la forma que prefieres: asada, cocida, frita o a la barbacoa.
Otra analoga que podemos usar es comparar a LFS con una casa terminada. LFS te dar los planos de la
casa, pero t debes construirla. Tienes libertad para adaptar los planos durante el proceso, para adaptarlos a
tus necesidades y preferencias.
Una ltima ventaja de un sistema Linux hecho a la medida es la seguridad. Compilando el sistema entero a
partir del cdigo fuente tienes la posibilidad de supervisar todo y aplicar todos los parches de seguridad que
creas que son necesarios. No tienes que esperar a que alguien te proporcione un nuevo paquete binario que
corrija un problema de seguridad. A no ser que examines el nuevo parche y lo implantes por ti mismo no
tienes garanta de que ese nuevo paquete se haya construido correctamente y realmente solucione el
problema.
El obejtivo de LFS es construir un sistema basado en niveles completo y utilizable. Los lectores que no
deseen construir su propio sistema LFS no se podrn beneficiar de la informacin que hay en este libro. Si
slo quieres saber lo que sucede mientras arranca tu ordenador, entonces te recomendamos el From Power
Up To Bash Prompt HOWTO (De La Puesta En Marcha Al Indicador De Bash CMO) que podrs
encontrar en http://axiom.anu.edu.au/~okeefe/p2b/ o en el sitio web The Linux Documentation Project
(TLDP) http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html. Este CMO
construye un sistema que es similar al de este libro, pero lo enfoca estrictamente hacia la creacin de un
sistema capaz de iniciar el smbolo del sistema de BASH. Considera tu objetivo. Si lo que quieres es
construirte tu propio sistema Linux y aprender mientras lo haces, este libro es la mejor opcin.
viii
Linux From Scratch - Versin 6.0
Hay muy buenas razones para construir tu propio sistema LFS aparte de las aqu listadas. Esta seccin es
slo la punta del iceberg. A medida que avances en tu experiencia con LFS encontrars por ti mismo el
poder que la informacin y el conocimiento realmente brindan.
ix
Linux From Scratch - Versin 6.0
3. Prerrequisitos
Este libro asume que el lector tienen un conocimiento razonable de la utilizacin e instalacin de software en
Linux. Antes de construir un sistema LFS, recomendamos leer los siguientes CMOs:
Software-Building-HOWTO (Construccin de Software CMO):
http://www.tldp.org/HOWTO/Software-Building-HOWTO.html
Esta es una gua asequible sobre cmo construir e instalar las distribuciones de software Unix
genricas bajo Linux.
The Linux Users' Guide (La Gua del Usuario de Linux).
Versin en castellano:
http://es.tldp.org/Manuales-LuCAS/GLUP/glup_0.6-1.1-html-1.1
Versin en ingls:
http://espc22.murdoch.edu.au/~stewart/guide/guide.html
Esta gua cubre el uso de una amplia gama de software Linux.
The Essential Pre-Reading Hint (Receta de las lecturas previas esenciales):
http://www.linuxfromscratch.org/hints/downloads/files/essential_prereading.txt
Esta es una receta del LFS escrita especficamente para los nuevos usuarios de Linux. Incluye un listado
de enlaces a excelentes fuentes de informacin sobre un amplio rango de tpicos. Cualquier persona que
intente instalar LFS debera comprender muchos de los tpicos mencionados en esta receta.
Linux From Scratch - Versin 6.0
4. Tipografa
Para facilitar la comprensin se utilizan ciertas convenciones tipogrficas a lo largo del libro. Esta seccin
contiene algunos ejemplos del formato tipogrfico que encontrars en Linux From Scratch:
./configure --prefix=/usr
Este tipo de texto est diseado para teclearse exactamente como aparece, a menos que se indique lo
contrario en el texto subyacente. Tambin se utiliza en las secciones explicativas para identificar el comando
al que se hace referencia.
install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'
Este tipo de texto (texto de ancho fijo) representa salida por pantalla, probablemente como resultado de la
ejecucin de comandos. Tambin se usa para especificar nombres de ficheros, como /etc/ld.so.conf.
Enfasis
Este tipo de texto se utiliza con varios fines en el libro, principalmente para poner de relieve puntos
importantes.
http://www.linuxfromscratch.org/
Este tipo de texto se usa para hipervnculos, tanto dentro de la comunidad LFS como a pginas exteriores,
direcciones de descarga, CMOs o sitios web.
cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
......
EOF
Este formato se usa para la creacin de ficheros de configuracin. El primer comando solicita al sistema que
cree el fichero $LFS/etc/group a partir de lo que se teclee en las lneas siguientes, hasta encontrar la
secuencia de fn de fichero (EOF). Por lo tanto, la seccin entera debe teclearse tal cual.
[TEXTO A REEMPLAZAR]
Este formato se utiliza para encapsular texto que no debe ser escrito tal y como aparece.
xi
Linux From Scratch - Versin 6.0
5. Estructura
Este libro se divide en las siguientes partes:
5.1. Parte I - Introduccin
En la Parte I se explican algunas cosas importantes sobre cmo hacer la instalacin de LFS. Tambin ofrece
informacin general sobre el libro.
5.2. Parte II - Preparativos para la construccin
La Parte II describe cmo preparar el proceso de construccin: crear una particin, descargar los paquetes y
compilar las herramientas temporales.
5.3. Parte III - Construccin del sistema LFS
La Parte III te gua a travs de la construccin del sistema LFS: compilar e instalar todos los paquetes uno
por uno, activar los guiones de arranque e instalar el ncleo. El sistema Linux obtenido es la base sobre la
que podrs construir ms software, ampliando tu sistema del modo que prefieras. Al final del libro
encontrars un listado de todos los programas, libreras y ficheros importantes que se han instalado, a modo
de referencia rpida.
xii
Linux From Scratch - Versin 6.0
Parte I. Introduccin
Linux From Scratch - Versin 6.0
Captulo 1. Introduccin
1.1. Cmo construir un sistema LFS
El sistema LFS se construir utilizando una distribucin Linux ya instalada (como Debian, Mandrake,
RedHat o SuSE). Este sistema Linux existente (el anfitrin) se utilizar como punto de inicio para
suministrar los programas necesarios, como un compilador, un enlazador y un intrprete de comandos, para
construir el nuevo sistema. Selecciona la opcin desarrollo durante la instalacin de la distribucin para
poder acceder a estas herramientas.
El Captulo 2 de este libro describe cmo crear una nueva particin nativa Linux y un sistema de ficheros, el
sitio donde se compilar e instalar el nuevo sistema LFS. El Captulo 3 explica qu paquetes y parches
deben descargarse para construir un sistema LFS y cmo guardarlos en el nuevo sistema de ficheros. El
Captulo 4 muestra cmo configurar un entorno de trabajo adecuado. Por favor, lee con detenimiento el
Captulo 4, pues explica diversos temas importantes a tener en cuenta antes de empezar a trabajar en el
Captulo 5 y posteriores.
En el Captulo 5 se describe la instalacin de una serie de paquetes que formarn el entorno bsico de
desarrollo (o herramientas principales) utilizado para construir el sistema real en el Captulo 6. Varios de
estos paquetes son necesarios para resolver dependencias circulares. Por ejemplo, para compilar un
compilador necesitas un compilador.
El Captulo 5 muestra tambin al usuario cmo construir en una primera fase las herramientas principales,
compuestas por Binutils y GCC (primera fase significa, bsicamente, que estos dos paquetes centrales se
instalarn una segunda vez). Los programas de estos paquetes se enlazarn estticamente para poder
utilizarlos independientemente del sistema anfitrin. El siguiente paso es construir Glibc, la librera C. Esta
ser compilada con los programas de las herramientas principales construidas en la primera fase. Entonces se
construir una segunda fase de las herramientas principales. Esta vez se enlazarn dinmicamente contra la
recin construida Glibc. Todos los restantes paquetes del Captulo 5 se construirn usando esta segunda fase
de las herramientas principales. Cuando esto est hecho, el proceso de instalacin de LFS ya no depender
de la distribucin anfitriona, con la excepcin del ncleo en ejecucin.
Aunque esto puede parecer mucho trabajo para aislarse de la distribucin anfitriona, al comienzo del
Captulo 5 se da una explicacin tcnica completa, incluyendo algunas notas sobre las diferencias entre
programas enlazados esttica y dinmicamente.
En el Captulo 6 se construye el autntico sistema LFS. Se utiliza el programa chroot (change root, cambio
de raz) para entrar en un entorno virtual y ejecutar un nuevo intrprete de comandos cuyo directorio raz
ser la particin LFS. Esto es muy similar a reiniciar e indicarle al ncleo que monte la particin LFS como
particin raz. El sistema no es realmente reiniciado, si no que se cambia la raz, porque crear un sistema
arrancable requiere un trabajo adicional que no es necesario an. La mayor ventaja es que cambiar la raz
permite seguir usando el sistema anfitrin mientras se construye el LFS. Mientras espera que se complete la
compilacin de un paquete, el usuario puede cambiar a otra consola virtual (VC) o escritorio X y continuar
usando el ordenador normalmente.
Para terminar la instalacin, en el Captulo 7 se configuran los guiones de arranque, y el ncleo y el gestor
de arranque se configuran en el Captulo 8. El Captulo 9 contiene informacin para profundizar en la
experiencia LFS despus de este libro. Tras completar los pasos de este libro, el ordenador estar preparado
para reiniciarse dentro del nuevo sistema LFS.
Este es el proceso en pocas palabras. La informacin detallada sobre cada paso a dar se expone en los
siguientes captulos y descripciones de los paquetes. Los temas que pueden parecer complicados se aclararn
y todo estar en su sitio a medida que te embarques en la aventura del LFS.
Linux From Scratch - Versin 6.0
1.2. Recursos
1.2.1. FAQ
Si durante la construccin del sistema LFS encuentras algn fallo, tienes preguntas, o encuentras un error
tipogrfico en el libro, consulta primero las FAQ (Preguntas Hechas Frecuentemente) que se encuentran en
http://www.linuxfromscratch.org/faq/.
En http://www.lfs-es.com/lfs-es/faq tienes una versin en castellano, aunque actualmente est muy desfasada.
1.2.2. Listas de correo
El servidor linuxfromscratch.org hospeda una serie de listas de correo utilizadas para el desarrollo
del proyecto LFS. Estas incluyen, entre otras, las listas principales de desarrollo y soporte.
Para obtener informacin relacionada con las listas disponibles, cmo suscribirse a ellas, localizacin de los
archivos, etc, visita http://www.linuxfromscratch.org/mail.html.
La comunidad hispanoparlante dispone de dos listas de correo que no pertenecen al servidor
linuxfromscratch.org:
Soporte, ayuda y noticias sobre LFS:
http://www.linuxauen.net/mailman/listinfo/linux-desde-cero
Coordinacin de la traduccin de LFS al castellano:
http://listas.escomposlinux.org/mailman/listinfo/lfs-es
1.2.3. IRC
Varios miembros de la comunidad LFS ofrecen asistencia tcnica en nuestro servidor IRC. Antes de utilizar
este mtodo de ayuda te pedimos que compruebes si en las FAQ de LFS o en los archivos de las listas de
correo se encuentra la respuesta a tu problema. Puedes entrar al servidor IRC a travs de
irc.linuxfromscratch.org o irc.linux-phreak.net. El canal de soporte se llama
#LFS-support.
1.2.4. Servidor de noticias
Las listas de correo hospedadas en linuxfromscratch.org tambin son accesibles a travs de un
servidor NNTP. Todos los mensajes publicados en una lista de correo son copiados en el grupo de noticias
correspondiente y viceversa.
El servidor de noticias es news.linuxfromscratch.org.
1.2.5. Wiki
Para obtener ms informacin sobre un paquete, actualizacin de versiones, trucos, experiencias personales
y ms cosas, mira el Wiki de LFS en http://wiki.linuxfromscratch.org/. Los usuarios tambin pueden aadir
informacin para ayudar a otros con sus actividades futuras en el LFS.
1.2.6. Referencias
En http://www.linuxfromscratch.org/~matthew/LFS-references.html tienes a tu disposicin unos apuntes
tiles con informacin adicional sobre los paquetes.
4
Linux From Scratch - Versin 6.0
1.2.7. Servidores alternativos
El proyecto LFS tiene por todo el mundo varios servidores alternativos para facilitar el acceso a las pginas
web y la descarga de los paquetes requeridos. Por favor, visita el sitio web http://www.linuxfromscratch.org/
para consultar la lista de los servidores alternativos actuales.
El proyecto LFS-ES, que se ocupa de la traduccin al castellano de los textos del LFS, dispone de los
siguientes servidores:
EcolNet, Espaa [Varios servidores] - http://www.escomposlinux.org/lfs-es/
Balaguer, Espaa [300 Kbits] - http://www.macana-es.com/
Dattatec.com, Argentina [100 Mbits] - http://www.lfs-es.com/
1.2.8. Informacin de contacto
Por favor, enva todas tus preguntas y comentarios a una de las listas de correo de LFS o LFS-ES (ver
arriba).
Linux From Scratch - Versin 6.0
1.3. Ayuda
Si mientras ests usando este libro te surge algn problema o duda, consulta primero las FAQ que hay en
http://www.linuxfromscratch.org/faq/#generalfaq (hay una versin anticuada en castellano en
http://www.lfs-es.com/lfs-es/faq). Probablemente tu pregunta est contestada aqu. Si no es as, prueba a
encontrar la fuente del problema. La siguiente receta puede darte algunas ideas para encontrar la solucin:
http://www.linuxfromscratch.org/hints/downloads/files/errors.txt.
Tambin tenemos una maravillosa comunidad LFS que est encantada de ofrecer ayuda a travs del canal
IRC y las listas de correo (mira el Captulo 1 - Listas de correo). Para ayudarles a diagnosticar y resolver el
problema, incluye toda la informacin relevante que sea posible en tu peticin de ayuda.
1.3.1. Cosas a mencionar
Adems de una breve explicacin del problema experimentado, las cosas esenciales que se deben incluir en
la peticin de ayuda son:
La versin del libro que se est usando (en este caso, 6.0).
La distribucin anfitriona (y su versin) usada como base para crear el LFS.
El paquete o seccin en el que se encontr el problema.
El mensaje de error exacto o los sntomas que aparecen.
Si te has desviado o no del libro.
Nota
Desviarse del libro no implica que no vayamos a ayudarte. Despus de todo, LFS se basa en la
eleccin. Avisarnos sobre cualquier cambio en el procedimiento establecido nos ayudar a
detectar las posibles causas de tu problema.
1.3.2. Problemas de configuracin
Cuando algo va mal en la fase en que la se ejecuta el guin configure, consulta el fichero config.log.
Este fichero puede contener errores encontrados durante la configuracin que no se muestran en pantalla.
Incluye esas lneas relevantes si necesitas pedir ayuda.
1.3.3. Problemas de compilacin
Tanto la salida por pantalla como el contenido de varios ficheros son tiles para determinar la causa de los
problemas de compilacin. La salida por pantalla del guin ./configure y del comando make pueden ser
tiles. No es necesario incluir toda la salida, pero incluye suficiente informacin relevante. A continuacin
hay un ejemplo del tipo de informacin a incluir de una salda por pantalla de make:
Linux From Scratch - Versin 6.0
gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
-DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
expand.o file.o function.o getopt.o implicit.o job.o main.o
misc.o read.o remake.o rule.o signame.o variable.o vpath.o
default.o remote-stub.o version.o opt1.o
-lutil job.o: In function `load_too_high':
/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [make] Error 1
make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
make: *** [all-recursive-am] Error 2
En este caso, mucha gente simplemente incluye la seccin final a partir de:
make [2]: *** [make] Error 1
Esto no es suficiente informacin para diagnosticar el problema porque slo nos dice que algo fue mal, no
qu fue mal. Lo que se debera incluir para resultar til es la seccin completa tal y como aparece en el
ejemplo anterior, ya que incluye el comando que se estaba ejecutando y sus mensajes de error.
En http://catb.org/~esr/faqs/smart-questions.html hay disponible un artculo excelente sobre cmo buscar
ayuda en Internet. Lee y sigue los consejos de este documento para aumentar las posibilidades de obtener la
ayuda que necesitas.
1.3.4. Problemas en los bancos de pruebas
Muchos paquetes proporcionan un banco de pruebas que, dependiendo de la importancia del paquete,
debera ejecutarse. En ocasiones los paquetes generarn fallos falsos o esperados. Si te encuentras con ellos,
puedes comprobar la pgina Wiki de LFS en http://wiki.linuxfromscratch.org/ para ver si nosotros ya los
hemos investigado y anotado. Si ya estn anotados y localizados, no hay necesidad de preocuparse.
Linux From Scratch - Versin 6.0
1.4. Sobre el CD incluido
Para tu conveniencia, a este libro le acompaa un CD que contiene las fuentes de los paquetes necesarios
para crear un sistema Linux From Scratch. El CD es autoarrancable y proporciona un entorno de trabajo
estable para construir el LFS. Este libro se refiere a dicho sistema como el sistema anfitrin.
En complemento a las herramientas requeridas para construir el LFS, el sistema anfitrin del CD incluye una
serie de otras herramientas tiles instaladas:
Una versin de este libro en HTML (en ingls)
El entorno X Window System
Herramientas web
Wget (descargador de ficheros en lnea de comandos)
Lynx (navegador web en modo texto)
Irssi (cliente IRC para la consola)
Firefox (navegador web en modo grfico)
Xchat (cliente IRC basado en las X)
Editores de texto
Vim
Nano
Herramientas de red
SSH, servidor y cliente
NFS, servidor y cliente
Smbmount (mount.cifs) para comparticiones Windows
Subversion
Dhcpcd (cliente DHCP)
Programas de sistemas de ficheros
Reiserfsprogs
Xfsprogs
nALFS - Una herramienta para automatizar la construccin de LFS
La imagen ISO del CD puede descargarse de estas direcciones:
ftp://ftp.lfs-matrix.de/pub/lfs-boot-cd/ (Alemania)
http://cis.sac.accd.edu/lfs/ (Texas, USA)
Linux From Scratch - Versin 6.0
Captulo 2. Preparar una nueva particin
2.1. Introduccin
En este captulo se preparar la particin que contendr el sistema LFS. Se crear la propia particin, se
crear un sistema de ficheros en ella y se montar.
Linux From Scratch - Versin 6.0
2.2. Crear una nueva particin
Para construir un nuevo sistema Linux se requiere espacio en forma de una particin de disco vaca. Si el
ordenador no tiene una particin libre o sitio en ninguno de los discos duros para crear una, LFS puede
construirse en la misma particin en la que est instalada la distribucin actual.
Nota
Este procedimiento avanzado no es recomendable para tu primera instalacin de LFS,
pero si andas escaso de espacio en disco el siguiente documento puede ayudarte:
http://www.lfs-es.com/recetas/lfs_next_to_existing_systems.html
(la versin original en ingls se encuentra en
http://www.linuxfromscratch.org/hints/downloads/files/lfs_next_to_existing_systems.txt).
Un sistema mnimo necesita una particin de 1,3 GB ms o menos. Esto es suficiente para almacenar todos
los archivos de cdigo fuente y compilar los paquetes. Sin embargo, si se piensa usar el sistema LFS como
sistema Linux principal probablemente se instalar software adicional, necesitando ms espacio (2 o 3 GB).
El propio sistema LFS no ocupa mucho espacio. Una gran parte de este espacio es requerido para
proporcionar suficiente espacio libre temporal. Compilar paquetes puede necesitar mucho espacio en disco
que ser liberado tras instalar el paquete.
Como casi nunca hay suficiente memoria RAM disponible para los procesos de compilacin, es buena idea
utilizar una pequea particin como espacio de intercambio (swap). Este espacio lo usa el ncleo para
almacenar los datos menos usados y hacer sitio en memoria para los procesos activos. La particin de
intercambio para el sistema LFS puede ser la misma del sistema anfitrin, por lo que no hace falta crear otra
si el sistema anfitrin tiene una activada.
Inicia un programa de particionado como cfdisk o fdisk pasndole como argumento el nombre del disco
duro en el que debe crearse la nueva particin, por ejemplo /dev/hda para el disco IDE primario. Crea
una particin Linux nativa y, si hace falta, una particin de intercambio. Por favor, consulta la pgina de
manual de cfdisk o de fdisk si todava no sabes cmo usar estos programas.
Recuerda la denominacin de tu nueva particin (por ejemplo, hda5). Este libro se referir a ella como la
particin LFS. Recuerda tambin la denominacin de la particin de intercambio. Estos nombres se
necesitarn posteriormente para el fichero /etc/fstab.
10
Linux From Scratch - Versin 6.0
2.3. Crear un sistema de ficheros en la particin
Ahora que hay preparada una particin en blanco ya puede crearse el sistema de ficheros. El ms usado en el
mundo de Linux es el llamado second extended file system (segundo sistema de ficheros extendido, o
ext2), pero con la gran capacidad de los discos duros actuales los llamados sistemas de ficheros con registro
de transacciones (journaling) se estn haciendo muy populares. Aqu se crear un sistema de ficheros ext2,
pero en http://www.lfs-es.com/blfs-es-CVS/postlfs/filesystems.html podrs encontrar la instrucciones de
instalacin para otros sistemas de ficheros (la versin original en ingls se encuentra en
http://www.linuxfromscratch.org/blfs/view/svn/postlfs/filesystems.html).
Para crear un sistema de ficheros ext2 en la particin LFS, ejecuta lo siguiente:
mke2fs /dev/[xxx]
Sustituye [xxx] por el nombre de la particin LFS (hda5 en nuestro ejemplo anterior).
Si se cre una particin de intercambio (swap), tambin ser necesario inicializarla (tambin conocido como
formatearla, como hiciste anteriormente con mke2fs) ejecutando lo siguiente. Si utilizas una particin de
intercambio ya existente, no es necesario formatearla:
mkswap /dev/[yyy]
Sustituye [yyy] por el nombre de la particin de intercambio.
11
Linux From Scratch - Versin 6.0
2.4. Montar la nueva particin
Ahora que se ha creado un sistema de ficheros es necesario hacer accesible la particin. Para esto debe
montarse en el punto de montaje elegido. Para los propsitos de este libro se asume que el sistema de
ficheros se monta en /mnt/lfs, pero la eleccin del directorio se deja para t.
Elige un punto de montaje y asgnalo a la variable de entorno LFS ejecutando:
export LFS=/mnt/lfs
Crea el punto de montaje y monta el sistema de ficheros LFS ejecutando:
mkdir -p $LFS
mount /dev/[xxx] $LFS
Sustituye [xxx] por el nombre de la particin LFS.
Si utilizas mltiples particiones para LFS (digamos que una para / y otra para /usr) mntalas usando:
mkdir
mount
mkdir
mount
-p $LFS
/dev/[xxx] $LFS
$LFS/usr
/dev/[yyy] $LFS/usr
Sustituye [xxx] e [yyy] por los nombres de particin apropiados.
Asegrate de que esta nueva particin no se monte con permisos muy restrictivos (como las opciones
nosuid, nodev o noatime). Ejecuta el comando mount sin parmetros para ver con qu opciones est
montada la particin LFS. Si ves nosuid, nodev o noatime, necesitars remontarla.
Ahora que se ha establecido un lugar en el que trabajar, es hora de descargar los paquetes.
12
Linux From Scratch - Versin 6.0
Parte II. Preparativos para la construccin
Linux From Scratch - Versin 6.0
Captulo 3. Paquetes y parches
3.1. Introduccin
Este captulo incluye una lista con los paquetes que se han de descargar para construir un sistema Linux
bsico. Los nmeros de versin listados corresponden a versiones de los programas que se sabe que
funcionan y este libro se basa en ellos. Recomendamos encarecidamente que no uses versiones ms nuevas,
pues los comandos de construccin para una versin puede que no funcionen con la nueva. Los paquetes
ms nuevos pueden tambin tener problemas para los cuales no se han desarrollado an soluciones.
Todas las URLs, cuando es posible, apuntan a la pgina de informacin del paquete que hay en
http://www.freshmeat.net/. Las pginas de Freshmeat proporcionan un acceso fcil a los sitios oficiales de
descarga, as como a los sitios web del proyecto, listas de correo, FAQs, historiales de modificaciones y ms
cosas.
Las localizaciones de descarga puede que no estn siempre disponibles. En el caso de que una localizacin
de descarga haya cambiado desde la publicacin de este libro, Google (http://www.google.com) es una til
herramienta de bsqueda para muchos paquetes. Si la bsqueda no da resultados, prueba uno de los mtodos
alternativos de descarga listados en http://www.linuxfromscratch.org/lfs/packages.html.
Ser necesario guardar todos los paquetes y parches descargados en algn sitio que est disponible durante
toda la construccin. Tambin se necesita un directorio de trabajo en el que desempaquetar las fuentes y
construirlas. Puede usarse $LFS/sources tanto para almacenar los paquetes y parches como directorio de
trabajo. Al usar este directorio, los elementos requeridos se encontrarn en la particin LFS y estarn
disponibles durante todas las fases del proceso de construccin.
Para crear este directorio, ejecuta el siguiente comando como usuario root antes de comenzar la sesin de
descarga:
mkdir $LFS/sources
Haz este directorio escribible y pegajoso (sticky). Pegajoso significa que aunque diversos usuarios tengan
permisos de escritura en un mismo directorio, slo el propietario de un fichero puede borrarlo. El siguiente
comando activar los modos de escritura y pegajoso:
chmod a+wt $LFS/sources
15
Linux From Scratch - Versin 6.0
3.2. Todos los paquetes
Descarga u obtn por otros mtodos los siguientes paquetes:
Autoconf (2.59) - 903 kilobytes (KB):
http://freshmeat.net/projects/autoconf/
Automake (1.9.1) - 681 KB:
http://freshmeat.net/projects/automake/
Bash (3.0) - 1,910 KB:
http://freshmeat.net/projects/gnubash/
Binutils (2.15.91.0.2) - 10,666 KB:
http://freshmeat.net/projects/binutils/?branch_id=12688
Bison (1.875a) - 796 KB:
ftp://ftp.linuxfromscratch.org/pub/lfs/lfs-packages/conglomeration/bison/
Bzip2 (1.0.2) - 650 KB:
http://freshmeat.net/projects/bzip2/
Coreutils (5.2.1) - 3,860 KB:
http://freshmeat.net/projects/coreutils/
DejaGNU (1.4.4) - 1,055 KB:
http://freshmeat.net/projects/dejagnu/
Diffutils (2.8.1) - 762 KB:
http://freshmeat.net/projects/diffutils/
E2fsprogs (1.35) - 3,003 KB:
http://freshmeat.net/projects/e2fsprogs/
Expect (5.42.1) - 510 KB:
http://freshmeat.net/projects/expect/
File (4.10) - 356 KB:
http://freshmeat.net/projects/file/
Nota
File (4.10) puede que no est disponible en la localizacin indicada. En ocasiones los
administradores de la localizacin principal de descarga eliminan las versiones antiguas
cuando se libera una nueva. Una localizacin de descarga alternativa que puede tener
disponible la versin correcta es ftp://ftp.linuxfromscratch.org/pub/lfs/.
Findutils (4.1.20) - 760 KB:
http://freshmeat.net/projects/findutils/
Flex (2.5.31) - 372 KB:
http://freshmeat.net/projects/flex/
Gawk (3.1.4) - 1,692 KB:
http://freshmeat.net/projects/gnuawk/
16
Linux From Scratch - Versin 6.0
GCC (3.4.1) - 27,000 KB:
http://freshmeat.net/projects/gcc/
Gettext (0.14.1) - 6,397 KB:
http://freshmeat.net/projects/gettext/
Glibc (2.3.4-20040701) - 13,101 KB:
http://freshmeat.net/projects/glibc/
Nota
Los paquetes liberados de Glibc no son lo suficientemente nuevos para nuestro propsito, as
que crea el paquete apropiado a partir de una captura CVS con los siguientes comandos:
cvs -z 3 -d \
:pserver:[email protected]:/cvs/glibc \
export -d glibc-2.3.4-20040701 \
-D "2004-07-01 17:30 UTC" libc
sed -i -e "s/stable/2004-07-01/" \
-e "s/2\.3\.3/2.3.4/" \
glibc-2.3.4-20040701/version.h
tar jcvf glibc-2.3.4-20040701.tar.bz2 \
glibc-2.3.4-20040701
Alternativamente, el equipo del LFS ha creado un paquete que puede descargarse de
cualquiera de los sitios rplica FTP listados en el sitio web de LFS en
http://www.linuxfromscratch.org/lfs/packages.html#http. Puede encontrarse bajo el directorio
/pub/lfs/packages/conglomeration/glibc. El paquete est firmado usando
GPG y recomendamos encarecidamente que se verifique su autenticidad antes de usarlo. Las
instrucciones para instalar GnuPG, que permite hacer la verificacin, se muestran en el libro
BLFS en http://www.linuxfromscratch.org/blfs/view/svn/postlfs/gnupg.html.
Grep (2.5.1) - 545 KB:
http://freshmeat.net/projects/grep/
Groff (1.19.1) - 2,360 KB:
http://freshmeat.net/projects/groff/
Grub (0.95) - 902 KB:
ftp://alpha.gnu.org/pub/gnu/grub/
Gzip (1.3.5) - 324 KB:
ftp://alpha.gnu.org/gnu/gzip/
Iana-Etc (1.01) - 161 KB:
http://freshmeat.net/projects/iana-etc/
Inetutils (1.4.2) - 1,019 KB:
http://freshmeat.net/projects/inetutils/
IPRoute2 (2.6.8-040823) - 264 KB:
http://developer.osdl.org/dev/iproute2/download/
Kbd (1.12) - 617 KB:
http://freshmeat.net/projects/kbd/
Less (382) - 259 KB:
http://freshmeat.net/projects/less/
17
Linux From Scratch - Versin 6.0
LFS-Bootscripts (2.2.2) - 16 KB:
http://downloads.linuxfromscratch.org/
Libtool (1.5.8) - 2,602 KB:
http://freshmeat.net/projects/libtool/
Linux (2.6.8.1) - 34,793 KB:
http://freshmeat.net/projects/linux/?branch_id=46339
Linux-Libc-Headers (2.6.8.1) - 2,602 KB:
http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
M4 (1.4.2) - 337 KB:
http://freshmeat.net/projects/gnum4/
Make (3.80) - 899 KB:
http://freshmeat.net/projects/gnumake/
Man (1.5o) - 223 KB:
http://freshmeat.net/projects/man/
Man-pages (1.67) - 1,586 KB:
http://freshmeat.net/projects/man-pages/
Mktemp (1.5) - 69 KB:
http://freshmeat.net/projects/mktemp/
Module-Init-Tools (3.0) - 118 KB:
ftp://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/
Ncurses (5.4) - 2,019 KB:
http://freshmeat.net/projects/ncurses/
Patch (2.5.4) - 182 KB:
http://freshmeat.net/projects/patch/
Perl (5.8.5) - 9,373 KB:
http://freshmeat.net/projects/perl/
Procps (3.2.3) - 265 KB:
http://freshmeat.net/projects/procps/
Psmisc (21.5) - 375 KB:
http://freshmeat.net/projects/psmisc/
Readline (5.0) - 940 KB:
http://freshmeat.net/projects/gnureadline/
Sed (4.1.2) - 749 KB:
http://freshmeat.net/projects/sed/
Shadow (4.0.4.1) - 795 KB:
http://freshmeat.net/projects/shadow/
Sysklogd (1.4.1) - 80 KB:
http://freshmeat.net/projects/sysklogd/
Sysvinit (2.85) - 91 KB:
http://freshmeat.net/projects/sysvinit/
18
Linux From Scratch - Versin 6.0
Tar (1.14) - 1,025 KB:
http://freshmeat.net/projects/tar/
Tcl (8.4.7) - 3,363 KB:
http://freshmeat.net/projects/tcltk/
Texinfo (4.7) - 1,385 KB:
http://freshmeat.net/projects/texinfo/
Udev (030) - 374 KB:
ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/
Configuracin de permisos de Udev - 2 KB:
http://downloads.linuxfromscratch.org/udev-config-2.permissions
Configuracin de reglas de Udev - 1 KB:
http://downloads.linuxfromscratch.org/udev-config-1.rules
Util-linux (2.12b) - 1,921 KB:
http://freshmeat.net/projects/util-linux/
Vim (6.3) - 3,612 KB:
http://freshmeat.net/projects/vim/
Ficheros de lenguaje de Vim (6.3) (opcional) - 1,033 KB:
http://freshmeat.net/projects/vim/
Zlib (1.2.1) - 277 KB:
http://freshmeat.net/projects/zlib/
Tamao total de estos paquetes: 135 MB
19
Linux From Scratch - Versin 6.0
3.3. Parches necesarios
Aparte de los paquetes, tambin se necesitan varios parches. Estos parches corrigen pequeos errores en los
paquetes que debera solucionar su desarrollador. Los parches tambin hacen pequeas modificaciones para
facilitar el trabajo con el paquete. Los siguientes parches son necesarios para construir un sistema LFS:
Bash Display Wrap Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/bash-3.0-display_wrap-1.patch
Coreutils Suppress Uptime, Kill, Su Patch - 16 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/coreutils-5.2.1-suppress_uptime_kill_su-1.patch
Coreutils Uname Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/coreutils-5.2.1-uname-2.patch
Expect Spawn Patch - 6 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/expect-5.42.1-spawn-1.patch
Flex Brokenness Patch - 8 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/flex-2.5.31-debian_fixes-2.patch
GCC Linkonce Patch - 12 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/gcc-3.4.1-linkonce-1.patch
GCC No-Fixincludes Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/gcc-3.4.1-no_fixincludes-1.patch
GCC Specs Patch - 11 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/gcc-3.4.1-specs-1.patch
Inetutils Kernel Headers Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/inetutils-1.4.2-kernel_headers-1.patch
Inetutils No-Server-Man-Pages Patch - 4 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/inetutils-1.4.2-no_server_man_pages-1.patch
IPRoute2 Disable DB Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/iproute2-2.6.8_040823-remove_db-1.patch
Man 80-Columns Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/man-1.5o-80cols-1.patch
Mktemp Tempfile Patch - 3 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/mktemp-1.5-add_tempfile-1.patch
Perl Libc Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/perl-5.8.5-libc-1.patch
Readline Display Wrap Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/readline-5.0-display_wrap-1.patch
Sysklogd Kernel Headers Patch - 3 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/sysklogd-1.4.1-kernel_headers-1.patch
Sysklogd Signal Handling Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/sysklogd-1.4.1-signal-1.patch
Sysvinit /proc Title Length Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/sysvinit-2.85-proclen-1.patch
20
Linux From Scratch - Versin 6.0
Texinfo Segfault Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/texinfo-4.7-segfault-1.patch
Util-Linux Sfdisk Patch - 1 KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/util-linux-2.12b-sfdisk-2.patch
Zlib Security Patch - 1KB:
http://www.linuxfromscratch.org/patches/lfs/6.0/zlib-1.2.1-security-1.patch
Aparte de los anteriores parches necesarios, hay una serie de parches opcionales creados por la comunidad
LFS. Estos parches opcionales solucionan pequeos problemas, o activan alguna funcionalidad que no lo
est por defecto. Eres libre de examinar la base de datos de parches que se encuentra en
http://www.linuxfromscratch.org/patches y elegir cualquier parche adicional que cubra las necesidades del
sistema.
21
22
Linux From Scratch - Versin 6.0
Captulo 4. ltimos preparativos
4.1. Sobre $LFS
Durante este libro la variable de entorno LFS se usar frecuentemente. Es importante que esta variable est
siempre definida. Debera establecerse al punto de montaje que elegiste para tu particin LFS. Comprueba
que tu variable LFS est correctamente establecida con:
echo $LFS
Asegrate de que la salida muestra la ruta a tu punto de montaje de la particin LFS, que es /mnt/lfs si
seguiste el ejemplo aqu usado. Si la salida es errnea, puedes establecer la variable con:
export LFS=/mnt/lfs
Tener establecida esta variable significa que si se indica que ejecutes un comando como mkdir $LFS/tools,
puede teclearse literalmente. El intrprete de comandos sustituir $LFS con /mnt/lfs (o aquello a lo que
est establecida la variable) cuando procese la lnea de comandos.
No olvides comprobar que $LFS est establecida cada vez que salgas y vuelvas al entorno (o cuando hagas
su a root o a otro usuario).
23
Linux From Scratch - Versin 6.0
4.2. Creacin del directorio $LFS/tools
Todos los programas compilados en el Captulo 5 se instalarn bajo $LFS/tools para mantenerlos
separados de los programas compilados en el Captulo 6. Los programas compilados aqu son slo
herramientas temporales y no formarn parte del sistema LFS final. Al mantener estos programas en un
directorio aparte podrn eliminarse fcilmente tras su uso. Esto tambin evita que acaben en los directorios
de produccin de tu anfitrin (que es fcil que ocurra por accidente en el Captulo 5).
Crea el directorio necesario ejecutando lo siguiente como root:
mkdir $LFS/tools
El prximo paso es crear un enlace /tools en el sistema anfitrin. Este apuntar al directorio que
acabamos de crear en la particin LFS. Ejecuta este comando tambin como root:
ln -s $LFS/tools /
Nota
El comando anterior es correcto. El comando ln tiene bastantes variaciones de sintaxis, por lo
que asegrate de comprobar su pgina de manual e info antes de informar de lo que puedes
pensar que es un error.
El enlace simblico creado posibilita que el conjunto de herramientas se compile siempre en referencia a
/tools, de forma que el compilador, ensamblador y enlazador funcionarn en este captulo (en el que
todava estamos utilizando algunas herramientas del sistema anfitrin) y en el siguiente (cuando cambiemos
la raz a la particin LFS).
24
Linux From Scratch - Versin 6.0
4.3. Aadir el usuario lfs
Si se trabaja como root, un simple error puede daar o destruir un sistema. Por tanto recomendamos
construir los paquetes del siguiente captulo como un usuario sin privilegios. Puedes usar tu propio nombre
de usuario, pero para facilitar la creacin de un entorno de trabajo limpio, crea un nuevo usuario llamado lfs
como miembro de un nuevo grupo (llamado tambin lfs) y utilzalo para el proceso de construccin. Como
root, ejecuta el siguiente comando para aadir el nuevo usuario:
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
Significado de las opciones:
-s /bin/bash
Esto hace de bash el intrprete de comandos por defecto para el usuario lfs.
-g lfs
Esta opcin aade el usuario lfs al grupo lfs.
-m
Esto crea el directorio personal para lfs.
-k /dev/null
Este parmetro evita que se copien ficheros procedentes de un posible esqueleto de directorio (por
defecto es /etc/skel), cambiando la localizacin de entrada al dispositivo especial nulo.
lfs
Este es el nombre real del usuario y grupo creados.
Para ingresar como lfs (en vez de cambiar al usuario lfs cuando se est como root, que no precisa que el
usuario lfs tenga una contrasea), asgnale una contrasea a lfs:
passwd lfs
Concede a lfs acceso completo a $LFS/tools dndole la propiedad del directorio:
chown lfs $LFS/tools
Si creaste un directorio de trabajo como te sugerimos, haz que el usuario lfs sea tambin el propietario de
este directorio:
chown lfs $LFS/sources
A continuacin, entra como usuario lfs. Esto se puede hacer mediante una consola virtual, con un
administrador de sesin grfico o con el siguiente comando de sustitucin de usuario:
su - lfs
El - le indica a su que inicie un intrprete de comandos de ingreso, en lugar de uno de no ingreso. La
diferencia entre estos dos tipos de intrpretes de comandos se encuentra detallada en las pginas de manual e
info de Bash.
25
Linux From Scratch - Versin 6.0
4.4. Configuracin del entorno
Establece un buen entorno de trabajo mediante la creacin de dos nuevos ficheros de inicio para el intrprete
de comandos bash. Estando en el sistema como usuario lfs, ejecuta los siguientes comandos para crear un
.bash_profile nuevo:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Cuando entras como usuario lfs el intrprete de comandos inicial es un intrprete de ingreso que lee el
/etc/profile de tu anfitrin (que posiblemente contenga algunos ajustes de variables de entorno) y
luego lee .bash_profile. El comando exec env -i ... /bin/bash del fichero .bash_profile sustituye
el intrprete de comandos en ejecucin por uno nuevo con un entorno completamente vaco, excepto por las
variables HOME, TERM y PS1. Esto asegura que en el entorno de construccin no aparezcan variables de
entorno indeseadas o dainas procedentes del sistema anfitrin. La tcnica aqu usada consigue el objetivo
de asegurar un entorno limpio.
La nueva instancia del intrprete comandos es un intrprete de no ingreso que no lee los ficheros
/etc/profile o .bash_profile, pero en su lugar lee el fichero .bashrc. Crea ahora el fichero
.bashrc:
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
El comando set +h desactiva la funcin de tablas de dispersin (hash) de bash. Normalmente, esta funcin
es muy til: bash usa una tabla de dispersin para recordar la ruta completa de los ejecutables, evitando
bsquedas reiteradas en el PATH para encontrar el mismo binario. Sin embargo, las nuevas herramientas
deberan utilizarse a medida que son instaladas. Al desactivar esta caracterstica, el intrprete de comandos
siempre buscar en el PATH cuando deba ejecutarse un programa. Por tanto, el intrprete de comandos
encontrar las herramientas recin compiladas en $LFS/tools tan pronto como estn disponibles, sin
recordar una anterior versin del mismo programa en una ubicacin diferente.
Establecer la mscara de creacin de ficheros (umask) a 022 asegura que los ficheros y directorios de nueva
creacin slo pueden ser escritos por su propietario, pero son legibles y ejecutables por cualquiera
(asumiendo que los modos por defecto son usados por la llamada open(2) del sistema, los nuevos ficheros
tendrn permisos 644 y los directorios 755).
La variable LFS debe establecerse al punto de montaje elegido.
La variable LC_ALL controla la localizacin de ciertos programas, haciendo que sus mensajes sigan las
convenciones para un determinado pas. Si el sistema anfitrin utiliza una versin de Glibc anterior a la
2.2.4, tener LC_ALL establecida a algo diferente a POSIX o C (durante el siguiente captulo) puede
causar problemas si sales del entorno chroot e intentas regresar ms tarde. Establecer LC_ALL a POSIX o
C (ambos son equivalentes) asegura que todo funcionar como se espera dentro del entorno chroot.
26
Linux From Scratch - Versin 6.0
Al aadir /tools/bin al principio del PATH, todos los programas instalados en el Captulo 5 son
inmediatamente detectados por el intrprete de comandos tras su instalacin. Esto, combinado con la
desactivacin de las tablas de dispersin, limita el riesgo de utilizar los antiguos programas del anfitrin
cuando ya no son necesarios.
Finalmente, para tener el entorno preparado por completo para construir las herramientas temporales, carga
el perfil de usuario recin creado:
source ~/.bash_profile
27
Linux From Scratch - Versin 6.0
4.5. Sobre los SBUs
Bastante gente desea saber de antemano cuanto tiempo, aproximadamente, le llevar compilar e instalar cada
paquete. Pero Linux From Scratch puede construirse sobre muchos sistemas diferentes, siendo imposible dar
tiempos reales y precisos. El paquete ms grande (Glibc) tardar unos 20 minutos en un sistema rpido,
pero puede tardar hasta tres das en uno lento! As que en vez de proporcionar tiempos reales se usar la
unidad de medida Static Build Unit (SBU, Unidad de Construccin Esttica).
Funciona de la siguiente forma. El primer paquete que se compila en este libro es, en el Captulo 5, Binutils
enlazado estticamente. El tiempo que tarde en compilar este paquete es lo que llamamos Unidad de
Construccin Esttica o SBU. Todos los dems tiempos de compilacin se expresarn con relacin a este
tiempo.
Por ejemplo, considera un paquete cuyo tiempo de compilacin es de 4,5 SBUs. Esto significa que si un
sistema tarda en compilar e instalar el Binutils esttico 10 minutos, tardar aproximadamente 45 minutos en
construir dicho paquete. Por suerte, bastantes de los tiempos de construccin son mucho ms cortos que el
de Binutils.
Ten en cuenta que si el compilador de tu anfitrin est basado en GCC-2.x, los SBUs listados pueden ser
algo bajos. Esto es debido a que el SBU est basado en el primer paquete, compilado con el antiguo GCC,
mientras que el resto del sistema se compila con el nuevo GCC-3.4.1 (que se sabe que es aproximadamente
un 30% ms lento). Los SBU tampoco son exactos para mquinas basadas en Multi-Procesadores Simtricos
(SMP).
Para ver los tiempos reales de un cierto nmero de mquinas concretas, recomendamos visitar
http://www.linuxfromscratch.org/~bdubbs/.
En general, los SBU no son muy exactos debido a que dependen de muchos factores, no slo la versin de
GCC. Se han suministrado aqu para mostrar una aproximacin de cuanto podra tardar la instalacin de un
paquete, pero los nmeros pueden variar en docenas de minutos en algunos casos.
28
Linux From Scratch - Versin 6.0
4.6. Sobre los bancos de pruebas
Muchos paquetes proporcionan un banco de pruebas. Ejecutar el banco de pruebas para un paquete recin
construido es una buena idea, pues puede proporcionar una verificacin de calidad indicando que todo se
ha compilado correctamente. Un banco de pruebas que supere sus comprobaciones normalmente confirma
que el paquete est funcionando tal y como el desarrollador espera. Pero esto, sin embargo, no garantiza que
el paquete est totalmente libre de errores.
Algunos bancos de pruebas son ms importantes que otros. Por ejemplo, los bancos de pruebas de los
paquetes de las herramientas principales (GCC, Binutils y Glibc) son de la mayor importancia debido a su
papel central en el correcto funcionamiento del sistema. Los bancos de pruebas para GCC y Glibc pueden
tardar bastante tiempo en completarse, sobre todo en hardware lento, pero son muy recomendables.
Nota
La experiencia ha mostrado que se gana poco ejecutando los bancos de pruebas en el Captulo 5.
No se puede escapar del hecho de que el sistema anfitrin siempre ejerce cierta influencia sobre
las pruebas en dicho captulo, causando con frecuencia fallos inexplicables. Debido a que las
herramientas construidas en el Captulo 5 son temporales y descartables, no recomendamos el
lector medio ejecutar los bancos de pruebas en el Captulo 5. Las instrucciones para ejecutarlos
se suministran en benficio de los verificadores y desarrolladores, pero son estrictamente
opcionales.
Un problema comn al ejecutar los bancos de pruebas de Binutils y GCC es quedarse sin seudo-terminales
(PTYs). El sntoma es un nmero inusualmente alto de pruebas fallidas. Esto puede suceder por diferentes
razones, pero lo ms probable es que el sistema anfitrin no tenga el sistema de ficheros devpts
configurado correctamente. En el Captulo 5 se tratar este tema con mayor detalle.
En ocasiones los bancos de pruebas de los paquetes muestran falsos fallos. Consulta el Wiki de LFS en
http://wiki.linuxfromscratch.org/ para consultar si estos fallos son normales. Este sitio es vlido para todas
las pruebas que aparecen en el libro.
29
30
Linux From Scratch - Versin 6.0
Captulo 5. Construir un sistema temporal
5.1. Introduccin
Este captulo muestra cmo compilar e instalar un sistema Linux mnimo. Este sistema contendr slo las
herramientas necesarias para poder iniciar la construccin del sistema LFS definitivo en el Captulo 6,
permitiendo un entorno de trabajo algo ms amigable para el usuario que el que un entorno mnimo
ofrecera.
La construccin de este sistema minimalista se har en dos etapas. La primera es construir un conjunto de
herramientas independiente del sistema anfitrin (compilador, ensamblador, enlazador, libreras y unas
pocas herramientas tiles). La segunda etapa utiliza estas herramientas para construir el resto de
herramientas esenciales.
Los ficheros compilados en este captulo se instalarn bajo el directorio $LFS/tools para mantenerlos
separados de los ficheros que se instalen en el siguiente captulo y de los directorios de produccin de tu
anfitrin. Puesto que los paquetes compilados aqu son puramente temporales, no queremos que estos
ficheros contaminen el futuro sistema LFS.
Antes de ejecutar las instrucciones de construccin para un paquete, debes desempaquetarlo como usuario lfs
y hacer un cd para entrar al directorio creado. Las instrucciones de construccin asumen que ests usando el
intrprete de comandos bash.
Varios de los paquetes deben parchearse antes de compilarlos, pero slo cuando el parche es necesario para
solucionar un problema. Con frecuencia el parche es necesario tanto en ste como en el siguiente captulo,
pero a veces slo es necesario en uno de ellos. Por lo tanto, no te preocupes si parece que faltan las
instrucciones para uno de los parches descargados. Igualmente, cuando se aplique un parche ocasionalmente
vers un mensaje de aviso sobre offset o fuzz. No debes preocuparte por estos avisos, pues el parche se
aplicar correctamente.
Durante la compilacin de muchos paquetes vers aparecer en pantalla diversos avisos (warnings). Esto es
normal y puedes ignorarlos con tranquilidad. No son ms que eso, avisos; la mayora debidos a un uso
inapropiado, pero no invlido, de la sintaxis de C o C++. Se debe a que los estndares de C cambian con
frecuencia y algunos paquetes todava usan un estndar antiguo. Esto no es un problema, pero hace que se
muestre el aviso.
Tras instalar cada paquete debes borrar sus directorios de fuentes y de construccin, excepto si se indica lo
contrario. Borrar las fuentes ahorra espacio, pero tambin previene de fallos de configuracin cuando el
mismo paquete se reinstale ms adelante. Slo necesitars guardar los directorios de fuentes y construccin
de tres paquetes durante un tiempo, para que su contenido pueda ser usado por posteriores comandos. Estate
atento a dichos recordatorios.
Comprueba de nuevo que la variable de entorno LFS est correctamente establecida:
echo $LFS
Asegrate de que la salida muestra la ruta al punto de montaje de tu particin LFS, que es /mnt/lfs si
seguiste nuestro ejemplo.
31
Linux From Scratch - Versin 6.0
5.2. Requisitos del sistema anfitrin
El anfitrin debe estar ejecutando, al menos, un ncleo 2.6.2 compilado con GCC-3.0 o superior. Hay dos
razones principales para estos altos requisitos. Primero, hacemos uso de la Librera Nativa de Hilos POSIX
(Native Posix Threading Library, NPTL) cuyo banco de pruebas fallar si el ncleo del anfitrin no ha sido
compilado con GCC-3.0 o superior. En segundo lugar, se necesita un ncleo 2.6.2 o posterior para utilizar
Udev. Udev crea dispositivos dinmicamente a partir de lo que lee en el sistema de ficheros sysfs. Sin
embargo, slo muy recientemente se ha implementado el soporte para este sistema de ficheros en muchos de
los controladores del ncleo. Debemos asegurarnos de que todos los dispositivos crticos del sistema son
correctamente creados.
Para comprobar que el ncleo de tu anfitrin cumple los requisitos arriba mencionados, puedes ejecutar el
siguiente comando:
cat /proc/version
Esto generar una salida similar a:
Linux version 2.6.2 (user@host) (gcc version 3.4.0) #1
Tue Apr 20 21:22:18 GMT 2004
Si el resultado del comando anterior muestra que el ncleo de tu anfitrin no fue compilado usando GCC-3.0
(o superior), necesitars compilar uno tu mismo y reiniciar tu anfitrin para usar el ncleo recin compilado.
Las instrucciones para compilar el ncleo y configurar el gestor de arranque (asumiendo que tu anfitrin
utiliza GRUB) se muestran en el Captulo 8.
32
Linux From Scratch - Versin 6.0
5.3. Notas tcnicas sobre las herramientas
Esta seccin explica algunos de los razonamientos y detalles tcnicos que hay detrs del sistema de
construccin. No es esencial que entiendas todo esto inmediatamente. La mayor parte tendr sentido cuando
hayas hecho una construccin real. Puedes consultar esta seccin en cualquier momento durante la
construccin.
El principal objetivo del Captulo 5 es proporcionar un entorno temporal al que podamos entrar con chroot y
a partir del cual podamos generar una construccin limpia y libre de problemas del sistema LFS en el
Captulo 6. Por el camino intentaremos independizarnos todo lo posible del sistema anfitrin, y para eso
construimos unas herramientas principales autocontenidas y autohospedadas. Debera tenerse en cuenta que
el proceso de construccin ha sido diseado de forma que se minimice el riesgo para los nuevos lectores y,
al mismo tiempo, se proporcione el mximo valor educacional. En otras palabras, se pueden usar tcnicas
ms avanzadas para construir el sistema.
Importante
Antes de continuar, deberas informarte del nombre de tu plataforma de trabajo, conocido con
frecuencia como target triplet (triplete del objetivo). Para muchos el target triplet
posiblemente sea i686-pc-linux-gnu. Una forma simple de determinar tu target triplet es
ejecutar el guin config.guess que se incluye con las fuentes de muchos paquetes.
Desempaqueta las fuentes de Binutils, ejecuta el guin ./config.guess y anota el
resultado.
Igualmente necesitars saber el nombre del enlazador dinmico de tu plataforma, tambin
conocido como cargador dinmico (no debe confundirse con el enlazador estndar ld, que es
parte de Binutils). El enlazador dinmico suministrado por Glibc encuentra y carga las libreras
compartidas necesarias para un programa, prepara el programa y lo ejecuta. Usualmente el
nombre del enlazador dinmico es ld-linux.so.2. En plataformas menos conocidas puede
ser ld.so.1 y en las nuevas plataformas de 64 bits puede que incluso sea algo totalmente
diferente. El nombre del enlazador dinmico de tu plataforma puede determinarse mirando en el
directorio /lib de tu sistema anfitrin. Un modo seguro es inspeccionar un binario cualquiera
de tu sistema anfitrin ejecutando: readelf -l <nombre del binario> | grep
interpreter y anotar la salida. La referencia autorizada que cubre todas las plataformas est
en el fichero shlib-versions en la raz del rbol de las fuentes de Glibc.
Algunas claves tcnicas sobre cmo funciona el mtodo de construccin del Captulo 5:
Similar en principio a la compilacin cruzada, donde las herramientas instaladas dentro del mismo
prefijo trabajan en cooperacin y utilizan una pequea magia de GNU.
Cuidada manipulacin de la ruta de bsqueda de libreras del enlazador estndar para asegurar que los
programas se enlazan slo contra las libreras que elegimos.
Cuidada manipulacin del fichero specs de gcc para indicarle al compilador cul es el enlazador
dinmico a usar.
Se instala primero Binutils debido a que, tanto en GCC como en Glibc, la ejecucin de ./configure realiza
varias pruebas sobre el ensamblador y el enlazador para determinar qu caractersticas del software deben
activarse o desactivarse. Esto es ms importante de lo que uno podra pensar. Un GCC o una Glibc
incorrectamente configurados puede provocar unas herramientas sutilmente rotas cuyo impacto podra no
notarse hasta casi finalizada la construccin de una distribucin completa. Por suerte, un fallo en el banco de
pruebas normalmente nos avisar antes de perder demasiado tiempo.
33
Linux From Scratch - Versin 6.0
Binutils instala tanto su ensamblador como su enlazador en dos ubicaciones, /tools/bin y
/tools/$TARGET_TRIPLET/bin. Las herramientas de una ubicacin son enlaces duros a la otra. Un
aspecto importante del enlazador es su orden de bsqueda de libreras. Puede obtenerse informacin
detallada de ld pasndole la opcin --verbose. Por ejemplo, un ld --verbose | grep SEARCH mostrar
las rutas de bsqueda actuales y su orden. Puedes ver qu ficheros son realmente enlazados por ld
compilando un programa simulado y pasndole la opcin --verbose. Por ejemplo, gcc dummy.c
-Wl,--verbose 2>&1 | grep succeeded te mostrar todos los ficheros abiertos con xito durante
el enlazado.
El siguiente paquete instalado es GCC y durante su fase ./configure vers, por ejemplo:
checking what assembler to use...
/tools/i686-pc-linux-gnu/bin/as
checking what linker to use...
/tools/i686-pc-linux-gnu/bin/ld
comprobando qu ensamblador usar...
/tools/i686-pc-linux-gnu/bin/as
comprobando qu enlazador usar...
/tools/i686-pc-linux-gnu/bin/ld
Esto es importante por la razn mencionada antes. Tambin demuestra que el guin configure de GCC no
explora los directorios del PATH para encontrar las herramientas a usar. Sin embargo, durante la operacin
real del propio gcc, no se utilizan necesariamente las mismas rutas de bsqueda. Para saber cul es el
enlazador estndar que utilizar gcc, ejecuta: gcc -print-prog-name=ld.
Puedes obtener informacin detallada a partir de gcc pasndole la opcin -v mientras compilas un programa
simulado. Por ejemplo: gcc -v dummy.c te mostrar los detalles sobre las fases de preprocesamiento,
compilacin y ensamblado, incluidas las rutas de bsqueda de gcc y su orden.
A continuacin se instala Glibc. Las consideraciones ms importantes para la construccin de Glibc son el
compilador, las herramientas de binarios y las cabeceras del ncleo. Normalmente el compilador no es
problema, pues Glibc siempre utilizar el gcc que se encuentre en un directorio del PATH. Las herramientas
de binarios y las cabeceras del ncleo pueden ser algo mas problemticas, as que no nos arriesgaremos y
haremos uso de las opciones disponibles de configure para forzar las opciones correctas. Despus de ejecutar
./configure puedes revisar el contenido del fichero config.make en el directorio glibc-build para
ver todos los detalles importantes. Encontrars algunas cosas interesantes, como el uso de CC="gcc
-B/tools/bin/" para controlar qu herramientas de binarios son usadas, y tambin el uso de las
opciones -nostdinc y -isystem para controlar la ruta de bsqueda de cabeceras del compilador. Estos
detalles ayudan a resaltar un aspecto importante del paquete Glibc: es muy autosuficiente en cuanto a su
maquinaria de construccin y generalmente no se apoya en las opciones por defecto de las herramientas.
Despus de la instalacin de Glibc, haremos algunos ajustes para asegurar que la bsqueda y el enlazado
tengan lugar solamente dentro de nuestro directorio /tools. Instalaremos un ld ajustado, que tiene limitada
su ruta de bsqueda interna a /tools/lib. Entonces retocaremos el fichero specs de gcc para que apunte
a nuestro nuevo enlazador dinmico en /tools/lib. Este ltimo paso es vital para el proceso completo.
Como se mencion antes, dentro de cada ejecutable compartido ELF se fija la ruta a un enlazador dinmico.
Puedes verificar esto mediante: readelf -l <nombre del binario> | grep interpreter.
Retocando el ficheros specs de gcc estaremos seguros de que todo binario compilado desde aqu hasta el
final de este captulo usar nuestro nuevo enlazador dinmico en /tools/lib.
34
Linux From Scratch - Versin 6.0
La necesidad de utilizar el nuevo enlazador dinmico es tambin la razn por la que aplicamos el parche
Specs en la segunda fase de GCC. De no hacer esto los propios programas de GCC incluiran dentro suyo el
nombre del enlazador dinmico del directorio /lib del sistema anfitrin, lo que arruinara nuestro objetivo
de librarnos del anfitrin.
Durante la segunda fase de Binutils podremos usar la opcin --with-lib-path de configure para
controlar la ruta de bsqueda de libreras de ld. A partir de este punto el corazn de las herramientas est
autocontenido y autohospedado. El resto de los paquetes del Captulo 5 se construirn todos contra la nueva
Glibc en /tools.
Tras entrar en el entorno chroot en el Captulo 6, el primer gran paquete a instalar es Glibc, debido a su
naturaleza autosuficiente. Una vez que esta Glibc se instale dentro de /usr, haremos un rpido cambio en
las opciones por defecto de las herramientas y entonces procederemos a la construccin real del sistema
LFS.
5.3.1. Notas sobre el enlazado esttico
Muchos programas han de realizar, dentro de sus tareas especficas, muchas operaciones comunes y, en
ocasiones, triviales. Esto incluye reservar memoria, explorar directorios, leer y escribir ficheros, manejar
cadenas, emparejar patrones, realizar clculos y muchas otras tareas. En vez de obligar a cada programa a
reinventar la rueda, el sistema GNU facilita todas estas funciones bsicas dentro de libreras listas para usar.
La principal librera en cualquier sistema Linux es Glibc.
Hay dos formas de enlazar las funciones de una librera en un programa que las utilice: esttica o
dinmicamente. Cuando un programa se enlaza estticamente el cdigo de las funciones usadas se incluye
dentro del ejecutable, resultando un programa algo abultado. Cuando un programa se enlaza dinmicamente
lo que se incluye es una referencia al enlazador dinmico, el nombre de la librera y el nombre de la funcin,
resultando un ejecutable mucho ms pequeo. Un tercer mtodo es utilizar la interfaz de programacin del
enlazador dinmico (mira la pgina de manual de dlopen para obtener ms informacin).
En Linux se usa por defecto enlazado dinmico y tiene tres ventajas fundamentales sobre el enlazado
esttico. Primero, slo necesitas en tu disco duro una copia del cdigo de la librera ejecutable, en vez de
tener muchas copias del mismo cdigo dentro de un montn de programas, ahorrando as espacio en disco.
La segunda es que cuando varios programas usan la misma funcin de una librera al mismo tiempo slo
hace falta cargar una copia del cdigo de la funcin, ahorrando espacio en memoria. Por ltimo, cuando se
corrige un error o se mejora una funcin de una librera slo necesitas recompilar esta librera, en vez de
tener que recompilar todos los programas que hacen uso de esta funcin mejorada.
Si el enlace dinmico tiene varias ventajas, por qu enlazamos estticamente los dos primeros paquetes en
este captulo? La razn es triple: histrica, educacional y tcnica. Histrica porque las anteriores versiones
de LFS enlazaban estticamente cada paquete en este captulo. Educacional porque conocer la diferencia es
til. Tcnica porque ganamos un elemento de independencia sobre el anfitrin al hacerlo. Por ejemplo, estos
programas pueden usarse independientemente del sistema anfitrin. Sin embargo, hay que mencionar que se
puede conseguir una construccin correcta del sistema LFS al completo cuando los dos primeros paquetes se
construyen dinmicamente.
35
Linux From Scratch - Versin 6.0
5.4. Binutils-2.15.91.0.2 - Fase 1
El paquete Binutils contiene un enlazador, un ensamblador y otras utilidades para trabajar con ficheros
objeto.
Tiempo estimado de construccin: 1.0 SBU
Espacio requerido en disco: 194 MB
La instalacin de Binutils depende de: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl,
Sed y Texinfo
5.4.1. Instalacin de Binutils
Es importante que Binutils sea el primer paquete que compiles, pues tanto Glibc como GCC llevan a cabo
varias comprobaciones sobre el enlazador y el ensamblador disponibles para determinar qu caractersticas
activar.
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas Binutils.
La documentacin de Binutils recomienda construirlo en un directorio dedicado, fuera del rbol de las
fuentes:
mkdir ../binutils-build
cd ../binutils-build
Nota
Si quieres que los valores de los SBUs mostrados en el resto del libro sean de utilidad, mide el
tiempo que se tarda en construir este paquete desde la compilacin hasta la primera instalacin.
Para ello, envuelve los comandos dentro de un comando time de esta forma: time {
./configure ... && ... && ... && make install; }.
Prepara Binutils para su compilacin:
../binutils-2.15.91.0.2/configure --prefix=/tools \
--disable-nls
Significado de las opciones de configure:
--prefix=/tools
Esto le indica al guin configure que los programas de Binutils se instalarn en el directorio /tools.
--disable-nls
Esta opcin desactiva la internacionalizacin. No es necesaria para nuestros programas estticos y NLS
suele causar problemas con el enlazado esttico.
Compila el paquete:
make configure-host
make LDFLAGS="-all-static"
36
Linux From Scratch - Versin 6.0
Significado de los parmetros de make:
configure-host
Esto fuerza que todos los subdirectorios se configuren inmediatamente. Una construccin enlazada
estticamente fallar sin esto. Por lo tanto, usamos esta opcin para evitar el problema.
LDFLAGS="-all-static"
Esto le indica al enlazador que todos los programas de Binutils deben enlazarse estticamente. Sin
embargo, y estrictamente hablando, "-all-static" se le pasa al programa libtool, el cual luego le
pasa "-static" al enlazador.
La compilacin se ha completado. Normalmente deberamos ejecutar ahora el banco de pruebas, pero en esta
temprana fase el entorno de trabajo para los bancos de pruebas (Tcl, Expect y DejaGnu) todava no est en
su sitio. Los beneficios de ejecutar las pruebas ahora son mnimos, pues los programas de esta primera fase
pronto sern sustituidos por los de la segunda.
Instala el paquete:
make install
Prepara el enlazador para la posterior fase de ajuste:
make -C ld clean
make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib
Significado de los parmetros de make:
-C ld clean
Esto le indica al programa make que elimine todos los ficheros compilados que haya en el subdirectorio
ld.
-C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib
Esta opcin vuelve a construir todo dentro del subdirectorio ld. Especificar la variable LIB_PATH del
Makefile en la lnea de comandos nos permite obviar su valor por defecto y apuntar a nuestro directorio
de herramientas temporales. El valor de esta variable especifica la ruta de bsqueda de libreras por
defecto del enlazador. Estos preparativos se utilizan ms tarde en este captulo.
Aviso
No borres los directorios de fuentes y de construccin de Binutils. Los necesitars un poco ms
adelante en este captulo en el estado en que se encuentran ahora.
Los detalles sobre este paquete se encuentran en la Seccin 6.13.2, Contenido de Binutils.
37
Linux From Scratch - Versin 6.0
5.5. GCC-3.4.1 - Fase 1
El paquete GCC contiene la coleccin de compiladores GNU, que incluye los compiladores C y C++.
Tiempo estimado de construccin: 4.4 SBU
Espacio requerido en disco: 300 MB
La instalacin de GCC depende de: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc,
Grep, Make, Perl, Sed y Texinfo
5.5.1. Instalacin de GCC
Desempaqueta slo el paquete gcc-core, pues por el momento no vamos a necesitar ni el compilador de C++
ni el banco de pruebas.
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas GCC.
La documentacin de GCC recomienda construirlo en un directorio dedicado, fuera del rbol de las fuentes:
mkdir ../gcc-build
cd ../gcc-build
Prepara GCC para su compilacin:
../gcc-3.4.1/configure --prefix=/tools \
--libexecdir=/tools/lib --with-local-prefix=/tools \
--disable-nls --enable-shared --enable-languages=c
Significado de las opciones de configure:
--with-local-prefix=/tools
Esta opcin es para eliminar /usr/local/include de las rutas de bsqueda por defecto de gcc.
Esto no es esencial, sin embargo ayuda a minimizar la influencia del sistema anfitrin.
--enable-shared
Esta opcin no parece intuitiva al principio, pero nos permite construir libgcc_s.so.1 y
libgcc_eh.a, y tener a libgcc_eh.a disponible nos asegura que el guin configure de Glibc (el
siguiente paquete por compilar) produzca los resultados apropiados. Ten en cuenta que los binarios de
GCC se compilarn estticamente de todas formas, ya que esto lo controla el valor -static que
asumir la variable BOOT_LDFLAGS en el siguiente paso.
--enable-languages=c
Esta opcin nos asegura que slo se construya el compilador de C. Es necesaria nicamente en caso de
que hayas descargado y desempaquetado el paquete completo de GCC.
Compila el paquete:
make BOOT_LDFLAGS="-static" bootstrap
38
Linux From Scratch - Versin 6.0
Significado de los parmetros de make:
BOOT_LDFLAGS="-static"
Esto le indica a GCC que sus programas se enlacen estticamente.
bootstrap
Este objetivo no slo compila GCC, sino que lo compila varias veces. Usa los programas compilados la
primera vez para compilarse a s mismo una segunda vez y luego una tercera. Despus compara la
segunda compilacin con la tercera para asegurarse que puede reproducirse a s mismo sin errores. Esto
tambin implica que se ha compilado correctamente.
La compilacin se ha completado. En este punto normalmente ejecutaramos el banco de pruebas, pero,
como se mencion antes, el entorno de trabajo para los bancos de pruebas no se encuentra todava en su
lugar. Los beneficios de ejecutar ahora los bancos de pruebas son mnimos, pues los programas de esta
primera fase pronto sern sustituidos.
Instala el paquete:
make install
Como toque final, crea un enlace simblico. Muchos programas y guiones ejecutan cc en vez de gcc. Esto es
una forma de hacer que los programas sean genricos y por tanto utilizables en toda clase de sistemas Unix.
No todos tienen instalado el compilador de C de GNU. Ejecutar cc deja al administrador del sistema libre de
decidir qu compilador de C instalar, mientras haya un enlace simblico que apunte a l.
ln -s gcc /tools/bin/cc
Los detalles sobre este paquete se encuentran en la Seccin 6.14.2, Contenido de GCC.
39
Linux From Scratch - Versin 6.0
5.6. Linux-Libc-Headers-2.6.8.1
El paquete Linux-Libc-Headers contiene las cabeceras saneadas del ncleo.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 22 MB
La instalacin de Linux-Libc-Headers depende de: Coreutils
5.6.1. Instalacin de Linux-Libc-Headers
Durante aos ha sido una prctica comn utilizar las llamadas cabeceras crudas del ncleo (extraidas de un
paquete del ncleo) en /usr/include, pero en el transcurso de los ltimos aos los desarrolladores del
ncleo han tomado la firme postura de que esto no debe suceder. As naci el proyecto Linux-Libc-Headers,
destinado a mantener una versin estable de la API de las cabeceras Linux.
Instala los ficheros de cabecera:
cp -R include/asm-i386 /tools/include/asm
cp -R include/linux /tools/include
Si tu arquitectura no es i386 (o compatible), modifica adecuadamente el primer comando.
Los detalles sobre este paquete se encuentran en la Seccin 6.9.2, Contenido de Linux-Libc-Headers.
40
Linux From Scratch - Versin 6.0
5.7. Cabeceras de Linux-2.6.8.1
El paquete del ncleo Linux contiene las fuentes del ncleo y los ficheros de cabecera utilizados por Glibc.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 186 MB
La instalacin de las cabeceras de Linux depende de: Coreutils y Make
5.7.1. Instalacin de las cabeceras del ncleo
Como ciertos paquetes necesitan usar los ficheros de cabecera (headers) del ncleo, vamos a desempaquetar
el archivo del ncleo ahora, configurarlo, y copiar los ficheros necesarios a un lugar donde gcc pueda
encontrarlos.
Prepara la instalacin de las cabeceras:
make mrproper
Esto asegurar que el rbol del ncleo est absolutamente limpio. El equipo de desarrollo recomienda usar
este comando antes de cada compilacin del ncleo, y en realidad no debes confiar en que el rbol de las
fuentes est limpio tras desempaquetarlo.
Crea el fichero include/linux/version.h:
make include/linux/version.h
Crea el enlace simblico include/asm especfico de la plataforma:
make include/asm
Instala los ficheros de cabecera especficos de la plataforma:
mkdir /tools/glibc-kernheaders
cp -HR include/asm /tools/glibc-kernheaders
cp -R include/asm-generic /tools/glibc-kernheaders
Por ltimo, instala los ficheros de cabecera del ncleo independientes de la plataforma:
cp -R include/linux /tools/glibc-kernheaders
Los detalles sobre este paquete se encuentran en la Seccin 8.3.2, Contenido de Linux.
41
Linux From Scratch - Versin 6.0
5.8. Glibc-2.3.4-20040701
El paquete Glibc contiene la librera C principal. Esta librera proporciona todas las rutinas bsicas para la
ubicacin de memoria, bsqueda de directorios, abrir y cerrar ficheros, leerlos y escribirlos, manejo de
cadenas, coincidencia de patrones, aritmtica, etc...
Tiempo estimado de construccin: 11.8 SBU
Espacio requerido en disco: 800 MB
La instalacin de Glibc depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make,
Perl, Sed y Texinfo
5.8.1. Instalacin de Glibc
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas Glibc.
Hay que resaltar que compilar Glibc de forma diferente a como el libro sugiere pone la estabilidad de tu
sistema en grave riesgo.
La documentacin de Glibc recomienda construirlo fuera del rbol de las fuentes, en un directorio de
construccin dedicado:
mkdir ../glibc-build
cd ../glibc-build
Prepara Glibc para su compilacin:
../glibc-2.3.4-20040701/configure --prefix=/tools \
--disable-profile --enable-add-ons=nptl --with-tls \
--with-__thread --enable-kernel=2.6.0 \
--with-binutils=/tools/bin --without-gd --without-cvs \
--with-headers=/tools/glibc-kernheaders
Significado de las opciones de configure:
--disable-profile
Esto construye las libreras sin informacin de perfiles. Omite esta opcin si planeas usar perfiles en las
herramientas temporales.
--enable-add-ons=nptl
Esto le indica a Glibc que utilice el aadido NPTL como su librera de hilos.
--with-tls
Esto le indica a Glibc que incluya el soporte para TLS (almacenamiento de hilos locales). Esto es
necesario para que funcione NPTL.
--with-__thread
Esta opcin le indica a Glibc que incluya el soporte para hilos. Es necesario para conseguir que TLS se
compile correctamente.
--enable-kernel=2.6.0
Esto le indica a Glibc que compile la librera con soporte para ncleos Linux 2.6.x.
42
Linux From Scratch - Versin 6.0
--with-binutils=/tools/bin
Aunque no es necesario, esta opcin nos asegura que no haya equvocos sobre qu programas de Binutils
se utilizarn durante la construccin de Glibc.
--without-gd
Esto evita la construccin del programa memusagestat, el cual insiste en enlazarse contra las libreras
del sistema anfitrin (libgd, libpng, libz y dems).
--without-cvs
Esto se indica para evitar que los Makefiles intenten hacer automticamente un cvs checkout cuando se
utiliza una imagen CVS. Aunque no es realmente necesario, es recomendable porque silencia un molesto
pero inofensivo aviso sobre la ausencia del programa autoconf.
--with-headers=/tools/glibc-kernheaders
Esto le indica a Glibc que se compile contra las cabeceras crudas del ncleo, para que as sepa
exactamente las caractersticas que tiene el ncleo y pueda optimizarse de acuerdo a esto.
Durante esta fase puede que veas el siguiente mensaje de aviso:
configure: WARNING:
*** These auxiliary programs are missing or
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.
configure: AVISO:
*** Versin incompatible o ausente de estos
*** programas auxiliares: msgfmt
*** algunas caractersticas sern desactivadas.
*** Comprueba en el fichero INSTALL las versiones requeridas.
Normalmente, la ausencia o incompatibilidad del programa msgfmt es inofensiva, pero se cree que en
ocasiones puede causar problemas al ejecutar el banco de pruebas. El programa msgfmt es parte del paquete
Gettext y debera proporcionarlo el sistema anfitrin. Si msgfmt est presente pero es incompatible,
actualiza el paquete Gettext del sistema anfitrin o contina sin l y observa si los bancos de pruebas se
ejecutan sin problemas.
Compila el paquete:
make
La compilacin est completa. Como se mencion antes, no es obligatorio ejecutar los bancos de pruebas de
las herramientas temporales en este captulo. Si de todas formas deseas ejecutar el banco de pruebas de
Glibc, hazlo con el siguiente comando:
make check
Consulta en la Seccin 6.11, Glibc-2.3.4-20040701, la explicacin de los fallos de las pruebas que tienen
una particular importancia.
En este captulo algunas pruebas pueden verse afectadas adversamente por las herramientas existentes o el
entorno del sistema anfitrin. En resumen, no te preocupes demasiado si ves fallos en el banco de pruebas de
Glibc en este captulo. La Glibc del Captulo 6 es la que acabaremos usando al final, por lo que es la que
necesitamos que pase la mayora de las pruebas (incluso en el Captulo 6 es posible que todava ocurran
algunos fallos, la prueba math por ejemplo).
43
Linux From Scratch - Versin 6.0
Cuando aparezca un fallo, antalo y continua ejecutando de nuevo make check. El banco de pruebas debera
continuar a partir de donde se qued. Puedes evitar esta secuencia de inicio-parada ejecutando make -k
check. Si utilizas esta opcin, asegrate de registrar la salida para que ms tarde puedas revisar el fichero de
registro en bsqueda de errores.
La fase de instalacin de Glibc mostrar un aviso inofensivo sobre la ausencia del fichero
/tools/etc/ld.so.conf. Evita este confuso aviso con:
mkdir /tools/etc
touch /tools/etc/ld.so.conf
Instala el paquete:
make install
Diferentes pases y culturas tienen diferentes convenciones sobre cmo comunicarse. Estas convenciones
van desde las ms simples, como el formato para representar fechas y horas, a las ms complejas, como el
lenguaje hablado. La internacionalizacin de los programas GNU funciona mediante el uso de locales.
Nota
Si no ests ejecutando los bancos de pruebas en este captulo, como recomendamos, no hay
razn para instalar ahora las locales. Las instalaremos en el siguiente captulo.
Si de todas formas quieres instalar las locales de Glibc, hazlo con el siguiente comando:
make localedata/install-locales
Para ahorrar tiempo, una alternativa al comando anterior (que genera e instala todas las locale que Glibc
conoce) es instalar solamente aquellas locales que necesites o desees. Esto puede hacerse usando el comando
localedef. Puedes encontrar ms informacin sobre esto en el fichero INSTALL de las fuentes de Glibc. Sin
embargo, hay un nmero de locales que son esenciales para que las comprobaciones de paquetes posteriores
se realicen. En particular, la prueba de libstdc++ en GCC. Las siguientes instrucciones, en vez del objetivo
anterior install-locales, instalarn el conjunto mnimo de locales necesario para que las pruebas se
ejecuten correctamente:
mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP
Los detalles sobre este paquete se encuentran en la Seccin 6.11.4, Contenido de Glibc.
44
Linux From Scratch - Versin 6.0
5.9. Ajustar las herramientas
Ahora que se han instalado las libreras de C temporales, todas las herramientas que compilemos en el resto
de este captulo deberan enlazarse contra ellas. Para conseguirlo, deben ajustarse el enlazador y el fichero
specs del compilador.
El enlazador, que se ajust al final del primer paso de Binutils, se instala ejecutando el siguiente comando
desde el directorio binutils-build:
make -C ld install
Desde ahora todo se enlazar solamente contra las libreras que hay en /tools/lib.
Nota
Si por alguna razn olvidaste el aviso sobre conservar los directorios de las fuentes y de
construccin del primer paso de Binutils, ignora el comando anterior. El resultado es la pequea
pega de que los siguientes programas de pruebas se enlazarn contra las libreras del anfitrin.
Esto no es lo ideal, pero no es un gran problema. La situacin se corregir cuando instalemos un
poco ms adelante la segunda fase de Binutils.
Ahora que se ha instalado el enlazador ajustado, debes eliminar los directorios de las fuentes y de
construccin de Binutils.
Lo siguiente es corregir el fichero de especificaciones de GCC para que apunte al nuevo enlazador dinmico.
Un simple comando sed lo har:
SPECFILE=`gcc --print-file specs` &&
sed 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' \
$SPECFILE > tempspecfile &&
mv -f tempspecfile $SPECFILE &&
unset SPECFILE
Alternativamente, puedes editar el fichero specs a mano si quieres. Esto se hace reemplazando cada
aparicin de /lib/ld-linux.so.2 con /tools/lib/ld-linux.so.2.
Asegrate de revisar visualmente el fichero specs para verificar que se han hecho los cambios deseados.
Importante
Si ests trabajando sobre una plataforma en la que el nombre del enlazador dinmico no es
ld-linux.so.2, en el anterior comando debes sustituir ld-linux.so.2 con el nombre
del enlazador dinmico de tu plataforma. En caso necesario consulta la Seccin 5.3, Notas
tcnicas sobre las herramientas.
Existe la posibilidad de que algunos ficheros de cabecera de nuestro sistema anfitrin se hayan colado dentro
del directorio privado de cabeceras de GCC. Esto puede suceder debido al proceso fixincludes de GCC
que se ejecuta como parte de su proceso de construccin. Explicaremos esto con ms detalle dentro de este
captulo. Por ahora, ejecuta este comando para eliminar dicha posibilidad:
rm -f /tools/lib/gcc/*/*/include/{pthread.h,bits/sigthread.h}
45
Linux From Scratch - Versin 6.0
Atencin
En este punto es obligatorio parar y asegurarse de que las operaciones bsicas (compilacin y
enlazado) de las nuevas herramientas funcionan como se espera. Para esto vamos a hacer una
simple comprobacin:
echo 'main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /tools'
Si todo funciona correctamente, no debe haber errores y la salida del ltimo comando debe ser:
[Requesting program interpreter:
/tools/lib/ld-linux.so.2]
[Intrprete de programa solicitado:
/tools/lib/ld-linux.so.2]
Confirma que /tools/lib aparezca como el prefijo de tu enlazador dinmico.
Si no recibes una salida como la mostrada arriba, o no hay salida alguna, algo est seriamente
mal. Investiga y revisa tus pasos para encontrar el problema y corregirlo. El problema debe
resolverse antes de continuar. Primero, repite la comprobacin de sanidad usando gcc en vez de
cc. Si esto funciona significa que falta el enlace simblico /tools/bin/cc. Vuelve a la
Seccin 5.5, GCC-3.4.1 - Fase 1 e instala el enlace simblico. Seguidamente, asegrate de
que tu PATH es correcto. Puedes comprobarlo ejecutando echo $PATH y verificando que
/tools/bin est en cabeza de la lista. Si el PATH est mal puede significar que no has
ingresado como usuario lfs o que algo sali mal en la Seccin 4.4, Configuracin del entorno.
Otra opcin es que algo pudo ir mal en el anterior arreglo del fichero specs. En este caso, repite
el arreglo del fichero.
Cuando todo est bien, borra los ficheros de prueba:
rm dummy.c a.out
46
Linux From Scratch - Versin 6.0
5.10. Tcl-8.4.7
El paquete Tcl contiene el Tool Command Language (Lenguaje para Herramientas de Comandos).
Tiempo estimado de construccin: 0.9 SBU
Espacio requerido en disco: 23 MB
La instalacin de Tcl depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make y Sed
5.10.1. Instalacin de Tcl
Este paquete y los dos siguientes (Expect y DejaGNU) se instalan con el nico propsito de poder ejecutar
los bancos de pruebas de GCC y Binutils. Instalar tres paquetes slo para realizar comprobaciones puede
parecer excesivo, pero es muy tranquilizador, si no esencial, saber que las herramientas ms importantes
funcionan adecuadamente. Aunque los bancos de pruebas no se ejecuten en este captulo (no son
obligatorios), estos paquetes son todava necesarios para los bancos de pruebas en el Captulo 6.
Prepara Tcl para su compilacin:
cd unix
./configure --prefix=/tools
Construye el paquete:
make
Para comprobar los resultados, ejecuta: TZ=UTC make test. Se sabe que el banco de pruebas de Tcl
experimenta fallos bajo ciertas condiciones del anfitrin que an no se comprenden por completo. Sin
embargo, estos fallos no son una sorpresa y no se consideran crticos. El parmetro TZ=UTC establece la
zona horaria al Tiempo Universal Coordinado (UTC), tambin conocido como Hora del Meridiano de
Greenwich (GMT), pero slo mientras se ejecuta el banco de pruebas. Esto asegura que las pruebas de reloj
se ejecuten correctamente. En el Captulo 7 se proporcionan detalles sobre la variable de entorno TZ.
Instala el paquete:
make install
Aviso
No borres todava el directorio de fuentes de tcl8.4.7, ya que el prximo paquete necesitar
sus ficheros de cabecera internos.
Crea un enlace simblico necesario:
ln -s tclsh8.4 /tools/bin/tclsh
47
Linux From Scratch - Versin 6.0
5.10.2. Contenido de Tcl
Programas instalados: tclsh (enlace a tclsh8.4) y tclsh8.4
Librera instalada: libtcl8.4.so
Descripciones cortas
tclsh8.4
Es el intrprete de comandos de Tcl.
tclsh
Enlace a tclsh8.4
libtcl8.4.so La librera Tcl.
48
Linux From Scratch - Versin 6.0
5.11. Expect-5.42.1
El paquete Expect suministra un programa que mantiene dilogos programados con otros programas
interactivos.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 3.9 MB
La instalacin de Expect depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed y
Tcl
5.11.1. Instalacin de Expect
Corrige un error que puede causar falsos fallos durante la ejecucin del banco de pruebas de GCC:
patch -Np1 -i ../expect-5.42.1-spawn-1.patch
Prepara Expect para su compilacin:
./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no
Significado de las opciones de configure:
--with-tcl=/tools/lib
Esto asegura que el guin configure encuentre la instalacin de Tcl en nuestra ubicacin temporal de
herramientas. No queremos que encuentre una que pudiese residir en el sistema anfitrin.
--with-x=no
Esto le indica al guin configure que no busque Tk (el componente GUI de Tcl) o las libreras del
sistema X Window, las cuales posiblemente se encuentren en el sistema anfitrin.
Construye el paquete:
make
Para comprobar los resultados, ejecuta: make test. Sin embargo, se sabe que el banco de pruebas para
Expect a veces experimenta fallos bajo ciertas condiciones del anfitrin que no estn bajo nuestro control.
Por tanto, estos fallos del banco de pruebas no son una sorpresa y no se consideran crticos.
Instala el paquete:
make SCRIPTS="" install
Significado del parmetro de make:
SCRIPTS=""
Esto evita la instalacin de los guiones suplementarios de expect, que no son necesarios.
Ya puedes borrar los directorios de fuentes de Tcl y Expect.
49
Linux From Scratch - Versin 6.0
5.11.2. Contenido de Expect
Programa instalado: expect
Librera instalada: libexpect-5.42.a
Descripciones cortas
expect
Se comunica con otros programas interactivos segn un guin.
libexpect-5.42.a
Contiene funciones que permiten a Expect usarse como una extensin de Tcl o
usarse directamente en C o C++ (sin Tcl)."
50
Linux From Scratch - Versin 6.0
5.12. DejaGNU-1.4.4
El paquete DejaGNU contiene un entorno de trabajo para comprobar otros programas.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 8.6 MB
La instalacin DejaGNU depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make y Sed
5.12.1. Instalacin de DejaGNU
Prepara DejaGNU para su compilacin:
./configure --prefix=/tools
Construye e instala el paquete:
make install
5.12.2. Contenido de DejaGNU
Programa instalado: runtest
Descripcin corta
runtest
Un guin envoltorio que encuentra el intrprete de comandos de expect adecuado y entonces
ejecuta DejaGNU.
51
Linux From Scratch - Versin 6.0
5.13. GCC-3.4.1 - Fase 2
Tiempo estimado de construccin: 11.0 SBU
Espacio requerido en disco: 274 MB
La instalacin de GCC depende de: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc,
Grep, Make, Perl, Sed y Texinfo
5.13.1. Reinstalacin de GCC
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas GCC.
Ahora estn instaladas las herramientas necesarias para comprobar GCC y Binutils: Tcl, Expect y DejaGNU.
Por lo que ahora pueden reconstruirse GCC y Binutils enlazndolos con la nueva Glibc y comprobarlos
adecuadamente (si llevas a cabo los bancos de pruebas en este captulo). Sin embargo, una cosa a tener en
cuenta es que estos bancos de pruebas son altamente dependientes del correcto funcionamiento de las
pseudo-terminales (PTYs) suministradas por tu distribucin anfitrin. Las PTYs se implementan
normalmente mediante el sistema de ficheros devpts. Comprueba si tu sistema anfitrin est configurado
correctamente en este aspecto ejecutando una simple prueba:
expect -c "spawn ls"
La respuesta podra ser:
The system has no more ptys.
Ask your system administrator to create more.
El sistema no tiene ms ptys.
Pdele al administrador del sistema que cree ms.
Si recibes el mensaje anterior, tu sistema anfitrin no est configurado para operar correctamente con PTYs.
En este caso no hay razn para ejecutar los bancos de pruebas de GCC y Binutils hasta resolver este asunto.
Puedes consultar el Wiki de LFS en http://wiki.linuxfromscratch.org/ para obtener informacin sobre cmo
conseguir que funcionen las PTYs.
Puesto que se construirn los compiladores de C y C++, desempaqueta los paquetes core y g++ (y tambin el
testsuite, si quieres ejecutar las pruebas). Al desempaquetarlos en el directorio de trabajo, todos ellos se
ubicarn en un nico subdirectorio gcc-3.4.1/.
Corrige un problema conocido y haz un ajuste esencial:
patch -Np1 -i ../gcc-3.4.1-no_fixincludes-1.patch
patch -Np1 -i ../gcc-3.4.1-specs-1.patch
El primer parche desactiva el guin fixincludes de GCC. Antes lo mencionamos brevemente, pero ahora
queremos brindarte una explicacin un poco ms profunda del proceso de correccin de las cabeceras que
realiza dicho guin. En circunstancias normales, el guin fixincludes de GCC busca en tu sistema los
ficheros de cabecera que necesita corregir. Puede encontrar que algn fichero de cabecera de Glibc de tu
sistema anfitrin necesite ser corregido, en cuyo caso lo corrige y lo pone en un directorio privado de GCC.
Ms adelante, en el Captulo 6, despus de instalar la nueva Glibc, se buscar en el directorio privado antes
que en el directorio del sistema, por lo que GCC encontrar las cabeceras corregidas del sistema anfitrin,
que muy probablemente no se correspondern con la versin de Glibc utilizada para el sistema LFS.
El segundo parche cambia la localizacin por defecto para GCC del enlazador dinmico (normalmente
52
Linux From Scratch - Versin 6.0
ld-linux.so.2). Tambin elimina /usr/include de la ruta de bsqueda de GCC. Parchear ahora en
lugar de ajustar el fichero specs tras la instalacin asegura que nuestro nuevo enlazador dinmico sea
utilizado durante la construccin actual de GCC. Esto es, todos los binarios finales (y temporales) creados
durante la construccin se enlazarn contra la nueva Glibc.
Importante
Los parches anteriores son crticos para asegurar una correcta construccin. No olvides
aplicarlos.
Vuelve a crear un directorio de construccin dedicado:
mkdir ../gcc-build
cd ../gcc-build
Prepara GCC para su compilacin:
../gcc-3.4.1/configure --prefix=/tools \
--libexecdir=/tools/lib --with-local-prefix=/tools \
--enable-clocale=gnu --enable-shared \
--enable-threads=posix --enable-__cxa_atexit \
--enable-languages=c,c++ --disable-libstdcxx-pch
Significado de las nuevas opciones de configure:
--enable-clocale=gnu
Esta opcin asegura que se seleccione el modelo de locale correcto para las libreras de C++ en todos los
casos. Si el guin configure encuentra instalada la locale de_DE, seleccionar el modelo correcto de gnu.
Sin embargo, las personas que no instalan la locale de_DE pueden correr el riesgo de construir libreras
de C++ incompatibles en la ABI debido a que se selecciona el modelo de locale genrico, que es
incorrecto.
--enable-threads=posix
Esto activa el manejo de excepciones C++ para cdigo multihilo.
--enable-__cxa_atexit
Esta opcin permite el uso de __cxa_atexit, en vez de atexit, para registrar destructores C++ para objetos
estticos locales y objetos globales. Es esencial para un manejo de destructores completamente
compatible con los estndares. Tambin afecta al ABI de C++ obteniendo libreras compartidas y
programas C++ interoperables con otras distribuciones Linux.
--enable-languages=c,c++
Esta opcin asegura que se construyan tanto el compilador de C como el de C++.
--disable-libstdcxx-pch
No construye la cabecera precompilada (PCH) para libstdc++. Necesita mucho espacio y nosotros no
la utilizamos.
Compila el paquete:
make
Aqu no hace falta usar el objetivo bootstrap, ya que el compilador que estamos utilizando para construir
GCC ha sido construido a partir de la misma versin de las fuentes de GCC que usamos antes.
La compilacin est completa. Como se mencion antes, no es obligatorio ejecutar los bancos de pruebas de
53
Linux From Scratch - Versin 6.0
las herramientas temporales en este captulo. Si de todas formas deseas ejecutar el banco de pruebas de
GCC, hazlo con el siguiente comando:
make -k check
La opcin -k se usa para que el banco de pruebas se ejecute por completo y sin detenerse ante el primer
error. El banco de pruebas de GCC es muy exhaustivo y es casi seguro que generar algunos fallos. Para ver
un resumen de los resultados ejecuta:
../gcc-3.4.1/contrib/test_summary
Para ver slo el resumen, redirige la salida a travs de grep -A7 Summ.
Puedes comparar tus resultados con los publicados en la lista de correo gcc-testresults para configuraciones
similares a la tuya. Hay un ejemplo de cmo debera comportarse GCC-3.4.1 en sistemas i686-pc-linux-gnu
en http://gcc.gnu.org/ml/gcc-testresults/2004-07/msg00179.html.
No siempre se pueden evitar unos cuantos fallos inesperados. Los desarrolladores de GCC normalmente
estn al tanto de dichos problemas, pero no los han resulelto an. A no ser que tus resultados difieran en
gran medida de los mostrados en la anterior URL, es seguro continuar.
Instala el paquete:
make install
En este punto se recomienda encarecidamente que se repitan las comprobaciones que realizamos
anteriormente en este captulo. Regresa a la Seccin 5.9, Ajustar las herramientas, y repite la pequea
prueba de compilacin. Si los resultados son malos muy posiblemente se deba a que no se aplic
correctamente el parche Specs de GCC.
Los detalles sobre este paquete se encuentran en la Seccin 6.14.2, Contenido de GCC.
54
Linux From Scratch - Versin 6.0
5.14. Binutils-2.15.91.0.2 - Fase 2
El paquete Binutils contiene un enlazador, un ensamblador y otras utilidades para trabajar con ficheros
objeto.
Tiempo estimado de construccin: 1.5 SBU
Espacio requerido en disco: 108 MB
La instalacin de Binutils depende de: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl,
Sed y Texinfo
5.14.1. Reinstalacin de Binutils
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas Binutils.
Vuelve a crear un directorio dedicado para la construccin:
mkdir ../binutils-build
cd ../binutils-build
Prepara Binutils para su compilacin:
../binutils-2.15.91.0.2/configure --prefix=/tools \
--enable-shared --with-lib-path=/tools/lib
Significado de la nueva opcin de configure:
--with-lib-path=/tools/lib
Esto le indica al guin configure que especifique la ruta de bsqueda de libreras por defecto durante la
compilacin de Binutils, resultando en que se le pase /tools/lib al enlazador. Esto evita que el
enlazador busque en los directorios de libreras del anfitrin.
Compila el paquete:
make
La compilacin est completa. Como se explic antes, no recomendamos ejecutar los bancos de pruebas de
las herramientas temporales en este captulo. Si de todas formas deseas ejecutar el banco de pruebas de
Binutils, hazlo con el siguiente comando:
make check
Instala el paquete:
make install
55
Linux From Scratch - Versin 6.0
Prepara el enlazador para la fase de Reajuste del prximo captulo:
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
Aviso
No borres todava los directorios de fuentes y de construccin de Binutils. Se necesitarn
durante el siguiente captulo en el estado en que se encuentran ahora.
Los detalles sobre este paquete se encuentran en la Seccin 6.13.2, Contenido de Binutils.
56
Linux From Scratch - Versin 6.0
5.15. Gawk-3.1.4
El paquete Gawk contiene programas para manipular ficheros de texto.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 17 MB
La instalacin de Gawk depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make
y Sed
5.15.1. Instalacin de Gawk
Prepara Gawk para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.20.2, Contenido de Gawk.
57
Linux From Scratch - Versin 6.0
5.16. Coreutils-5.2.1
El paquete Coreutils contiene utilidades para mostrar y establecer las caractersticas bsicas del sistema.
Tiempo estimado de construccin: 0.9 SBU
Espacio requerido en disco: 69 MB
La instalacin de Coreutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Perl y Sed
5.16.1. Instalacin de Coreutils
Prepara Coreutils para su compilacin:
DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/tools
Este paquete tiene un problema cuando se compila contra una versin de Glibc posterior a 2.3.2. Algunas de
las utilidades de Coreutils (como head, tail y sort) rechazarn su sintaxis tradicional, la cual se ha usado
desde hace aproximadamente unos 30 aos. Esta vieja sintaxis est tan arraigada que debera preservarse la
compatibilidad hasta que puedan actualizarse los mltiples sitios en la que se usa. La compatibilidad hacia
atrs se consigue estableciendo en el anterior comando el valor de la variable de entorno
DEFAULT_POSIX2_VERSION a 199209. Si no deseas que Coreutils sea compatible con la sintaxis
tradicional, simplemente omite dicha variable de entorno. Pero ten en cuenta que hacer esto tiene
consecuencias, incluida la necesidad de parchear los mltiples paquetes que todava utilizan la vieja sintaxis.
Por tanto, nosotros recomendamos seguir las instrucciones mostradas.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make RUN_EXPENSIVE_TESTS=yes check. El parmetro
RUN_EXPENSIVE_TESTS=yes le indica al banco de pruebas que realice varias comprobaciones
adicionales que se consideran relativamente costosas (en trminos de uso de CPU y memoria) en ciertas
plataformas, aunque normalmente no hay problemas en Linux.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.15.2, Contenido de Coreutils.
58
Linux From Scratch - Versin 6.0
5.17. Bzip2-1.0.2
El paquete Bzip2 contiene programas para comprimir y descomprimir ficheros. En ficheros de texto
consigue una mejor compresin que el tradicional gzip.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 2.5 MB
La instalacin de Bzip2 depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc y Make
5.17.1. Instalacin de Bzip2
El paquete Bzip2 no tiene un guin configure. Complalo con:
make
Instala el paquete:
make PREFIX=/tools install
Los detalles sobre este paquete se encuentran en la Seccin 6.40.2, Contenido de Bzip2.
59
Linux From Scratch - Versin 6.0
5.18. Gzip-1.3.5
El paquete Gzip contiene programas para comprimir y descomprimir ficheros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 2.6 MB
La instalacin de Gzip depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make y Sed
5.18.1. Instalacin de Gzip
Prepara Gzip para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.46.2, Contenido de Gzip.
60
Linux From Scratch - Versin 6.0
5.19. Diffutils-2.8.1
El paquete Diffutils contiene programas que muestran las diferencias entre ficheros o directorios.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 7.5 MB
La instalacin de Diffutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make y Sed
5.19.1. Instalacin de Diffutils
Prepara Diffutils para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.41.2, Contenido de Diffutils.
61
Linux From Scratch - Versin 6.0
5.20. Findutils-4.1.20
El paquete Findutils contiene programas para encontrar ficheros. Se suministran procesos para hacer
bsquedas recursivas en un rbol de directorios, y para crear, mantener y consultar una base de datos (ms
rpida que la bsqueda recursiva, pero imprecisa si la base de datos no se ha actualizado recientemente).
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 7.6 MB
La instalacin de Findutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make y Sed
5.20.1. Instalacin de Findutils
Prepara Findutils para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.19.2, Contenido de Findutils.
62
Linux From Scratch - Versin 6.0
5.21. Make-3.80
El paquete Make contiene un programa para compilar paquetes grandes.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 8.8 MB
La instalacin de Make depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep y Sed
5.21.1. Instalacin de Make
Prepara Make para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.48.2, Contenido de Make.
63
Linux From Scratch - Versin 6.0
5.22. Grep-2.5.1
El paquete Grep contiene programas para buscar dentro de ficheros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 5.8 MB
La instalacin de Grep depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Make, Sed y
Texinfo
5.22.1. Instalacin de Grep
Prepara Grep para su compilacin:
./configure --prefix=/tools \
--disable-perl-regexp --with-included-regex
Significado de las opciones de configure:
--disable-perl-regexp
Esto asegura que grep no se enlaza contra alguna librera PCRE que pudiese estar presente en el
anfitrin y que no estara disponible una vez que entremos en el entorno chroot.
--with-included-regex
Esto asegura que Grep utilice su cdigo interno de expresiones regulares. Sin esta opcin Grep usara el
cdigo de Glibc, que se sabe que tiene algunos fallos.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.44.2, Contenido de Grep.
64
Linux From Scratch - Versin 6.0
5.23. Sed-4.1.2
El paquete Sed contiene un editor de flujos.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 5.2 MB
La instalacin de Sed depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make y
Texinfo
5.23.1. Instalacin de Sed
Prepara Sed para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.28.2, Contenido de Sed.
65
Linux From Scratch - Versin 6.0
5.24. Gettext-0.14.1
El paquete Gettext contiene utilidades para la internacionalizacin y localizacin. Esto permite a los
programas compilarse con Soporte de Lenguaje Nativo (NLS), lo que les permite mostrar mensajes en el
idioma nativo del usuario.
Tiempo estimado de construccin: 0.5 SBU
Espacio requerido en disco: 55 MB
La instalacin de Gettext depende de: Bash, Binutils, Bison, Coreutils, Diffutils, Gawk, GCC, Glibc,
Grep, Make y Sed
5.24.1. Instalacin de Gettext
Prepara Gettext para su compilacin:
./configure --prefix=/tools --disable-libasprintf \
--disable-csharp
Significado de las opciones de configure:
--disable-libasprintf
Esta opcin le indica a Gettext que no construya la librera asprintf. Puesto que nada en este captulo
o el siguiente requiere dicha librera y Gettext se reconstruir ms adelante, la excluimos para salvar
tiempo y espacio.
--disable-csharp
Esto le indica a Gettext que no utilice un compilador C#, aunque haya un compilador C# instalado en el
anfitrin. Esto es necesario debido a que dentro del chroot C# no estar disponible.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check. Esto tarda mucho tiempo, unos 7 SBUs. Ms an, se
sabe que el banco de pruebas de Gettext falla bajo ciertas condiciones del anfitrin, por ejemplo si encuentra
un compilador Java. En el proyecto Patches, en http://www.linuxfromscratch.org/patches/, hay disponible un
parche experimental para desactivar Java.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.30.2, Contenido de Gettext.
66
Linux From Scratch - Versin 6.0
5.25. Ncurses-5.4
El paquete Ncurses contiene libreras para el manejo de pantallas de caracteres independiente del terminal.
Tiempo estimado de construccin: 0.7 SBU
Espacio requerido en disco: 26 MB
La instalacin de Ncurses depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep,
Make y Sed
5.25.1. Instalacin de Ncurses
Prepara Ncurses para su compilacin:
./configure --prefix=/tools --with-shared \
--without-debug --without-ada --enable-overwrite
Significado de las opciones de configure:
--without-ada
Esto le indica a Ncurses que no construya su soporte para Ada, aunque haya un compilador Ada
instalado en el anfitrin. Esto debe hacerse porque una vez dentro del chroot Ada no estar disponible.
--enable-overwrite
Esto le indica a Ncurses que instale sus ficheros de cabecera en /tools/include en vez de en
/tools/include/ncurses para asegurar que otros paquetes puedan encontrar sin problemas las
cabeceras de Ncurses.
Compila el paquete:
make
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.21.2, Contenido de Ncurses.
67
Linux From Scratch - Versin 6.0
5.26. Patch-2.5.4
El paquete Patch contiene un programa para modificar ficheros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 1.9 MB
La instalacin de Patch depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make y Sed
5.26.1. Instalacin de Patch
Prepara Patch para su compilacin:
CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/tools
La opcin del preprocesador -D_GNU_SOURCE slo es necesaria en la plataforma PowerPC. Puedes
omitirla para otras arquitecturas.
Compila el paquete:
make
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.50.2, Contenido de Patch.
68
Linux From Scratch - Versin 6.0
5.27. Tar-1.14
El paquete Tar contiene un programa de archivado.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 10 MB
La instalacin de Tar depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make y
Sed
5.27.1. Instalacin de Tar
Prepara Tar para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.56.2, Contenido de Tar.
69
Linux From Scratch - Versin 6.0
5.28. Texinfo-4.7
El paquete Texinfo contiene programas usados para leer, escribir y convertir documentos Info.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 16 MB
La instalacin de Texinfo depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Ncurses y Sed
5.28.1. Instalacin de Texinfo
Prepara Texinfo para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.34.2, Contenido de Texinfo.
70
Linux From Scratch - Versin 6.0
5.29. Bash-3.0
El paquete Bash contiene la Bourne-Again SHell.
Tiempo estimado de construccin: 1.2 SBU
Espacio requerido en disco: 27 MB
La instalacin de Bash depende de: Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurse
y Sed
5.29.1. Instalacin de Bash
Prepara Bash para su compilacin:
./configure --prefix=/tools --without-bash-malloc
Significado de la opcin de configure:
--without-bash-malloc
Esta opcin desactiva el uso de la funcin de ubicacin de memoria (malloc) de Bash, que se sabe que
provoca violaciones de segmento. Al desactivar esta opcin Bash utilizar la funcin malloc de Glibc,
que es ms estable.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make tests.
Instala el paquete:
make install
Crea un enlace para los programas que usan sh como intrprete de comandos:
ln -s bash /tools/bin/sh
Los detalles sobre este paquete se encuentran en la Seccin 6.37.2, Contenido de Bash.
71
Linux From Scratch - Versin 6.0
5.30. M4-1.4.2
El paquete M4 contiene un procesador de macros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 3.0 MB
La instalacin de M4 depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make,
Perl y Sed
5.30.1. Instalacin de M4
Prepara M4 para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.24.2, Contenido de M4.
72
Linux From Scratch - Versin 6.0
5.31. Bison-1.875a
El paquete Bison contiene un generador de analizadores sintcticos.
Tiempo estimado de construccin: 0.6 SBU
Espacio requerido en disco: 10.6 MB
La instalacin de Bison depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, M4,
Make y Sed
5.31.1. Instalacin de Bison
Prepara Bison para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre ste paquete se encuentran en la Seccin 6.25.2, Contenido de Bison.
73
Linux From Scratch - Versin 6.0
5.32. Flex-2.5.31
El paquete Flex contiene una utilidad para generar programas que reconocen patrones de texto.
Tiempo estimado de construccin: 0.6 SBU
Espacio requerido en disco: 10.6 MB
La instalacin de Flex depende de: Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
M4, Make y Sed
5.32.1. Instalacin de Flex
Flex contiene varios errores conocidos. Pueden corregirse con el siguiente parche:
patch -Np1 -i ../flex-2.5.31-debian_fixes-2.patch
Las autotools de GNU detectan que el cdigo fuente de Flex fue modificado por dicho parche e intentan
actualizar la pgina de manual. Esto no funciona correctamente en muchos sistemas y la pgina original es
correcta, as que asegrate que no sea regenerada:
touch doc/flex.1
Prepara Flex para su compilacin:
./configure --prefix=/tools
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Los detalles sobre este paquete se encuentran en la Seccin 6.29.2, Contenido de Flex.
74
Linux From Scratch - Versin 6.0
5.33. Util-linux-2.12b
El paquete Util-linux contiene una miscelnea de utilidades. Entre otras hay utilidades para manejar sistemas
de ficheros, consolas, particiones y mensajes.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 16 MB
La instalacin de Util-linux depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Ncurses, Sed y Zlib
5.33.1. Instalacin de Util-linux
Util-linux no utiliza las cabeceras y libreras recin instaladas del directorio /tools. Esto se corrige
modificando el guin configure:
sed -i 's@/usr/include@/tools/include@g' configure
Prepara Util-linux para su compilacin:
./configure
Construye algunas rutinas de soporte:
make -C lib
Puesto que slo necesitamos algunas de las utilidades incluidas en este paquete, construimos estas:
make -C mount mount umount
make -C text-utils more
Este paquete no incluye un banco de pruebas.
Copia estos programas al directorio de herramientas temporales:
cp mount/{,u}mount text-utils/more /tools/bin
Los detalles sobre este paquete se encuentran en la Seccin 6.58.3, Contenido de Util-linux.
75
Linux From Scratch - Versin 6.0
5.34. Perl-5.8.5
El paquete Perl contiene el Lenguaje Prctico de Extraccin e Informe.
Tiempo estimado de construccin: 0.8 SBU
Espacio requerido en disco: 74 MB
La instalacin de Perl depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make y
Sed
5.34.1. Instalacin de Perl
Aplica el siguiente parche para corregir algunas rutas a la librera C fijadas en el cdigo:
patch -Np1 -i ../perl-5.8.5-libc-1.patch
Prepara Perl para su compilacin (asegrate de poner correctamente 'IO Fcntl POSIX', todo son letras):
./configure.gnu --prefix=/tools -Dstatic_ext='IO Fcntl POSIX'
Significado de la opcin de configure:
-Dstatic_ext='IO Fcntl POSIX'
Esto le indica a Perl que construya el conjunto mnimo de extensiones estticas necesarias para ejecutar
el banco de pruebas de Coreutils en el siguiente captulo.
Compila slo las herramientas necesarias:
make perl utilities
Aunque Perl incluye un banco de pruebas, no es recomendable ejecutarlo ahora. Slo se ha construido una
parte de Perl y la ejecucin de make test provocara que tambin se compilase el resto de Perl, que es
innecesario en este momento. El banco de pruebas puede ejecutarse en el siguiente captulo, si se desea.
Copia estas herramientas y sus libreras:
cp perl pod/pod2man /tools/bin
mkdir -p /tools/lib/perl5/5.8.5
cp -R lib/* /tools/lib/perl5/5.8.5
Los detalles sobre este paquete se encuentran en la Seccin 6.33.2, Contenido de Perl.
76
Linux From Scratch - Versin 6.0
5.35. Udev-030
El paquete Udev contiene programas para la creacin dinmica de nodos de dispositivos.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 5.2 MB
La instalacin de Udev depende de: Coreutils y Make
5.35.1. Instalacin de Udev
El programa udevstart tiene fijada la ruta al programa udev dentro suyo, lo que podra causar problemas
pues udev se instalar en una ubicacin no estndar. Corrige esto ejecutando lo siguiente:
sed -i 's@/sbin/udev@/tools/sbin/udev@g' udevstart.c
Del mismo modo, asegrate que udev conoce la localizacin correcta de sus ficheros de configuracin:
sed -i 's@/etc@/tools/etc@g' etc/udev/udev.conf.in
Compila Udev:
make prefix=/tools etcdir=/tools/etc
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make DESTDIR=/tools udevdir=/dev install
La configuracin por defecto de Udev no es la ideal, as que instala aqu los ficheros de configuracin
especificos de LFS:
cp ../udev-config-2.permissions \
/tools/etc/udev/permissions.d/00-lfs.permissions
cp ../udev-config-1.rules /tools/etc/udev/rules.d/00-lfs.rules
Lo detalles sobre este paquete se encuentran en la Seccin 6.57.2, Contenido de Udev.
77
Linux From Scratch - Versin 6.0
5.36. Eliminacin de Smbolos
Los pasos de esta seccin son opcionales, pero si la particin LFS es pequea es bueno saber que se pueden
eliminar algunas cosas innecesarias. Los binarios y libreras que se han construido contienen unos 130 MB
de smbolos de depuracin innecesarios. Elimina esos smbolos con:
strip --strip-debug /tools/lib/*
strip --strip-unneeded /tools/{,s}bin/*
El ltimo de los comandos anteriores se saltar una veintena de ficheros, avisando que no reconoce su
formato. Muchos de ellos son guiones en vez de binarios.
Ten cuidado de no utilizar --strip-unneeded con las libreras. Las estticas se destruiran y tendras que
construir de nuevo los tres paquetes de las herramientas principales.
Para recuperar otros 30 MB, elimina la documentacin:
rm -rf /tools/{doc,info,man}
Se necesitan como mnimo 850 MB de espacio libre en el sistema de ficheros LFS para poder construir e
instalar Glibc en el siguiente captulo. Si puedes construir e instalar Glibc, podrs construir e instalar el
resto.
78
Linux From Scratch - Versin 6.0
Parte III. Construccin del sistema LFS
Linux From Scratch - Versin 6.0
Captulo 6. Instalacin de los programas del sistema
base
6.1. Introduccin
En este captulo entramos en la zona de edificacin y comenzamos a construir de verdad nuestro sistema
LFS. Es decir, cambiamos la raz a nuestro mini sistema Linux temporal, hacemos unos cuantos preparativos
finales, y entonces comenzamos a instalar los paquetes.
La instalacin de estos programas es bastante sencilla. Aunque en muchos casos las instrucciones podran
acortarse y ser ms genricas, hemos optado por suministrar las instrucciones completas para cada paquete
para minimizar la posibilidad de errores. La clave para aprender qu hace que un sistema Linux funcione es
conocer para qu se utiliza cada paquete y por qu el usuario (o el sistema) lo necesita. Para cada paquete
instalado se incluye un sumario con su contenido, seguido de una concisa descripcin de cada programa y
librera instalados por el paquete.
Si piensas usar optimizaciones para la compilacin durante este captulo, mrate la receta de optimizacin en
http://www.lfs-es.com/recetas/optimization.html (la versin original en ingls se encuentra en
http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt). Las optimizaciones del compilador
pueden hacer que un programa funcione ms rpido, pero tambin pueden dificultar la compilacin e incluso
dar problemas al ejecutar el programa. Si un paquete rehusa compilar cuando se usan optimizaciones, prueba
a compilarlo sin ellas y mira si el problema desaparece. Incluso si el paquete se compila usando
optimizacin, existe el riesgo de que pueda haberse compilado incorrectamente debido a las complejas
interacciones entre el cdigo y las herramientas de construccin. La pequea ganancia que se consigue
usando optimizaciones en la compilacin generalmente queda ensombrecida por los riesgos. Aconsejamos a
los constructores primerizos de LFS que construyan sin optimizaciones personalizadas. Tu sistema an ser
muy rpido y, al mismo tiempo, muy estable.
El orden en el que se instalan los paquetes en este captulo debe respetarse estrictamente para asegurar que
ningn programa inserte en su cdigo una ruta referente a /tools. Por la misma razn, no compiles
paquetes en paralelo. La compilacin en paralelo puede ahorrarte algo de tiempo (sobre todo en mquinas
con CPUs duales), pero puede generar un programa que contenga referencias a /tools, lo que provocara
que el programa dejase de funcionar cuando se elimine dicho directorio.
Antes de las instrucciones de instalacin de cada paquete se muestra algo de informacin sobre el mismo:
una breve descripcin de lo que contiene, cunto tardar aproximadamente en construirse, cunto espacio en
disco necesita durante el proceso de construccin, y qu otros paquetes necesita para construirse
correctamente. A las instrucciones de instalacin le sigue una lista de los programas y libreras que instala el
paquete, junto con sus descripciones cortas.
Si quieres mantener un registro de qu ficheros instala cada paquete, puede que quieras utilizar un
administrador de paquetes. Para tener una idea general de los administradores de paquetes consulta
http://www.lfs-es.com/blfs-es-CVS/introduction/important.html (la versin original en ingls se encuentra en
http://www.linuxfromscratch.org/blfs/view/cvs/introduction/important.html). Recomendamos que leas la
receta http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt, pues es un
mtodo diseado especialmente para LFS.
Nota
El resto de este libro debe realizarse como usuario root, no como usuario lfs.
81
Linux From Scratch - Versin 6.0
6.2. Montar los sistemas de ficheros virtuales del ncleo
Varios sistemas de ficheros exportados por el ncleo no existen en el disco duro, pero son usados para
comunicarse hacia y desde el propio ncleo.
Comienza creando los directorios sobre los que se montarn dichos sistemas de ficheros:
mkdir -p $LFS/{proc,sys}
Ahora monta los sistemas de ficheros:
mount -t proc proc $LFS/proc
mount -t sysfs sysfs $LFS/sys
Recuerda que si por alguna razn detienes tu trabajo con el sistema LFS y lo reinicias ms tarde, es
importante comprobar que estos sistemas de ficheros sean montados de nuevo antes de entrar en el entorno
chroot.
Pronto se montarn sistemas de ficheros adicionales desde dentro del entorno chroot. Para mantener el
anfitrin actualizado, realiza ahora un falso montaje para cada uno de ellos:
mount -f -t ramfs ramfs $LFS/dev
mount -f -t tmpfs tmpfs $LFS/dev/shm
mount -f -t devpts -o gid=4,mode=620 devpts $LFS/dev/pts
82
Linux From Scratch - Versin 6.0
6.3. Entrar al entorno chroot
Es hora de entrar en el entorno chroot para iniciar la construccin e instalar tu sistema LFS final. Como
usuario root, ejecuta el siguiente comando para entrar a un mundo que est, en este momento, poblado slo
por las herramientas temporales.
chroot "$LFS" /tools/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h
La opcin -i pasada al comando env limpiar todas las variables del chroot. Despus de esto solamente se
establecen de nuevo las variables HOME, TERM, PS1 y PATH. La construccin TERM=$TERM establece la
variable TERM dentro del chroot al mismo valor que tiene fuera del chroot. Dicha variable es necesaria para
que funcionen correctamente programas como vim y less. Si necesitas tener presentes otras variables, como
CFLAGS o CXXFLAGS, este es un buen sitio para establecerlas.
Desde este punto ya no es necesario utilizar la variable LFS porque todo lo que hagas estar restringido al
sistema de ficheros LFS. Esto se debe a que al intrprete de comandos se le dice que $LFS es ahora el
directorio raz (/).
Advierte que /tools/bin queda ltimo en el PATH. Esto significa que una herramienta temporal no
volver a usarse a partir de que se instale su versin final. Esto ocurre cuando el intrprete de comandos no
recuerda la localizacin de los binarios ejecutados; por esta razn se desactiva la tabla interna de rutas
pasndole la opcin +h a bash.
Debes asegurarte de que todos los comandos que aparecen en el resto de este y los siguientes captulos son
ejecutados dentro del entorno chroot. Si por alguna razn abandonas este entorno (tras un reinicio, por
ejemplo), debes recordar montar primero los sistemas de ficheros proc y devpts (como explicamos en la
seccin anterior) y entrar de nuevo en el chroot antes de seguir con las instalaciones.
Ten en cuenta que en la lnea de entrada de comandos de bash pondr: I have no name! (No tengo
nombre!). Esto es normal pues el fichero /etc/passwd an no ha sido creado.
83
Linux From Scratch - Versin 6.0
6.4. Cambio del propietario
En estos momentos el directorio /tools pertenece al usuario lfs, que slo existe en el sistema anfitrin.
Aunque probablemente quieras borrar el directorio /tools una vez que hayas terminado tu sistema LFS,
tambin es posible que quieras conservarlo para, por ejemplo, construir ms sistemas LFS. Pero si guardas el
directorio /tools en el estado actual, acabars con ficheros que pertenecen a un identificador de usuario
sin cuenta correspondiente. Esto es peligroso porque una cuenta de usuario creada posteriormente podra
tener esta identidad de usuario y poseera repentinamente los derechos sobre el directorio /tools y todos
los ficheros que contiene, exponindolos a una posible manipulacin.
Para evitar este problema, puedes aadir el usuario lfs al nuevo sistema LFS cuando creemos el fichero
/etc/passwd, teniendo cuidado de asignarle los mismos identificadores de usuario y grupo que en el
sistema anfitrin. Alternativamente, puedes asignar el contenido del directorio /tools al usuario root
ejecutando el siguiente comando:
chown -R 0:0 /tools
Este comando utiliza 0:0 en lugar de root:root, pues chown no es capaz de resolver el nombre root
hasta que el fichero de contraseas sea creado. El libro asume que has ejecutado el anterior comando.
84
Linux From Scratch - Versin 6.0
6.5. Creacin de los directorios
Es hora de crear cierta estructura en el sistema de ficheros LFS. Crearemos un rbol de directorios. Usando
los siguientes comandos se crear un rbol estndar:
install -d /{bin,boot,dev,etc/opt,home,lib,mnt}
install -d /{sbin,srv,usr/local,var,opt}
install -d /root -m 0750
install -d /tmp /var/tmp -m 1777
install -d /media/{floppy,cdrom}
install -d /usr/{bin,include,lib,sbin,share,src}
ln -s share/{man,doc,info} /usr
install -d /usr/share/{doc,info,locale,man}
install -d /usr/share/{misc,terminfo,zoneinfo}
install -d /usr/share/man/man{1,2,3,4,5,6,7,8}
install -d /usr/local/{bin,etc,include,lib,sbin,share,src}
ln -s share/{man,doc,info} /usr/local
install -d /usr/local/share/{doc,info,locale,man}
install -d /usr/local/share/{misc,terminfo,zoneinfo}
install -d /usr/local/share/man/man{1,2,3,4,5,6,7,8}
install -d /var/{lock,log,mail,run,spool}
install -d /var/{opt,cache,lib/{misc,locate},local}
install -d /opt/{bin,doc,include,info}
install -d /opt/{lib,man/man{1,2,3,4,5,6,7,8}}
Los directorios se crean por defecto con los permisos 755, pero esto no es deseable para todos los
directorios. En los comandos anteriores se hacen dos cambios: uno para el directorio personal de root y otro
para los directorios de los ficheros temporales.
El primer cambio nos asegura que nadie aparte de root pueda entrar en el directorio /root, lo mismo que
debera hacer un usuario normal con su directorio personal. El segundo cambio nos asegura que cualquier
usuario pueda escribir en los directorios /tmp y /var/tmp, pero no pueda borrar los ficheros de otros
usuarios. Esto ltimo lo prohibe el llamado bit pegajoso (sticky bit), el bit ms alto (1) en la mscara de
permisos 1777.
6.5.1. Nota de conformidad con FHS
El rbol de directorios est basado en el estndar FHS (disponible en http://www.pathname.com/fhs/).
Adems del rbol arriba creado, dicho estndar estipula la existencia de /usr/local/games y
/usr/share/games. No los recomendamos para un sistem base, sin embargo, eres libre de hacer que tu
sistema cumpla el FHS. Como sobre la estructura del subdirectorio /usr/local/share el FHS no es
preciso, creamos aqu slo los directorios que son necesarios.
85
Linux From Scratch - Versin 6.0
6.6. Creacin de enlaces simblicos esenciales
Algunos programas tienen fijadas en su cdigo rutas a programas que an no existen. Para satisfacer a estos
programas creamos unos cuantos enlaces simblicos que sern sustituidos por ficheros reales durante el
transcurso de este captulo a medida que vayamos instalando todos los programas.
ln
ln
ln
ln
86
-s
-s
-s
-s
/tools/bin/{bash,cat,pwd,stty} /bin
/tools/bin/perl /usr/bin
/tools/lib/libgcc_s.so.1 /usr/lib
bash /bin/sh
Linux From Scratch - Versin 6.0
6.7. Creacin de los ficheros de contraseas, grupos y
registro
Para que root pueda entrar al sistema y para que el nombre root sea reconocido, es necesario tener las
entradas apropiadas en los ficheros /etc/passwd y /etc/group.
Crea el fichero /etc/passwd ejecutando el siguiente comando:
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF
La contrasea real para root (la x es slo un sustituto) se establecer ms adelante.
Crea el fichero /etc/group ejecutando el siguiente comando:
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
EOF
Los grupos creados no son parte de ningn estndar, son los grupos que la configuracin de Udev utilizar
en la siguiente seccin. El LSB (Linux Standard Base, http://www.linuxbase.org/) slo recomienda que,
aparte del grupo root con GID 0, est presente un grupo bin con GID 1. Todos los dems nombres de
grupos y sus GID pueden ser elegidos libremente por el usuario, pues los paquetes correctamente escritos no
dependen del nmero GID, sino que utilizan el nombre del grupo.
Para eliminar el I have no name! del smbolo del sistema, iniciaremos un nuevo intrprete de comandos.
Puesto que instalamos una Glibc completa en el Captulo 5 y acabamos de crear los ficheros
/etc/passwd y /etc/group, la resolucin de nombres de usuarios y grupos funcionar ahora.
exec /tools/bin/bash --login +h
Advierte el uso de la directiva +h. Esto le indica a bash que no utilice su tabla interna de rutas. Sin esta
directiva, bash recordara la ruta a los binarios que ha ejecutado. Para poder usar los binarios recin
compilados tan pronto como sean instalados, se desactiva esta funcin durante el resto de este captulo.
87
Linux From Scratch - Versin 6.0
Los programas login, getty e init (entre otros) mantienen una serie de ficheros de registro con informacin
sobre quienes estn y estaban dentro del sistema. Sin embargo, estos programas no crean dichos ficheros si
no existen. Crea los ficheros de registro con sus permisos correctos:
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chgrp utmp /var/run/utmp /var/log/lastlog
chmod 664 /var/run/utmp /var/log/lastlog
El fichero /var/run/utmp lista los usuarios que estn actualmente dentro del sistema,
/var/log/wtmp registra todos los ingresos y salidas. El fichero /var/log/lastlog muestra, para
cada usuario, cuando fue la ltima vez que ingres, y el fichero /var/log/btmp lista los intentos de
ingreso fallidos.
88
Linux From Scratch - Versin 6.0
6.8. Poblar /dev
6.8.1. Crear los nodos de dispositivo iniciales
Cuando el ncleo arranca el sistema necesita la presencia de ciertos nodos de dispositivo, en concreto los
dispositivos console y null. Cralos ejecutando los siguientes comandos:
mknod -m 600 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3
6.8.2. Montar ramfs y poblar /dev
El mtodo ideal para poblar /dev es montar un ramfs en /dev, similar a tmpfs, y crear en l los
dispositivos en cada arranque. Puesto que el sistema no ha sido arrancado, es necesario hacer lo que los
guiones de arranque habran hecho y poblar /dev. Comienza montando /dev:
mount -n -t ramfs none /dev
Ejecuta el programa udevstart instalado para crear los dispositivos iniciales basndose en la informacin
que hay en /sys:
/tools/sbin/udevstart
Ciertos enlaces simblicos y directorios requeridos por LFS no son creados por Udev, as que crealos:
ln -s
ln -s
ln -s
ln -s
ln -s
mkdir
mkdir
/proc/self/fd /dev/fd
/proc/self/fd/0 /dev/stdin
/proc/self/fd/1 /dev/stdout
/proc/self/fd/2 /dev/stderr
/proc/kcore /dev/core
/dev/pts
/dev/shm
Finalmente, monta los sistemas de ficheros virtuales (del ncleo) adecuados en los directorios recin
creados:
mount -t devpts -o gid=4,mode=620 none /dev/pts
mount -t tmpfs none /dev/shm
El comando mount ejecutado arriba puede mostrar el siguiente aviso:
can't open /etc/fstab: No such file or directory
no puedo abrir /etc/fstab: No existe el fichero o directorio.
El fichero /etc/fstab no ha sido creado todava, pero tampoco es necesario para que los sistemas de
ficheros se monten correctamente. Por tanto, puedes ignorar el aviso con tranquilidad.
89
Linux From Scratch - Versin 6.0
6.9. Linux-Libc-Headers-2.6.8.1
El paquete Linux-Libc-Headers contiene las cabeceras saneadas del ncleo.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 22 MB
La instalacin de Linux-Libc-Headers depende de: Coreutils
6.9.1. Instalacin de Linux-Libc-Headers
Durante aos ha sido una prctica comn utilizar las cabeceras crudas del ncleo (procedentes de un
paquete del ncleo) en /usr/include, pero en los ltimos aos los desarrolladores del ncleo han
expresado su firme opinin de que eso no debe hacerse. Esto di lugar al nacimiento del proyecto
Linux-Libc-Headers, que fue diseado para mantener una versin estable de la API de la cabeceras Linux.
Instala los ficheros de cabecera:
cp -R include/asm-i386 /usr/include/asm
cp -R include/linux /usr/include
Asegrate de que todas las cabeceras son propiedad de root:
chown -R root:root /usr/include/{asm,linux}
Asegrate de que los usuarios pueden leer las cabeceras:
find /usr/include/{asm,linux} -type d -exec chmod 755 {} \;
find /usr/include/{asm,linux} -type f -exec chmod 644 {} \;
6.9.2. Contenido de Linux-Libc-Headers
Cabeceras instaladas: /usr/include/{asm,linux}/*.h
Descripcin corta
/usr/include/{asm,linux}/*.h
90
La API de las cabeceras de Linux.
Linux From Scratch - Versin 6.0
6.10. Man-pages-1.67
El paquete Man-pages contiene alrededor de 1.200 pginas de manual.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 15 MB
La instalacin de Man-pages depende de: Bash, Coreutils y Make
6.10.1. Instalacin de Man-pages
Instala Man-pages ejecutando:
make install
6.10.2. Contenido de Man-pages
Ficheros instalados: diversas pginas de manual
Descripcin corta
pginas de manual
Describen las funciones C y C++, los ficheros de dispositivo importantes y los
ficheros de configuracin ms significativos.
91
Linux From Scratch - Versin 6.0
6.11. Glibc-2.3.4-20040701
El paquete Glibc contiene la librera C principal. Esta librera proporciona todas las rutinas bsicas para la
ubicacin de memoria, bsqueda de directorios, abrir y cerrar ficheros, leerlos y escribirlos, manejo de
cadenas, coincidencia de patrones, aritmtica, etc...
Tiempo estimado de construccin: 12.3 SBU
Espacio requerido en disco: 784 MB
La instalacin de Glibc depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make,
Perl, Sed y Texinfo
6.11.1. Instalacin de Glibc
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas Glibc.
El sistema de construccin de Glibc est muy bien autocontenido y se instalar perfectamente, incluso
aunque nuestro fichero de especificaciones del compilador y los guiones del enlazador todava apunten a
/tools. No podemos ajustar las especificaciones y el enlazador antes de instalar Glibc, porque entonces
las comprobaciones del autoconf de Glibc daran resultados errneos y esto arruinara nuestro objetivo de
conseguir una construccin limpia.
La documentacin de Glibc recomienda construirlo fuera del rbol de las fuentes, en un directorio de
construccin dedicado:
mkdir ../glibc-build
cd ../glibc-build
Prepara Glibc para su compilacin:
../glibc-2.3.4-20040701/configure --prefix=/usr \
--disable-profile --enable-add-ons=nptl --with-tls \
--with-__thread --enable-kernel=2.6.0 --without-cvs \
--libexecdir=/usr/lib/glibc \
--with-headers=/tools/glibc-kernheaders
Significado de la nueva opcin de configure:
--libexecdir=/usr/lib/glibc
Esto cambia la localizacin del programa pt_chown de su ubicacin por defecto /usr/libexec a
/usr/lib/glibc.
Compila el paquete:
make
92
Linux From Scratch - Versin 6.0
Importante
En esta seccin, el banco de pruebas para Glibc se considera crtico. No te lo saltes bajo ninguna
circunstancia.
Comprueba los resultados:
make check
El banco de pruebas de Glibc depende en gran medida de ciertas funciones de tu sistema anfitrin, en
particular del ncleo. En general, se espera que el banco de pruebas de Glibc pase siempre con xito. Sin
embargo, bajo ciertas circunstancias algunos fallos son inevitables. Aqu hay una lista con los problemas
ms comunes:
La prueba math falla en ocasiones cuando se ejecuta en sistemas donde la CPU no es una Intel genuina o
una AMD genuina relativamente nueva. Es sabido que ciertos ajustes de optimizacin tambin afectan.
La prueba gettext falla en ocasiones debido a problemas del sistema anfitrin. La razn exacta an no
est clara.
La prueba atime falla en ocasiones cuando la particin LFS est montada con la opcin noatime.
La prueba shm puede fallar en el caso de que el sistema anfitrin utilice el sistema de ficheros devfs
pero no tenga un sistema de ficheros tmpfs montado en /dev/shm. Esto sucede debido a la falta de
soporte para tmpfs en el ncleo.
Cuando se ejecutan en hardware antiguo y lento, varias pruebas pueden fallar debido a que se excede el
tiempo estimado.
Aunque se trata de un mensaje inofensivo, la fase de instalacin de Glibc se quejar de la ausencia de
/etc/ld.so.conf. Evita este molesto aviso con:
touch /etc/ld.so.conf
Instala el paquete:
make install
Las locales que hacen que tu sistema responda en un idioma diferente no se instalaron con el comando
anterior. Hazlo con este:
make localedata/install-locales
Para ahorrar tiempo, una alternativa al comando anterior (que genera e instala todas las locales que Glibc
conoce) es instalar solamente aquellas locales que necesites o desees. Esto puede hacerse usando el comando
localedef. Puedes encontrar ms informacin sobre esto en el fichero INSTALL de las fuentes de Glibc. Sin
embargo, hay un nmero de locales que son esenciales para que las comprobaciones de paquetes posteriores
se realicen. En particular, la prueba de libstdc++ en GCC. Las siguientes instrucciones, en vez del objetivo
anterior install-locales, instalarn el conjunto mnimo de locales necesario para que las pruebas se
ejecuten correctamente:
93
Linux From Scratch - Versin 6.0
mkdir -p /usr/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP
Algunas de las locales instaladas por el anterior comando make localedata/install-locales no estn
correctamente soportadas por algunas de las aplicaciones que hay en los libros LFS y BLFS. Debido a los
diversos problemas provocados por presunciones de los programadores, que rompen dichas locales, LFS no
debera utilizarse con locales que utilicen conjuntos de caracteres multibyte (incluido UTF-8) o escritura de
derecha a izquierda. Se requieren numerosos parches no oficiales e inestables para corregir estos problemas
y el equipo de desarrolladores de LFS ha decidido no soportar ese tipo de locales complejas. Esto se aplica
tambin a las locales ja_JA y fa_IR, que se han instalado slo para pasar las pruebas de GCC y Gettext, y el
programa watch (que es parte del paquete Procps) no fuciona correctamente en ellas. Varios intentos para
evitar estas restricciones estn documentados en las recetas relacionadas con internacionalizacin.
Construye las pginas de manual de linuxthreads, que son una gran referencia sobre la API de hilos
(aplicable tambin a NPTL):
make -C ../glibc-2.3.4-20040701/linuxthreads/man
Instala dichas pginas:
make -C ../glibc-2.3.4-20040701/linuxthreads/man install
6.11.2. Configuracin de Glibc
Necesitamos crear el fichero /etc/nsswitch.conf, porque aunque Glibc nos facilita los valores por
defecto cuando este fichero no se encuentra o est corrupto, estos valores por defecto no funcionan bien con
la conexin de red. Tambin tendremos que configurar nuestra zona horaria.
Crea un nuevo fichero /etc/nsswitch.conf ejecutando lo siguiente:
cat > /etc/nsswitch.conf << "EOF"
# Inicio de /etc/nsswitch.conf
passwd: files
group: files
shadow: files
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# Fin de /etc/nsswitch.conf
EOF
94
Linux From Scratch - Versin 6.0
Para determinar la zona horaria local, ejecuta el siguiente guin:
tzselect
Despus de contestar unas preguntas referentes a tu localizacin, el guin te mostrar el nombre de tu zona
horaria, algo como EST5EDT o Canada/Eastern. Crea entonces el fichero /etc/localtime ejecutando:
cp --remove-destination /usr/share/zoneinfo/[xxx] \
/etc/localtime
Sustituye [xxx] con el nombre de la zona horaria facilitado por tzselect (por ejemplo, Europe/Madrid).
Significado de la opcin de cp:
--remove-destination
Esto es necesario para forzar la eliminacin del enlace simblico que ya existe. La razn por la que
copiamos en lugar de enlazar es para cubrir el caso en el que /usr est en otra particin. Esto puede ser
importante cuando se arranca en modo de usuario nico.
6.11.3. Configuracin del cargador dinmico
Por defecto, el cargador dinmico (/lib/ld-linux.so.2) busca en /lib y /usr/lib las libreras
dinmicas que necesitan los programas cuando los ejecutas. No obstante, si hay libreras en otros directorios
que no sean /lib y /usr/lib, necesitas aadirlos al fichero de configuracin /etc/ld.so.conf para
que el cargador dinmico pueda encontrarlas. Dos directorios tpicos que contienen libreras adicionales son
/usr/local/lib y /opt/lib, as que aadimos estos directorios a la ruta de bsqueda del cargador
dinmico.
Crea un nuevo fichero /etc/ld.so.conf ejecutando lo siguiente:
cat > /etc/ld.so.conf << "EOF"
# Inicio de /etc/ld.so.conf
/usr/local/lib
/opt/lib
# Fin de /etc/ld.so.conf
EOF
6.11.4. Contenido de Glibc
Programas instalados: catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4,
locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof,
tzselect, xtrace, zdump y zic
Libreras instaladas: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a,
libc.[a,so], libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a,
libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so,
libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so y libutil.[a,so]
95
Linux From Scratch - Versin 6.0
Descripciones cortas
catchsegv
Puede usarse para crear una traza de la pila cuando un programa termina con una
violacin de segmento.
gencat
Genera catlogos de mensajes.
getconf
Muestra los valores de configuracin del sistema para variables especficas del
sistema de ficheros.
getent
Obtiene entradas de una base de datos administrativa.
iconv
Realiza conversiones de juego de caracteres.
iconvconfig
Crea un fichero de configuracin para la carga rpida del mdulo iconv.
ldconfig
Configura las asociaciones en tiempo de ejecucin para el enlazador dinmico.
ldd
Muestra las libreras compartidas requeridas por cada programa o librera
especificados.
lddlibc4
Asiste a ldd con los ficheros objeto.
locale
Le dice al compilador que active o desactive el uso de las locales POSIX para
operaciones integradas.
localedef
Compila las especificaciones de locales.
mtrace
Lee e interpreta un fichero de traza de memoria y muestra un sumario en formato
legible.
nscd
Un demonio que suministra una cach para las peticiones ms comunes al servidor
de nombres.
nscd_nischeck
Comprueba si es necesario o no un modo seguro para bsquedas NIS+.
pcprofiledump
Vuelca la informacin generada por un perfil de PC.
pt_chown
Un programa de ayuda para grantpt que establece el propietario, grupo y permisos
de acceso para un pseudo-terminal esclavo.
rpcgen
Genera cdigo C para implementar el protocolo RPC.
rpcinfo
Hace una llamada RPC a un servidor RPC.
sln
Un programa ln enlazado estticamente.
sprof
Lee y muestra los datos del perfil de los objetos compartidos.
tzselect
Pregunta al usuario informacin sobre la localizacin actual y muestra la
descripcin de la zona horaria correspondiente.
xtrace
Traza la ejecucin de un programa mostrando la funcin actualmente ejecutada.
zdump
El visualizador de la zona horaria.
zic
El compilador de la zona horaria.
ld.so
El programa de ayuda para las libreras compartidas ejecutables.
libBrokenLocale
Usada por programas como Mozilla para resolver locales rotas.
libSegFault
El manejador de seales de violacin de segmento.
96
Linux From Scratch - Versin 6.0
libanl
Una librera de bsqueda de nombres asncrona.
libbsd-compat
Proporciona la portabilidad necesaria para ejecutar ciertos programas BSD en
Linux.
libc
La librera principal de C.
libcrypt
La librera criptogrfica.
libdl
La librera de interfaz del enlazado dinmico.
libg
Una librera en tiempo de ejecucin para g++.
libieee
La librera de punto flotante del IEEE.
libm
La librera matemtica.
libmcheck
Contiene cdigo ejecutado en el arranque.
libmemusage
Usada por memusage para ayudar a recoger informacin sobre el uso de memoria
de un programa.
libnsl
La librera de servicios de red.
libnss
Las libreras Name Service Switch (Interruptor del Servicio de Nombres).
Contienen funciones para resolver nombres de sistemas, usuarios, grupos, alias,
servicios, protocolos y similares.
libpcprofile
Contiene funciones de perfiles utilizadas para observar la cantidad de tiempo de
CPU utilizado por lneas concretas del cdigo fuente.
libpthread
La librera de hilos POSIX.
libresolv
Proporciona funciones para la creacin, envo e interpretacin de paquetes de datos
a servidores de nombres de dominio de Internet.
librpcsvc
Proporciona funciones para una miscelnea de servicios RPC.
librt
Proporciona funciones para muchas de las interfaces especificadas por el POSIX.1b
Realtime Extension (Extensiones en Tiempo Real POSIX.1b).
libthread_db
Contiene funciones tiles para construir depuradores para programas multihilo.
libutil
Contiene cdigo para funciones estndar usadas en diferentes utilidades Unix.
97
Linux From Scratch - Versin 6.0
6.12. Reajustar las herramientas
Ahora que hemos instalado las nuevas y finales libreras de C, es hora de ajustar de nuevo el conjunto de
herramientas. Las ajustaremos para que enlacen cualquier nuevo programa compilado contra estas nuevas
libreras. De hecho es lo mismo que hicimos en la fase Ajustar al principio del Captulo 5, aunque parezca
lo contario. En el Captulo 5 el cambio iba de los directorios /{,usr}/lib del anfitrin a los nuevos
/tools/lib. Ahora es guiado de /tools/lib a los directorios /{,usr}/lib del LFS.
Comienza ajustando el enlazador. Para ello conservamos los directorios de fuentes y de construccin de la
segunda fase de Binutils. Instala el enlazador ajustado ejecutando el siguiente comando desde el directorio
binutils-build:
make -C ld INSTALL=/tools/bin/install install
Nota
Si de algn modo te saltaste el aviso sobre conservar los directorios de las fuentes y
construccin del segundo paso de Binutils en el Captulo 5, o los borraste accidentalmente, o no
tienes acceso a ellos, ignora el comando anterior. El resultado ser que el siguiente paquete,
Binutils, se enlazar contra las libreras C que hay en /tools en vez de las de
/{,usr}/lib. Esto no es lo ideal, pero nuestras pruebas han mostrado que los programas
binarios de Binutils resultantes deberan ser idnticos.
Desde ahora todos los programas que compilemos se enlazarn solamente contra las libreras que hay en
/usr/lib y /lib. La opcin INSTALL=/tools/bin/install extra es necesaria porque el
Makefile creado durante el segundo paso todava contiene la referencia a /usr/bin/install, que
obviamente an no ha sido instalado. Algunas distribuciones tienen un enlace simblico ginstall que
tiene preferencia en el Makefile y puede crear problemas aqu. El comando anterior tambin evita esto.
Elimina los directorios de fuentes y de construccin de Binutils.
A continuacin, corrige el fichero specs de GCC para que apunte al nuevo enlazador dinmico. Un comando
sed lo consigue:
sed -i 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' \
`gcc --print-file specs`
Es buena idea inspeccionar visualmente el fichero de especificaciones para verificar que realmente se
produjeron los cambios deseados.
Importante
Si ests trabajando sobre una plataforma en la que el nombre del enlazador dinmico no sea
ld-linux.so.2, sustituye ld-linux.so.2 en el comando anterior por el nombre del
enlazador dinmico para tu plataforma. Si es necesario, consulta la Seccin 5.3, Notas tcnicas
sobre las herramientas.
98
Linux From Scratch - Versin 6.0
Atencin
En este punto es obligatorio parar y asegurarse de que las operaciones bsicas (compilacin y
enlazado) de las nuevas herramientas funcionan como se espera. Para esto vamos a hacer una
simple comprobacin:
echo 'main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /lib'
Si todo funciona correctamente, no debe haber errores y la salida del ltimo comando debe ser
(con las diferencias para la plataforma sobre el nombre del enlazador dinmico):
[Requesting program interpreter: /lib/ld-linux.so.2]
[Intrprete de programa solicitado: /lib/ld-linux.so.2]
Comprueba que /lib aparezca como prefijo de tu enlazador dinmico.
Si no recibes una salida como la mostrada arriba, o no hay salida alguna, algo est seriamente
mal. Necesitars investigar y revisar tus pasos para encontrar el problema y corregirlo. La razn
ms probable es que algo sali mal durante el anterior arreglo del fichero specs. Debers
resolver todos los problemas antes de seguir con el proceso.
Una vez que todo funcione coorectamente, borra los ficheros de prueba:
rm dummy.c a.out
99
Linux From Scratch - Versin 6.0
6.13. Binutils-2.15.91.0.2
El paquete Binutils contiene un enlazador, un ensamblador y otras utilidades para trabajar con ficheros
objeto.
Tiempo estimado de construccin: 1.4 SBU
Espacio requerido en disco: 167 MB
La instalacin de Binutils depende de: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl,
Sed y Texinfo
6.13.1. Instalacin de Binutils
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas Binutils.
Verifica que tus pseudo-terminales (PTYs) funcionan adecuadamente dentro del entorno chroot. Comprueba
que todo est correcto realizando una simple prueba:
expect -c "spawn ls"
Si recibes el siguiente mensaje, el entorno chroot no est correctamente configurado para operar con PTYs:
The system has no more ptys.
Ask your system administrator to create more.
El sistema no tiene ms ptys.
Pdele al administrador del sistema que cree ms.
Debes solucionar el problema antes de ejecutar los bancos de pruebas de Binutils y GCC.
La documentacin de Binutils recomienda construirlo fuera del rbol de las fuentes, en un directorio de
construccin dedicado:
mkdir ../binutils-build
cd ../binutils-build
Prepara Binutils para su compilacin:
../binutils-2.15.91.0.2/configure --prefix=/usr \
--enable-shared
Compila el paquete:
make tooldir=/usr
Normalmente, tooldir (el directorio donde se instalarn los ejecutables) se establece como
$(exec_prefix)/$(target_alias), lo que se convierte en /usr/i686-pc-linux-gnu. Como
este es un sistema personalizado, no es necesario tener en /usr dicho directorio especfico de un objetivo.
Esa configuracin se utilizara si el sistema fuese usado para compilacin cruzada (por ejemplo, para
compilar un paquete en una mquina Intel, pero generando cdigo que se ejecutar en mquinas PowerPC).
100
Linux From Scratch - Versin 6.0
Importante
En esta seccin, el banco de pruebas para Binutils se considera crtico. No te lo saltes bajo
ninguna circunstancia.
Comprueba los resultados:
make check
Instala el paquete:
make tooldir=/usr install
Instala el fichero de cabecera libiberty, pues lo necesitan algunos paquetes:
cp ../binutils-2.15.91.0.2/include/libiberty.h /usr/include
6.13.2. Contenido de Binutils
Programas instalados: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size,
strings y strip
Libreras instaladas: libiberty.a, libbfd.[a,so] y libopcodes.[a,so]
Descripciones cortas
addr2line
Traduce direcciones de programas a nombres de ficheros y nmeros de lneas. Dndole una
direccin y un ejecutable, usa la informacin de depuracin del ejecutable para averiguar
qu fichero y nmero de lnea est asociado con dicha direccin.
ar
Crea, modifica y extrae desde archivos.
as
Un ensamblador que ensambla la salida de gcc dentro de ficheros objeto.
c++filt
Es usado por el enlazador para decodificar smbolos de C++ y Java, guardando las
funciones sobrecargadas para su clasificacin.
gprof
Muestra los datos del perfil del grfico de llamada.
ld
Un enlazador que combina un nmero de ficheros objeto y de archivos en un nico fichero,
reubicando sus datos y estableciendo las referencias a los smbolos.
nm
Lista los smbolos que aparecen en un fichero objeto dado.
objcopy
Traduce un tipo de ficheros objeto a otro.
objdump
Muestra informacin sobre el fichero objeto indicado, con opciones para controlar la
informacin a mostrar. La informacin mostrada es til fundamentalmente para los
programadores que trabajan sobre las herramientas de compilacin.
ranlib
Genera un ndice de los contenidos de un archivo, y lo coloca en el archivo. El ndice lista
cada smbolo definido por los miembros del archivo que son ficheros objeto reubicables.
readelf
Muestra informacin sobre binarios de tipo ELF.
size
Lista los tamaos de las secciones y el tamao total para los ficheros objeto indicados.
101
Linux From Scratch - Versin 6.0
strings
Muestra, para cada fichero indicado, las cadenas de caracteres imprimibles de al menos la
longitud especificada (4 por defecto). Para los ficheros objeto muestra, por defecto, slo las
cadenas procedentes de las secciones de inicializacin y carga. Para otros tipos de ficheros
explora el fichero al completo.
strip
Elimina smbolos de ficheros objeto.
libiberty
Contiene rutinas usadas por varios programas GNU, incluidos getopt, obstack, strerror,
strtol y strtoul.
libbfd
La librera del Descriptor de Fichero Binario.
libopcodes Una librera para manejar mnemnicos. Se usa para construir utilidades como objdump.
Los mnemnicos son las versiones en texto legible de las instrucciones del procesador.
102
Linux From Scratch - Versin 6.0
6.14. GCC-3.4.1
El paquete GCC contiene la coleccin de compiladores GNU, que incluye los compiladores C y C++.
Tiempo estimado de construccin: 11.7 SBU
Espacio requerido en disco: 294 MB
La instalacin de GCC depende de: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc,
Grep, Make, Perl, Sed y Texinfo
6.14.1. Instalacin de GCC
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas GCC.
Desempaqueta los paquetes gcc-core y gcc-g++, que se desempaquetarn dentro de un mismo directorio.
Adems debes extraer el paquete gcc-testsuite. El paquete completo GCC contiene otros compiladores ms.
En http://www.lfs-es.com/blfs-es-CVS/general/gcc.html puedes encontrar las instrucciones para construirlos
(en http://www.linuxfromscratch.org/blfs/view/svn/general/gcc.html se encuentra la versin original en
ingls).
Aplica slo el parche No-Fixincludes (pero no el parche Specs), que tambin se us en el captulo anterior:
patch -Np1 -i ../gcc-3.4.1-no_fixincludes-1.patch
GCC falla al compilar algunos paquetes ajenos a la instalacin base de Linux From Scratch (como Mozilla y
kdegraphics) cuando se usa en conjuncin con la ms nueva versin de Binutils. Aplica el siguiente parche
para corregir dicho problema:
patch -Np1 -i ../gcc-3.4.1-linkonce-1.patch
Aplica una sustitucin sed que suprimir la instalacin de libiberty.a. Queremos usar la versin de
libiberty.a suministrada por Binutils:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
La documentacin de GCC recomienda construirlo fuera del rbol de las fuentes, en un directorio de
construccin dedicado:
mkdir ../gcc-build
cd ../gcc-build
Prepara GCC para su compilacin:
../gcc-3.4.1/configure --prefix=/usr \
--libexecdir=/usr/lib --enable-shared \
--enable-threads=posix --enable-__cxa_atexit \
--enable-clocale=gnu --enable-languages=c,c++
Compila el paquete:
make
Importante
103
Linux From Scratch - Versin 6.0
En esta seccin, el banco de pruebas para GCC se considera crtico. No te lo saltes bajo ninguna
circunstancia.
Comprueba los resultados, pero no pares en los errores:
make -k check
Algunos errores son conocidos y se mencionaron en el captulo anterior. Las notas para el banco de pruebas
que hay en la Seccin 5.13, GCC-3.4.1 - Fase 2 son an ms apropiadas aqu. Asegrate de consultarlas si
es necesario.
Instala el paquete:
make install
Algunos paquetes esperan que el preprocesador de C est instalado en el directorio /lib. Para dar soporte a
estos paquetes, crea un enlace simblico:
ln -s ../usr/bin/cpp /lib
Muchos paquetes usan el nombre cc para llamar al compilador de C. Para satisfacer a estos paquetes, crea un
enlace simblico:
ln -s gcc /usr/bin/cc
Nota
En este punto es muy recomendable repetir la comprobacin que realizamos anteriormente en
este captulo. Vuelve a la Seccin 6.12, Reajustar las herramientas y repite las
comprobaciones. Si los resultados son malos, entonces es muy posible que errneamente hayas
aplicado el parche Specs para GCC del Captulo 5.
6.14.2. Contenido de GCC
Programas instalados: c++, cc (enlace a gcc), cpp, g++, gcc, gccbug y gcov
Libreras instaladas: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] y libsupc++.a
Descripciones cortas
cc
El compilador de C.
cpp
El preprocesador de C. Lo usa el compilador para expandir las sentencias #include, #define
y similares en los ficheros fuente.
c++
El compilador de C++.
g++
El compilador de C++.
gcc
El compilador de C.
gccbug
Un guin del intrprete de comandos que ayuda a crear notificaciones de errores.
gcov
Una herramienta para pruebas de rendimiento. Se usa para analizar programas y encontrar
qu optimizaciones tendrn el mayor efecto.
libgcc
Contienen el soporte en tiempo de ejecucin para gcc.
104
Linux From Scratch - Versin 6.0
libstdc++ La librera estndar de C++.
libsupc++ Proporciona rutinas de soporte para el lenguaje de programacin c++.
105
Linux From Scratch - Versin 6.0
6.15. Coreutils-5.2.1
El paquete Coreutils contiene utilidades para mostrar y establecer las caractersticas bsicas del sistema.
Tiempo estimado de construccin: 0.9 SBU
Espacio requerido en disco: 69 MB
La instalacin de Coreutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Perl y Sed
6.15.1. Instalacin de Coreutils
Un problema conocido en el programa uname de este paquete es que la opcin -p siempre devuelve
unknown (desconocido). El siguiente parche corrige este comportamiento en arquitecturas Intel:
patch -Np1 -i ../coreutils-5.2.1-uname-2.patch
Evita que Coreutils instale binarios que sern instalados ms tarde por otros paquetes:
patch -Np1 -i \
../coreutils-5.2.1-suppress_uptime_kill_su-1.patch
Prepara Coreutils para su compilacin:
DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr
Compila el paquete:
make
El banco de pruebas de Coreutils hace ciertas suposiciones relativas a la presencia de ficheros y usuarios que
no son vlidos tan temprano en la construccin de LFS. Por tanto hay que preparar varias cosas antes de
poder ejecutar las pruebas. Si decides no ejecutar el banco de pruebas, salta hasta Instala el paquete.
Crea dos grupos y un usuario ficticios:
echo "dummy1:x:1000:" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd
Ahora todo est preparado para ejecutar el banco de pruebas. Primero ejecuta las pruebas que requieren que
se ejecuten como root:
make NON_ROOT_USERNAME=dummy check-root
A continuacin ejecuta el resto como usuario dummy:
src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"
Cuando termines con las pruebas, elimina los grupos y el usuario ficticios:
sed -i '/dummy/d' /etc/passwd /etc/group
Instala el paquete:
make install
106
Linux From Scratch - Versin 6.0
Mueve algunos programas a sus ubicaciones adecuadas:
mv
mv
mv
mv
mv
/usr/bin/{[,basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
/usr/bin/{date,echo,false,head,hostname,install,ln} /bin
/usr/bin/{ls,mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
/usr/bin/{sleep,stty,test,touch,true,uname} /bin
/usr/bin/chroot /usr/sbin
Finalmente, crea un enlace simblico para cumplir con el FHS:
ln -s ../../bin/install /usr/bin
6.15.2. Contenido de Coreutils
Programas instalados: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd,
df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid,
hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od,
paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort,
split, stat, stty, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users,
vdir, wc, who, whoami y yes
Descripciones cortas
basename
Elimina cualquier ruta y sufijo indicado de un nombre de fichero.
cat
Concatena ficheros en la salida estndar.
chgrp
Cambia el grupo propietario de cada fichero dado al grupo especificado. El grupo puede
indicarse tanto por su nombre como por su identificador numrico.
chmod
Cambia los permisos de cada fichero dado al modo indicado. El modo puede ser una
representacin simblica de los cambios a hacer o un nmero octal que representa los
nuevos permisos.
chown
Cambia el usuario y/o el grupo al que pertenece cada fichero dado al par usuario/grupo
indicado.
chroot
Ejecuta un comando usando el directorio especificado como directorio /.
cksum
Muestra la suma de comprobacin CRC (Comprobacin Cclica Redundante) y cuenta los
bytes de cada fichero especificado.
comm
Compara dos ficheros ordenados, sacando en tres columnas las lneas que son nicas y las
lneas que son comunes.
cp
Copia ficheros.
csplit
Trocea un fichero en varios nuevos ficheros, separndolos de acuerdo a un patrn indicado o
a un nmero de lneas, y muestra el nmero de bytes de cada nuevo fichero.
cut
Imprime fragmentos de lneas, seleccionando los fragmentos de acuerdo a los campos o
posiciones indicadas.
date
Muestra la fecha y hora actual en un formato determinado o establece la fecha y hora del
sistema.
dd
Copia un fichero usando el tamao y nmero de bloques indicado, mientras que,
opcionalmente, realiza conversiones en l.
107
Linux From Scratch - Versin 6.0
df
Muestra la cantidad de espacio disponible (y usado) en todos los sistemas de ficheros
montados, o solo del sistema de ficheros en el que se encuentran los ficheros seleccionados.
dir
Lista el contenido del directirio indicado (lo mismo que ls).
dircolors
Imprime comandos para modificar la variable de entorno LS_COLOR, para cambiar el
esquema de color usado por ls.
dirname
Elimina los sufijos que no son directorios del nombre de un fichero.
du
Muestra la cantidad de espacio en disco usado por el directorio actual o por cada directorio
indicado (incluyendo todos sus subdirectorios) o por cada fichero indicado.
echo
Muestra la cadena indicada.
env
Ejecuta un programa en un entorno modificado.
expand
Convierte las tabulaciones a espacios.
expr
Evala expresiones.
factor
Muestra los factores primos de los nmeros enteros especificados.
false
No hace nada, infructuoso. Siempre termina con un cdigo de estado que indica un fallo.
fmt
Reformatea cada prrafo de los ficheros especificados.
fold
Reajusta la longitud de lnea en cada fichero dado.
groups
Muestra los grupos a los que pertenece un usuario.
head
Imprime las 10 primeras lneas (o el nmero de lneas indicado) de un fichero.
hostid
Muestra el identificador numrico (en hexadecimal) de la mquina actual.
hostname
Muestra o establece el nombre de la mquina actual.
id
Muestra los identificadores efectivos de usuario y grupo, y los grupos a los que pertenece,
del usuario actual o de un usuario dado.
install
Copia ficheros mientras establece sus permisos y, si es posible, su propietario y grupo.
join
Une a partir de dos ficheros las lneas que tienen campos de unin idnticos.
link
Crea un enlace duro con el nombre indicado de un fichero dado.
ln
Crea enlaces duros o blandos (simblicos) entre ficheros.
logname
Muestra el nombre de acceso del usuario actual.
ls
Lista el contenido de cada directorio indicado.
md5sum
Muestra o verifica sumas de comprobacin MD5 (Mensaje de Resmen 5).
mkdir
Crea directorios con los nombres indicados.
mkfifo
Crea tuberas (FIFO, el primero en entrar, el primero en salir) con los nombres indicados.
mknod
Crea nodos de dispositivos con los nombres indicados. Un nodo de dispositivo es un fichero
especial de caracteres o un fichero especial de bloques o una tubera.
mv
Mueve o renombra ficheros o directorios.
nice
Ejecuta un programa con una prioridad distinta.
108
Linux From Scratch - Versin 6.0
nl
Numera las lneas de los ficheros dados.
nohup
Ejecuta un comando que no se interrumpe cuando se cierra la sesin, con su salida redirigida
a un fichero de registro.
od
Vuelca ficheros en octal y otros formatos.
paste
Mezcla los ficheros indicados, uniendo secuencialmente las lneas correspondientes de uno y
otro, separndolas con tabulaciones.
pathchk
Comprueba si los nombres de ficheros son vlidos o portables.
pinky
Es un cliente finger ligero. Muestra algo de informacin sobre un determinado usuario.
pr
Pagina y encolumna el texto de un fichero para imprimirlo.
printenv
Muestra el entorno.
printf
Muestra los argumentos dados de acuerdo al formato indicado. Muy parecido a la funcin
printf de C.
ptx
Genera un ndice permutado de los contenidos de un fichero, con cada palabra clave en su
contexto.
pwd
Muestra el nombre del directorio de trabajo actual.
readlink
Muestra el valor del enlace simblico indicado.
rm
Elimina ficheros o directorios.
rmdir
Elimina directorios si estn vacos.
seq
Muestra una secuencia de nmeros, dentro de un cierto rango y con un cierto incremento.
sha1sum
Muestra o verifica sumas de comprobacin SHA1 de 160 bits.
shred
Sobreescribe los ficheros indicados repetidamente con patrones extraos, haciendo
realmente difcil recuperar los datos.
sleep
Hace una pausa por el tiempo indicado.
sort
Ordena las lneas de los ficheros indicados.
split
Divide un fichero en trozos, por tamao o por nmero de lneas.
stat
Muestra el estado de ficheros o sistemas de ficheros.
stty
Establece o muestra los ajuste de lnea del terminal.
sum
Muestra la suma de comprobacin y el nmero de bloques para cada fichero dado.
sync
Refresca los almacenadores intermedios de los sistemas de ficheros. Fuerza el guardado de
los bloques modificados al disco y actualiza el superbloque.
tac
Concatena en orden inverso los ficheros indicados.
tail
Imprime las ltimas 10 lneas (o el nmero de lneas indicado) de cada fichero dado.
tee
Lee de la entrada estndar y escribe tanto en la salida estndar como en los ficheros
indicados.
test
Comprueba el tipo de los ficheros y compara valores.
109
Linux From Scratch - Versin 6.0
touch
Cambia las fechas de modificacin o acceso de cada fichero especificado, ponindole la
fecha actual. Si un fichero no existe crea uno vaco.
tr
Convierte, altera y borra caracteres de la entrada estndar.
true
No hace nada, conseguido. Siempre termina con un cdigo de estado que indica xito.
tsort
Realiza una ordenacin topolgica. Escribe una lista totalmente ordenada de acuerdo con el
orden parcial del fichero especificado.
tty
Muestra el nombre de fichero del terminal conectado a la entrada estndar.
uname
Muestra informacin del sistema.
unexpand
Convierte los espacios en tabulaciones.
uniq
Elimina lneas consecutivas duplicadas.
unlink
Elimina el fichero indicado.
users
Muestra los nombres de los usuarios conectados actualmente.
vdir
Es lo mismo que ls -l.
wc
Muestra el nmero de lneas, palabras y bytes de un fichero, y una lnea con el total si se ha
especificado ms de uno.
who
Muestra quin est conectado.
whoami
Muestra el nombre de usuario asociado con el identificador de usuario efectivo actual.
yes
Muestra en pantalla y o una cadena de texto dada indefinidamente, hasta que es matado.
110
Linux From Scratch - Versin 6.0
6.16. Zlib-1.2.1
El paquete Zlib contiene rutinas de compresin y descompresin usadas por algunos programas.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 1.5 MB
La instalacin de Zlib depende de: Binutils, Coreutils, GCC, Glibc, Make y Sed
6.16.1. Instalacin de Zlib
El siguiente parche corrige una vulnerabilidad de Denegacin de Servicio en la librera de compresin de
Zlib:
patch -Np1 -i ../zlib-1.2.1-security-1.patch
Nota
Se sabe que Zlib construye incorrectamente sus libreras si en el entorno se ha especificado un
CFLAGS. Si ests usando tu propia variable CFLAGS, asegrate de aadirle la directiva -fPIC
durante el siguiente comando de configuracin, y elimnala posteriormente.
Prepara Zlib para su compilacin:
./configure --prefix=/usr --shared
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala la librera compartida:
make install
Construye tambin la librera esttica:
make clean
./configure --prefix=/usr
make
Para obtener de nuevo los resultados de las pruebas, ejecuta: make check.
Instala la librera esttica:
make install
Corrige los permisos de la librera esttica:
chmod 644 /usr/lib/libz.a
111
Linux From Scratch - Versin 6.0
Es una buena poltica y prctica comn colocar las libreras importantes en el directorio /lib. Esto es muy
importante en los casos en que /usr se encuentra en una particin separada. Esencialmente, las libreras
con componentes en tiempo de ejecucin usadas por los programas de /bin o /sbin deben residir en
/lib para que estn en la particin raiz y disponibles en el caso de que /usr sea inaccesible.
Por esta razn movemos los componentes en tiempo de ejecucin de la Zlib compartida a /lib:
mv /usr/lib/libz.so.* /lib
Corrige el enlace simblico /usr/lib/libz.so:
ln -sf ../../lib/libz.so.1 /usr/lib/libz.so
6.16.2. Contenido de Zlib
Libreras instaladas: libz[a,so]
Descripcin corta
libz Contiene funciones de compresin y descompresin usadas por algunos programas.
112
Linux From Scratch - Versin 6.0
6.17. Mktemp-1.5
El paquete Mktemp contiene programas usados para crear ficheros temporales seguros en guiones de
intrpretes de comandos.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 317 KB
La instalacin de Mktemp depende de: Coreutils, Make y Patch
6.17.1. Instalacin de Mktemp
Muchos programas todava usan el anticuado programa tempfile, que tiene una funcionalidad similar a
mktemp. Parchea Mktemp para incluir un envoltorio tempfile:
patch -Np1 -i ../mktemp-1.5-add_tempfile-1.patch
Prepara Mktemp para su compilacin:
./configure --prefix=/usr --with-libc
Significado de la opcin de configure:
--with-libc
Esto hace que el programa mktemp utilice las funciones mkstemp y mkdtemp de la librera C del
sistema.
Compila el paquete:
make
Instala el paquete:
make install
make install-tempfile
6.17.2. Contenido de Mktemp
Programas instalados: mktemp y tempfile
Descripciones cortas
mktemp
Crea ficheros temporales de forma segura. Es usado en guiones.
tempfile
Crea ficheros temporales de una forma menos segura que mktemp. Se instala por
retro-compatibilidad.
113
Linux From Scratch - Versin 6.0
6.18. Iana-Etc-1.01
El paquete Iana-Etc contiene datos de servicios y protocolos de red.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 641 KB
La instalacin de Iana-Etc depende de: Make
6.18.1. Instalacin de Iana-Etc
Procesa los datos:
make
Instala el paquete:
make install
6.18.2. Contenido de Iana-Etc
Ficheros instalados: /etc/protocols y /etc/services
Descripciones cortas
/etc/protocols Describe los diversos protocolos DARPA para Internet que estn disponibles para el
subsistema TCP/IP.
/etc/services
114
Proporciona un mapeado entre los nombres familiares de los servicios de Internet y
los nmeros de puerto y tipo de protocolo que tienen asignados.
Linux From Scratch - Versin 6.0
6.19. Findutils-4.1.20
El paquete Findutils contiene programas para encontrar ficheros. Se suministran procesos para hacer
bsquedas recursivas en un rbol de directorios, y para crear, mantener y consultar una base de datos (ms
rpida que la bsqueda recursiva, pero imprecisa si la base de datos no se ha actualizado recientemente).
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 7.5 MB
La instalacin de Findutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make y Sed
6.19.1. Instalacin de Findutils
Prepara Findutils para su compilacin:
./configure --prefix=/usr --libexecdir=/usr/lib/locate \
--localstatedir=/var/lib/locate
La anterior directiva localstatedir cambia la localizacin de la base de datos de locate a
/var/lib/locate, que cumple el FHS.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.19.2. Contenido de Findutils
Programas instalados: bigram, code, find, frcode, locate, updatedb y xargs
Descripciones cortas
bigram
Se usaba originalmente para generar bases de datos de locate.
code
Se usaba originalmente para generar bases de datos de locate. Es el antecesor de frcode.
find
Busca en los rboles de directorios indicados los ficheros que cumplan el criterio
especificado.
frcode
Es llamado por updatedb para comprimir la lista de nombres de ficheros. Utiliza
"front-compression", que reduce el tamao de la base de datos en un factor de 4 o 5.
locate
Busca en una base de datos de nombres de ficheros y muestra los nombres que contienen la
cadena indicada o cumplen un patrn dado.
updatedb
Actualiza la base de datos de locate. Explora por completo el sistema de ficheros (incluidos
otros sistemas de ficheros que se encuentren montados, a no ser que se le indique lo contrario)
e inserta todos los nombres de ficheros que encuentre en la base de datos.
xargs
Puede usarse para aplicar un comando a una lista de ficheros.
115
Linux From Scratch - Versin 6.0
6.20. Gawk-3.1.4
El paquete Gawk contiene programas para manipular ficheros de texto.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 17 MB
La instalacin de Gawk depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make
y Sed
6.20.1. Instalacin de Gawk
Prepara Gawk para su compilacin:
./configure --prefix=/usr --libexecdir=/usr/lib
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.20.2. Contenido de Gawk
Programas instalados: awk (enlace a gawk), gawk, gawk-3.1.4, grcat, igawk, pgawk, pgawk-3.1.4 y pwcat
Descripciones cortas
awk
Enlace a gawk
gawk
Un programa para manipular ficheros de texto. Es la implementacin GNU de awk.
gawk-3.1.4
Enlace duro a gawk.
grcat
Vuelca la base de datos de grupos /etc/group.
igawk
Otorga a gawk la capacidad de incluir ficheros.
pgawk
Es la versin de gawk con soporte de perfiles.
pgawk-3.1.4
Enlace duro a pgawk.
pwcat
Vuelca la base de datos de contraseas /etc/passwd.
116
Linux From Scratch - Versin 6.0
6.21. Ncurses-5.4
El paquete Ncurses contiene libreras para el manejo de pantallas de caracteres independiente del terminal.
Tiempo estimado de construccin: 0.6 SBU
Espacio requerido en disco: 27 MB
La instalacin de Ncurses depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep,
Make y Sed
6.21.1. Instalacin de Ncurses
Prepara Ncurses para su compilacin:
./configure --prefix=/usr --with-shared --without-debug
Compila el paquete:
make
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make install
Otorga permisos de ejecucin a las libreras Ncurses:
chmod 755 /usr/lib/*.5.4
Corrige una librera que no debera ser ejecutable:
chmod 644 /usr/lib/libncurses++.a
Mueve las libreras al directorio /lib, que es donde se espera que residan:
mv /usr/lib/libncurses.so.5* /lib
Debido a que se han movido las libreras, algunos enlaces simblicos apuntan a ficheros que no existen.
Regenera esos enlaces simblicos:
ln -sf ../../lib/libncurses.so.5 /usr/lib/libncurses.so
ln -sf libncurses.so /usr/lib/libcurses.so
6.21.2. Contenido de Ncurses
Programas instalados: captoinfo (enlace a tic), clear, infocmp, infotocap (enlace a tic), reset (enlace a tset),
tack, tic, toe, tput y tset
Libreras instaladas: libcurses.[a,so] (enlace a libncurses.[a,so]), libform.[a,so], libmenu.[a,so],
libncurses++.a, libncurses.[a,so] y libpanel.[a,so]
Descripciones cortas
captoinfo
Convierte una descripcin termcap en una descripcin terminfo.
clear
Limpia la pantalla si es posible.
117
Linux From Scratch - Versin 6.0
infocmp
Compara o imprime en pantalla una descripcin terminfo.
infotocap
Convierte una descripcin terminfo en una descripcin termcap.
reset
Reinicializa un terminal a sus valores por defecto.
tack
El comprobador de acciones terminfo. Se usa principalmente para verificar la precisin de
una entrada de la base de datos terminfo.
tic
El compilador de entradas de descripciones terminfo. Transforma un fichero terminfo en
formato fuente al formato binario requerido por las rutinas de las libreras ncurses. Los
ficheros terminfo contienen informacin sobre las capacidades de un terminal.
toe
Lista todos los tipos de terminal disponibles, dando el nombre primario y la descripcin de
cada uno.
tput
Pone a disposicin del intrprete de comandos la informacin sobre las capacidades
dependientes del terminal. Tambin sirve para inicializar o restablecer el terminal, o para
devolver su nombre largo.
tset
Sirve para inicializar terminales.
libcurses
Enlace a libncurses
libncurses Contienen funciones para mostrar texto de formas complicadas en la pantalla de un
terminal. Un buen ejemplo del uso de estas funciones es el men que se muestra en el
proceso make menuconfig del ncleo.
libform
Contienen funciones para implementar formularios.
libmenu
Contienen funciones para implementar mens.
libpanel
Contienen funciones para implementar paneles.
118
Linux From Scratch - Versin 6.0
6.22. Readline-5.0
El paquete Readline contiene la librera de lnea de comandos Readline.
Tiempo estimado de construccin: 0.11 SBU
Espacio requerido en disco: 3.8 MB
La instalacin de Readline depende de: Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make,
Ncurses y Sed
6.22.1. Instalacin de Readline
El siguiente parche corrige un problema por el que Readline, en ocasiones, muestra slo 33 caracteres en una
lnea y salta a la siguiente lnea.
patch -Np1 -i ../readline-5.0-display_wrap-1.patch
Prepara Readline para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make SHLIB_XLDFLAGS=-lncurses
Significado de la opcin de make:
SHLIB_XLDFLAGS=-lncurses
Esta opcin fuerza a Readline a enlazarse contra la libera libncurses.
Instala el paquete:
make install
Asigna a las libreras dinmicas de Readline unos permisos ms apropiados:
chmod 755 /usr/lib/*.5.0
Mueve las libreras dinmicas a una ubicacin ms correcta:
mv /usr/lib/lib{readline,history}.so.5* /lib
Debido a que se han movido las libreras, algunos enlaces simblicos apuntan ahora a ficheros que no
existen. Regenera dichos enlaces simblicos:
ln -sf ../../lib/libhistory.so.5 /usr/lib/libhistory.so
ln -sf ../../lib/libreadline.so.5 /usr/lib/libreadline.so
119
Linux From Scratch - Versin 6.0
6.22.2. Contenido de Readline
Libreras instaladas: libhistory.[a,so] y libreadline.[a,so]
Descripciones cortas
libhistory
Proporciona una interfaz de usuario consistente para la rellamada de lneas de historial.
libreadline Asiste en la consistencia de la interfaz de usuario entre programas discrecionales que
necesitan suministrar una interfaz de lnea de comandos.
120
Linux From Scratch - Versin 6.0
6.23. Vim-6.3
El paquete Vim contiene un poderoso editor de texto.
Tiempo estimado de construccin: 0.4 SBU
Espacio requerido en disco: 34 MB
La instalacin de Vim depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses
y Sed
Alternativas a Vim
Si prefieres otro editor en vez de Vim, como Emacs, Joe, o Nano, mira en
http://www.lfs-es.com/blfs-es-CVS/postlfs/editors.html
las instrucciones de instalacin sugeridas (la versin original en ingls se encuentra en
http://www.linuxfromscratch.org/blfs/view/stable/postlfs/editors.html).
6.23.1. Instalacin de Vim
Primero, desempaqueta en el mismo directorio tanto vim-6.3.tar.bz2 como (opcionalmente)
vim-6.3-lang.tar.gz. Despus, cambia la localizacin por defecto de los ficheros de configuracin
vimrc y gvimrc a /etc.
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h
Prepara Vim para su compilacin:
./configure --prefix=/usr --enable-multibyte
La opcin --enable-multibyte, opcional pero muy recomendable, aade a vim el soporte para la
edicin de ficheros codificados con caracteres multibyte. Esto es necesario si se utiliza un conjunto de
caracteres multibyte. Tambin permite editar ficheros creados inicialmente en distribuciones Linux como
Fedora Core, que utilizan UTF-8 como conjunto de caracteres por defecto.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make test. Sin embargo, este banco de pruebas mostrar una
catica avalancha de caracteres por pantalla que puede causar problemas con los ajustes del terminal actual.
Por tanto la ejecucin de este banco de pruebas es opcional.
Instala el paquete
make install
Muchos usuarios tienden a utilizar vi, en vez de vim. Para permitirles ejecutar vim cuando teclean vi, crea
un enlace simblico:
ln -s vim /usr/bin/vi
121
Linux From Scratch - Versin 6.0
Si vas a instalar el sistema X Window en tu sistema LFS, puede que sea necesario recompilar Vim despus
de instalar X. Vim incluye una bonita versin con interfaz grfica que necesita X y algunas otras libreras
instaladas. Para ms informacin lee la documentacin de Vim y la pgina de instalacin de Vim en el libro
BLFS, en http://www.lfs-es.com/blfs-es-CVS/postlfs/editors.html#postlfs-editors-vim (el original en ingls se
encuentra en http://www.linuxfromscratch.org/blfs/view/svn/postlfs/editors.html#postlfs-editors-vim).
6.23.2. Configuracin de Vim
Por defecto, vim se ejecuta en modo no compatible con vi. Esto puede ser nuevo para los usuarios que han
utilizado otros editores anteriormente. Hemos incluido a continuacin la opcin nocompatible para resaltar
el hecho de que se va a usar este nuevo comportamiento. Esto tambin les recuerda a aquellos que quieran
cambiar al modo compatible que debera aparecer al principio. Esto es necesario porque cambia otros
ajustes, y las modificaciones deberan ir tras este ajuste. Crea un fichero de configuracin por defecto de vim
ejecutando lo siguiente:
cat > /etc/vimrc << "EOF"
" Inicio de /etc/vimrc
set nocompatible
set backspace=2
syntax on
if (&term == "iterm") || (&term == "putty")
set background=dark
endif
" Fin de /etc/vimrc
EOF
La opcin set nocompatible hace que vim se comporte de un modo (el modo por defecto) ms til
que el modo compatible con vi. Elimina el no si quieres el antiguo comportamiento vi. La opcin set
backspace=2 permite el retroceso en saltos de lnea, autoindentacin e inicio de insercin. La opcin
syntax on activa la coloracin semntica de vim. Por ltimo, el condicional if junto con set
background=dark corrige lo que vim se imagina sobre el color de fondo de ciertos emuladores de
terminal. Esto le da a la coloracin semntica un mejor esquema de color para utilizarlo sobre el fondo negro
de estos programas.
Se puede obtener informacin sobre las opciones disponibles ejecutando el siguiente comando:
vim -c ':options'
6.23.3. Contenido de Vim
Programas instalados: efm_filter.pl, efm_perl.pl, ex (enlace a vim), less.sh, mve.awk, pltags.pl, ref, rview
(enlace a vim), rvim (enlace a vim), shtags.pl, tcltags, vi (enlace a vim), view (enlace a vim), vim, vim132,
vim2html.pl, vimdiff (enlace a vim), vimm, vimspell.sh, vimtutor y xxd
Descripciones cortas
efm_filter.pl
Un filtro para crear un fichero de error que puede ser ledo por vim.
efm_perl.pl
Formatea los mensajes de error del intrprete Perl para usarlos con el modo quickfix
de vim.
ex
Arranca vim en modo ex.
less.sh
Un guin que arranca vim con less.vim.
122
Linux From Scratch - Versin 6.0
mve.awk
Procesa los errores de vim.
pltags.pl
Crea un fichero de etiquetas para el cdigo Perl, de modo que pueda usarse con vim.
ref
Comprueba la ortografa de los argumentos.
rview
Una versin restringida de view. No pueden ejecutarse comandos del intrprete de
comandos y view no puede ser suspendido.
rvim
Una versin restringida de vim. No pueden ejecutarse comandos del intrprete de
comandos y vim no puede ser suspendido.
shtags.pl
Genera un fichero de etiquetas para los guiones Perl.
tcltags
Genera un fichero de etiquetas para el cdigo TCL.
view
Arranca vim en modo de slo lectura.
vim
El editor.
vim132
Arranca vim con el terminal en modo de 132 columnas.
vim2html.pl
Convierte la documentacin de Vim a HTML.
vimdiff
Edita dos o tres versiones de un fichero con vim y muestra las diferencias.
vimm
Activa el modelo de entrada del buscador de DEC en un terminal remoto.
vimspell.sh
Corrige un fichero y genera las sentencias de sintaxis necesarias para resaltar las
palabras en vim. Este guin necesita el antiguo comando Unix spell, que no se incluye
en el LFS ni en el BLFS.
vimtutor
Ensea las teclas y comandos bsicos de vim.
xxd
Genera un volcado hexadecimal. Tambin puede hacer lo contrario, por lo que puede
usarse para parchear binarios.
123
Linux From Scratch - Versin 6.0
6.24. M4-1.4.2
El paquete M4 contiene un procesador de macros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 3.0 MB
La instalacin de M4 depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make,
Perl y Sed
6.24.1. Instalacin de M4
Prepara M4 para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.24.2. Contenido de M4
Programa instalado: m4
Descripcin corta
m4 Copia los ficheros dados expandiendo en el proceso las macros que contengan. Estas macros pueden
ser internas o definidas por el usuario y pueden tomar cualquier nmero de argumentos. Adems de
hacer la expansin de macros, m4 tiene funciones internas para incluir los ficheros indicados, lanzar
comandos UNIX, hacer aritmtica entera, manipular texto de diversas formas, recursin, etc. El
programa m4 puede ser usado como interfaz para un compilador o como procesador de macros por s
mismo.
124
Linux From Scratch - Versin 6.0
6.25. Bison-1.875a
El paquete Bison contiene un generador de analizadores sintcticos.
Tiempo estimado de construccin: 0.6 SBU
Espacio requerido en disco: 10.6 MB
La instalacin de Bison depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, M4,
Make y Sed
6.25.1. Instalacin de Bison
Prepara Bison para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.25.2. Contenido de Bison
Programas instalados: bison y yacc
Librera instalada: liby.a
Descripciones cortas
bison
Genera, a partir de una serie de reglas, un programa para analizar la estructura de ficheros de
texto. Bison es un sustituto de Yacc (Yet Another Compiler Compiler, Otro Compilador de
Compiladores).
yacc
Un envoltorio para bison, destinado a los programas que todava llaman a yacc en lugar de a
bison. Invoca a bison con la opcin -y.
liby.a La librera Yacc que contiene la implementacin de las funciones yyerror y main compatibles
con Yacc. Esta librera normalmente no es muy til, pero POSIX la solicita.
125
Linux From Scratch - Versin 6.0
6.26. Less-382
El paquete Less contiene un visor de ficheros de texto.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 3.4 MB
La instalacin de Less depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses
y Sed
6.26.1. Instalacin de Less
Prepara Less para su compilacin:
./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc
Significado de la opcin de configure:
--sysconfdir=/etc
Esta opcin le indica al programa creado por el paquete que busque en /etc sus ficheros de
configuracin.
Compila el paquete:
make
Instala el paquete:
make install
6.26.2. Contenido de Less
Programas instalados: less, lessecho y lesskey
Descripciones cortas
less
Un visor de ficheros o paginador. Muestra el contenido de un fichero con la posibilidad de
recorrerlo, hacer bsquedas o saltar a marcas.
lessecho
Necesario para expandir meta-caracteres, como * y ?, en los nombres de ficheros en sistemas
Unix.
lesskey
Usado para especificar los cdigos de teclas usados por less.
126
Linux From Scratch - Versin 6.0
6.27. Groff-1.19.1
El paquete Groff contiene programas para procesar y formatear texto.
Tiempo estimado de construccin: 0.5 SBU
Espacio requerido en disco: 43 MB
La instalacin de Groff depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make y
Sed
6.27.1. Instalacin de Groff
Groff espera que la variable de entorno PAGE contenga el valor por defecto para el tamao de papel. Para
los residentes en Estados Unidos, PAGE=letter es un valor adecuado. Para el resto, PAGE=A4 puede ser
ms correcto.
Prepara Groff para su compilacin:
PAGE=[tamao_del_papel] ./configure --prefix=/usr
Compila el paquete:
make
Instala el paquete:
make install
Algunos programas de documentacin, como xman, no funcionarn correctamente sin los siguientes enlaces
simblicos.
ln -s soelim /usr/bin/zsoelim
ln -s eqn /usr/bin/geqn
ln -s tbl /usr/bin/gtbl
6.27.2. Contenido de Groff
Programas instalados: addftinfo, afmtodit, eqn, eqn2graph, geqn (enlace a eqn), grn, grodvi, groff, groffer,
grog, grolbp, grolj4, grops, grotty, gtbl (enlace a tbl), hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff,
pfbtops, pic, pic2graph, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff y zsoelim (enlace a
soelim)
Descripciones cortas
addftinfo
Lee un fichero de fuentes troff y aade alguna informacin adicional sobre la mtrica de
la fuente, que es usada por el sistema groff.
afmtodit
Crea un fichero de fuentes para usarlo con groff y grops.
eqn
Compila las descripciones de las frmulas embebidas en los ficheros de entrada troff a
comandos que pueda entender troff.
eqn2graph
Convierte una ecuacin EQN en una imagen.
geqn
Enlace a eqn
grn
Un preprocesador groff para ficheros gremlin.
127
Linux From Scratch - Versin 6.0
grodvi
Un controlador para groff que genera formatos dvi de TeX.
groff
Una interfaz para el sistema de formateado de documentos groff. Normalmente lanza el
programa troff y un post-procesador apropiado para el dispositivo seleccionado.
groffer
Muestra ficheros groff y pginas de manual en las X y en consola.
grog
Lee ficheros y averigua cul de las opciones-e, -man, -me, -mm, -ms, -p, -s y -t
de groff se necesitan para imprimir los ficheros, y muestra el comando de groff
incluyendo esas opciones.
grolbp
Un controlador de groff para las impresoras Canon CAPSL (series LBP-4 y LBP-8 de
impresoras lser)
grolj4
Un controlador para groff que produce salidas en el formato PCL5 adecuado para
impresoras HP Laserjet 4.
grops
Transforma la salida de GNU troff a PostScript.
grotty
Transforma la salida de GNU troff en un formato adecuado para dispositivos tipo
mquina de escribir.
gtbl
La implementacin GNU de tbl.
hpftodit
Crea un fichero de fuentes para usar con groff -Tlj4 a partir de ficheros de marcas de
fuentes mtricas de HP.
indxbib
Hace un ndice inverso para la base de datos bibliogrfica, un fichero especfico para
usarlo con refer, lookbib y lkbib.
lkbib
Busca en las bases de datos bibliogrficas referencias que contengan las claves
especificadas y muestra cualquier referencia encontrada.
lookbib
Muestra un aviso en la salida de error estndar (excepto si la entrada estndar no es un
terminal), lee de la entrada estndar una lnea conteniendo un grupo de palabras clave,
busca en las bases de datos bibliogrficas de un fichero especificado las referencias que
contengan dichas claves, muestra cualquier referencia encontrada en la salida estndar y
repite el proceso hasta el final de la entrada.
mmroff
Un preprocesador simple para groff.
neqn
Formatea ecuaciones para salida ASCII (Cdigo Estndar Americano para Intercambio
de Informacin).
nroff
Un guin que emula al comando nroff usando groff.
pfbtops
Transforma una fuente en formato .pfb de PostScript a ASCII.
pic
Compila descripciones de grficos embebidos dentro de ficheros de entrada troff o TeX
a comandos que puedan ser entendidos por TeX o troff.
pic2graph
Convierte un diagrama PIC en una imagen.
post-grohtml
Transforma la salida de GNU troff a HTML.
pre-grohtml
Transforma la salida de GNU troff a HTML.
refer
Copia el contenido de un fichero en la salida estndar, excepto que las lneas entre .[ y .]
son interpretadas como citas, y las lneas entre .R1 y .R2 son interpretadas como
comandos sobre cmo deben ser procesadas las citas.
soelim
Lee ficheros y reemplaza lneas de la forma fichero .so por el contenido de fichero.
128
Linux From Scratch - Versin 6.0
tbl
Compila descripciones de tablas embebidas dentro de ficheros de entrada troff a
comandos que puedan ser entendidos por troff.
tfmtodit
Crea un fichero de fuentes para su uso con groff -Tdvi.
troff
Es altamente compatible con Unix troff. Normalmente debe ser invocado usando el
comando groff, que tambin lanzar los preprocesadores y post procesadores en el
orden correcto y con las opciones necesarias.
zsoelim
La implementacin GNU de soelim.
129
Linux From Scratch - Versin 6.0
6.28. Sed-4.1.2
El paquete Sed contiene un editor de flujos.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 5.2 MB
La instalacin de Sed depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make y
Texinfo
6.28.1. Instalacin de Sed
Prepara Sed para su compilacin:
./configure --prefix=/usr --bindir=/bin
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.28.2. Contenido de Sed
Programa instalado: sed
Descripcin corta
sed
130
Se usa para filtrar y transformar ficheros de texto en una sola pasada.
Linux From Scratch - Versin 6.0
6.29. Flex-2.5.31
El paquete Flex contiene una utilidad para generar programas que reconocen patrones de texto.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 3.4 MB
La instalacin de Flex depende de: Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
M4, Make y Sed
6.29.1. Instalacin de Flex
Flex contiene varios errores conocidos. Corrgelos con el siguiente parche:
patch -Np1 -i ../flex-2.5.31-debian_fixes-2.patch
Las autotools de GNU detectan que el cdigo fuente de Flex fue modificado por el parche anterior e intentan
actualizar la pgina de manual. Esto no funciona correctamente en muchos sistemas y la pgina original es
correcta, as que asegrate de que no sea regenerada:
touch doc/flex.1
Prepara Flex para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Ciertos paquetes esperan encontrar la librera lex en el directorio /usr/lib. Crea un enlace simblico
para solventar esto:
ln -s libfl.a /usr/lib/libl.a
Algunos programas an no conocen flex e intentan encontrar a su predecesor lex. Para complacer a estos
programas, crea un guin envoltorio de nombre lex que llame a flex en modo de emulacin lex:
cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Inicio de /usr/bin/lex
exec /usr/bin/flex -l "$@"
# Fin de /usr/bin/lex
EOF
chmod 755 /usr/bin/lex
131
Linux From Scratch - Versin 6.0
6.29.2. Contenido de Flex
Programas instalados: flex, flex++ (enlace a flex) y lex
Librera instalada: libfl.a
Descripciones cortas
flex
Una herramienta para generar programas capaces de reconocer patrones de texto. Su
versatilidad permite establecer las reglas de bsqueda, erradicando la necesidad de desarrollar
un programa especializado.
flex++
Invoca una versin de flex usada exclusivamente por analizadores C++.
lex
Guin que ejecuta flex en el modo de emulacin de lex.
libfl.a La librera flex.
132
Linux From Scratch - Versin 6.0
6.30. Gettext-0.14.1
El paquete Gettext contiene utilidades para la internacionalizacin y localizacin. Esto permite a los
programas compilarse con Soporte de Lenguaje Nativo (NLS), lo que les permite mostrar mensajes en el
idioma nativo del usuario.
Tiempo estimado de construccin: 0.5 SBU
Espacio requerido en disco: 55 MB
La instalacin de Gettext depende de: Bash, Binutils, Bison, Coreutils, Diffutils, Gawk, GCC, Glibc,
Grep, Make y Sed
6.30.1. Instalacin de Gettext
Prepara Gettext para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check. Esto tarda mucho tiempo, unos 7 SBUs.
Instala el paquete:
make install
6.30.2. Contenido de Gettext
Programas instalados: autopoint, config.charset, config.rpath, envsubst, gettext, gettextize, hostname,
msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit,
msgmerge, msgunfmt, msguniq, ngettext y xgettext
Libreras instaladas: libasprintf[a,so], libgettextlib[a,so], libgettextpo[a,so] y libgettextsrc[a,so]
Descripciones cortas
autopoint
Copia los ficheros estndar de infraestructura de Gettext a las fuentes de un paquete.
config.charset
Saca una tabla dependiente del sistema de los alias de codificacin de los caracteres.
config.rpath
Saca un grupo de variables dependientes del sistema, describiendo cmo fijar la ruta
de bsqueda en tiempo de ejecucin de las libreras compartidas en un ejecutable.
envsubst
Sustituye variables de entorno en cadenas del formato del intrprete de comandos.
gettext
Traduce un mensaje en lenguaje natural al lenguaje del usuario, buscando las
traducciones en un catlogo de mensajes.
gettextize
Copia todos los ficheros estndar Gettext en el directorio indicado de un paquete,
para iniciar su internacionalizacin
hostname
Muestra el nombre en la red de un sistema en varios formatos.
msgattrib
Filtra los mensajes de un catlogo de traduccin de acuerdo con sus atributos, y
manipula dichos atributos.
msgcat
Concatena y mezcla los ficheros .po indicados.
133
Linux From Scratch - Versin 6.0
msgcmp
Compara dos ficheros .po para comprobar si ambos contienen el mismo conjunto de
cadenas de identificadores de mensajes.
msgcomm
Busca los mensajes que son comunes en los ficheros .po indicados.
msgconv
Convierte un catlogo de traduccin a una codificacin de caracteres diferente.
msgen
Crea un catlogo de traduccin en ingls.
msgexec
Aplica un comando a todas las traducciones de un catlogo de traduccin.
msgfilter
Aplica un filtro a todas las traducciones de un catlogo de traduccin.
msgfmt
Compila el binario de un catlogo de mensajes a partir de un catlogo de
traducciones.
msggrep
Extrae todos los mensajes de un catlogo de traduccin que cumplan cierto criterio o
pertenezcan a alguno de los ficheros fuente indicados.
msginit
Crea un nuevo fichero .po, inicializando la informacin con valores procedentes del
entorno del usuario.
msgmerge
Combina dos traducciones directas en un nico fichero.
msgunfmt
Descompila catlogos de mensajes binarios en traducciones directas de texto.
msguniq
Unifica las traducciones duplicadas en un catlogo de traduccin.
ngettext
Muestra traducciones en lenguaje nativo de un mensaje textual cuya forma
gramatical depende de un nmero.
xgettext
Extrae las lneas de mensajes traducibles de los ficheros fuente indicados, para hacer
la primera plantilla de traduccin.
libasprintf
Define la clase autosprintf que hace utilizable la salida formateada de las rutinas de
C en programas C++, para usar con las cadenas <string> y los flujos <iostream>.
libgettextlib
Una librera privada que contiene rutinas comunes utilizadas por diversos programas
de Gettext. No es indicada para uso general.
libgettextpo
Utilizada para escribir programas especializados que procesan ficheros .po. Esta
librera se utiliza cuando las aplicaciones estndar incluidas con Gettext no son
suficiente (como msgcomm, msgcmp, msgattrib y msgen).
libgettextsrc
Una librera privada que contiene rutinas comunes utilizadas por diversos programas
de Gettext. No es indicada para uso general.
134
Linux From Scratch - Versin 6.0
6.31. Inetutils-1.4.2
El paquete Inetutils contiene programas para trabajo bsico en red.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 11 MB
La instalacin de Inetutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make,
Ncurses y Sed
6.31.1. Instalacin de Inetutils
Inetutils tiene ciertos problemas con los ncleos Linux de la serie 2.6. Corrgelos aplicando el siguiente
parche:
patch -Np1 -i ../inetutils-1.4.2-kernel_headers-1.patch
No vamos a instalar todos los programas que vienen en Inetutils. Sin embargo, el sistema de construccin de
Inetutils insistir en instalar todas las pginas de manual. El siguiente parche corregir esta situacin:
patch -Np1 -i ../inetutils-1.4.2-no_server_man_pages-1.patch
Prepara Inetutils para su compilacin:
./configure --prefix=/usr --libexecdir=/usr/sbin \
--sysconfdir=/etc --localstatedir=/var \
--disable-logger --disable-syslogd \
--disable-whois --disable-servers
Significado de las opciones de configure:
--disable-logger
Esta opcin evita que Inetutils instale el programa logger, que sirve para que los guiones le pasen
mensajes al Demonio de Registro de Eventos del Sistema. Hacemos esto porque luego Util-linux
instalar una versin mejor.
--disable-syslogd
Esta opcin evita que Inetutils instale el Demonio de Registro de Eventos del Sistema, que ser instalado
con el paquete Sysklogd.
--disable-whois
Esta opcin desactiva la construccin del cliente whois de Inetutils, que est demasiado anticuado. En el
libro BLFS hay instrucciones para un cliente whois mucho mejor.
--disable-servers
Esto desactiva la construccin de los diferentes servidores incluidos como parte del paquete Inetutils.
Estos servidores no se consideran apropiados para un sistema LFS bsico. Algunos son inseguros por
naturaleza y slo se consideran seguros en redes de confianza. Puedes encontrar ms informacin en
http://www.lfs-es.com/blfs-es-CVS/basicnet/inetutils.html (el original en ingls se encuentra en
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/inetutils.html). Ten en cuenta que para muchos
de estos servidores hay disponibles sustitutos mejores.
Compila el paquete:
make
135
Linux From Scratch - Versin 6.0
Instala el paquete:
make install
Mueve el programa ping al lugar indicado por el FHS:
mv /usr/bin/ping /bin
6.31.2. Contenido de Inetutils
Programas instalados: ftp, ping, rcp, rlogin, rsh, talk, telnet y tftp
Descripciones cortas
ftp
El programa para transferencia de ficheros de ARPANET.
ping
Enva paquetes de peticin de eco e informa cunto tardan las respuestas.
rcp
Copia ficheros de forma remota.
rlogin
Realiza entradas remotas a un sistema.
rsh
Ejecuta un intrprete de comandos remoto.
talk
Permite hablar con otro usuario.
telnet
Una interfaz de usuario para el protocolo TELNET.
tftp
Un programa para la transferencia trivial de ficheros.
136
Linux From Scratch - Versin 6.0
6.32. Iproute2-2.6.8-040823
El paquete Iproute2 contiene programas para el trabajo bsico y avanzado en redes basadas en IPV4.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 0.6 MB
La instalacin de Iproute2 depende de: GCC, Glibc, Make, Linux-Headers y Sed
6.32.1. Instalacin de Iproute2
El binario arpd incluido en este paquete depende de Berkeley DB. Ya que arpd no es un requisito muy
comn en un sistema Linux bsico, eliminamos la dependencia de Berkeley DB aplicando un parche con los
comandos siguientes. Si necesitas el binario arpd, puedes encontrar las instrucciones para compilar
Berkeley DB en el libro BLFS en http://www.lfs-es.com/blfs-es-CVS/content/databases.html#db (el original
en ingls se encuentra en http://www.linuxfromscratch.org/blfs/view/svn/content/databases.html#db).
patch -Np1 -i ../iproute2-2.6.8_040823-remove_db-1.patch
Prepara Iproute2 para su compilacin:
./configure
Compila el paquete:
make SBINDIR=/sbin
Significado de la opcin de make:
SBINDIR=/sbin
Esto asegura que los binarios de Iproute2 se instalarn en /sbin. Esta es la localizacin correcta segn
el FHS, pues algunos de los binarios de Iproute2 se utilizan en los guiones de arranque.
Instala el paquete:
make SBINDIR=/sbin install
6.32.2. Contenido de Iproute2
Programas instalados: ifstat, ip, nstat, routef, routel, rtmon, rtstat, ss y tc.
Descripciones cortas
ifstat
Muestra las estadsticas de las interfaces, incluida la cantidad de paquetes enviados y
recibidos por la interfaz.
ip
El ejecutable principal. Tiene diferentes funciones:
ip link [dispositivo] permite a los usuarios ver el estado del dispositivo y hacer
cambios.
ip addr permite a los usuarios ver las direcciones y sus propiedades, aadir nuevas
direcciones y borrar las antiguas.
137
Linux From Scratch - Versin 6.0
ip neighbor permite a los usuarios ver los enlaces de vecindad, aadir nuevas entradas de
vecindad y borrar las antiguas.
ip rule permite a los usuarios ver las polticas de enrutado y cambiarlas.
ip route permite a los usuarios ver las tablas de enrutado y cambiar las reglas de las
tablas.
ip tunnel permite a los usuarios ver los tneles IP y sus propiedades, y cambiarlos.
ip maddr permite a los usuarios ver las direcciones multienlace y sus propiedades, y
cambiarlas.
ip mroute permite a los usuarios establecer, cambiar o borrar el enrutado multienlace.
ip monitor permite a los usuarios monitorizar continuamente el estado de los
dispositivos, direcciones y rutas.
nstat
Muestra las estadsticas de la red.
routef
Un componente de ip route. Este es para refrescar las tablas de enrutado.
routel
Un componente de ip route. Este es para listar las tablas de enrutado.
rtmon
Utilidad para la monitorizacin de rutas.
rtstat
Utilidad para el estado de rutas.
ss
Similar al comando netstat. Muestra las conexiones activas.
tc
Ejecutable para el control del trfico. Este es para las implementaciones Quality Of
Service (QOS, Calidad de Servicio) y Class Of Service (COS, Clase de Servicio).
tc qdisc permite a los usuarios establecer la disciplina de colas.
tc class permite a los usuarios establecer clases basadas en la planificacin de las
disciplinas de colas.
tc estimator permite a los usuarios hacer una estimacn del flujo de red en una red.
tc filter permite a los usuarios establecer el filtrado de paquetes QOS/COS.
tc policy permite a los usuarios establecer las polticas QOS/COS.
138
Linux From Scratch - Versin 6.0
6.33. Perl-5.8.5
El paquete Perl contiene el Lenguaje Prctico de Extraccin e Informe.
Tiempo estimado de construccin: 2.9 SBU
Espacio requerido en disco: 143 MB
La instalacin de Perl depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make y
Sed
6.33.1. Instalacin de Perl
Si quieres un control total sobre la forma en que Perl se configura, puedes ejecutar el guin interactivo
Configure y modificar a mano el modo en el que se construye este paquete. Si te basta con los valores
autodetectados, prepara Perl para su compilacin con:
./configure.gnu --prefix=/usr -Dpager="/bin/less -isR"
Significado de la opcin de configure:
-Dpager="/bin/less -isR"
Esto corrige un error en el cdigo de perldoc con la invocacin del programa less.
Compila el paquete:
make
Para ejecutar el banco de pruebas, crea primero un fichero /etc/hosts bsico, requerido por un grupo de
pruebas para resolver el nombre localhost:
echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
Ahora, si lo deseas, ejecuta las pruebas:
make test
Instala el paquete:
make install
6.33.2. Contenido de Perl
Programas instalados: a2p, c2ph, dprofpp, enc2xs, find2perl, h2ph, h2xs, libnetcfg, perl, perl5.8.5 (enlace
a perl), perlbug, perlcc, perldoc, perlivp, piconv, pl2pm, pod2html, pod2latex, pod2man, pod2text,
pod2usage, podchecker, podselect, psed (enlace a s2p), pstruct (enlace a c2ph), s2p, splain y xsubpp
Libreras instaladas: Varios cientos que no podemos listar aqu
Descripciones cortas
a2p
Traduce de awk a Perl.
c2ph
Vuelca estructuras C similares a las generadas por cc -g -S.
dprofpp
Muestra datos de perfiles Perl.
en2cxs
Construye una extensin Perl para el mdulo Encode, a partir de cualquier Mapa de
139
Linux From Scratch - Versin 6.0
Caracteres Unicode o Ficheros de Codificacin Tcl.
find2perl
Traduce comandos find a cdigo Perl.
h2ph
Convierte ficheros de cabecera .h de C en ficheros de cabecera .ph de Perl.
h2xs
Convierte ficheros de cabecera .h de C en extensiones de Perl.
libnetcfg
Puede usarse para configurar libnet.
perl
Combina algunas de las mejores caractersticas de C, sed, awk y sh en un nico y poderoso
lenguaje.
perl5.8.5
Enlace duro a perl.
perlbug
Genera informes de errores sobre Perl o sobre los mdulos incorporados y los enva por
correo.
perlcc
Genera ejecutables a partir de programas Perl.
perldoc
Muestra una parte de la documentacin en formato pod que se incluye en el rbol de
instalacin de Perl o en un guin de Perl.
perlivp
El Procedimiento de Verificacin de la Instalacin de Perl. Puede usarse para verificar que
Perl y sus libreras se han instalado correctamente.
piconv
La versin Perl del convertidor de codificacin de caracteres iconv.
pl2pm
Es una herramienta que ayuda a convertir ficheros .pl de Perl4 en mdulos .pm de Perl5.
pod2html
Convierte ficheros de formato pod a formato HTML.
pod2latex
Convierte ficheros de formato pod a formato LaTeX.
pod2man
Convierte datos pod en entradas formateadas *roff.
pod2text
Convierte datos pod en texto formateado ASCII.
pod2usage
Muestra mensajes de uso a partir de documentos pod incluidos en ficheros.
podchecker
Comprueba la sintaxis de los ficheros de documentacin en formato pod.
podselect
Muestra las secciones elegidas de la documentacin pod.
psed
Una versin Perl del editor de flujo sed.
pstruct
Vuelca estructuras C similares a las generadas por cc -g -S.
s2p
Traduce de sed a Perl.
splain
Se usa para forzar diagnsticos de avisos exhaustivos en Perl.
xsubpp
Convierte el cdigo XS de Perl en cdigo C.
140
Linux From Scratch - Versin 6.0
6.34. Texinfo-4.7
El paquete Texinfo contiene programas usados para leer, escribir y convertir documentos Info.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 17 MB
La instalacin de Texinfo depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Ncurses y Sed
6.34.1. Instalacin de Texinfo
El siguiente parche corrige un problema que hace que el programa info falle en ocasiones cuando se pulsa la
tecla Delete del teclado:
patch -Np1 -i ../texinfo-4.7-segfault-1.patch
Prepara Texinfo para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
Opcionalmente, instala los componentes que pertenecen a una instalacin de TeX:
make TEXMF=/usr/share/texmf install-tex
Significado del parmetro de make:
TEXMF=/usr/share/texmf
La variable TEXMF del Makefile fija la ubicacin de la raz del rbol de TeX si, por ejemplo, ms
adelante se instala un paquete TeX.
El sistema de documentacin Info utiliza un fichero de texto plano para almacenar su listado de entradas de
men. Este fichero se encuentra en /usr/share/info/dir. Desgraciadamente, debido a problemas
ocasionales en los Makefile de diversos paquetes, en ocasiones puede quedarse desfasado con respecto a los
manuales Info realmente instalados en el sistema. Si necesitas recrear el fichero
/usr/share/info/dir, el siguiente comando opcional har el trabajo:
cd /usr/share/info
rm dir
for f in *
do install-info $f dir 2>/dev/null
done
141
Linux From Scratch - Versin 6.0
6.34.2. Contenido de Texinfo
Programas instalados: info, infokey, install-info, makeinfo, texi2dvi y texindex
Descripciones cortas
info
Lee documentos Info. Los documentos Info son como las pginas de manual, pero
tienden a ser ms profundos que una simple explicacin de las opciones de un
programa. Por ejemplo, compara man tar con info tar.
infokey
Compila un fichero fuente que contiene opciones de Info en un formato binario.
install-info
Se usa para instalar ficheros Info y actualizar las entradas en el fichero ndice de Info.
makeinfo
Convierte documentos fuente Texinfo a ficheros Info, texto plano, o HTML.
texi2dvi
Formatea un documento Texinfo, convirtindolo en un fichero independiente del
dispositivo que puede ser impreso.
texindex
Se usa para ordenar ficheros ndice de Texinfo.
142
Linux From Scratch - Versin 6.0
6.35. Autoconf-2.59
El paquete Autoconf contiene programas para generar guiones del intrprete de comandos que pueden
configurar automticamente el cdigo fuente.
Tiempo estimado de construccin: 0.5 SBU
Espacio requerido en disco: 7.7 MB
La instalacin de Autoconf depende de: Bash, Coreutils, Diffutils, Grep, M4, Make, Perl y Sed
6.35.1. Instalacin de Autoconf
Prepara Autoconf para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check. Esto tarda bastante tiempo, unos 2 SBUs
Instala el paquete:
make install
6.35.2. Contenido de Autoconf
Programas instalados: autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate e ifnames
Descripciones cortas
autoconf
Genera guiones del intrprete de comandos que automticamente configuran paquetes de
cdigo fuente, adaptndolos a muchas clases de sistemas tipo UNIX. Los guiones de
configuracin que genera son independientes, para ejecutarlos no es necesario el programa
autoconf.
autoheader
Es una herramienta para crear plantillas de declaraciones #define de C, utilizadas por el
guin configure.
autom4te
Es un envoltorio para el procesador de macros M4.
autoreconf
Ejecuta automticamente, y en el orden correcto, autoconf, autoheader, aclocal,
automake, gettextize y libtoolize para ahorrar tiempo cuando se hacen cambios en las
plantillas de autoconf y automake.
autoscan
Ayuda a crear un fichero configure.in para un paquete de software. Analiza los
ficheros fuente en un rbol de directorios buscando problemas comunes de portabilidad y
crea un fichero configure.scan que sirve como versin preliminar del fichero
configure.in para dicho paquete.
autoupdate
Modifica un fichero configure.in que todava llame a las macros de autoconf por sus
antiguos nombres para que utilice los nombre de macro actuales.
143
Linux From Scratch - Versin 6.0
ifnames
144
Ayuda a escribir ficheros configure.in para un paquete de software. Escribe los
identificadores que el paquete usa en condicionales del preprocesador de C. Si un paquete
est preparado para tener cierta portabilidad, este programa ayuda a determinar lo que
configure necesita comprobar. Puede corregir ciertas carencias en un fichero
configure.in generado por autoscan.
Linux From Scratch - Versin 6.0
6.36. Automake-1.9.1
El paquete Automake contiene programas para generar Makefiles que se utilizan con Autoconf.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 6.8 MB
La instalacin de Automake depende de: Autoconf, Bash, Coreutils, Diffutils, Grep, M4, Make, Perl y
Sed
6.36.1. Instalacin de Automake
Prepara Automake para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check. Esto tarda bastante tiempo, unos 5 SBUs.
Instala el paquete:
make install
6.36.2. Contenido de Automake
Programas instalados: acinstall, aclocal, aclocal-1.9.1, automake, automake-1.9.1, compile, config.guess,
config.sub, depcomp, elisp-comp, install-sh, mdate-sh, missing, mkinstalldirs, py-compile, symlink-tree e
ylwrap
Descripciones cortas
acinstall
Guin que instala ficheros M4 con estilo aclocal.
aclocal
Genera ficheros aclocal.m4
configure.in.
aclocal-1.9.1
Enlace duro a aclocal.
automake
Herramienta para generar automticamente los Makefile.in a partir de ficheros
Makefile.am. Para crear todos los ficheros Makefile.in para un paquete,
ejecuta este programa en el directorio de ms alto nivel. Mediante la exploracin de
los configure.in automticamente encuentra cada Makefile.am apropiado y
genera el correspondiente Makefile.in.
automake-1.9.1
Enlace duro a automake.
compile
Un envoltorio (wrapper) para compiladores.
config.guess
Guin que intenta averiguar el triplete cannico para la construccin, anfitrin o
arquitectura destino dada.
config.sub
Guin con subrutinas para la validacin de configuraciones.
basados
en
el
contenido
de
ficheros
145
Linux From Scratch - Versin 6.0
depcomp
Guin para compilar un programa que, aparte de la salida deseada, tambin genera
informacin sobre las dependencias.
elisp-comp
Compila en octetos cdigo Lisp de Emacs.
install-sh
Guin que instala un programa, guin o fichero de datos.
mdate-sh
Guin que imprime la fecha de modificacin de un fichero o directorio.
missing
Guin que acta como sustituto comn de programas GNU no encontrados durante
una instalacin.
mkinstalldirs
Guin que genera una rbol de directorios.
py-compile
Compila un programa Python.
symlink-tree
Guin para crear un rbol de enlaces simblicos de un rbol de directorios.
ylwrap
Un envoltorio para lex y yacc.
146
Linux From Scratch - Versin 6.0
6.37. Bash-3.0
El paquete Bash contiene la Bourne-Again SHell.
Tiempo estimado de construccin: 1.2 SBU
Espacio requerido en disco: 27 MB
La instalacin de Bash depende de: Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurse
y Sed
6.37.1. Instalacin de Bash
El siguiente parche slo es necesario si no instalaste Readline. Este parche corrige un problema por el que en
ocasiones Bash limita a 33 los caractres de una lnea antes de saltar a la siguiente. Si instalaste Readline
siguiendo las instrucciones, este parche no es necesario, pues el parche aplicado a Readline ya resuelve este
problema:
patch -Np1 -i ../bash-3.0-display_wrap-1.patch
Prepara Bash para su compilacin:
./configure --prefix=/usr --bindir=/bin \
--without-bash-malloc --with-installed-readline
Significado de la opcin de configure:
--with-installed-readline
Esta opcin le indica a Bash que utilice la librera readline que se encuentra en el sistema, en vez de
utilizar su propia versin de Readline.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make tests.
Instala el paquete:
make install
Lanza el programa bash recin compilado (sustituyendo al que estabas ejecutando hasta ahora):
exec /bin/bash --login +h
Nota
Los parmetros utilizados hacen del proceso bash un intrprete interactivo de ingreso y
contina desactivando su tabla interna de rutas para que los nuevos programas sean encontrados
a medida que estn disponibles.
147
Linux From Scratch - Versin 6.0
6.37.2. Contenido de Bash
Programas instalados: bash, bashbug y sh (enlace a bash)
Descripciones cortas
bash
Un intrprete de comandos ampliamente usado. Realiza muchos tipos de expansiones y
sustituciones en una lnea de comandos dada antes de ejecutarla, lo que hace de este intrprete
una herramienta poderosa.
bashbug
Un guin que ayuda al usuario en la composicin y envo de informes de errores relacionados
con bash, en un formato estndar.
sh
Enlace simblico al programa bash. Cuando se invoca como sh, bash intenta imitar el
comportamiento de las versiones antiguas de sh lo mejor posible, mientras que tambin cumple
los estndares POSIX.
148
Linux From Scratch - Versin 6.0
6.38. File-4.10
El paquete File contiene una utilidad para determinar el tipo de los ficheros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 6.3 MB
La instalacin de File depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed y
Zlib
6.38.1. Instalacin de File
Prepara File para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Instala el paquete:
make install
6.38.2. Contenido de File
Programa instalado: file
Libreras instaladas: libmagic.[a,so]
Descripciones cortas
file
Intenta clasificar los ficheros indicados. Lo hace realizando varias pruebas: pruebas de
sistemas de ficheros, pruebas de nmeros mgicos y pruebas de lenguajes.
libmagic Contiene rutinas para reconocimiento de nmeros mgicos, usados por el programa file.
149
Linux From Scratch - Versin 6.0
6.39. Libtool-1.5.8
El paquete Libtool contiene el guin de GNU para soporte genrico de libreras. Oculta la complejidad del
uso de libreras compartidas tras una interfaz consistente y portable.
Tiempo estimado de construccin: 1.5 SBU
Espacio requerido en disco: 20 MB
La instalacin de Libtool depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make y Sed
6.39.1. Instalacin de Libtool
Prepara Libtool para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.39.2. Contenido de Libtool
Programas instalados: libtool y libtoolize
Libreras instaladas: libltdl.[a,so]
Descripciones cortas
libtool
Proporciona servicios de soporte generalizados para la compilacin de libreras.
libtoolize
Proporciona una forma estndar de aadir soporte para libtool a un paquete.
libltdl
Oculta las diversas dificultades para abrir la carga dinmica de las libreras.
150
Linux From Scratch - Versin 6.0
6.40. Bzip2-1.0.2
El paquete Bzip2 contiene programas para comprimir y descomprimir ficheros. En ficheros de texto
consigue una mejor compresin que el tradicional gzip.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 3.0 MB
La instalacin de Bzip2 depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc y Make
6.40.1. Instalacin de Bzip2
Prepara Bzip2 para su compilacin:
make -f Makefile-libbz2_so
make clean
La opcin -f provocar que Bzip2 sea construido usando un fichero Makefile diferente, en este caso el
fichero Makefile-libbz2_so, el cual crea una librera dinmica libbz2.so y enlaza las utilidades de
Bzip2 con ella.
Compila el paquete:
make
Si reinstalas Bzip2, primero tendrs que hacer un rm -f /usr/bin/bz*, en caso contrario el siguiente
make install fallar.
Instala los programas:
make install
Instala el binario dinmico bzip2 en el directorio /bin, crea algunos enlaces simblicos necesarios y haz
limpieza:
cp
cp
ln
rm
ln
ln
bzip2-shared /bin/bzip2
-a libbz2.so* /lib
-s ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
/usr/bin/{bunzip2,bzcat,bzip2}
-s bzip2 /bin/bunzip2
-s bzip2 /bin/bzcat
6.40.2. Contenido de Bzip2
Programas instalados: bunzip2 (enlace a bzip2), bzcat (enlace a bzip2), bzcmp, bzdiff, bzegrep, bzfgrep,
bzgrep, bzip2, bzip2recover, bzless y bzmore
Libreras instaladas: libbz2.a, libbz2.so (enlace a libbz2.so.1.0), libbz2.so.1.0 (enlace a libbz2.so.1.0.2) y
libbz2.so.1.0.2
Descripciones cortas
bunzip2
Descomprime ficheros que han sido comprimidos con bzip2.
bzcat
Descomprime hacia la salida estndar.
bzcmp
Ejecuta cmp sobre ficheros comprimidos con bzip2.
151
Linux From Scratch - Versin 6.0
bzdiff
Ejecuta diff sobre ficheros comprimidos con bzip2.
bzgrep
Ejecuta grep sobre ficheros comprimidos con bzip2.
bzegrep
Ejecuta egrep sobre ficheros comprimidos con bzip2.
bzfgrep
Ejecuta fgrep sobre ficheros comprimidos con bzip2.
bzip2
Comprime ficheros usando el algoritmo de compresin de texto por ordenacin de
bloques Burrows-Wheeler con codificacin Huffman. La compresin es, en general,
considerablemente superior a la obtenida por otros compresores ms convencionales
basados en el algoritmo Lempel-Ziv, como gzip.
bzip2recover
Intenta recuperar datos de ficheros comprimidos daados.
bzless
Ejecuta less sobre ficheros comprimidos con bzip2.
bzmore
Ejecuta more sobre ficheros comprimidos con bzip2.
libbz2
La librera que implementa la compresin sin prdidas por ordenacin de bloques,
usando el algoritmo de Burrows-Wheeler.
152
Linux From Scratch - Versin 6.0
6.41. Diffutils-2.8.1
El paquete Diffutils contiene programas que muestran las diferencias entre ficheros o directorios.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 7.5 MB
La instalacin de Diffutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make y Sed
6.41.1. Instalacin de Diffutils
Prepara Diffutils para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make install
6.41.2. Contenido de Diffutils
Programas instalados: cmp, diff, diff3 y sdiff
Descripciones cortas
cmp
Compara dos ficheros e informa en dnde o en qu bytes difieren.
diff
Compara dos ficheros o directorios e informa qu lneas de los ficheros difieren.
diff3
Compara tres ficheros lnea a lnea.
sdiff
Mezcla dos ficheros y muestra los resultados interactivamente.
153
Linux From Scratch - Versin 6.0
6.42. Kbd-1.12
El paquete Kbd contiene ficheros de mapas de teclado y utilidades para el teclado.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 12 MB
La instalacin de Kbd depende de: Bash, Binutils, Bison, Coreutils, Diffutils, Flex, GCC, Gettext, Glibc,
Grep, Gzip, M4, Make y Sed
6.42.1. Instalacin de Kbd
Prepara Kbd para su compilacin:
./configure
Compila el paquete:
make
Instala el paquete:
make install
6.42.2. Contenido de Kbd
Programas instalados: chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, getunimap, kbd_mode, kbdrate,
loadkeys, loadunimap, mapscrn, openvt, psfaddtable (enlace a psfxtable), psfgettable (enlace a psfxtable),
psfstriptable (enlace a psfxtable), psfxtable, resizecons, setfont, setkeycodes, setleds, setlogcons,
setmetamode, setvesablank, showconsolefont, showkey, unicode_start y unicode_stop
Descripciones cortas
chvt
Cambia la terminal virtual que aparece en primer plano.
deallocvt
Desasigna las terminales virtuales no usadas.
dumpkeys
Vuelca las tablas de traduccin del teclado.
fgconsole
Muestra el nmero del terminal virtual activo.
getkeycodes
Muestra la tabla de correspondencias de cdigo de exploracin (scan code) a
cdigo de teclas del ncleo.
getunimap
Muestra el mapa unicode actualmente usado.
kbd_mode
Muestra o establece el modo del teclado.
kbdrate
Establece la repeticin y retardo del teclado.
loadkeys
Carga las tablas de traduccin del teclado.
loadunimap
Carga la tabla de correspondencia de unicode a fuente del ncleo.
mapscrn
Un programa obsoleto que carga una tabla de correspondencia de caracteres de
salida, definida por el usuario, en el controlador de la consola. Esto lo hace ahora
setfont.
154
Linux From Scratch - Versin 6.0
openvt
Comienza un programa en un nuevo terminal virtual (VT).
psf*
Son un grupo de herramientas para manejar tablas de caracteres Unicode para
fuentes de consola.
resizecons
Cambia la idea del ncleo sobre el tamao de la consola.
setfont
Permite cambiar las fuentes EGA y VGA de la consola.
setkeycodes
Carga las entradas de la tabla de correspondencia de cdigo de exploracin (scan
code) a cdigo de teclas del ncleo. Es ltil si el teclado tiene teclas inusuales.
setleds
Establece los LEDs y las opciones del teclado. Mucha gente encuentra til tener el
bloqueo numrico (Num Lock) activado por defecto.
setlogcons
Enva los mensajes del ncleo a la consola.
setmetamode
Define cmo se manejan las teclas meta del teclado.
setvesablank
Permite afinar el salvapantallas incorporado en el hardware (una pantalla en
blanco).
showconsolefont
Muestra la fuente de pantalla EGA/VGA actual de la consola.
showkey
Muestra los cdigos de exploracin, cdigos de tecla y cdigos ASCII de las teclas
presionadas en el teclado.
unicode_start
Pone el teclado y la consola en modo UNICODE. Nunca uses esto en LFS, pues las
aplicaciones no estn configuradas para soportar UNICODE.
unicode_stop
Revierte el teclado y la consola del modo UNICODE.
155
Linux From Scratch - Versin 6.0
6.43. E2fsprogs-1.35
El paquete E2fsprogs contiene las utilidades para manejar el sistema de ficheros ext2. Tambin soporta los
sistemas de ficheros ext3 con registro de transacciones.
Tiempo estimado de construccin: 0.6 SBU
Espacio requerido en disco: 4.9 MB
La instalacin de E2fsprogs depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Glibc,
Grep, Make, Sed y Texinfo
6.43.1. Instalacin de E2fsprogs
Se recomienda construir E2fsprogs en un subdirectorio del rbol de las fuentes:
mkdir build
cd build
Prepara E2fsprogs para su compilacin:
../configure --prefix=/usr --with-root-prefix="" \
--enable-elf-shlibs --disable-evms
Significado de las opciones de configure:
--with-root-prefix=""
Ciertos programas (como el programa e2fsck) se consideran esenciales. Cuando, por ejemplo, /usr no
est montado, estos programas esenciales deben estar disponibles. Pertenecen a directorios como /lib y
/sbin. Si no se le pasase esta opcin al configure de E2fsprogs, los programas se instalaran en el
directorio /usr, que no es donde deberan estar.
--enable-elf-shlibs
Esto crea las libreras compartidas utilizadas por algunos de los programas de este paquete.
--disable-evms
Esto desactiva la construccin del mdulo para el Enterprise Volume Management System (EVMS,
Sistema Empresarial de Manejo de Volmenes). Este mdulo no est actualizado a la ltima intefaz
interna de EVMS, y EVMS no se instala como parte del sistema base LFS. Para ms informacin mira la
pgina web de EVMS en http://evms.sourceforge.net/.
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala la mayor parte del paquete:
make install
Instala las libreras compartidas:
make install-libs
6.43.2. Contenido de E2fsprogs
156
Linux From Scratch - Versin 6.0
Programas instalados: badblocks, blkid, chattr, compile_et, debugfs, dumpe2fs, e2fsck, e2image, e2label,
findfs, fsck, fsck.ext2, fsck.ext3, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mklost+found,
resize2fs, tune2fs y uuidgen.
Libreras instaladas: libblkid.[a,so], libcom_err.[a,so], libe2p.[a,so], libext2fs.[a,so], libss.[a,so] y
libuuid.[a,so]
Descripciones cortas
badblocks
Busca bloques daados en un dispositivo (normalmente una particin de disco).
blkid
Una utilidad de lnea de comandos para localizar y mostrar atributos de dispositivos de
bloque.
chattr
Cambia los atributos de los ficheros en un sistema de ficheros ext2 y tambin en
sistemas de ficheros ext3, la versin con registro de transacciones del sistema de
ficheros ext2.
compile_et
Un compilador de tablas de error. Convierte una tabla de cdigos de error y mensajes en
un fichero fuente C apropiado para usar con la librera com_err.
debugfs
Un depurador de sistemas de ficheros. Puede usarse para examinar y cambiar el estado
de un sistema de ficheros ext2.
dumpe2fs
Muestra la informacin del superbloque y de los grupos de bloques del sistema de
ficheros presente en un determinado dispositivo.
e2fsck
Se usa para chequear, y opcionalmente reparar, sistemas de ficheros ext2 y tambin
ext3.
e2image
Se usa para salvar informacin crtica de un sistema de ficheros ext2 en un fichero.
e2label
Muestra o cambia la etiqueta de un sistema de ficheros ext2 situado en el dispositivo
especificado.
findfs
Encuentra un sistema de ficheros por su etiqueta o UUID (Identificador Universal
nico).
fsck
Se usa para chequear, y opcionalmente reparar, un sistema de ficheros. Por defecto
comprueba los sistemas de ficheros listados en /etc/fstab.
fsck.ext2
Por defecto comprueba sistema de ficheros ext2.
fsck.ext3
Por defecto comprueba sistemas de ficheros ext3.
logsave
Salva la salida de un comando en un fichero de registro.
lsattr
Muestra los atributos de un fichero en un sistema de ficheros ext2.
mk_cmds
Convierte una tabla de nombres de comandos y mensajes de ayuda en un fichero fuente
C preparado para usarlo con la librera del subsistema libss.
mke2fs
Se usa para crear sistemas de ficheros ext2 en un dispositivo dado.
mkfs.ext2
Por defecto crea un sistema de ficheros ext2.
mkfs.ext3
Por defecto crea un sistema de ficheros ext3.
157
Linux From Scratch - Versin 6.0
mklost+found
Se usa para crear un directorio lost+found en un sistema de ficheros ext2. Reserva
bloques de disco para este directorio facilitando la tarea de e2fsck.
resize2fs
Se usa para redimensionar sistemas de ficheros ext2.
tune2fs
Ajusta los parmetros de un sistema de ficheros ext2.
uuidgen
Crea un nuevo UUID. Cada nuevo UUID puede considerarse razonablemente nico por
muchos UUID que se hayan creado en el sistema local o en otros sistemas en el pasado
o en el futuro.
libblkid
Contiene rutinas para la identificacin de dispositivos y extraccin de marcas.
libcom_err
Rutina para mostrar errores comunes.
libe2p
Usada por dumpe2fs, chattr y lsattr.
libext2fs
Contiene rutinas para permitir a los programas de nivel de usuario manipular un sistema
de ficheros ext2.
libss
Usada por debugfs.
libuuid
Contiene rutinas para generar identificadores nicos para objetos que pueden estar
accesibles ms all del sistema local.
158
Linux From Scratch - Versin 6.0
6.44. Grep-2.5.1
El paquete Grep contiene programas para buscar dentro de ficheros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 5.8 MB
La instalacin de Grep depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Make, Sed y
Texinfo
6.44.1. Instalacin de Grep
Prepara Grep para su compilacin:
./configure --prefix=/usr --bindir=/bin --with-included-regex
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.44.2. Contenido de Grep
Programas instalados: egrep (enlace a grep), fgrep (enlace a grep) y grep
Descripciones cortas
egrep
Muestra las lneas que coincidan con una expresin regular extendida.
fgrep
Muestra las lneas que coincidan con una lista de cadenas fijas.
grep
Muestra las lneas que coincidan con una expresin regular bsica.
159
Linux From Scratch - Versin 6.0
6.45. Grub-0.95
El paquete Grub contiene el GRand Unified Bootloader (Gran Gestor de Arranque Unificado).
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 10 MB
La instalacin de Grub depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses
y Sed
6.45.1. Instalacin de Grub
Se sabe que este programa se comporta mal si se cambian sus parmetros de optimizacin (incluyendo las
opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones
por defecto, como CFLAGS o CXXFLAGS, desactvala cuando construyas Grub.
Prepara Grub para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Advierte que los resultados de las pruebas mostrarn siempre el error ufs2_stage1_5 is too big. Se debe a
un problema del compilador, pero puede ignorarse a menos que pienses arrancar desde una particin UFS.
Dichas particiones normalmente slo se utilizan en estaciones de trabajo Sun.
Instala el paquete:
make install
mkdir /boot/grub
cp /usr/share/grub/i386-pc/stage{1,2} /boot/grub
Sustituye i386-pc por el directorio apropiado para tu hardware.
El directorio i386-pc contiene tambin una serie de ficheros *stage1_5 para diferentes sistemas de
ficheros. Mira los disponibles y copia el apropiado al directorio /boot/grub. La mayora copiareis el
fichero e2fs_stage1_5 y/o reiserfs_stage1_5.
6.45.2. Contenido de Grub
Programas instalados: grub, grub-install, grub-md5-crypt, grub-terminfo y mbchk
Descripciones cortas
grub
El intrprete de comandos del GRand Unified Bootloader (Gran Gestor de Arranque
Unificado).
grub-install
Instala GRUB en el dispositivo indicado.
grub-md5-crypt
Encripta una contrasea en formato MD5.
160
Linux From Scratch - Versin 6.0
grub-terminfo
Genera un comando terminfo a partir de un nombre terminfo. Puede utilizarse si
tienes un terminal poco comn.
mbchk
Comprueba el formato de un ncleo multiarranque.
161
Linux From Scratch - Versin 6.0
6.46. Gzip-1.3.5
El paquete Gzip contiene programas para comprimir y descomprimir ficheros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 2.6 MB
La instalacin de Gzip depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make y Sed
6.46.1. Instalacin de Gzip
Prepara Gzip para su compilacin:
./configure --prefix=/usr
El guin gzexe guarda en su cdigo la localizacin del binario gzip. Como luego vamos a cambiar la
ubicacin del binario, el siguiente comando asegura que la nueva ubicacin se guarde dentro del guin.
sed -i 's@"BINDIR"@/bin@g' gzexe.in
Compila el paquete:
make
Instala el paquete:
make install
Mueve los programas al directorio /bin:
mv
rm
ln
ln
ln
/usr/bin/gzip /bin
/usr/bin/{gunzip,zcat}
-s gzip /bin/gunzip
-s gzip /bin/zcat
-s gunzip /bin/uncompress
6.46.2. Contenido de Gzip
Programas instalados: gunzip (enlace a gzip), gzexe, gzip, uncompress (enlace a gunzip), zcat (enlace a
gzip), zcmp, zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore y znew
Descripciones cortas
gunzip
Descomprime ficheros que hayan sido comprimidos con gzip.
gzexe
Crea ficheros ejecutables autodescomprimibles.
gzip
Comprime los ficheros indicados usando codificacin Lempel-Ziv (LZ77).
uncompress
Descomprime ficheros comprimidos.
zcat
Descomprime en la salida estndar los ficheros indicados comprimidos con gzip.
zcmp
Ejecuta cmp sobre ficheros comprimidos.
zdiff
Ejecuta diff sobre ficheros comprimidos.
zegrep
Ejecuta egrep sobre ficheros comprimidos.
162
Linux From Scratch - Versin 6.0
zfgrep
Ejecuta fgrep sobre ficheros comprimidos.
zforce
Fuerza la extensin .gz en todos los ficheros comprimidos para que gzip no los comprima
dos veces. Esto puede ser til para ficheros con el nombre truncado despus de una
transferencia de ficheros.
zgrep
Ejecuta grep sobre ficheros comprimidos.
zless
Ejecuta less sobre ficheros comprimidos.
zmore
Ejecuta more sobre ficheros comprimidos.
znew
Recomprime ficheros del formato de compress al formato de gzip, o sea, de .Z a .gz.
163
Linux From Scratch - Versin 6.0
6.47. Man-1.5o
El paquete Man contiene programas para encontrar y visualizar pginas de manual.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 1.9MB
La instalacin de Man depende de: Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make y Sed
6.47.1. Instalacin de Man
Haremos tres ajustes a las fuentes de Man.
El primero es un parche que permite que Man funcione mejor con las versiones recientes de Groff. En
concreto, las pginas de manual se mostrarn ahora usando el ancho total del terminal, en vez de estar
limitado a 80 caracteres:
patch -Np1 -i ../man-1.5o-80cols-1.patch
El segundo es una sustitucin sed para aadir el modificador -R a la variable PAGER para que las secuencias
de escape puedan ser manejadas correctamente por Less:
sed -i 's@-is@&R@g' configure
El tercero es tambin una sustitucin sed para comentar la lnea MANPATH /usr/man del fichero
man.conf y prevenir resultados duplicados al usar programas como whatis:
sed -i 's@MANPATH./usr/man@#&@g' src/man.conf.in
Prepara Man para su compilacin:
./configure -confdir=/etc
Significado de la opcin de configure:
-confdir=/etc
Esto le indica al programa man que busque el fichero de configuracin man.conf en el directorio
/etc.
Compila el paquete:
make
Instala el paquete:
make install
Nota
Para desactivar las secuencias de escape SGR, edita el fichero man.conf y aade el argumento
-c a la variable de entorno NROFF.
164
Linux From Scratch - Versin 6.0
Si el conjunto de caractres utilizados es de 8 bits, busca la lnea que comienza con NROFF en
/etc/man.conf y verifica que es similar a esta:
NROFF
/usr/bin/nroff -Tlatin1 -mandoc
Advierte que latin1 debe usarse aunque no sea el conjunto de caracteres de tu locale. El motivo es que,
segn la especificacin, groff no sabe cmo escribir caracteres ajenos al ISO 8859-1 sin ciertos cdigos de
escape extraos. Cuando se formatean pginas de manual, groff piensa que estn codificadas en ISO 8859-1
y la opcin -Tlatin1 le dice a groff que utilice la msma codificacin para la salida. Puesto que groff no
recodifica los caractres de entrada, el formateado resultante tiene en realidad la misma codificacin que la
entrada, y por tanto es usable como entrada para un visualizador.
Esto no soluciona el problema de que el programa man2dvi no funciona con las pginas de manual
traducidas que no estn en ISO 8859-1. Igualmente, no funciona con conjuntos de caracteres multibyte. El
primer problema no tiene solucin por ahora. El segundo no nos afecta pues la instalacin de LFS no incluye
soporte para conjuntos de caracteres multibyte.
Informacin adicional sobre la compresin de pginas de manual e info se puede encontrar en el libro BLFS
en http://www.lfs-es.com/blfs-es-CVS/postlfs/compressdoc.html (el original en ingls se encuentra en
http://www.linuxfromscratch.org/blfs/view/stable/postlfs/compressdoc.html).
6.47.2. Contenido de Man
Programas instalados: apropos, makewhatis, man, man2dvi, man2html y whatis
Descripciones cortas
apropos
Busca una cadena en la base de datos whatis y muestra las descripciones cortas de los
comandos del sistema que contengan dicha cadena.
makewhatis
Construye la base de datos whatis. Lee todas las pginas de manual encontradas en las
rutas "manpath" y por cada pgina escribe el nombre de la pgina y una descripcin corta
en la base de datos whatis.
man
Formatea y muestra las pginas de manual.
man2dvi
Convierte una pgina de manual a formato dvi.
man2html
Convierte una pgina de manual a formato HTML.
whatis
Busca palabras clave en la base de datos whatis y muestra las descripciones cortas de los
comandos del sistema que contengan la palabra clave dada como una palabra completa.
165
Linux From Scratch - Versin 6.0
6.48. Make-3.80
El paquete Make contiene un programa para compilar paquetes grandes.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 8.8 MB
La instalacin de Make depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep y Sed
6.48.1. Instalacin de Make
Prepara Make para su compilacin:
./configure --prefix=/usr
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.48.2. Contenido de Make
Programa instalado: make
Descripcin corta
make
166
Determina automticamente qu partes de un paquete grande necesitan ser recompiladas y lanza los
comandos para hacerlo.
Linux From Scratch - Versin 6.0
6.49. Module-Init-Tools-3.0
El paquete Module-Init-Tools contiene programas para manejar mdulos del ncleo en ncleos Linux con
versin mayor o igual a 2.5.47.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 650 KB
La instalacin de Module-Init-Tools depende de: Bash, Binutils, Bison, Coreutils, Diffutils, Flex, GCC,
Glibc, Grep, M4, Make y Sed
6.49.1. Instalacin de Module-Init-Tools
Prepara Module-Init-Tools para su compilacin:
./configure --prefix="" --enable-zlib
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.49.2. Contenido de Module-Init-Tools
Programas instalados: depmod, genksyms, insmod, insmod_ksymoops_clean, kallsyms (enlace a insmod),
kernelversion, ksyms (enlace a insmod), lsmod (enlace a insmod), modinfo, modprobe (enlace a insmod) y
rmmod (enlace a insmod)
Descripciones cortas
depmod
Crea un fichero de dependencias basndose en los smbolos que encuentra
en el conjunto existente de mdulos del ncleo. A este fichero lo usa
modprobe para cargar automticamente los mdulos necesarios.
genksyms
Genera informacin sobre la versin de los smbolos.
insmod
Instala un mdulo dentro del ncleo en ejecucin.
insmod_ksymoops_clean
Borra los smbolos del ncleo (ksyms) guardados y los mdulos a los que
no se ha accedido en los ltimos 2 das.
kallsyms
Extrae todos los smbolos del ncleo para la depuracin.
kernelversion
Informa sobre la versin mayor del ncleo en ejecucin.
ksyms
Muestra los smbolos exportados del ncleo.
lsmod
Muestra todos los mdulos cargados.
modinfo
Examina un fichero objeto asociado con un mdulo del ncleo y muestra
la informacin que pueda encontrar.
modprobe
Usa un fichero de dependencias, creado por depmod, para cargar
167
Linux From Scratch - Versin 6.0
automticamente los mdulos necesarios.
rmmod
168
Descarga mdulos del ncleo en ejecucin.
Linux From Scratch - Versin 6.0
6.50. Patch-2.5.4
El paquete Patch contiene un programa para modificar ficheros.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 1.9 MB
La instalacin de Patch depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make y Sed
6.50.1. Instalacin de Patch
Prepara Patch para su compilacin. La opcin del preprocesador -D_GNU_SOURCE slo es necesaria en la
plataforma PowerPC, en otras plataformas puedes ignorarla:
CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/usr
Compila el paquete:
make
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make install
6.50.2. Contenido de Patch
Programa instalado: patch
Descripcin corta
patch
Modifica ficheros segn lo indicado en un fichero parche. Normalmente un parche es una lista de
diferencias creada por el programa diff. Al aplicar estas diferencias a los ficheros originales, patch
crea las versiones parcheadas.
169
Linux From Scratch - Versin 6.0
6.51. Procps-3.2.3
El paquete Procps contiene programas para monitorizar procesos.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 6.2 MB
La instalacin de Procps depende de: Bash, Binutils, Coreutils, GCC, Glibc, Make y Ncurses
6.51.1. Instalacin de Procps
Compila el paquete:
make
Instala el paquete:
make install
6.51.2. Contenido de Procps
Programas instalados: free, kill, pgrep, pkill, pmap, ps, skill, snice, sysctl, tload, top, uptime, vmstat, w y
watch
Librera instalada: libproc.so
Descripciones cortas
free
Muestra la cantidad total de memoria libre y usada en el sistema, tanto fsica como de
intercambio (swap).
kill
Enva seales a los procesos.
pgrep
Visualiza procesos basndose en su nombre u otros atributos
pkill
Enva seales a procesos basndose en su nombre u otros atributos
pmap
Muestra el mapa de memoria del proceso indicado.
ps
Facilita una instantnea de los procesos actuales.
skill
Enva seales a procesos que coincidan con un criterio dado.
snice
Cambia la prioridad de planificacin de los procesos que coincidan con un criterio dado.
sysctl
Modifica los parmetros del ncleo en tiempo de ejecucin.
tload
Imprime un grfico de la carga promedio actual del sistema.
top
Muestra los procesos ms activos en CPU. Proporciona una vista dinmica de la actividad del
procesador en tiempo real.
uptime
Muestra cunto tiempo hace que el sistema est en ejecucin, cuntos usuarios estn conectados
y la carga media del sistema.
vmstat
Muestra estadsticas de la memoria virtual, dando informacin sobre los procesos, memoria,
paginacin, entrada/salida por bloques y actividad del procesador.
Muestra qu usuarios hay actualmente en el sistema, en qu terminal y desde cundo.
170
Linux From Scratch - Versin 6.0
watch
Ejecuta un comando repetidamente, mostrando su primera salida a pantalla completa. Esto te
permite observar los cambios en la salida al pasar el tiempo.
libproc Contiene funciones usadas por la mayora de los programas de este paquete.
171
Linux From Scratch - Versin 6.0
6.52. Psmisc-21.5
El paquete Psmisc contiene programas para mostrar informacin sobre procesos.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 2.2 MB
La instalacin de Psmisc depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Ncurses y Sed
6.52.1. Instalacin de Psmisc
Prepara Psmisc para su compilacin:
./configure --prefix=/usr --exec-prefix=""
Significado de la opcin de configure:
--exec-prefix=""
Esto hace que los binarios se instalen en /bin en lugar de /usr/bin. Como los programas de Psmisc
se usan a menudo en los guiones de inicio, deben estar tambin disponibles cuando la particin /usr no
est montada.
Compila el paquete:
make
Instala el paquete:
make install
No hay razn para que los programas pstree y pstree.x11 residan en /bin. Por tanto los moveremos a
/usr/bin. Igualmente, no es necesario que pstree.x11 sea un programa independiente, as que lo
convertiremos en un enlace simblico a pstree:
mv /bin/pstree* /usr/bin
ln -sf pstree /usr/bin/pstree.x11
El programa pidof de Psmisc no se instala por defecto. Normalmente esto no es ningn problema, ya que
ms tarde instalaremos el paquete Sysvinit, el cual nos facilita una versin mejor del programa pidof. Pero si
no vas a usar Sysvinit, debes completar la instalacin de Psmisc creando el siguiente enlace simblico:
ln -s killall /bin/pidof
6.52.2. Contenido de Psmisc
Programas instalados: fuser, killall, pstree y pstree.x11 (enlace a pstree)
Descripciones cortas
fuser
172
Muestra los nmeros de identificacin (PID) de los procesos que usan los ficheros o
sistemas de ficheros especificados.
Linux From Scratch - Versin 6.0
killall
Mata procesos por su nombre. Enva una seal a todos los procesos que ejecutan alguno de
los comandos especificados.
pstree
Muestra los procesos en ejecucin en forma de rbol.
pstree.x11
Es igual que pstree excepto que espera confirmacin antes de salir.
173
Linux From Scratch - Versin 6.0
6.53. Shadow-4.0.4.1
El paquete Shadow contiene programas para manejar contraseas de forma segura.
Tiempo estimado de construccin: 0.4 SBU
Espacio requerido en disco: 11 MB
La instalacin de Shadow depende de: Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc,
Grep, Make y Sed
6.53.1. Instalacin de Shadow
Prepara Shadow para su compilacin:
./configure --libdir=/usr/lib --enable-shared
Evita un problema que impide que funcione la internacionalizacin en Shadow:
echo '#define HAVE_SETLOCALE 1' >> config.h
Shadow declara incorrectamente la funcin malloc(), provocando que falle la compilacin. Corrgelo:
sed -i '/extern char/d' libmisc/xmalloc.c
Compila el paquete:
make
Instala el paquete:
make install
Shadow utiliza dos ficheros para configurar los ajustes de autenticacin para el sistema. Instala estos
ficheros de configuracin:
cp etc/{limits,login.access} /etc
En vez de usar el mtodo por defecto, crypt, utiliza el mtodo de encriptacin de contraseas MD5, que es
ms seguro y adems permite contraseas de ms de 8 caracteres. Tambin es necesario cambiar la obsoleta
localizacin /var/spool/mail, que Shadow utiliza por defecto para los buzones de los usuarios, a
/var/mail, que es la localizacin usada hoy en da. Ambas cosas pueden hacerse modificando el fichero
de configuracin correspondiente mientras lo copiamos a su destino:
cp etc/login.defs.linux /etc/login.defs
sed -i -e 's@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@' \
-e 's@/var/spool/mail@/var/mail@' /etc/login.defs
Mueve algunos enlaces mal ubicados a sus lugares correctos:
mv /bin/sg /usr/bin
mv /bin/vigr /usr/sbin
mv /usr/bin/passwd /bin
Mueve las libreras dinmicas de Shadow a un lugar ms apropiado:
mv /usr/lib/lib{shadow,misc}.so.0* /lib
174
Linux From Scratch - Versin 6.0
Como algunos paquetes esperan encontrar las libreras que acabamos de mover en /usr/lib, crea los
siguientes enlaces simblicos:
ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so
ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so
La opcin -D del programa useradd requiere el directorio /etc/default para funcionar correctamente:
mkdir /etc/default
Coreutils ya ha instalado un programa groups mejor en /usr/bin. Borra el instalado por Shadow:
rm /bin/groups
6.53.2. Configuracin de Shadow
Este paquete contiene utilidades para aadir, modificar o eliminar usuarios y grupos, establecer y cambiar
sus contraseas y otras tareas administrativas. Puedes encontrar una completa explicacin de lo que significa
password shadowing (ocultacin de contraseas) en el fichero doc/HOWTO dentro del rbol de las fuentes.
Hay una cosa que debes recordar si decides usar soporte para Shadow: los programas que necesiten verificar
contraseas (administradores de sesin, programas FTP, demonios pop3, etc) necesitarn ser compatibles
con shadow: esto es, necesitan ser capaces de trabajar con contraseas ocultas.
Para habilitar las contraseas ocultas, ejecuta el siguiente comando:
pwconv
Para habilitar las contraseas de grupo ocultas, ejecuta:
grpconv
Bajo circunstancias normales an no habrs creado ninguna contrasea. Sin embargo, si ms tarde regresas a
esta seccin para activar la ocultacin, debes restablecer cualquier contrasea actual de usuario con el
comando passwd, o cualquier contrasea de grupo con el comando gpasswd.
6.53.3. Establecer la contrasea de root
Elige una contrasea para el usuario root y establcela mediante:
passwd root
6.53.4. Contenido de Shadow
Programas instalados: chage, chfn, chpasswd, chsh, expiry, faillog, gpasswd, groupadd, groupdel,
groupmod, groups, grpck, grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers,
passwd, pwck, pwconv, pwunconv, sg (enlace a newgrp), useradd, userdel, usermod, vigr (enlace a vipw) y
vipw
Libreras instaladas: libshadow[.a,so]
Descripciones cortas
chage
Se usa para cambiar el nmero mximo de das entre cambios obligatorios de contrasea.
chfn
Se usa para cambiar el nombre completo de un usuario y otra informacin.
chpasswd
Se usa para actualizar las contraseas de un grupo de cuentas de usuario de una sola vez.
175
Linux From Scratch - Versin 6.0
chsh
Cambia el intrprete de comandos por defecto que se ejecuta cuando el usuario entra al
sistema.
expiry
Comprueba y refuerza la poltica actual de expiracin de contraseas.
faillog
Sirve para examinar el contenido del registro de ingresos fallidos al sistema, establecer un
mximo de fallos para bloquear una cuenta de usuario y reiniciar el contador de fallos.
gpasswd
Se usa para agregar y eliminar miembros y administradores a los grupos.
groupadd
Crea un nuevo grupo con el nombre especificado.
groupdel
Borra el grupo con el nombre especificado.
groupmod
Modifica el nombre o el identificador (GID) de un grupo especificado.
groups
Muestra los grupos a los que pertenece un usuario dado.
grpck
Verifica la integridad de los ficheros de grupos, /etc/group y /etc/gshadow.
grpconv
Crea o actualiza el fichero de grupos ocultos a partir de un fichero de grupos normal.
grpunconv
Actualiza /etc/group a partir de /etc/gshadow, borrando este ltimo.
lastlog
Muestra el ltimo acceso de cada usuario o de un usuario especificado.
login
Lo utiliza el sistema para permitir el ingreso de un usuario.
logoutd
Es un demonio que refuerza las restricciones de ingreso en base a horas y puertos de acceso.
mkpasswd
Genera contraseas aleatorias.
newgrp
Se usa para cambiar el identificador de grupo (GID) actual durante una sesin de acceso.
newusers
Crea o actualiza un grupo de cuentas de usuario de una sola vez.
passwd
Se utiliza para cambiar la contrasea de la cuenta de un usuario o grupo.
pwck
Verifica la integridad de los ficheros de contraseas, /etc/passwd y /etc/shadow.
pwconv
Crea o actualiza el fichero de contraseas ocultas a partir de un fichero de contraseas
normal.
pwunconv
Actualiza /etc/passwd a partir de /etc/shadow, borrando este ltimo.
sg
Ejecuta un comando dado estableciendo el GID del usuario al del grupo indicado.
su
Ejecuta un intrprete de comandos sustituyendo los identificadores de usuario y grupo.
useradd
Crea un nuevo usuario con el nombre especificado o actualiza la informacin por defecto de
un nuevo usuario.
userdel
Borra la cuenta de usuario indicada.
usermod
Modifica el nombre, identificador (UID), intrprete de comandos, grupo inicial, directorio
personal, etc, del usuario indicado.
vigr
Edita los ficheros /etc/group o /etc/gshadow.
vipw
Edita los ficheros /etc/passwd o /etc/shadow.
libshadow Contiene funciones usadas por la mayora de los programas de este paquete.
176
Linux From Scratch - Versin 6.0
6.54. Sysklogd-1.4.1
El paquete Sysklogd contiene programas para registrar los mensajes del sistema, como aquellos generados
por el ncleo cuando sucede algo inusual.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 0.5 MB
La instalacin de Sysklogd depende de: Binutils, Coreutils, GCC, Glibc y Make
6.54.1. Instalacin de Sysklogd
Sysklogd tiene problemas con los ncleos Linux de la serie 2.6. Corrgelos aplicando el siguiente parche:
patch -Np1 -i ../sysklogd-1.4.1-kernel_headers-1.patch
Tambin hay un comportamiento extrao en la lgica de manejo de seales que en ocasiones confunde al
guin de inicio sysklogd. Corrige este error aplicando otro parche:
patch -Np1 -i ../sysklogd-1.4.1-signal-1.patch
Compila el paquete:
make
Instala el paquete:
make install
6.54.2. Configuracin de Sysklogd
Crea un nuevo fichero /etc/syslog.conf ejecutando lo siguiente:
cat > /etc/syslog.conf << "EOF"
# Inicio de /etc/syslog.conf
auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *
# Fin de /etc/syslog.conf
EOF
177
Linux From Scratch - Versin 6.0
6.54.3. Contenido de Sysklogd
Programas instalados: klogd y syslogd
Descripciones cortas
klogd
Un demonio del sistema que intercepta y registra los mensajes del ncleo.
syslogd
Registra los mensajes que los programas del sistema ofrecen.
178
Linux From Scratch - Versin 6.0
6.55. Sysvinit-2.85
El paquete Sysvinit contiene programas para controlar el arranque, ejecucin y cierre del sistema.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 0.9 MB
La instalacin de Sysvinit depende de: Binutils, Coreutils, GCC, Glibc y Make
6.55.1. Instalacin de Sysvinit
Sysvinit-2.85 tiene un error de buffer overflow (desbordamiento de pila). Bajo ciertas condiciones,
modifica los valores de las variables de entorno. Corrgelo con:
patch -Np1 -i ../sysvinit-2.85-proclen-1.patch
Cuando se cambia de nivel de ejecucin (por ejemplo cuando apagamos el sistema) el programa init enva
las seales de finalizacin a aquellos procesos que l mismo inici y que no deben estar en ejecucin en el
nuevo nivel. Mientras lo hace, init muestra mensajes del tipo Sending processes the TERM signal
(Enviando la seal TERM a los procesos), que parece indicar que se est enviando dicha seal a todos los
procesos que hay en ejecucin. Para evitar esta confusin, puedes modificar las fuentes para que ese mensaje
diga en su lugar Sending processes started by init the TERM signal (Enviando la seal TERM a los
procesos iniciados por init):
sed -i 's@Sending processes@& started by init@g' \
src/init.c
Compila el paquete:
make -C src
Instala el paquete:
make -C src install
179
Linux From Scratch - Versin 6.0
6.55.2. Configuracin de Sysvinit
Crea un nuevo fichero /etc/inittab ejecutando lo siguiente:
cat > /etc/inittab << "EOF"
# Inicio de /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty
2:2345:respawn:/sbin/agetty
3:2345:respawn:/sbin/agetty
4:2345:respawn:/sbin/agetty
5:2345:respawn:/sbin/agetty
6:2345:respawn:/sbin/agetty
-I
-I
-I
-I
-I
-I
'\033(K'
'\033(K'
'\033(K'
'\033(K'
'\033(K'
'\033(K'
tty1
tty2
tty3
tty4
tty5
tty6
9600
9600
9600
9600
9600
9600
# Fin de /etc/inittab
EOF
La opcin -I '\033(K' le indica a agetty que enve al terminal esta secuencia de escape antes de hacer
nada ms. Esta secuencia de escape cambia el conjunto de caractres de la consola a uno definido por el
usuario, que puede modificarse ejecutando el programa setfont. El guin de inicio console incluido en el
paquete LFS-Bootscripts llama al programa setfont durante el arranque del sistema. Enviar esta secuencia de
escape es necesario para las personas que utilizan fuentes de pantalla que no son ISO 8859-1, pero no afecta
a los anglo-parlantes.
180
Linux From Scratch - Versin 6.0
6.55.3. Contenido de Sysvinit
Programas instalados: halt, init, killall5, last, lastb (enlace a last), mesg, pidof (enlace a killall5), poweroff
(enlace a halt), reboot (enlace a halt), runlevel, shutdown, sulogin, telinit (enlace a init), utmpdump y wall
Descripciones cortas
halt
Suele invocar a shutdown con la opcin -h, excepto cuando el sistema ya se encuentra en el
nivel de ejecucin 0, en cuyo caso le indica al ncleo que apague el sistema. Anota en
/var/log/wtmp que el sistema se va a cerrar.
init
El primer proceso que se inicia cuando el ncleo ha inicializado el hardware, el cual toma el
control sobre el arranque e inicia todos los procesos que se le han indicado.
killall5
Enva una seal a todos los procesos, excepto a los procesos de su propia sesin para que no
mate el intrprete de comandos desde el que fue llamado.
last
Muestra los ltimos usuarios conectados (y desconectados), buscando hacia atrs en el fichero
/var/log/wtmp. Tambin muestra los inicios y paradas del sistema y los cambios de nivel
de ejecucin.
lastb
Muestra los intentos fallidos de acceso al sistema, que se registran en /var/log/btmp.
mesg
Controla si otros usuarios pueden o no enviar mensajes al terminal del usuario actual.
pidof
Muestra los identificadores de proceso (PIDs) de los programas especificados.
poweroff
Le indica al ncleo que cierre el sistema y apague la mquina (ver halt).
reboot
Le indica al ncleo que reinicie el sistema (ver halt).
runlevel
Muestra los niveles de ejecucin anterior y actual tal y como figura en el ltimo registro de
nivel de ejecucin de /var/run/utmp.
shutdown
Provoca el cierre del sistema de una forma segura, enviando seales a todos los procesos y
notificando a todos los usuarios conectados.
sulogin
Permite el ingreso de root al sistema. Suele ser invocado por init cuando el sistema entra en el
modo monousuario.
telinit
Le indica a init a qu nivel de ejecucin debe cambiar.
utmpdump
Muestra el contenido de un fichero de registro de accesos dado en un formato comprensible
por el usuario.
wall
Enva un mensaje a todos los usuarios conectados.
181
Linux From Scratch - Versin 6.0
6.56. Tar-1.14
El paquete Tar contiene un programa de archivado.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 10 MB
La instalacin de Tar depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make y
Sed
6.56.1. Instalacin de Tar
Prepara Tar para su compilacin:
./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin
Compila el paquete:
make
Para comprobar los resultados, ejecuta: make check.
Instala el paquete:
make install
6.56.2. Contenido de Tar
Programas instalados: rmt y tar
Descripciones cortas
rmt
Manipula remotamente una unidad de cinta magntica mediante una comunicacin de conexin entre
procesos.
tar
Crea y extrae ficheros de un archivo, tambin conocido como paquete tar (tarball).
182
Linux From Scratch - Versin 6.0
6.57. Udev-030
El paquete Udev contiene programas para la creacin dinmica de nodos de dispositivos.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 5.2 MB
La instalacin de Udev depende de: Coreutils y Make
6.57.1. Instalacin de Udev
Compila el paquete:
make udevdir=/dev
udevdir=/dev
Esto le indica a udev en qu directorio se deben crear los nodos de dispositivos.
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make udevdir=/dev install
La configuracin por defecto de Udev no es la ideal, as que instala aqu los ficheros de configuracin:
cp ../udev-config-2.permissions \
/etc/udev/permissions.d/25-lfs.permissions
cp ../udev-config-1.rules /etc/udev/rules.d/25-lfs.rules
6.57.2. Contenido de Udev
Programas instalados: udev, udevd, udevsend, udevstart, udevinfo y udevtest
Directorio instalado: /etc/udev
Descripciones cortas
udev
Crea nodos de dispositivos en /dev o renombra interfaces de red (no en el LFS) en
respuesta a eventos hotplug.
udevd
Un demonio que reordena los eventos hotplug antes de suministrrselos a udev, para evitar
diversas condiciones raras.
udevsend
Enva eventos hotplug a udevd.
udevstart
Crea los nodos de dispositivos en /dev que se corresponden con los controladores
compilados directamente dentro del ncleo. Realiza la tarea simulando eventos hotplug
presumiblemente rechazados por el ncleo antes de la invocacin de este programa (por
ejemplo, debido a que el sistema de ficheros raz no se haba montado) y suministrando
dichos eventos hotplug sintticos a udev.
udevinfo
Permite a los usuarios consultar en la base de datos de udev informacin sobre cualquier
dispositivo que actualmente se encuentre presente en el sistema. Tambin proporciona una
forma de consultar cualquier dispositivo en el rbol sysfs para ayudar a crear reglas Udev.
udevtest
Simula una ejecucin de udev para el dispositivo indicado, mostrando el nombre del nodo
183
Linux From Scratch - Versin 6.0
que el autntico udev habra creado o (no en el LFS) el nombre de la interfaz de red
renombrada.
/etc/udev Contiene los ficheros de configuracin, de permisos de dispositivos y de reglas para la
denominacin de dispositivos de udev.
184
Linux From Scratch - Versin 6.0
6.58. Util-linux-2.12b
El paquete Util-linux contiene una miscelnea de utilidades. Entre otras hay utilidades para manejar sistemas
de ficheros, consolas, particiones y mensajes.
Tiempo estimado de construccin: 0.2 SBU
Espacio requerido en disco: 16 MB
La instalacin de Util-linux depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Ncurses, Sed y Zlib
6.58.1. Notas sobre la conformidad con el estndar FHS
El estndar FHS recomienda que usemos /var/lib/hwclock para la ubicacin del fichero adjtime,
en lugar del habitual /etc. Para hacer que hwclock sea conforme a FHS, ejecuta lo siguiente:
sed -i 's@etc/adjtime@var/lib/hwclock/adjtime@g' \
hwclock/hwclock.c
mkdir -p /var/lib/hwclock
6.58.2. Instalacin de Util-linux
GCC-3.4.1 compila mal sfdisk si se utiliza el nivel de optimizacin que tiene por defecto. El siguiente
parche corrige el problema:
patch -Np1 -i ../util-linux-2.12b-sfdisk-2.patch
Prepara Util-linux para su compilacin:
./configure
Compila el paquete:
make HAVE_KILL=yes HAVE_SLN=yes
Significado de los parmetros de make:
HAVE_KILL=yes
Esto evita que el programa kill (que ya ha sido instalado por Procps) sea construido e instalado de nuevo.
HAVE_SLN=yes
Esto evita que el programa sln (un ln enlazado estticamente, ya instalado por Glibc) se vuelva a
construir e instalar.
Este paquete no incluye un banco de pruebas.
Instala el paquete:
make HAVE_KILL=yes HAVE_SLN=yes install
185
Linux From Scratch - Versin 6.0
6.58.3. Contenido de Util-linux
Programas instalados: agetty, arch, blockdev, cal, cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel,
cytune, ddate, dmesg, elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump, hwclock, ipcrm,
ipcs, isosize, line, logger, look, losetup, mcookie, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more,
mount, namei, pg, pivot_root, ramsize (enlace a rdev), raw, rdev, readprofile, rename, renice, rev, rootflags
(enlace a rdev), script, setfdprm, setsid, setterm, sfdisk, swapdev, swapoff (enlace a swapon), swapon,
tunelp, ul, umount, vidmode (enlace a rdev), whereis y write
Descripciones cortas
agetty
Abre un puerto de terminal, espera la introduccin de un nombre de usuario e invoca al
comando login.
arch
Muestra la arquitectura de la mquina.
blockdev
Permite llamar a los controles de entrada/salida (ioctls) de los dispositivos de bloque
desde la lnea de comandos.
cal
Muestra un calendario simple.
cfdisk
Se usa para manipular la tabla de particiones del dispositivo indicado.
chkdupexe
Encuentra ejecutables duplicados.
col
Elimina avances de lnea inversos.
colcrt
Filtra la salida de nroff para terminales a los que les faltan ciertas caractersticas como el
sobrerefresco o semilneas.
colrm
Elimina las columnas indicadas.
column
Formatea un fichero a mltiples columnas.
ctrlaltdel
Establece la funcin de la combinacin de teclas Ctrl+Alt+Del para un reinicio duro o
blando.
cytune
Ajusta los parmetros de los controladores de lnea serie para tarjetas Cyclades.
ddate
Muestra la fecha Discordante, o convierte las fechas Gregorianas en fechas Discordantes.
dmesg
Muestra los mensajes de arranque del ncleo.
elvtune
Puede usarse para afinar el rendimiento y la interactividad de un dispositivo de bloque.
fdformat
Formatea un disquete a bajo nivel.
fdisk
Se usa para manipular la tabla de particiones del dispositivo indicado.
fsck.cramfs
Realiza una comprobacin de consistencia sobre el sistema de ficheros Cramfs del
dispositivo indicado
fsck.minix
Realiza una comprobacin de consistencia en sistemas de ficheros Minix.
getopt
Analiza opciones de la lnea de comandos indicada.
hexdump
Muestra un fichero en hexadecimal o en otro formato.
hwclock
Se usa para leer o ajustar el reloj del ordenador, tambin llamado RTC (Reloj en Tiempo
Real) o reloj BIOS (Sistema Bsico de Entrada/Salida).
186
Linux From Scratch - Versin 6.0
ipcrm
Elimina el recurso IPC (Comunicacin Entre Procesos) especificado.
ipcs
Facilita informacin sobre el estado IPC.
isosize
Muestra el tamao de un sistema de ficheros iso9660.
line
Copia una nica lnea.
logger
Crea entradas en el registro del sistema.
look
Muestra lneas que comienzan con una cadena dada.
losetup
Activa y controla los dispositivos de bucle (loop).
mcookie
Genera galletas mgicas (magic cookies, nmeros hexadecimales aleatorios de 128 bits)
para xauth.
mkfs
Construye un sistema de ficheros en un dispositivo (normalmente una particin del disco
duro).
mkfs.bfs
Crea un sistema de ficheros bfs de SCO (Operaciones Santa Cruz).
mkfs.cramfs
Crea un sistema de ficheros Cramfs.
mkfs.minix
Crea un sistema de ficheros Minix.
mkswap
Inicializa el dispositivo o fichero indicado para usarlo como rea de intercambio (swap).
more
Un filtro para paginar texto pantalla a pantalla.
mount
Monta el sistema de ficheros de un dispositivo dado en el directorio indicado del rbol de
ficheros del sistema.
namei
Muestra los enlaces simblicos en la ruta de nombres indicada.
pg
Muestra un fichero de texto a pantalla completa.
pivot_root
Hace que el sistema de ficheros indicado sea el raz del proceso actual.
ramsize
Se usa para establecer el tamao del disco RAM en una imagen de arranque.
raw
Utilizado para enlazar un dispositivo Linux de caracteres directo a un dispositivo de
bloque.
rdev
Muestra y establece el dispositivo raz, entre otras cosas, en una imagen de arranque.
readprofile
Lee la informacin sobre perfiles del ncleo.
rename
Renombra ficheros, sustituyendo la cadena indicada con otra.
renice
Altera la prioridad de los procesos en ejecucin.
rev
Invierte el orden de las lneas de un fichero.
rootflags
Se usa para establecer las opciones de particin raz en una imagen de arranque.
script
Hace un guin a partir de una sesin de terminal.
setfdprm
Establece los parmetros facilitados por el usuario para los disquetes.
setsid
Lanza programas en una nueva sesin.
setterm
Establece los parmetros del terminal.
sfdisk
Un manipulador de la tabla de particiones del disco.
187
Linux From Scratch - Versin 6.0
swapdev
Se usa para establecer el dispositivo de intercambio en una imagen de arranque.
swapoff
Desactiva los dispositivos y ficheros de paginacin e intercambio.
swapon
Activa los dispositivos y ficheros de paginacin e intercambio.
tunelp
Ajusta los parmetros de la lnea de impresin.
ul
Un filtro para traducir marcas de texto a la secuencia de escape que indica subrayado para
el terminal en uso.
umount
Desmonta un sistema de ficheros del rbol de ficheros del sistema.
vidmode
Establece el modo de vdeo en una imagen de arranque.
whereis
Localiza el binario, la fuente y la pgina del manual de un comando.
write
Enva un mensaje a otro usuario si ese usuario no ha desactivado dichos mensajes.
188
Linux From Scratch - Versin 6.0
6.59. Sobre los smbolos de depuracin
La mayora de los programas y libreras se compilan por defecto incluyendo los smbolos de depuracin
(con la opcin -g de gcc). Esto significa que, cuando se depura un programa o librera que fue compilado
incluyendo la informacin de depuracin, el depurador no nos da slo las direcciones de memoria, sino
tambin los nombres de las rutinas y variables.
Sin embargo, la inclusin de estos smbolos de depuracin agranda sustancialmente un programa o librera.
Para tener una idea del espacio que ocupan estos smbolos, echa un vistazo a lo siguiente:
Un binario bash con smbolos de depuracin: 1200 KB
Un binario bash sin smbolos de depuracin: 480 KB
Los ficheros de Glibc y GCC (/lib y /usr/lib) con smbolos de depuracin: 87 MB
Los ficheros de Glibc y GCC sin smbolos de depuracin: 16 MB
Los tamaos pueden variar algo dependiendo del compilador y la librera C utilizadas, pero cuando
comparamos programas con y sin smbolos de depuracin, la diferencia generalmente est en una relacin de
entre 2 y 5.
Como muchas personas probablemente nunca usen un depurador en su sistema, eliminando estos smbolos
se puede liberar una gran cantidad de espacio del disco. Para tu comodidad, la siguiente seccin muestra
cmo eliminar todos los smbolos de depuracin de los programas y libreras. Puedes encontrar informacin
sobre otras formas de optimizar tu sistema en la receta http://www.lfs-es.com/recetas/optimization.html (el
original en ingls se encuentra en http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt).
189
Linux From Scratch - Versin 6.0
6.60. Eliminar los smbolos de nuevo.
Si no eres un programador y no planeas depurar el software de tu sistema, puedes reducir tu sistema en unos
200 MB eliminando los smbolos de depuracin de los binarios y libreras. Este proceso no produce ningn
otro inconveniente que no sea no poder depurar los programas nunca ms.
La mayora de la gente que usa el comando mencionado ms adelante no experimenta ningn problema.
Pero es fcil cometer un error al escribirlo e inutilizar tu sistema, por lo que antes de ejecutar el comando
strip posiblemente sea buena idea hacer una copia de respaldo en el estado actual.
Antes de hacer la eliminacn de smbolos, se ha de tener mucho cuidado para asegurar que no se est
ejecutando ningn binario que vaya a ser procesado. Si no ests seguro de si entraste al entorno chroot con el
comando mostrado en la Seccin 6.3, Entrar al entorno chroot, entonces sal primero del chroot:
logout
Luego vuelve a entrar con:
chroot $LFS /tools/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/tools/bin/bash --login
Ahora puedes procesar con tranquilidad los binarios y libreras:
/tools/bin/find /{,usr/}{bin,lib,sbin} -type f \
-exec /tools/bin/strip --strip-debug '{}' ';'
Se avisar de que no se reconoce el formato de un buen nmero de ficheros. Puedes ignorar esos avisos, slo
indican que se trata de guiones en vez de binarios.
Si el espacio en disco es escaso, se puede usar la opcin --strip-all sobre los binarios que hay en
/{,usr/}{bin,sbin} para ganar varios megabytes ms. Pero no uses dicha opcin sobre las libreras:
las destruiras.
190
Linux From Scratch - Versin 6.0
6.61. Limpieza
A partir de ahora, cuando salgas del entorno chroot y desees entrar de nuevo en l, debers ejecutar el
siguiente comando chroot modificado:
chroot "$LFS" /usr/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash --login
La razn para esto es que, puesto que ya no son necesarios los programas que hay en /tools, el directorio
puede borrarse para ganar espacio. Antes de borrar realmente el directorio, sal del chroot y reentra con el
anterior comando. Igualmente, antes de eliminar /tools, empaqutalo y gurdalo en lugar seguro, en caso
de que quieras construir otro sistema LFS.
Nota
Al eliminar /tools tambin se eliminan las copias temporales de Tcl, Expect y DejaGnu que
fueron usadas para ejecutar los bancos de pruebas. Si quieres usar estos programas ms
adelante, necesitars recompilarlos y reinstalarlos. Las instrucciones de instalacin son las
mismas de Captulo 5, excepto por el cambio de la ruta de /tools a /usr. En el libro BLFS
se expone un mtodo ligeramente diferente para instalar Tcl (consltalo en
http://www.lfs-es.com/blfs-es-CVS/view/svn/general/tcl.html, o en el original en ingls en
http://www.linuxfromscratch.org/blfs/view/svn/general/tcl.html).
Los paquetes y parches almacenados en /sources pueden moverse a una localizacin ms normal, como
/usr/src/packages. Puedes borrar por completo el directorio si has quemado su contenido en un CD.
191
192
Linux From Scratch - Versin 6.0
Captulo 7. Configurar los guiones de arranque del
sistema
7.1. Introduccin
Este captulo detalla cmo instalar los guiones de arranque y cmo configurarlos adecuadamente. Muchos de
estos guiones funcionarn sin necesidad de modificarlos, pero algunos necesitan ficheros de configuracin
adicionales, pues manejan informacin dependiente del hardware.
En este libro se utilizan guiones de inicio al estilo System-V porque son ampliamente utilizados. Para
consultar otras opciones, una receta que detalla la configuracin del inicio al estilo BSD se encuentra en
http://www.lfs-es.com/recetas/bsd-init.html (la versin original en ingls se encuentra en
http://www.linuxfromscratch.org/hints/downloads/files/bsd-init.txt). Buscando depinit en las listas de
correo de LFS encontrars otra alternativa.
Si decides usar algn otro estilo de guiones de inicio, sltate este captulo y pasa al Captulo 8.
193
Linux From Scratch - Versin 6.0
7.2. LFS-Bootscripts-2.2.2
El paquete LFS-Bootscripts contiene un conjunto de guiones de arranque.
Tiempo estimado de construccin: 0.1 SBU
Espacio requerido en disco: 0.3 MB
La instalacin de LFS-Bootscripts depende de: Bash y Coreutils
7.2.1. Instalacin de LFS-Bootscripts
Instala el paquete:
make install
7.2.2. Contenido de LFS-Bootscripts
Guiones instalados: checkfs, cleanfs, console, functions, halt, ifdown, ifup, localnet, mountfs, mountkernfs,
network, rc, reboot, sendsignals, setclock, static, swap, sysklogd, template y udev
Descripciones cortas
checkfs
Comprueba los sistemas de ficheros justo antes de ser montados (con la excepcin de los
que usan registros de transacciones [journal] o los que se montan desde la red).
cleanfs
Elimina los ficheros que no deben guardarse cuando se arranca de nuevo el sistema, como
aquellos en /var/run/ y /var/lock/. Regenera /var/run/utmp y elimina los
ficheros /etc/nologin, /fastboot y /forcefsck si existen.
console
Carga el mapa de teclado especificado como el adecuado para el tipo de teclado. Tambin
establece la fuente de pantalla.
functions
Contiene funciones usadas por diferentes guiones, como el chequeo de errores y de
estado.
halt
Cierra el sistema.
ifdown
Ayuda al guin network con los dispositivos de red.
ifup
Ayuda al guin network con los dispositivos de red.
localnet
Establece el nombre de mquina usado por el sistema (hostname) y activa el dispositivo
de red interna (loopback).
mountfs
Monta todos los sistemas de ficheros que no estn marcados como noauto o que no se
monten a travs de la red.
mountkernfs
Se usa para montar los sistemas de ficheros suministrados por el ncleo, como /proc.
network
Activa las interfaces de red, como las tarjetas de red, y establece la puerta de enlace por
defecto (gateway) cuando es necesario.
rc
El controlador maestro de los niveles de arranque. Es el responsable de lanzar todos los
dems guiones, uno a uno, en una secuencia determinada por el nombre del enlace
simblico a procesar.
reboot
Reinicia el sistema.
194
Linux From Scratch - Versin 6.0
sendsignals
Se asegura de que todos los procesos terminen antes de parar o reiniciar el sistema.
setclock
Fija el reloj del ncleo a la hora local en caso de que el reloj del ordenador no est fijado
a la hora UTC.
static
Suministra la funcionalidad necesaria para asignar una direccin IP esttica a una interfaz
de red.
swap
Activa y desactiva las particiones y ficheros de intercambio (swap).
sysklogd
Lanza y detiene los demonios de registro de eventos del sistema y del ncleo.
template
Una plantilla para crear guiones de arranque personalizados para otros demonios.
udev
Activa udev y crea los nodos de dispositivos en /dev.
195
Linux From Scratch - Versin 6.0
7.3. Cmo funcionan los guiones de arranque?
Linux utiliza como sistema de inicio SysVinit, que se basa en el concepto de niveles de ejecucin. Este
sistema de inicio puede variar ampliamente de un sistema a otro, por lo tanto no se debe asumir que porque
las cosas funcionen en <inserta el nombre de una distribucin> tengan que funcionar en LFS tambin. LFS
tiene su propia manera de hacer las cosas, la cual suele respetar los estndares aceptados.
SysVinit (al que llamaremos init a partir de este momento) se basa en un esquema de niveles de ejecucin.
Hay 7 (desde el 0 al 6) niveles de ejecucin (en realidad existen ms, pero son para casos especiales y es raro
utilizarlos. La pgina man de init describe estos detalles) y cada uno de ellos indica lo que debe hacer el
sistema durante el arranque. El nivel de ejecucin por omisin es el 3. He aqu una breve descripcin de los
distintos niveles de ejecucin como suelen implementarse:
0: parada del sistema
1: modo monousuario
2: modo multiusuario sin red
3: modo multiusuario con red
4: reservado para personalizar, si no, hace lo mismo que el 3
5: Igual que el 4. Normalmente se utiliza para iniciar el entorno
grfico (mediante xdm de X o kdm de KDE)
6: reinicio del sistema
Para cambiar el nivel de ejecucin se utiliza el comando init [nivel de ejecucin] donde [nivel
de ejecucin] representa el nivel de ejecucin que se desea arrancar. Por ejemplo, para reiniciar el
sistema se utilizara el comando init 6. El comando reboot no es ms que un alias de dicho comando, al
igual que el comando halt lo es de init 0.
Debajo de /etc/rc.d existe una serie de directorios rc?.d (donde ? representa el nmero del nivel de
ejecucin), ms el directorio rcsysinit.d, que contienen un conjunto de enlaces simblicos. Los
nombres de estos enlaces simblicos empiezan con K o con S seguidos de 2 cifras. Los enlaces que
comienzan por una K indican la parada (kill) de un servicio, mientras que la S indica su inicio (start). Las
dos cifras determinan el orden de ejecucin, desde 00 hasta 99; cuanto menor sea el nmero, antes se
ejecutar. Cuando init cambia a otro nivel de ejecucin, los servicios apropiados son parados y otros son
iniciados.
Los guiones reales se enuentran en /etc/rc.d/init.d. Ellos son los que hacen el trabajo y todos los
enlaces simblicos apuntan a ellos. Los enlaces de parada e inicio apuntan al mismo guin en
/etc/rc.d/init.d. Esto se debe a que los guiones pueden invocarse con parmetros diferentes como
start, stop, restart, reload y status. Cuando se encuentra un enlace K, se ejecuta el guin
apropiado con el argumento stop. Cuando se encuentra un enlace S, se ejecuta el guin apropiado con el
argumento start.
Hay una excepcin a esta explicacin. Los enlaces que comienzan por S en los directorios rc0.d y rc6.d
no inician nada. Estos guiones se invocan siempre con el parmetro stop para parar algo. La lgica tras
esto es que cuando el usuario va a parar o reiniciar el sistema no es necesario iniciar nada. El sistema slo
necesita ser detenido.
196
Linux From Scratch - Versin 6.0
He aqu una descripcin de lo que hace cada parmetro:
start
Inicia el servicio.
stop
Para el servicio.
restart
El servicio se para y se vuelve a iniciar.
reload
Se actualiza la configuracin del servicio. Este parmetro se utiliza tras la modificacin del fichero de
configuracin cuando no es necesario reiniciar el servicio.
status
Dice si el servicio se est ejecutando y con qu identificador de proceso (PID).
Eres libre de modificar la forma en que funciona el proceso de arranque (despus de todo es tu propio
sistema LFS). Los ficheros aqu mostrados son un ejemplo de cmo puede hacerse.
197
Linux From Scratch - Versin 6.0
7.4. Manejo de dispositivos y mdulos en un sistema LFS
En el Captulo 6 se instal el paquete Udev. Antes de entrar en detalles sobre cmo funciona, repasaremos
los anteriores mtodos de manejo de dispositivos.
Tradicionalmente, los sistemas Linux en general utilizan un mtodo esttico de creacin de dispositivos,
implicando que un gran nmero de nodos de dispositivo son creados en /dev (literalmente, cientos de
nodos) sin tener en cuenta si el dispositivo hardware correspondiente existe en realidad. Esto se hace
tpicamente mediante un guin MAKEDEV, que contiene una serie de llamadas al programa mknod con
los nmeros mayor y menor correspondientes a cada posible dispositivo que pudiera existir en el mundo.
Con el uso del mtodo Udev, slo se crearn los nodos correspondientes a aquellos dispositivos detectados
por el ncleo. Debido a que estos nodos de dispositivo se crearn cada vez que se inicie el sistema, se
almacenarn en un ramfs (un sistema de ficheros que existe por completo en memoria y no ocupa espacio
en disco). Los nodos de dispositivo no necesitan mucho espacio, por lo que la memoria utilizada es muy
poca.
7.4.1. Historia
En Febrero de 2000, un nuevo sistema de ficheros llamado devfs fue incluido en los ncleos 2.3.46 y
estuvo disponible en la serie 2.4 de los ncleos estables. Aunque estaba presente en las propias fuentes del
ncleo, este mtodo de creacin dinmica de dispositivos nunca recibi mucho apoyo por parte del equipo
de desarrolladores del ncleo.
El principal problema con el sistema adoptado por devfs era el modo en el que manejaba la deteccin,
creacin y denominacin de dispositivos. El ltimo punto, la denominacin de los nodos, fue quizs el ms
crtico. Est generalmente aceptado que si los nombres de dispositivos son configurables, entonces las
polticas de denominacin deberan ser establecidas por un administrador del sistema y no impuestas por un
desarrollador en particular. El sistema de ficheros devfs sufre tambin de extraos comportamientos
inherentes a su diseo y que no pueden corregirse sin una revisin sustancial del ncleo. Tambin se ha
marcado como descartado debido a la falta de mantenimiento reciente.
Con el desarrollo del rbol inestable 2.5 del ncleo, posteriormente liberado como ncleos estables de la
serie 2.6, aparece un nuevo sistema de ficheros virtual llamado sysfs. El trabajo de sysfs es exportar una
visin de la estructura del sistema a los procesos de usuario. Con esta representacin visible a nivel de
usuario, la posibilidad de encontrar un sustituto para devfs a nivel de usuario se hace mucho ms real.
7.4.2. Implementacin de Udev
Arriba se mencion brevemente el sistema de ficheros sysfs. Uno podra preguntarse cmo conoce
sysfs los dispositivos presentes en el sistema y qu nmeros de dispositivo debe usar. Los crontroladores
que se han compilado directamente dentro del ncleo registran sus objetos en sysfs a medida que son
detectados por el ncleo. Para los controladores compilados como mdulos, esto suceder cuando se cargue
el mdulo. Una vez montado el sistema de ficheros sysfs (en /sys), los datos registrados en sysfs por
los controladores estn disponibles para los procesos de usuario y para que udev cree los nodos de
dispositivo.
198
Linux From Scratch - Versin 6.0
El guin de inicio S10udev se ocupa de la creacin de dichos nodos de dispositivo cuando se inicia Linux.
Este guin comienza registrando /sbin/udev como manejador de eventos hotplug. Los eventos hotplug
(explicados ms adelante) no deberan generarse durante esta fase, pero se registra udev por si ocurriesen.
Entonces, el programa udevstart recorre el sistema de ficheros /sys y crea en /dev los dispositivos que
coinciden con las descripciones. Por ejemplo, /sys/class/tty/vcs/dev contiene la cadena 7:0.
Esta cadena la utiliza udevstart para crear /dev/vcs con el nmero mayor 7 y menor 0. Los permisos
para todos y cada uno de los dispositivos creados por udevstart se establecen mediante el uso de los
ficheros que hay en el directorio /etc/udev.d/permissions.d/. Estos se encuentran numerados de
forma similar a los guiones de arranque de LFS. Si udev no puede encontrar un fichero de permisos para el
dispositivo que est creando, usar por defecto los permisos 600 y propietario root:root. El nombre de los
nodos creados en el directorio /dev se configuran segn las reglas especificadas en los ficheros que hay
dentro del directorio /etc/udev/rules.d/.
Una vez completado el proceso anterior, estarn disponibles para el usuario todos los dispositivos realmente
presentes y cuyos controladores estn compilados dentro del ncleo. Qu hay de aquellos dispositivos
cuyos controladores son mdulos?
Anteriormente mencionamos el concepto de un manejador de eventos hotplug. Cuando el ncleo detecte la
conexin de un nuevo dispositivo, generar un evento de conexin en caliente (hotplug) y mirar en
/proc/sys/kernel/hotplug para encontrar el programa de nivel de usuario que maneja la conexin
de dispositivos. El guin de inicio udev registr udev como dicho manejador. Cuando se generan estos
eventos hotplug, el ncleo le indica a udev que compruebe en el sistema de ficheros /sys la informacin
relativa a este nuevo dispositivo y que cree para l la entrada en /dev.
Esto nos expone a un problema que existe con udev y que antes exista con devfs. Se conoce comnmente
como el problema de el huevo y la gallina. La mayora de distribuciones Linux manejan la carga de
mdulos mediante entradas en /etc/modules.conf. Los accesos a un nodo de dispositivo provocan que
se cargue el mdulo del ncleo correspondiente. Este mtodo no funcionar con udev debido a que el nodo
de dispositivo no existe hasta que se cargue el mdulo. Para solucionar esto, se aadi al paquete
LFS-Bootscripts el guin de inicio S05modules junto con el fichero /etc/sysconfig/modules.
Mediante la adicin de los nombres de los mdulos al fichero modules, estos mdulos se cargarn al
iniciar el ordenador. Esto permite a udev detectar los dispositivos y crear los nodos corespondientes.
Ten en cuenta que en mquinas lentas o para dispositivos que crean muchos nodos, el proceso de creacin
puede tadar varios segundos en completarse. Esto significa que algunos nodos de dispositivo no estarn
disponibles inmediatamente.
7.4.3. Manejo dinmico de dispositivos
Cuando conectas un dispositivo, como un reproductor MP3 por USB, el ncleo reconoce que el disposiivo
se encuentra ahora conectado y genera un evento hotplug. Si el controlador se encuentra cargado (porque fue
compilado dentro del ncleo o cargado por el guin de arranque S05modules), se llamar a udev para crear
los nodos de dispositivo adecuados segn los datos de sysfs disponibles en /sys. Si el controlador para el
dispositivo recin conectado se encuentra disponible como mdulo pero no est cargado, entoces la
conexin del dispositivo al sistema slo causar que el bus del ncleo genere un evento hotplug que notifica
a nivel de usuario la conexin del nuevo dispositivo y este no ser enlazado a un controlador. En efecto, no
sucede nada y el propio dispositivo no puede utilizarse an.
Si construyes un sistema que contiene gran cantidad de controladores compilados como mdulos en vez de
directamente en el ncleo, el uso de S05modules puede que no sea prctico. El paquete Hotplug (mira
http://linux-hotplug.sourceforge.net/) puede ser de ayuda en estos casos. Cuando se instala el paquete
Hotplug, este responder a los eventos hotplug del bus del ncleo antes mencionados. El paquete Hotplug
cargar el mdulo correspondiente y har que este dispositivo est disponible creando los nodos.
199
Linux From Scratch - Versin 6.0
7.4.4. Problemas con la creacin de dispositivos
Hay unos cuantos problemas conocidos cuando se trata la creacin automtica de nodos de dispositivos:
1) Puede que un controlador del ncleo no exporte sus datos a sysfs.
Esto es muy comn con controladores suministrados por el fabricante y ajenos al rbol del ncleo. Para estos
controladores no se crearn sus nodos. Para crear manualmente los dispositivos, utiliza el fichero de
configuracin /etc/sysconfig/createfiles. Consulta el fichero devices.txt de la
documentacin del ncleo, o la documentacin de dicho controlador, para encontrar los nmeros mayor y
menor adecuados.
2) Se necesita un controlador que no pertenece al hardware. Esto es muy comn con los mdulos de
compatibilidad Open Sound System (OSS, Sistema Abierto de Sonido) del proyecto Advanced Linux Sound
Architecture (ALSA, Arquitectura Avanzada de Sonido en Linux). Se puede manejar este tipo de
dispositivos de dos formas:
Aadiendo los nombres de los mdulos a /etc/sysconfig/modules
Usando una lnea install en /etc/modprobe.conf. Esto le indica al comando modprobe que
cuando se cargue este mdulo, cargue tambin y al mismo tiempo este otro mdulo. Por ejemplo:
install snd-pcm modprobe -i snd-pcm ; modprobe \
snd-pcm-oss ; true
Esto provocar que el sistema cargue tanto el mdulo snd-pcm como el mdulo snd-pcm-oss cuando se
haga cualquier peticin para cargar el mdulo snd-pcm.
7.4.5. Lecturas tiles
En los siguientes sitios hay disponible documentacin de ayuda adicional:
Una implementacin de devfs a nivel de usuario:
http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf
FAQ de Udev:
http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ
El modelo de controladores del ncleo Linux:
http://public.planetmirror.com/pub/lca/2003/proceedings/papers/Patrick_Mochel/Patrick_Mochel.pdf
200
Linux From Scratch - Versin 6.0
7.5. Configuracin del guin setclock
El guin setclock lee la hora del reloj interno del ordenador, conocido tambin como reloj BIOS o CMOS
(Semiconductor de Oxido de Metal Complementario). Si el reloj hardware est establecido a la hora UTC,
este guin la convierte a la hora local mediante el fichero /etc/localtime (que le indica al programa
hwclock en qu zona horaria se encuentra el usuario). No hay manera de detectar automticamente si el reloj
utiliza UTC o no, as que esto se debe configurar manualmente.
Si no puedes recordar si el reloj hardware est en UTC o no, avergualo ejecutando el comando hwclock
--localtime --show. Esto mostrar la hora actual segn el reloj hardware. Si dicha hora coincide con
la de tu reloj, entonces el reloj hardware est a la hora local. Si la salida de hwclock no es la hora local,
seguramente est en la hora UTC. Verifica esto aadiendo o restando la cantidad de horas correspondiente a
tu zona local a la hora mostrada por hwclock. Por ejemplo, si vives en la zona horaria MST, conocida
tambin como GMT -0700, aade siete horas a la hora local. Ten en cuente tambin el Horario de Ahorro de
Energa, que implica descontar una hora (o aadir slo seis en el ejemplo) durante los meses de verano.
Cambia abajo el valor de la variable UTC a 0 (cero) si el reloj hardware no utiliza la hora UTC.
Crea un nuevo fichero /etc/sysconfig/clock ejecutando lo siguiente:
cat > /etc/sysconfig/clock << "EOF"
# Inicio de /etc/sysconfig/clock
UTC=1
# Fin de /etc/sysconfig/clock
EOF
En http://www.lfs-es.com/recetas/time.html hay disponible una buena receta que trata sobre la hora en LFS
(en http://www.linuxfromscratch.org/hints/downloads/files/time.txt se encuentra la versin original en
ingls). En ella se explican conceptos como las zonas horarias, UTC y la variable de entorno TZ.
201
Linux From Scratch - Versin 6.0
7.6. Configurar la consola Linux
Esta seccin explica cmo configurar el guin de arranque console, el cual establece el mapa del teclado y la
fuente de consola. Si no se van a utilizar caracteres no ASCII (los caracteres de la Libra inglesa y el Euro
son ejemplos de caracteres no ASCII) y el teclado es del tipo U.S., sltate esta seccin. Sin el fichero de
configuracin el guin de inicio console no har nada.
El guin console utiliza /etc/sysconfig/console como fichero de configuracin. Decide qu mapa
de teclado y fuente de pantalla se usarn. El CMO especfico para tu idioma puede ayudarte en esto. Con el
paquete LFS-Bootscripts se instal un fichero /etc/sysconfig/console prefabricado con los ajustes
conocidos para diversos paises, por lo que basta con descomentar la seccin correspondiente si tu pas est
entre los definidos. Si an tienes dudas, mira en el directorio /usr/share/kbd los mapas de teclados y
fuentes de pantalla vlidos. Lee las pginas de manual de loadkeys y setfont para determinar los argumentos
correctos para estos programas. Una vez decidido, crea el fichero de configuracin con el siguiente
comando:
cat >/etc/sysconfig/console <<"EOF"
KEYMAP="[argumentos para loadkeys]"
FONT="[argumentos para setfont]"
EOF
Por ejemlo, para los usuarios de idioma espaol que tambin quieran usar el caracter del Euro (accesible
presionano AltGr+e), la siguiente configuracin es correcta:
cat >/etc/sysconfig/console <<"EOF"
KEYMAP="es euro2"
FONT="lat9-16 -u iso01"
EOF
Nota
La lnea FONT anterior es correcta slo para el conjunto de caracteres ISO 8859-15. Si se utiliza
ISO 8859-1 y, por tanto, el smbolo de la Libra en vez del Euro, la lnea FONT correcta sera:
FONT="lat1-16"
Si no se establece la variable KEYMAP o FONT, el guin de inicio console no ejecutar el programa
correspondiente.
En algunos mapas de teclado, las teclas Retroceso y Borrar envan caracteres diferentes a los del mapa de
teclado incluido en el ncleo. Esto confunde a algunas aplicaciones. Por ejemplo, Emacs muestra su ayuda
(en vez de borrar el caracter anterior al cursor) cuando se pulsa Retroceso. Para comprobar si el mapa del
teclado en uso est afectado (esto slo funciona con mapas de teclado i386) haz:
zgrep '\W14\W' [/ruta/a/tu/mapa_de_teclado]
202
Linux From Scratch - Versin 6.0
Si el keycode 14 es Backspace en lugar de Delete, crea el siguiente fragmento de mapa de teclado para
corregir el problema:
mkdir -p /etc/kbd && cat > /etc/kbd/bs-sends-del <<"EOF"
keycode 14 = Delete Delete Delete Delete
alt keycode 14 = Meta_Delete
altgr alt keycode 14 = Meta_Delete
keycode 111 = Remove
altgr control keycode 111 = Boot
control alt keycode 111 = Boot
altgr control alt keycode 111 = Boot
EOF
Indcale al guin console que cargue este fragmento tras el mapa de teclado principal:
cat >>/etc/sysconfig/console <<"EOF"
KEYMAP_CORRECTION="/etc/kbd/bs-sends-del"
EOF
Para compilar el mapa de teclado directamente en el ncleo, en vez de establecerlo cada vez desde el guin
de arranque console, sigue las instrucciones que se muestran en la Seccin 8.3, Linux-2.6.8.1. Haciendo
esto te aseguras de que el teclado funcione siempre como se espera, incluso cuando arranques en modo de
mantenimiento (pasndole init=/bin/sh al ncleo), pues el guin de inicio console no se ejecutar en
dicha situacin. Adicionalmente, el ncleo no establecer automaticamente la fuente de pantalla. Esto no
debera ser demasiado problema, pues los caracteres ASCII se manejarn correctamente y es improbable que
pudieses necesitar caracteres no ASCII estando en modo de mantenimiento.
Puesto que el ncleo establecera el mapa del teclado, se puede omitir la variable KEYMAP del fichero de
configuracin /etc/sysconfig/console. Tambin puede dejarse en su sitio, si se desea, sin que haya
consecuencias. Mantenerlo puede ser beneficioso si posees varios ncleos diferentes y te es difcil asegurar
que el mapa de teclado se haya compilado dentro de todos ellos.
203
Linux From Scratch - Versin 6.0
7.7. Crear el fichero /etc/inputrc
El fichero /etc/inputrc se ocupa del mapeado del teclado para situaciones concretas. Este fichero es el
fichero de inicio usado por Readline, la librera para cuestiones de entrada usada por Bash y otros intrpretes
de comandos.
Para ms informacin, mira la pgina Info de Bash, seccin Readline Init File (Fichero de Inicio de
Readline). La pgina Info de Readline es tambin una buena fuente de informacin.
Los valores globales se establecen en /etc/inputrc. Los valores personales del usuario se establecen en
~/.inputrc. El fichero ~/.inputrc sobreescribe los valores globales. En una pgina posterior se
configura Bash para usar /etc/inputrc si no hay un .inputrc del usuario cuando se lee
/etc/profile (normalmente al entrar al sistema). Para hacer que el sistema utilice ambos, o para evitar
un manejo global del teclado, es buena idea aadir un fichero .inputrc por defecto en el directorio
/etc/skel para utilizar con los nuevos usuarios.
A continuacin hay un /etc/inputrc bsico, con comentarios para explicar lo que hace cada opcin.
Advierte que los comentarios no pueden estar en la misma lnea que los comandos.
Para crear un .inputrc en /etc/skel usando el siguiente comando, cambia la salida del comando a
/etc/skel/.inputrc y asegrate de comprobar/establecer sus permisos. Copia dicho fichero a
/etc/inputrc y al directorio personal de cada usuario que ya exista en el sistema, incluido root, que
necesita una versin privada de este fichero. Utiliza el parmetro -p de cp para manterner los permisos y
cambia el usuario y grupo a los adecuados en cada caso.
204
Linux From Scratch - Versin 6.0
cat > /etc/inputrc << "EOF"
# Inicio de /etc/inputrc
# Modificado por Chris Lynn <
[email protected]>
# Se asegura de no mostrar todo en la primera lnea
set horizontal-scroll-mode Off
# Activa la entrada de 8 bits
set meta-flag On
set input-meta On
# Desactiva la supresin del bit 8
set convert-meta Off
# Mantiene el bit 8 para ser mostrado
set output-meta On
# none, visible o audible
set bell-style none
# Todo lo siguiente mapea la secuencia de escape
# del valor contenido en el primer argumento a las
# funciones especficas de readline
"\eOd": backward-word
"\eOc": forward-word
# Para la consola linux
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
# Para xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# Para Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line
# Fin de /etc/inputrc
EOF
205
Linux From Scratch - Versin 6.0
7.8. Los ficheros de inicio de Bash
El intrprete de comandos /bin/bash (al que nos referiremos como el intrprete) utiliza una coleccin de
ficheros de inicio para ayudar a crear un entorno de trabajo. Cada fichero tiene un uso especfico y pueden
generar diferentes entornos de ingreso o interactivos. Los ficheros del directorio /etc proporcionan ajustes
globales. Si existe un fichero diferente en el directorio personal, este puede sobreescribir los ajustes
globales.
Un intrprete de ingreso interactivo se inicia tras ingresar en el sistema, usando /bin/login, mediante la
lectura del fichero /etc/passwd. Un intrprete interactivo de no ingreso se inicia en la lnea de comandos
(es decir, [prompt]$/bin/bash). Un intrprete no interactivo est presente usualmente cuando se ejecuta
un guin del intrprete de comandos. Es no interactivo porque est procesando un guin y no esperando
indicaciones del usuario entre comandos.
Para ms informacin, consulta info bash - Nodo: Bash Startup Files and Interactive Shells (Ficheros de
inicio de Bash e intrpretes interactivos.
Los ficheros /etc/profile y ~/.bash_profile son leidos cuando el intrprete se invoca como un
intrprete interactivo de ingreso.
El siguiente fichero /etc/profile bsico establece algunas variables de entorno necesarias para el
soporte de idioma nativo. Al establecerlas correctamente se obtiene:
La salida de los programas traducida al idioma nativo.
Correcta clasificacin de los caracteres en letras, dgitos y otros tipos. Esto es necesario para que Bash
acepte correctamente los caracteres no ASCII en la lnea de comandos en idiomas diferentes al ingls.
La correcta ordenacin alfabtica propia del pas.
Un apropiado tamao de papel por defecto.
Un formato correcto para los valores monetarios, horarios y fechas.
Este guin establece tambin la variable de entoro INPUTRC que hace que Bash y Readline utilicen el
fichero /etc/inputrc creado anteriormente.
Sustituye a continuacin [ll] con el cdigo de dos letras del idioma deseado (por ejemplo, es) y [CC]
con el cdigo de dos letras de tu pas (por ejemplo, ES). Tambin puede ser necesario especificar (y en
realidad esta es la forma preferida) la codificacin de caracteres (por ejemplo, iso8859-15) tras un punto
(por lo que el resultado sera es_ES.iso8859-15). Para ms informacin, ejecuta el siguiente comando:
man 3 setlocale
La lista de todas las locales soportadas (instaladas) por Glibc se puede obtener ejecutando el siguiente
comando:
locale -a
206
Linux From Scratch - Versin 6.0
Una vez hayas determinado los ajustes correctos para el idioma, crea el fichero /etc/profile:
cat > /etc/profile << "EOF"
# Inicio de /etc/profile
export LC_ALL=[ll]_[CC]
export LANG=[ll]_[CC]
export INPUTRC=/etc/inputrc
# Fin de /etc/profile
EOF
Nota
Las locales C (la que se tiene por defecto) y en_US (la recomendada para los usuarios de
habla inglesa de los Estados Unidos) son diferentes.
Configurar el esquema del teclado, la fuente de pantalla y las variables de entorno relacionadas con las
locales son los nicos pasos necesarios para soportar las codificaciones ordinarias de un byte y direccin de
escritura de izquierda a derecha. Los casos ms complejos (incluidas las locales basadas en UTF-8)
necesitan pasos y parches adicionales debido a que muchas aplicaciones tienden a funcionar incorrectamente
bajo tales condiciones. Estos pasos y parches no se incluyen en el libro LFS y dichas locales no estn
soportadas de ninguna forma por el sistema LFS.
207
Linux From Scratch - Versin 6.0
7.9. Configuracin del guin sysklogd
El guin sysklogd invoca al programa syslogd con la opcin -m 0. Esta opcin deshabilita la marca de
tiempo peridica que syslogd escribe por defecto en el fichero de registro cada 20 minutos. Para habilitar
esta marca de tiempo peridica, edita el guin sysklogd y realiza los cambios necesarios. Para ms
informacin mira man syslogd.
208
Linux From Scratch - Versin 6.0
7.10. Configuracin del guin localnet
Una de las cosas que hace el guin localnet es establecer el nombre de la mquina. Es necesario configurar
dicho nombre en /etc/sysconfig/network.
Crea el fichero /etc/sysconfig/network e introduce el nombre de tu mquina ejecutando:
echo "HOSTNAME=[lfs]" > /etc/sysconfig/network
Debes substituir [lfs] por el nombre con el que debe de conocerse tu mquina. No escribas el FQDN
(nombre completo de la mquina, incluido su dominio). Esa informacin la escribiremos ms tarde en el
fichero /etc/hosts
209
Linux From Scratch - Versin 6.0
7.11. Creacin del fichero /etc/hosts
Si se va a configurar una tarjeta de red, decide la direccin IP, el FQDN y los posibles alias para escribirlos
en el fichero /etc/hosts. La sintaxis es:
<direccin IP> miordenador.example.org alias
A no ser que tu computadora sea visible en Internet (es decir, tengas un dominio registrado y asignado un
bloque de direcciones IP vlido, la mayora no tenemos esto), deberas asegurarte de que la direccin IP
queda dentro del rango de direcciones IP de la red privada. Los rangos vlidos son:
Clases de redes
A
10.0.0.0
B
Del 172.16.0.0 al 172.31.0.0
C
Del 192.168.0.0 al 192.168.255.0
Una direccin IP vlida puede ser 192.168.1.1. Un FQDN vlido para esa direccin IP podra ser
www.linuxfromscratch.org (no uses este, pues es un dominio vlido registrado y podra causarte problemas
con el servidor de nombres de dominio).
Aunque no vayas a configurar la tarjeta de red necesitas un FQDN. Algunos programas lo necesitan para
funcionar correctamente.
Crea el fichero /etc/hosts ejecutando:
cat > /etc/hosts << "EOF"
# Inicio de /etc/hosts (versin con trajeta de red)
127.0.0.1 localhost
[192.168.1.1] [<HOSTNAME>.example.org] [HOSTNAME]
# Fin de /etc/hosts (versin con tarjeta de red)
EOF
Debes cambiar los valores [192.168.1.1] y [<HOSTNAME>.example.org] por los tuyos
especficos o los requeridos (si la mquina estar conectada a una red ya existente y el administrador de la
red/sistema es el que asigna una direccin IP).
Si no se va a configurar una tarjeta de red, crea el fichero /etc/hosts ejecutando:
cat > /etc/hosts << "EOF"
# Inicio de /etc/hosts (versin sin tarjeta de red)
127.0.0.1 [<HOSTNAME>.example.org] [HOSTNAME] localhost
# Fin de /etc/hosts (versin sin tarjeta de red)
EOF
210
Linux From Scratch - Versin 6.0
7.12. Configuracin del guin network
Esta seccin solamente es aplicable en el caso de que vayas a configurar una tarjeta de red.
Si no tienes tarjeta de red es muy probable que no vayas a crear ninguna configuracin relacionada con ellas.
En ese caso, elimina los enlaces simblicos network de todos los directorios de los niveles de ejecucin
(/etc/rc.d/rc*.d)
7.12.1. Creacin de los ficheros de configuracin de la interfaz de red
Qu interfaces de red activa o desactiva el guin network depende de los ficheros situados en el directorio
/etc/sysconfig/network-devices. Este directorio debe contener ficheros del tipo
ifconfig.xyz, donde xyz es el nombre de la interfaz de red (como eth0 o eth0:1).
Si decides renombrar o mover el directorio /etc/sysconfig/network-devices, asegrate de editar
el fichero /etc/sysconfig/rc y actualizar la opcin network_devices con la nueva ruta.
En este directorio se crean nuevos ficheros. El siguiente comando crea un fichero ipv4 de ejemplo para el
dispositivo eth0:
cd /etc/sysconfig/network-devices &&
mkdir ifconfig.eth0 &&
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
Los valores de estas variables se deben cambiar en todos los ficheros por los valores apropiados. Si la
variable ONBOOT tiene el valor yes, el guin network activar la NIC (Interfaz de Tarjeta de Red)
correspondiente durante el arranque del sistema. Si contiene cualquier otro valor, el guin network ignorar
la NIC correspondiente y no la activar.
La entrada SERVICE define el mtodo para obtener la direccin IP. Los guiones de arranque de LFS tienen
un formato de asignacin de IP modular, y mediante la creacin de ficheros adicionales en
/etc/sysconfig/network-devices/services se permiten otros mtodos de asignacin IP. Esto
se utiliza comnmente para DHCP (Protocolo de Configuracin Dinmica del Anfitrin), que se explica en
el libro BLFS.
La variable GATEWAY debera contener la direccin IP de la puerta de enlace por efecto, si hay alguna. Si
no, comenta la variable.
La variable PREFIX debe contener el nmero de bits usados en la subred. Cada octeto de una direccin IP
tiene 8 bits. Si la mscara de subred es 255.255.255.0, estonces est usando los primeros tres octetos (24
bits) para especificar el nmero de red. Si la mscara de red es 255.255.255.240, podra estar usando los
primeros 28 bits. Los prefijos mayores de 24 bits son usados normalmente por ISPs (Suministradores de
Servicios de Internet) para DSL o cable. En este ejemplo (PREFIX=24), la mscara de red es 255.255.255.0.
Ajstalo de acuerdo a tu propia subred.
211
Linux From Scratch - Versin 6.0
7.12.2. Creacin del fichero /etc/resolv.conf
Si el sistema va a estar conectado a Internet, necesitar algn tipo de resolucin de nombres DNS para
resolver los nombres de dominio de Internet a direcciones IP y viceversa. Esto se consigue mejor colocando
la direccin IP del servidor DNS, facilitado por el ISP o administrador de red, en /etc/resolv.conf.
Crea este fichero ejecutando lo siguiente:
cat > /etc/resolv.conf << "EOF"
# Inicio de /etc/resolv.conf
domain {[tu nombre de dominio]}
nameserver [direccin IP del servidor de nombres primario]
nameserver [direccin IP del servidor de nombres secundario]
# Fin de /etc/resolv.conf
EOF
Sustituye [direccin IP del servidor de nombres] con la direccin IP del servidor DNS
ms apropiado para tu configuracin. Con frecuencia hay ms de una entrada (los requisitos establecen
servidores secundarios como respaldo). Si slo necesitas o deseas un servidor DNS, elimina la segunda lnea
nameserver del fichero. La direccin IP pueder ser incluso un enrutador de la red local.
212
Linux From Scratch - Versin 6.0
Captulo 8. Hacer el sistema LFS arrancable
8.1. Introduccin
Es hora de hacer arrancable el sistema LFS. En este captulo se explica la creacin de un fichero fstab, la
construccin de un ncleo para el nuevo sistema LFS y la instalacin del gestor de arranque Grub para que
el sistema LFS se pueda seleccionar para arrancar al inicio.
213
Linux From Scratch - Versin 6.0
8.2. Creacin del fichero /etc/fstab
El fichero /etc/fstab lo utilizan ciertos programas para determinar dnde se montan por defecto los
sistemas de ficheros, cules deben verificarse y en qu orden. Crea una nueva tabla de sistemas de ficheros:
cat > /etc/fstab << "EOF"
# Inicio de /etc/fstab
# sistema de
# ficheros
punto de
montaje
/dev/[xxx]
/
/dev/[yyy]
swap
proc
/proc
sysfs
/sys
devpts
/dev/pts
shm
/dev/shm
# Fin de /etc/fstab
EOF
tipo
opciones
volcado
[fff]
swap
proc
sysfs
devpts
tmpfs
defaults
pri=1
defaults
defaults
gid=4,mode=620
defaults
1
0
0
0
0
0
orden de
chequeo
1
0
0
0
0
0
Reemplaza [xxx], [yyy] y [fff] con los valores apropiados para tu sistema, por ejemplo hda2, hda5
y ext2. Para ver todos los detalles de los seis campos de este fichero, consulta man 5 fstab.
Cuando se utiliza un sistema de ficheros con registro de transaciones, los valores 1 1 que aparecen al final
de la lnea deberan cambiarse a 0 0, ya que no se necesita volcar ni verificar estas particiones.
El punto de montaje /dev/shm para tmpfs se incluye para permitir la activacin de la memoria
compartida POSIX. Tu ncleo debe tener compilado en su interior el soporte requerido para que funcione
(ms datos sobre esto en la siguiente seccin). Ten en cuenta que actualmente muy poco software utiliza en
realidad la memoria compartida POSIX. Por tanto, puedes considerar como opcional el montaje de
/dev/shm. Para ms informacin consulta Documentation/filesystems/tmpfs.txt en el rbol
de fuentes del ncleo.
Existen otras lneas que podran aadirse al fichero fstab. Un ejemplo es la lnea para dispositivos USB:
usbfs
/proc/bus/usb usbfs
devgid=14,devmode=0660 0 0
Esta opcin slo funcionar si se compila dentro del ncleo Support for Host-side USB (Soporte para
USB del lado del anfitrin) y USB device filesystem (Sistema de ficheros para dispositivos USB).
214
Linux From Scratch - Versin 6.0
8.3. Linux-2.6.8.1
El paquete Linux contiene el ncleo y los ficheros de cabecera.
Tiempo estimado de construccin: 4.20 SBU
Espacio requerido en disco: 181 MB
La instalacin de Linux depende de: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make,
Modutils, Perl y Sed
8.3.1. Instalacin del ncleo
Construir el ncleo comprende varios pasos: configuracin, compilacin e instalacin. Mira en el fichero
README del rbol de fuentes del ncleo los mtodos de configuracin del ncleo alternativos al utilizado en
este libro.
Prepara la compilacin ejecutando el siguiente comando:
make mrproper
Esto asegura que el rbol del ncleo est completamente limpio. El equipo del ncleo recomienda que se
ejecute este comando antes de cada compilacin del ncleo. No debes confiar en que el rbol de las fuentes
est limpio tras desempaquetarlo.
Igualmente, asegurate de que el ncleo no intente pasar los eventos hotplug al espacio de usuario hasta que
el espacio de usuario est preparado:
sed -i 's@/sbin/hotplug@/bin/true@' kernel/kmod.c
Si en la Seccin 7.6, Configurar la consola Linux, decidiste compilar el mapa del teclado dentro del
ncleo, ejecuta el siguiente comando:
loadkeys -m /usr/share/kbd/keymaps/[ruta al mapa del teclado] > \
drivers/char/defkeymap.c
Por ejemplo, usa /usr/share/kbd/keymaps/i386/qwerty/es.map.gz si tienes un teclado
espaol.
Configura el ncleo mediante una interfaz de mens:
make menuconfig
Alternativamente, make oldconfig puede ser ms adecuado en algunas situaciones. Lee el fichero
README para ms detalles.
Nota
Cuando configures el ncleo, asegrate de activar la opcin Support for hot-pluggable devices
(Soporte para dispositivos conectables en caliente) que se encuentra en el men General Setup
(Configuracin general). Esto activa los eventos hotplug usados por udev para poblar el
directorio /dev con nodos de dispositivo.
215
Linux From Scratch - Versin 6.0
Si lo deseas, sltate la configuracin del ncleo copiando el fichero de configuracin del ncleo, .config,
de tu sistema anfitrin (asumiendo que est disponible) al directorio linux-2.6.8.1. Sin embargo, no
recomendamos esta opcin. Con frecuencia es mejor explorar todos los mens de configuracin y crear tu
propia configuracin del ncleo desde cero.
Para el soporte de la memoria compartida POSIX, asegrate de que est activada la opcin de configuracin
del ncleo Virtual memory file system support (Soporte del sistema de ficheros de memoria virtual). Se
encuentra en el men File systems (Sistemas de ficheros) y normalmente est activada por defecto.
Los guiones de arranque de LFS asumen que tanto Support for Host-side USB como USB device
filesystem han sido compilados dentro del ncleo o no se han compilado. Los guiones de arranque no
funcionarn bin si se trata de un mdulo (usbcore.ko).
Nota
NPTL requiere que el ncleo sea compilado con GCC 3.x, en este caso 3.4.1. Se sabe que
compilarlo con 2.95.x provoca fallos en el banco de pruebas de Glibc, por lo que no es
recomendable compilar el ncleo con GCC 2.95.x.
Compila la imagen del ncleo y los mdulos:
make
Si utilizas los mdulos del ncleo puede que necesites un fichero /etc/modprobe.conf. La
informacin relativa a los mdulos y a la configuracin del ncleo en general puedes encontrarla en el
directorio /usr/src/linux-2.6.8.1/Documentation, que contiene la documentacin del ncleo.
La pgina de manual de modprobe.conf puede que tambin sea de inters.
Ten mucho cuidado cuando leas otra documentacin, pues normalmente slo es aplicable a los ncleos
2.4.x. Hasta donde nosotros sabemos, los temas de configuracin del ncleo especficos para Hotplug y
Udev no estn documentados. El problema es que Udev crear un nodo de dispositivo slo si Hotplug o un
guin escrito por el usuario inserta el mdulo correspondiente en el ncleo, y no todos los mdulos son
detectables por Hotplug. Advierte que sentencias como la mostrada a continuacin en el fichero
/etc/modprobe.conf no funcionarn con Udev:
alias char-major-XXX cualquier-mdulo
Debido a las complicaciones con Hotplug, Udev y los mdulos, recomendamos encarecidamente comenzar
con una configuracin del ncleo que sea por completo no modular, especialmente si es la primera vez que
utilizas Udev.
Instala los mdulos, si la configuracin del ncleo los utiliza:
make modules_install
Si tienes muchos mdulos y muy poco espacio, puede que quieras considerar eliminarles los smbolos y
comprimirlos. Para muchos dicha compresin no compensa el tiempo, pero si realmente ests presionado
por el espacio, mira http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html.
Tras completar la compilacin se necesitan algunos pasos adicionales para completar la instalacin. Es
necesario copiar varios ficheros al directorio /boot.
La ruta a la imagen del ncleo puede variar dependiendo de la plataforma que utilices. Ejecuta el siguiente
comando para instalar el ncleo:
cp arch/i386/boot/bzImage /boot/lfskernel-2.6.8.1
216
Linux From Scratch - Versin 6.0
System.map es un fichero de smbolos para el ncleo. Mapea los puntos de entrada de cada una de las
funciones en la API del ncleo, al igual que las direcciones de las estructuras de datos del ncleo para el
ncleo en ejecucin. Ejecuta el siguiente comando para instalar el fichero de mapa:
cp System.map /boot/System.map-2.6.8.1
.config es el fichero de configuracin del ncleo creado por el paso make menuconfig anterior. Contiene
todas las selecciones de configuracin para el ncleo que se acaba de compilar. Es buena idea guardar este
fichero como referencia futura:
cp .config /boot/config-2.6.8.1
Es importante advertir que los ficheros del directorio de las fuentes del ncleo no son propiedad de root.
Cuando se desempaqueta un paquete como usuario root (como hacemos dentro del chroot), los ficheros
acaban teniendo los identificadores de usuario y grupo que tenan en la mquina en la que se empaquetaron.
Esto normalmente no es problema para cualquier otro paquete que instales debido a que eliminas las fuentes
tras la instalacin. Pero con frecuencia el rbol de las fuentes de Linux se guarda durante mucho tiempo, por
lo que es posible que el ID de usuario del empaquetador sea asignado a alguien en tu mquina y entonces
dicha persona podra tener permiso de escritura en las fuentes del ncleo.
Si vas a guardar el rbol de las fuentes del ncleo, ejecuta chown -R 0:0 sobre el directorio
linux-2.6.8.1 para asegurar que todos los ficheros son propiedad de root.
8.3.2. Contenido de Linux
Ficheros instalados: ncleo, cabeceras del ncleo y System.map
Descripciones cortas
ncleo
El corazn del sistema GNU/Linux. Cuando enciendes tu ordenador, lo
primero que se carga del sistema operativo es el ncleo. ste detecta e
inicializa todos los componentes hardware del ordenador, poniendo estos
componentes a disposicin del software como si fuesen un rbol de ficheros
y convierte una CPU nica en una mquina multi-tarea capaz de ejecutar
concurrentemente varios programas casi al mismo tiempo.
cabeceras del ncleo
Definen la interfaz a los servicios proporcionados por el ncleo. Las
cabeceras del directorio include del sistema deben ser siempre aquellas
contra las que se compil Glibc y, por tanto, nunca deben reemplazarse al
actualizar el ncleo.
System.map
Un listado de direcciones y smbolos. Mapea los puntos de entrada y
direcciones de todas las funciones y estructuras de datos del ncleo.
217
Linux From Scratch - Versin 6.0
8.4. Hacer el sistema LFS arrancable
Tu nuevo y brillante sistema LFS est casi completo. Una de las ltimas cosas por hacer es asegurarse de
que puede ser arrancado. Las siguientes instrucciones slo son aplicables en ordenadores de arquitectura
IA-32, o sea PCs. La informacin sobre cargadores de arranque para otras arquitecturas debera estar
disponible en las localizaciones usuales de recursos especficos para esas arquitecturas.
El arranque puede ser una tarea compleja. Primero, unas palabras de advertencia. Familiarzate con tu actual
gestor de arranque y con cualquier otro sistema operativo presente en tu(s) disco(s) duro(s) que desees
mantener arrancable. Asegrate de que tienes preparado un disco de arranque de emergencia para poder
rescatar el ordenador si este quedase inutilizable (no arrancable).
Anteriormente compilamos e instalamos el gestor de arranque Grub en preparacin para este paso. El
proceso consiste en escribir ciertos ficheros especiales de Grub a su localizacin especfica en el disco duro.
Antes de hacer esto te recomendamos encarecidamente que crees un disquete de arranque de Grub como
respaldo. Inserta un disquete en blanco y ejecuta los siguientes comandos:
dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1
Saca el disquete y gurdalo en lugar seguro. Ahora inicia el intrprete de comandos de grub:
grub
Grub utiliza su propia estructura de nombres para los discos de la forma (hdn,m), donde n es el nmero del
disco duro y m es el nmero de la particin, comenzando ambos desde 0. Por ejemplo, la particin hda1 es
(hd0,0) para Grub, y hdb3 es (hd1,2). Al contrario que Linux, Grub no considera los dispositivos CD-ROM
como discos duros. Por ejemplo, si tienes un CD en hdb y un segundo disco duro en hdc, este segundo
disco duro seguira siendo (hd1).
Usando la informacin anterior, determina la denominacin apropiada para tu particin raz (o particin de
arranque, si usas una separada). Para los siguientes ejemplos asumiremos que tu particin raz (o la de
arranque) es hda4
Indcale a Grub dnde debe buscar sus ficheros stage{1,2}. Puedes utilizar el tabulador para que Grub te
muestre las alternativas:
root (hd0,3)
Aviso
El siguiente comando sobreescribir tu actual gestor de arranque. No ejecutes el comando si
esto no es lo que quieres. Por ejemplo, si utilizas otro gestor de arranque para administrar tu
MBR (Master Boot Record, Registro Maestro de Arranque). En este escenario, posiblemente
tenga ms sentido instalar Grub en el sector de arranque de la particin LFS, en cuyo caso
dicho comando sera setup (hd0,3).
Indcale a Grub que se instale en el MBR de hda:
setup (hd0)
Si todo est bien, Grub informar que ha encontrado sus ficheros en /boot/grub. Esto es todo para
activarlo. Cierra el intrprete de comandos de grub:
quit
218
Linux From Scratch - Versin 6.0
Crea un fichero de lista de men para definir el men de arranque de Grub:
cat > /boot/grub/menu.lst << "EOF"
# Inicio de /boot/grub/menu.lst
# Inicia por defecto la primera entrada del men.
default 0
# Espera 30 segundos antes de iniciar la entrada por defecto.
timeout 30
# Usa bonitos colores.
color green/black light-green/black
# La primera entrada es para LFS.
title LFS 6.0
root (hd0,3)
kernel /boot/lfskernel-2.6.8.1 root=/dev/hda4
EOF
Si lo desas, aade una entrada para la distribucin anfitriona. Tendr un aspecto similar a este:
cat >> /boot/grub/menu.lst << "EOF"
title Red Hat
root (hd0,2)
kernel /boot/kernel-2.4.20 root=/dev/hda3
initrd /boot/initrd-2.4.20
EOF
Si necesitas un arranque dual a Windows, la siguiente entrada debera permitirte iniciarlo:
cat >> /boot/grub/menu.lst << "EOF"
title Windows
rootnoverify (hd0,0)
chainloader +1
EOF
Si info grub no te dice todo lo que quieres saber, puedes encontrar ms informacin sobre Grub en su sitio
web, localizado en: http://www.gnu.org/software/grub/.
219
220
Linux From Scratch - Versin 6.0
Captulo 9. El final
9.1. El final
Bien hecho! El nuevo sistema LFS est instalado! Te deseamos mucha diversin con tu flamante sistema
Linux hecho a la medida.
Puede ser una buena idea crear un fichero /etc/lfs-release. Teniendo este fichero te ser muy fcil
(y a nosotros, si es que vas a pedir ayuda en algn momento) saber qu versin de LFS tienes instalada en tu
sistema. Crea este fichero ejecutando:
echo 6.0 > /etc/lfs-release
221
Linux From Scratch - Versin 6.0
9.2. Registrarse
Ahora que has terminado el libro, qu te parecera poder registrarte como usuario de LFS? Visita
http://www.linuxfromscratch.org/cgi-bin/lfscounter.cgi y regstrate como usuario de LFS introduciendo tu
nombre y la primera versin de LFS que has usado.
Arranquemos ahora el sistema LFS.
222
Linux From Scratch - Versin 6.0
9.3. Reinicio del sistema
Ahora que se han instalado todos los programas, es hora de reiniciar el ordenador. Sin embargo, debes tener
en cuenta varias cosas. El sistema que has creado en este libro es bastante reducido y muy posiblemente no
tenga la funcionalidad que podras necesitar para seguir adelante. Instalar varios paquetes adicionales del
libro BLFS mientras an ests en el entorno chroot te dejar en una mejor posicin para continuar una vez
que reinicies tu nueva instalacin LFS. Al instalar un navegador web en modo texto, como Lynx, podrs
facilmente ver el libro BLFS en una terminal mientras compilas los paquetes en otra. El paquete GPM te
permitir copar y pegar en tu terminal virtual. Por ltimo, si ests en una situacin en la que una
configuracin de IP esttica no cubre los requisitos de tu red, instalar ahora paquetes como dhcpcd o ppp es
tambin til.
Una vez dicho esto, vayamos a arrancar nuestra nueva instalacin de LFS por primera vez!. Primero sal del
entorno chroot:
logout
Desmonta los sistemas de ficheros virtuales:
umount
umount
umount
umount
umount
$LFS/dev/pts
$LFS/dev/shm
$LFS/dev
$LFS/proc
$LFS/sys
Desmonta el sistema de ficheros del LFS:
umount $LFS
Si creaste varias particiones, desmonta las otras particiones antes de desmontar la principal, por ejemplo:
umount $LFS/usr
umount $LFS/home
umount $LFS
Ahora reinicia el sistema con:
shutdown -r now
Asumiendo que el gestor de arranque Grub fue configurado como se indic anteriormente, el men est
establecido para que LFS 6.0 arranque automticamente.
Una vez terminado el reinicio, el sistema LFS est listo para su uso y se puede aadir ms software.
223
Linux From Scratch - Versin 6.0
9.4. Y ahora, qu?
Gracias por leer el libro LFS. Esperamos que lo hayas encontrado til y hayas aprendido algo sobre el
proceso de creacin del sistema.
Ahora que el sistema LFS est instalado, puede que te preguntes Y ahora, qu?. Para responder esta
cuestin te hemos preparado una lista de recursos.
Ms All de Linux From Scratch
El libro Ms All de Linux From Scratch (BLFS) cubre los procesos de instalacin de paquetes muy
diferentes que estn fuera del objetivo del Libro LFS. Puedes encontrar el proyecto BLFS en
http://www.linuxfromscratch.org/blfs/ y la traduccin al castellano del libro en
http://www.lfs-es.com/blfs-es-CVS/.
Recetas de LFS
Las recetas de LFS son una serie de documentos educacionales, suministrados por voluntarios a la
comunidad LFS. Las recetas estn disponibles en http://www.linuxfromscratch.org/hints/list.html. En
http://www.lfs-es.com/recetas/ puedes encontrar la traduccin de un buen nmero de ellas, aunque
muchas se encuentran desfasadas en el momento de publicar este libro.
Listas de Correo
Hay varias listas de correo sobre LFS a las que puedes suscribirte si necesitas ayuda, si quieres
mantenerte al corriente de los ltimos desarrollos, si quieres contribuir al proyecto y ms. Para ms
informacin consulta el Captulo 1 - Listas de correo.
El Proyecto de Documentacin de Linux (TLDP)
El objetivo del Proyecto de Documentacin de Linux es colaborar en todo lo relacionado con la creacin
y publicacin de la documentacin sobre Linux. El LDP ofrece una gran coleccin de CMOS, Guas y
pginas de manual y puedes encontrarlo en http://www.tldp.org/. Su filial en castellano se encuentra en
http://es.tldp.org.
224
Linux From Scratch - Versin 6.0
Parte IV. Apndices
Linux From Scratch - Versin 6.0
Apndice A. Acrnimos y trminos
ABI
Application Binary Interface - Interfaz de Aplicacin Binaria
ALFS
Automated Linux From Scratch - Linux From Scratch Automatizado
ALSA
Advanced Linux Sound Architecture - Arquitectura Avanzada de Sonido en Linux
API
Application Programming Interface - Interfaz de Aplicacin para Programacin
ASCII
American Standard Code for Information Interchange - Cdigo Americano Estndar para el
Intercambio de Informacin
BIOS
Basic Input/Output System - Sistema Bsico de Entrada/Salida
BLFS
Beyond Linux From Scratch - Ms All de Linux From Scratch
BSD
Berkeley Software Distribution - Distribucin Berkeley de Software
chroot
change root - cambio de raz
CMOS
Complementary Metal Oxide Semiconductor - Semiconductor Complementario de Oxido de
Metal
COS
Class Of Service - Clase De Servicio
CPU
Central Processing Unit - Unidad Central de Procesamiento
CRC
Cyclic Redundancy Check - Comprobacin Cclica de Redundancia
CVS
Concurrent Versions System - Sistema Concurrente de Versiones
DHCP
Dynamic Host Configuration Protocol - Protocolo Dinmico de Configuracin del Anfitrin
DNS
Domain Name Service - Servicio de Nombres de Dominio
EGA
Enhanced Graphics Adapter - Adaptador Mejorado de Grficos
ELF
Executable and Linkable Format - Formato Ejecutable y Enlazable
EOF
End Of File - Fin De Fichero
EQN
equation - ecuacin
EVMS
Enterprise Volume Management System - Sistema Empresarial de Administracin de Volmenes
ext2
second extended file system - segundo sistema de ficheros extendido
FAQ
Frequently Asked Questions - Cuestiones Preguntadas Frecuentemente
FHS
Filesystem Hierarchy Standard - Estndar de la Jerarqua de Sistemas de Ficheros
FIFO
First In, First Out - Primero en Entrar, Primero en Salir
FQDN
Fully Qualified Domain Name - Nombre de Dominio Completamente Cualificado
FTP
File Transfer Protocol - Protocolo de Transferencia de Ficheros
GB
Gibabytes
GCC
GNU Compiler Collection - Coleccin GNU de Compiladores
GID
Group Identifier - Identificador de Grupo
227
Linux From Scratch - Versin 6.0
GMT
Greenwich Mean Time - Tiempo del Meridiano de Greenwich
GPG
GNU Privacy Guard - Guardin GNU de Privacidad
HTML
Hypertext Markup Language - Lenguaje de Marcas de Hipertexto
IDE
Integrated Drive Electronics - Controlador Electrnico Integrado
IEEE
Institute of Electrical and Electronic Engineers - Instituto de Ingenieros en Electricidad y
Electrnica
IO
Input/Output - Entrada/Salida
IP
Internet Protocol - Protocolo de Internet
IPC
Inter-Process Communication - Comunicacin Entre Procesos
IRC
Internet Relay Chat - Charlas en Internet
ISO
International Organization for Standardization - Organizacin Internacional para la
Estandarizacin
ISP
Internet Service Provider - Proveedor de Servicios de Internet
KB
Kilobytes
LED
Light Emitting Diode - Diodo Emisor de Luz
LFS
Linux From Scratch
LSB
Linux Standards Base - Base de los Estndares en Linux
MB
Megabytes
MBR
Master Boot Record - Registro Maestro de Arranque
MD5
Message Digest 5 - Resmen 5 del Mensaje
NIC
Network Interface Card - Tarjeta de Interfaz de Red
NLS
Native Language Support - Soporte para Lenguaje Nativo
NNTP
Network News Transport Protocol - Protocolo de Red para Transporte de Noticias
NPTL
Native POSIX Threading Library - Librera Nativa de Hilos POSIX
OSS
Open Sound System - Sistema Abierto de Sonido
PCH
Pre-Compiled Headers - Cabeceras Precompiladas
PCRE
Perl Compatible Regular Expression - Expresin Regular Compatible de Perl
PID
Process Identifier - Identificador del Proceso
PLFS
Pure Linux From Scratch - Linux From Scratch Puro
PTY
pseudo terminal
QA
Quality Assurance - Control de Calidad
QOS
Quality Of Service - Calidad Del Servicio
RAM
Random Access Memory - Memoria de Acceso Aleatorio
RPC
Remote Procedure Call - Llamada a Procedimiento Remoto
228
Linux From Scratch - Versin 6.0
RTC
Real Time Clock - Reloj de Tiempo Real
SBU
Static Build Unit - Unidad Esttica de Construccin
SCO
The Santa Cruz Operation
SGR
Select Graphic Rendition - Interpretacin de la Seleccin Grfica
SHA1
Secure-Hash Algorithm 1 - Algoritmo 1 de Tabla Segura
SMP
Symmetric Multi-Processor - Multiprocesador Simtrico
TLDP
The Linux Documentation Project - El Proyecto de Documentacin Linux
TFTP
Trivial File Transfer Protocol - Protocolo Trivial de Transferencia de Ficheros
TLS
Thread-Local Storage - Almacenamiento Local de Hilos
UID
User Identifier - Identificador de Usuario
umask
user file-creation mask - mscara de creacin de ficheros del usuario
USB
Universal Serial Bus - Bus Serie Universal
UTC
Coordinated Universal Time - Tiempo Universal Coordinado
UUID
Universally Unique Identifier - Identificador Universalmente Unico
VC
Virtual Console - Consola Virtual
VGA
Video Graphics Array - Matrz de Grficos de Vdeo
VT
Virtual Terminal - Terminal Virtual
229
230
Linux From Scratch - Versin 6.0
Apndice B. Agradecimientos
Queremos agradecer a las siguientes personas y organizaciones su contribucin al Proyecto LFS-ES:
Gerard Beekmans, por crear el apasionante proyecto Linux From Scratch.
Red ECOLNET, por prestarnos su apoyo incondicional desde el primer momento y facilitarnos los
servicios de CVS, listas de correo y espacio web, que son vitales para realizar nuestro trabajo.
Alberto Ferrer, por poner a nuestra disposicin los servicios de hospedaje de Datta.
Al Equipo del LFS-ES, por su dedicacin e inters en conseguir que este proyecto funcione y que las
traducciones tengan la mejor calidad posible.
A todos aquellos que leen nuestras traducciones con inters, pues es para ellos para quienes las
escribimos.
Queremos agradecer a las siguientes personas y organizaciones su contribucin al Proyecto Linux From
Scratch:
Miembros del equipo del proyecto
Gerard Beekmans <[email protected]> Iniciador de Linux From Scratch, organizador del
Proyecto LFS.
Christine Barczak <[email protected]> Editora del libro LFS
Matthew Burgess <[email protected]> Co-lder del proyecto LFS, mantenedor general
de los paquetes del LFS, editor tcnico del libro LFS.
Craig Colton <[email protected]> Creador del logotipo para los proyectos LFS, ALFS, BLFS y
Hints.
Nathan Coulson <[email protected]> Mantenedor de los guiones de arranque de LFS.
Jeroen Coumans <[email protected]> Desarrollador del sitio web, mantenedor de las FAQ.
Bruce Dubbs <[email protected]> Lder del equipo de calidad de LFS, editor del libro
BLFS.
Manuel Canales Esparcia <[email protected]> Mantenedor de los XML/XSL de LFS.
Jim Gifford <[email protected]> Escritor tcnico de LFS, mantenedor de los parches.
Nicholas Leippe <[email protected]> Mantenedor del Wiki.
Anderson Lizardo <[email protected]> Mantenedor de los guiones de generacin del sitio
web.
Scot Mc Pherson <[email protected]> Mantenedor de la pasarela NNTP de LFS.
Ryan Oliver <[email protected]> Lder del equipo de pruebas, mantenedor de las
herramientas principales y co-creador del PLFS.
Alexander Patrakov <[email protected]> Anterior editor tcnico del LFS
James Robertson <[email protected]> Mantenedor de Bugzilla, desarrollador del Wiki y
editor tcnico del libro LFS.
231
Linux From Scratch - Versin 6.0
Tushar Teredesai <[email protected]> Editor del libro BLFS y mantenedor de los
proyectos Hints y Patches.
Jeremy Utley <[email protected]> Editor tcnico del libro LFS, mantenedor de Bugzilla,
mantenedor de LFS-Bootscripts y co-administrador del servidor LFS.
Zack Winkles <[email protected]> Anterior editor tcnico del LFS.
Innumerables personas de las diversas listas de correo de LFS y BLFS que han hecho que este libro sea
posible mediante sus sugerencias, probando el libro y suministrando informes de errores, instrucciones y
sus experiencias con la instalacin de diversos paquetes.
Traductores
Manuel Canales Esparcia <[email protected]> Proyecto de traduccin al castellano de LFS.
Johan Lenglet <[email protected]> Proyecto de traduccin al francs de LFS.
Anderson Lizardo <[email protected]> Proyecto de traduccin al portugus de LFS.
Thomas Reitelbach <[email protected]> Proyecto de traduccin al alemn de LFS.
Administradores de la red de rplicas
Amrica del Norte
Scott Kveton <[email protected]> lfs.oregonstate.edu
Mikhail Pastukhov <[email protected]> lfs.130th.net.
William Astle <[email protected]> ca.linuxfromscratch.org.
Jeremy Polen <[email protected]> us2.linuxfromscratch.org mirror.
Tim Jackson <[email protected]> linuxfromscratch.idge.net.
Jeremy Utley <[email protected]> lfs.linux-phreak.net.
Amrica del Sur
Manuel Canales Esparcia <[email protected]> lfsmirror.lfs-es.info mirror.
Andres Meggiotto <[email protected]> lfs.mesi.com.ar.
Eduardo B. Fonseca <[email protected]> br.linuxfromscratch.org mirror.
Europa
Barna Koczka <[email protected]> hu.linuxfromscratch.org.
UK Mirror Service linuxfromscratch.mirror.ac.uk.
Martin Voss <[email protected]> lfs.linux-matrix.net.
Guido Passet <[email protected]> nl.linuxfromscratch.org mirror.
232
Linux From Scratch - Versin 6.0
Bastiaan Jacques <[email protected]> lfs.pagefault.net
Roel Neefs <[email protected]> linuxfromscratch.rave.org.
Justin Knierim <[email protected]> www.lfs-matrix.de
Stephan Brendel <[email protected]> lfs.netservice-neuss.de mirror.
Antonin Sprinzl <[email protected]> at.linuxfromscratch.org mirror.
Fredrik Danerklint <[email protected]> se.linuxfromscratch.org mirror.
Parisian sysadmins <[email protected]> www2.fr.linuxfromscratch.org.
Alexander Velin <[email protected]> bg.linuxfromscratch.org.
Dirk Webster <[email protected]> lfs.securewebservices.co.uk mirror
Thomas Skyt <[email protected]> dk.linuxfromscratch.org.
Simon Nicoll <[email protected]> uk.linuxfromscratch.org.
Asia
Pui Yong <[email protected]> sg.linuxfromscratch.org mirror.
Stuart Harris <[email protected]> lfs.mirror.intermedia.com.sg mirror
Australia
Jason Andrade <[email protected]> au.linuxfromscratch.org.
Un agradecimiento muy especial a nuestros donadores
Dean Benson <[email protected]> por mltiples donaciones monetarias.
Hagen Herrschaft <[email protected]> por donar un sistema P4 a 2.2GHz, que ahora corre bajo el nombre
de Lorien.
VA Software que, en nombre de Linux.com, don una estacin de trabajo VA Linux 420 (antes StartX
SP2).
Mark Stone por donar Belgarath, el servidor linuxfromscratch.org.
233
234
Linux From Scratch - Versin 6.0
ndice
Paquetes
Autoconf: 143
Automake: 145
Bash: 147
herramientas: 71
Binutils: 100
herramientas, fase 1: 36
herramientas, fase 2: 55
Bison: 125
herramientas: 73
Bootscripts: 194
funcionamiento: 196
Bzip2: 151
herramientas: 59
Coreutils: 106
herramientas: 58
DejaGNU: 51
Diffutils: 153
herramientas: 61
E2fsprogs: 156
Expect: 49
File: 149
Findutils: 115
herramientas: 62
Flex: 131
herramientas: 74
Gawk: 116
herramientas: 57
GCC: 103
herramientas, fase 1: 38
herramientas, fase 2: 52
Gettext: 133
herramientas: 66
Glibc: 92
herramientas: 42
Grep: 159
herramientas: 64
Groff: 127
Grub: 160
configuracin: 218
Gzip: 162
herramientas: 60
Iana-Etc: 114
Inetutils: 135
iproute2: 137
Kbd: 154
Less: 126
Libtool: 150
Linux: 215
herramientas, cabeceras: 41
Linux-Libc-Headers: 90
herramientas: 40
M4: 124
herramientas: 72
Make: 166
herramientas: 63
Man: 164
Man-pages: 91
Mktemp: 113
Module-Init-Tools: 167
Ncurses: 117
herramientas: 67
Patch: 169
herramientas: 68
Perl: 139
herramientas: 76
Procps: 170
Psmisc: 172
Readline: 119
Sed: 130
herramientas: 65
Shadow: 174
configuracin: 175
Sysklogd: 177
configuracin: 177
Sysvinit: 179
configuracin: 180
Tar: 182
herramientas: 69
Tcl: 47
Texinfo: 141
herramientas: 70
Udev: 183
funcionamiento: 198
herramientas: 77
Util-linux: 185
herramientas: 75
Vim: 121
Zlib: 111
Programas
a2p: 139 , 139
acinstall: 145 , 145
aclocal: 145 , 145
aclocal-1.9.1: 145 , 145
addftinfo: 127 , 127
addr2line: 100 , 101
afmtodit: 127 , 127
agetty: 185 , 186
apropos: 164 , 165
ar: 100 , 101
235
Linux From Scratch - Versin 6.0
arch: 185 , 186
as: 100 , 101
autoconf: 143 , 143
autoheader: 143 , 143
autom4te: 143 , 143
automake: 145 , 145
automake-1.9.1: 145 , 145
autopoint: 133 , 133
autoreconf: 143 , 143
autoscan: 143 , 143
autoupdate: 143 , 143
awk: 116 , 116
badblocks: 156 , 157
basename: 106 , 107
bash: 147 , 148
bashbug: 147 , 148
bigram: 115 , 115
bison: 125 , 125
blkid: 156 , 157
blockdev: 185 , 186
bunzip2: 151 , 151
bzcat: 151 , 151
bzcmp: 151 , 151
bzdiff: 151 , 152
bzegrep: 151 , 152
bzfgrep: 151 , 152
bzgrep: 151 , 152
bzip2: 151 , 152
bzip2recover: 151 , 152
bzless: 151 , 152
bzmore: 151 , 152
c++: 103 , 104
c++filt: 100 , 101
c2ph: 139 , 139
cal: 185 , 186
captoinfo: 117 , 117
cat: 106 , 107
catchsegv: 92 , 96
cc: 103 , 104
cfdisk: 185 , 186
chage: 174 , 175
chattr: 156 , 157
chfn: 174 , 175
chgrp: 106 , 107
chkdupexe: 185 , 186
chmod: 106 , 107
chown: 106 , 107
chpasswd: 174 , 175
chroot: 106 , 107
chsh: 174 , 176
chvt: 154 , 154
cksum: 106 , 107
236
clear: 117 , 117
cmp: 153 , 153
code: 115 , 115
col: 185 , 186
colcrt: 185 , 186
colrm: 185 , 186
column: 185 , 186
comm: 106 , 107
compile: 145 , 145
compile_et: 156 , 157
config.charset: 133 , 133
config.guess: 145 , 145
config.rpath: 133 , 133
config.sub: 145 , 145
cp: 106 , 107
cpp: 103 , 104
csplit: 106 , 107
ctrlaltdel: 185 , 186
cut: 106 , 107
cytune: 185 , 186
date: 106 , 107
dd: 106 , 107
ddate: 185 , 186
deallocvt: 154 , 154
debugfs: 156 , 157
depcomp: 145 , 146
depmod: 167 , 167
df: 106 , 108
diff: 153 , 153
diff3: 153 , 153
dir: 106 , 108
dircolors: 106 , 108
dirname: 106 , 108
dmesg: 185 , 186
dprofpp: 139 , 139
du: 106 , 108
dumpe2fs: 156 , 157
dumpkeys: 154 , 154
e2fsck: 156 , 157
e2image: 156 , 157
e2label: 156 , 157
echo: 106 , 108
efm_filter.pl: 121 , 122
efm_perl.pl: 121 , 122
egrep: 159 , 159
elisp-comp: 145 , 146
elvtune: 185 , 186
en2cxs: 139 , 139
env: 106 , 108
envsubst: 133 , 133
eqn: 127 , 127
eqn2graph: 127 , 127
Linux From Scratch - Versin 6.0
ex: 121 , 122
expand: 106 , 108
expect: 49 , 50
expiry: 174 , 176
expr: 106 , 108
factor: 106 , 108
faillog: 174 , 176
false: 106 , 108
fdformat: 185 , 186
fdisk: 185 , 186
fgconsole: 154 , 154
fgrep: 159 , 159
file: 149 , 149
find: 115 , 115
find2perl: 139 , 140
findfs: 156 , 157
flex: 131 , 132
flex++: 131 , 132
fmt: 106 , 108
fold: 106 , 108
frcode: 115 , 115
free: 170 , 170
fsck: 156 , 157
fsck.cramfs: 185 , 186
fsck.ext2: 156 , 157
fsck.ext3: 156 , 157
fsck.minix: 185 , 186
ftp: 135 , 136
fuser: 172 , 172
g++: 103 , 104
gawk: 116 , 116
gawk-3.1.4: 116 , 116
gcc: 103 , 104
gccbug: 103 , 104
gcov: 103 , 104
gencat: 92 , 96
genksyms: 167 , 167
geqn: 127 , 127
getconf: 92 , 96
getent: 92 , 96
getkeycodes: 154 , 154
getopt: 185 , 186
gettext: 133 , 133
gettextize: 133 , 133
getunimap: 154 , 154
gpasswd: 174 , 176
gprof: 100 , 101
grcat: 116 , 116
grep: 159 , 159
grn: 127 , 127
grodvi: 127 , 128
groff: 127 , 128
groffer: 127 , 128
grog: 127 , 128
grolbp: 127 , 128
grolj4: 127 , 128
grops: 127 , 128
grotty: 127 , 128
groupadd: 174 , 176
groupdel: 174 , 176
groupmod: 174 , 176
groups: 174 , 176
groups: 106 , 108
grpck: 174 , 176
grpconv: 174 , 176
grpunconv: 174 , 176
grub: 160 , 160
grub-install: 160 , 160
grub-md5-crypt: 160 , 160
grub-terminfo: 160 , 161
gtbl: 127 , 128
gunzip: 162 , 162
gzexe: 162 , 162
gzip: 162 , 162
h2ph: 139 , 140
h2xs: 139 , 140
halt: 179 , 181
head: 106 , 108
hexdump: 185 , 186
hostid: 106 , 108
hostname: 106 , 108
hostname: 133 , 133
hpftodit: 127 , 128
hwclock: 185 , 186
iconv: 92 , 96
iconvconfig: 92 , 96
id: 106 , 108
ifnames: 143 , 144
ifstat: 137 , 137
igawk: 116 , 116
indxbib: 127 , 128
info: 141 , 142
infocmp: 117 , 118
infokey: 141 , 142
infotocap: 117 , 118
init: 179 , 181
insmod: 167 , 167
insmod_ksymoops_clean: 167 , 167
install: 106 , 108
install-info: 141 , 142
install-sh: 145 , 146
ip: 137 , 137
ipcrm: 185 , 187
ipcs: 185 , 187
237
Linux From Scratch - Versin 6.0
isosize: 185 , 187
join: 106 , 108
kallsyms: 167 , 167
kbdrate: 154 , 154
kbd_mode: 154 , 154
kernelversion: 167 , 167
kill: 170 , 170
killall: 172 , 173
killall5: 179 , 181
klogd: 177 , 178
ksyms: 167 , 167
last: 179 , 181
lastb: 179 , 181
lastlog: 174 , 176
ld: 100 , 101
ldconfig: 92 , 96
ldd: 92 , 96
lddlibc4: 92 , 96
less: 126 , 126
less.sh: 121 , 122
lessecho: 126 , 126
lesskey: 126 , 126
lex: 131 , 132
libnetcfg: 139 , 140
libtool: 150 , 150
libtoolize: 150 , 150
line: 185 , 187
link: 106 , 108
lkbib: 127 , 128
ln: 106 , 108
loadkeys: 154 , 154
loadunimap: 154 , 154
locale: 92 , 96
localedef: 92 , 96
locate: 115 , 115
logger: 185 , 187
login: 174 , 176
logname: 106 , 108
logoutd: 174 , 176
logsave: 156 , 157
look: 185 , 187
lookbib: 127 , 128
losetup: 185 , 187
ls: 106 , 108
lsattr: 156 , 157
lsmod: 167 , 167
m4: 124 , 124
make: 166 , 166
makeinfo: 141 , 142
makewhatis: 164 , 165
man: 164 , 165
man2dvi: 164 , 165
238
man2html: 164 , 165
mapscrn: 154 , 154
mbchk: 160 , 161
mcookie: 185 , 187
md5sum: 106 , 108
mdate-sh: 145 , 146
mesg: 179 , 181
missing: 145 , 146
mkdir: 106 , 108
mke2fs: 156 , 157
mkfifo: 106 , 108
mkfs: 185 , 187
mkfs.bfs: 185 , 187
mkfs.cramfs: 185 , 187
mkfs.ext2: 156 , 157
mkfs.ext3: 156 , 157
mkfs.minix: 185 , 187
mkinstalldirs: 145 , 146
mklost+found: 156 , 158
mknod: 106 , 108
mkpasswd: 174 , 176
mkswap: 185 , 187
mktemp: 113 , 113
mk_cmds: 156 , 157
mmroff: 127 , 128
modinfo: 167 , 167
modprobe: 167 , 167
more: 185 , 187
mount: 185 , 187
msgattrib: 133 , 133
msgcat: 133 , 133
msgcmp: 133 , 134
msgcomm: 133 , 134
msgconv: 133 , 134
msgen: 133 , 134
msgexec: 133 , 134
msgfilter: 133 , 134
msgfmt: 133 , 134
msggrep: 133 , 134
msginit: 133 , 134
msgmerge: 133 , 134
msgunfmt: 133 , 134
msguniq: 133 , 134
mtrace: 92 , 96
mv: 106 , 108
mve.awk: 121 , 123
namei: 185 , 187
neqn: 127 , 128
newgrp: 174 , 176
newusers: 174 , 176
ngettext: 133 , 134
nice: 106 , 108
Linux From Scratch - Versin 6.0
nl: 106 , 109
nm: 100 , 101
nohup: 106 , 109
nroff: 127 , 128
nscd: 92 , 96
nscd_nischeck: 92 , 96
nstat: 137 , 138
ncleo: 215 , 217
objcopy: 100 , 101
objdump: 100 , 101
od: 106 , 109
openvt: 154 , 155
passwd: 174 , 176
paste: 106 , 109
patch: 169 , 169
pathchk: 106 , 109
pcprofiledump: 92 , 96
perl: 139 , 140
perl5.8.5: 139 , 140
perlbug: 139 , 140
perlcc: 139 , 140
perldoc: 139 , 140
perlivp: 139 , 140
pfbtops: 127 , 128
pg: 185 , 187
pgawk: 116 , 116
pgawk-3.1.4: 116 , 116
pgrep: 170 , 170
pic: 127 , 128
pic2graph: 127 , 128
piconv: 139 , 140
pidof: 179 , 181
ping: 135 , 136
pinky: 106 , 109
pivot_root: 185 , 187
pkill: 170 , 170
pl2pm: 139 , 140
pltags.pl: 121 , 123
pmap: 170 , 170
pod2html: 139 , 140
pod2latex: 139 , 140
pod2man: 139 , 140
pod2text: 139 , 140
pod2usage: 139 , 140
podchecker: 139 , 140
podselect: 139 , 140
post-grohtml: 127 , 128
poweroff: 179 , 181
pr: 106 , 109
pre-grohtml: 127 , 128
printenv: 106 , 109
printf: 106 , 109
ps: 170 , 170
psed: 139 , 140
psf*: 154 , 155
pstree: 172 , 173
pstree.x11: 172 , 173
pstruct: 139 , 140
ptx: 106 , 109
pt_chown: 92 , 96
pwcat: 116 , 116
pwck: 174 , 176
pwconv: 174 , 176
pwd: 106 , 109
pwunconv: 174 , 176
py-compile: 145 , 146
ramsize: 185 , 187
ranlib: 100 , 101
raw: 185 , 187
rcp: 135 , 136
rdev: 185 , 187
readelf: 100 , 101
readlink: 106 , 109
readprofile: 185 , 187
reboot: 179 , 181
ref: 121 , 123
refer: 127 , 128
rename: 185 , 187
renice: 185 , 187
reset: 117 , 118
resize2fs: 156 , 158
resizecons: 154 , 155
rev: 185 , 187
rlogin: 135 , 136
rm: 106 , 109
rmdir: 106 , 109
rmmod: 167 , 168
rmt: 182 , 182
rootflags: 185 , 187
routef: 137 , 138
routel: 137 , 138
rpcgen: 92 , 96
rpcinfo: 92 , 96
rsh: 135 , 136
rtmon: 137 , 138
rtstat: 137 , 138
runlevel: 179 , 181
runtest: 51 , 51
rview: 121 , 123
rvim: 121 , 123
s2p: 139 , 140
script: 185 , 187
sdiff: 153 , 153
sed: 130 , 130
239
Linux From Scratch - Versin 6.0
seq: 106 , 109
setfdprm: 185 , 187
setfont: 154 , 155
setkeycodes: 154 , 155
setleds: 154 , 155
setlogcons: 154 , 155
setmetamode: 154 , 155
setsid: 185 , 187
setterm: 185 , 187
setvesablank: 154 , 155
sfdisk: 185 , 187
sg: 174 , 176
sh: 147 , 148
sha1sum: 106 , 109
showconsolefont: 154 , 155
showkey: 154 , 155
shred: 106 , 109
shtags.pl: 121 , 123
shutdown: 179 , 181
size: 100 , 101
skill: 170 , 170
sleep: 106 , 109
sln: 92 , 96
snice: 170 , 170
soelim: 127 , 128
sort: 106 , 109
splain: 139 , 140
split: 106 , 109
sprof: 92 , 96
ss: 137 , 138
stat: 106 , 109
strings: 100 , 102
strip: 100 , 102
stty: 106 , 109
su: 174 , 176
sulogin: 179 , 181
sum: 106 , 109
swapdev: 185 , 188
swapoff: 185 , 188
swapon: 185 , 188
symlink-tree: 145 , 146
sync: 106 , 109
sysctl: 170 , 170
syslogd: 177 , 178
tac: 106 , 109
tack: 117 , 118
tail: 106 , 109
talk: 135 , 136
tar: 182 , 182
tbl: 127 , 129
tc: 137 , 138
tclsh: 47 , 48
240
tclsh8.4: 47 , 48
tcltags: 121 , 123
tee: 106 , 109
telinit: 179 , 181
telnet: 135 , 136
tempfile: 113 , 113
test: 106 , 109
texi2dvi: 141 , 142
texindex: 141 , 142
tfmtodit: 127 , 129
tftp: 135 , 136
tic: 117 , 118
tload: 170 , 170
toe: 117 , 118
top: 170 , 170
touch: 106 , 110
tput: 117 , 118
tr: 106 , 110
troff: 127 , 129
true: 106 , 110
tset: 117 , 118
tsort: 106 , 110
tty: 106 , 110
tune2fs: 156 , 158
tunelp: 185 , 188
tzselect: 92 , 96
udev: 183 , 183
udevd: 183 , 183
udevinfo: 183 , 183
udevsend: 183 , 183
udevstart: 183 , 183
udevtest: 183 , 183
ul: 185 , 188
umount: 185 , 188
uname: 106 , 110
uncompress: 162 , 162
unexpand: 106 , 110: 106 , 110
unicode_start: 154 , 155
unicode_stop: 154 , 155
unlink: 106 , 110
updatedb: 115 , 115
uptime: 170 , 170
useradd: 174 , 176
userdel: 174 , 176
usermod: 174 , 176
users: 106 , 110
utmpdump: 179 , 181
uuidgen: 156 , 158
vdir: 106 , 110
vidmode: 185 , 188
view: 121 , 123
vigr: 174 , 176
Linux From Scratch - Versin 6.0
vim: 121 , 123
vim132: 121 , 123
vim2html.pl: 121 , 123
vimdiff: 121 , 123
vimm: 121 , 123
vimspell.sh: 121 , 123
vimtutor: 121 , 123
vipw: 174 , 176
vmstat: 170 , 170
w: 170 , 170
wall: 179 , 181
watch: 170 , 171
wc: 106 , 110
whatis: 164 , 165
whereis: 185 , 188
who: 106 , 110
whoami: 106 , 110
write: 185 , 188
xargs: 115 , 115
xgettext: 133 , 134
xsubpp: 139 , 140
xtrace: 92 , 96
xxd: 121 , 123
yacc: 125 , 125
yes: 106 , 110
ylwrap: 145 , 146
zcat: 162 , 162
zcmp: 162 , 162
zdiff: 162 , 162
zdump: 92 , 96
zegrep: 162 , 162
zfgrep: 162 , 163
zforce: 162 , 163
zgrep: 162 , 163
zic: 92 , 96
zless: 162 , 163
zmore: 162 , 163
znew: 162 , 163
zsoelim: 127 , 129
Libreras
ld.so: 92 , 96
libanl: 92 , 97
libasprintf: 133 , 134
libbfd: 100 , 102
libblkid: 156 , 158
libBrokenLocale: 92 , 96
libbsd-compat: 92 , 97
libbz2: 151 , 152
libc: 92 , 97
libcom_err: 156 , 158
libcrypt: 92 , 97
libcurses: 117 , 118
libdl: 92 , 97
libe2p: 156 , 158
libexpect-5.42: 49 , 50
libext2fs: 156 , 158
libfl.a: 131 , 132
libform: 117 , 118
libg: 92 , 97
libgcc: 103 , 104
libgettextlib: 133 , 134
libgettextpo: 133 , 134
libgettextsrc: 133 , 134
libhistory: 119 , 120
libiberty: 100 , 102
libieee: 92 , 97
libltdl: 150 , 150
libm: 92 , 97
libmagic: 149 , 149
libmcheck: 92 , 97
libmemusage: 92 , 97
libmenu: 117 , 118
libncurses: 117 , 118
libnsl: 92 , 97
libnss: 92 , 97
libopcodes: 100 , 102
libpanel: 117 , 118
libpcprofile: 92 , 97
libproc: 170 , 171
libpthread: 92 , 97
libreadline: 119 , 120
libresolv: 92 , 97
librpcsvc: 92 , 97
librt: 92 , 97
libSegFault: 92 , 96
libshadow: 174 , 176
libss: 156 , 158
libstdc++: 103 , 105
libsupc++: 103 , 105
libtcl8.4.so: 47 , 48
libthread_db: 92 , 97
libutil: 92 , 97
libuuid: 156 , 158
liby.a: 125 , 125
libz: 111 , 112
Guiones
checkfs: 194 , 194
cleanfs: 194 , 194
console: 194 , 194
configuracin: 202
functions: 194 , 194
halt: 194 , 194
241
Linux From Scratch - Versin 6.0
ifdown: 194 , 194
ifup: 194 , 194
localnet: 194 , 194
/etc/hosts: 210
configuracin: 209
mountfs: 194 , 194
mountkernfs: 194 , 194
network: 194 , 194
/etc/hosts: 210
configuracin: 211
rc: 194 , 194
reboot: 194 , 194
sendsignals: 194 , 195
setclock: 194 , 195
configuracin: 201
static: 194 , 195
swap: 194 , 195
sysklogd: 194 , 195
configuracin: 208
template: 194 , 195
udev: 194 , 195
Otros
/boot/System.map: 215 , 217
/dev/*: 89
/etc/fstab: 214
/etc/group: 87
/etc/hosts: 210
/etc/inittab: 180
/etc/inputrc: 204
/etc/ld.so.conf: 95
/etc/lfs-release: 221
/etc/limits: 174
/etc/localtime: 94
/etc/login.access: 174
/etc/login.defs: 174
/etc/nsswitch.conf: 94
/etc/passwd: 87
/etc/profile: 206
/etc/protocols: 114
/etc/resolv.conf: 212
/etc/services: 114
/etc/syslog.conf: 177
/etc/udev: 183 , 184
/etc/vim: 122
/usr/include/{asm,linux}/*.h: 90 , 90
/var/log/btmp: 87
/var/log/lastlog: 87
/var/log/wtmp: 87
/var/run/utmp: 87
cabeceras del ncleo: 215 , 217
pginas de manual: 91 , 91
242