____________________________________________________________________________
Copyright Oc 1992-1996 Matt Welsh (Traducción: Proyecto LuCAS)
Versión 2.2.2 - En castellano ver1.0, 8 Agosto de 1996.
Fecha de montaje: 10 de noviembre de 1996
Este es un libro de instalación y guía para nuevos usuarios del sistema Linux, dirigido tanto a los más nóveles en UNIX, como a los más expertos. Contiene información sobre como conseguir el Linux, la instalación de nuevo software, un tutorial para principiantes de UNIX y una introducción a la administración del sistema. Hemos pretendido ser tan genéricos como nos ha sido posible de tal modo que el libro pueda ser aplicable a cualquiera de las distribuciones de software para Linux.
Este libro es de distribución gratuíta. Esto quiere decir que puedes copiarlo y redistribuirlo pero bajo determinadas condiciones. Por favor, mira el copyright y las notas sobre su distribución en la página xiii.
índice General
Prefacio x
Audiencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Organización del Libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Reconocimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
La traducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
Créditos y aspectos Legales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
Notación usada en el documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
1 Introducción a Linux 16
1.1 Sobre este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Breve historia de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 Características del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1 Comandos y utilidades básicas . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.2 Formateado y proceso de textos . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4.3 Lenguajes de programación y utilidades . . . . . . . . . . . . . . . . . . . . . 24
1.4.4 El sistema X Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.4.5 Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4.6 Programas de comunicaciones y BBS . . . . . . . . . . . . . . . . . . . . . . . 27
1.4.7 Enlazando con MS-DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.4.8 Otras aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5 Acerca del Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.6 Diseño y filosofía de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.6.1 Consejos para novatos en UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.6.2 Consejos para los gurús . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.7 Diferencias Entre Linux y Otros Sistemas Operativos . . . . . . . . . . . . . . . .33
1.7.1 ¿Por qué usar Linux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.7.2 Linux vs. MS-DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.7.3 Linux vs. Otros Sistemas Operativos . . . . . . . . . . . . . . . . . . . . . . . 35
1.7.4 Otras implementaciones de UNIX . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.8 Requerimientos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.8.1 Requisitos de Placa Base y de CPU . . . . . . . . . . . . . . . . . . . . . . . 37
1.8.2 Requisitos de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.8.3 Requisitos de la controladora de disco duro . . . . . . . . . . . . . . . . . . .38
1.8.4 Requisitos de espacio en disco . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.8.5 Requisitos de monitor y adaptador de vídeo . . . . . . . . . . . . . . . . . . . 39
1.8.6 Hardware diverso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.8.7 Tarjetas Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.9 Fuentes de información sobre Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.9.1 Documentación On-Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.9.2 Linux en el WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.9.3 Libros y otras publicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.9.4 Grupos de NEWS USENET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.9.5 Listas de correo en Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.10 Cómo obtener ayuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2 Obtención e Instalación de Linux 47
2.1 Distribuciones de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.1.1 Conseguir Linux desde Internet . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.1.2 Conseguir Linux desde otras fuentes online . . . . . . . . . . . . . . . . . . .49
2.1.3 Conseguir Linux por correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.4 Conseguir la Slackware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2 Preparación para instalar Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.2.1 Visión general de la instalación . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.2.2 Conceptos sobre particiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2.3 Necesidades de reparticionado en Linux . . . . . . . . . . . . . . . . . . . . . 58
2.2.4 Reparticionado de los discos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3 Instalación del software de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.3.1 Arranque de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.3.2 Dispositivos y particiones en Linux . . . . . . . . . . . . . . . . . . . . . . . . 63
2.3.3 Creación de las particiones en Linux . . . . . . . . . . . . . . . . . . . . . . . 64
2.3.4 Creación del espacio de intercambio (swap) . . . . . . . . . . . . . . . . . . . 68
2.3.5 Creación de los sistemas de ficheros . . . . . . . . . . . . . . . . . . . . . . . . 69
2.3.6 Instalación del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.3.7 Creación del disco de arranque o instalación del LILO . . . . . . . . . . . 73
2.3.8 Otros procedimientos de instalación . . . . . . . . . . . . . . . . . . . . . . . 74
2.4 Procedimientos post-instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.5 Resolviendo problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.5.1 Problemas con el arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.5.2 Problemas con el hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2.5.3 Problemas con la instalación del software . . . . . . . . . . . . . . . . . . . . 82
2.5.4 Problemas después de instalar Linux . . . . . . . . . . . . . . . . . . . . . . . 83
3 Tutorial de Linux 87
3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.2 Conceptos básicos de UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.2.1 Creación de una cuenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.2.2 Presentación en el sistema (loggin in) . . . . . . . . . . . . . . . . . . . . . . 88
3.2.3 Consolas virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.2.4 Intérpretes de comandos y comandos . . . . . . . . . . . . . . . . . . . . . . . 89
3.2.5 Salida del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.2.6 Cambiando la palabra de paso . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.2.7 Ficheros y directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.2.8 El árbol de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.2.9 Directorio de trabajo actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.2.10 Refiriendose al directorio home . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.3 Primeros pasos en UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.3.1 Moviendonos por el entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.3.2 Mirando el contenido de los directorios . . . . . . . . . . . . . . . . . . . . . . 96
3.3.3 Creando directorios nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.3.4 Copia de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.3.5 Moviendo ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.3.6 Borrando ficheros y directorios . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.3.7 Mirando los ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.3.8 Obteniendo ayuda en línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.4 Sumario de Ordenes Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.5 Explorando el Sistema de Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.6 Tipos de intérpretes de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.7 Carácteres comodín . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.8 Fontanería UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.8.1 Entrada y salida estandard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.8.2 Redireccionando la entrada y salida . . . . . . . . . . . . . . . . . . . . . . . 110
3.8.3 Uso de tuberías (pipes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
3.8.4 Redirección no destructiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.9 Permisos de Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.9.1 Conceptos de permisos de ficheros . . . . . . . . . . . . . . . . . . . . . . . . 113
3.9.2 Interpretando los permisos de ficheros . . . . . . . . . . . . . . . . . . . . . . 114
3.9.3 Dependencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.9.4 Cambiando permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.10 Manejando enlaces de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.10.1 Enlaces duros (Hard links) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.10.2 Enlaces simbólicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.11 Control de Tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
3.11.1 Tareas y procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
3.11.2 Primer plano y Segundo plano . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.11.3 Envío a segundo plano y eliminación procesos . . . . . . . . . . . . . . . . . . 120
3.11.4 Parada y relanzamiento de tareas . . . . . . . . . . . . . . . . . . . . . . . . . 122
3.12 Usando el editor vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.12.1 Conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.12.2 Comenzando con vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
3.12.3 Insertando texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
3.12.4 Borrando texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.12.5 Modificando texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.12.6 Ordenes de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.12.7 Guardando ficheros y saliendo de vi . . . . . . . . . . . . . . . . . . . . . . . 129
3.12.8 Editando otro fichero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
3.12.9 Incluyendo otros ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
3.12.10Ejecutando comandos del intérprete . . . . . . . . . . . . . . . . . . . . . . . 131
3.12.11Obteniendo ayuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.13 Personalizando su entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.13.1 Guiones del intérprete de comandos . . . . . . . . . . . . . . . . . . . . . . . 132
3.13.2 Variables del intérprete de comandos y el entorno . . . . . . . . . . . . . . 133
3.13.3 Guiones de inicialización del intérprete . . . . . . . . . . . . . . . . . . . . . . 136
3.14 ¿Quieres seguir por tu cuenta? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4 Administración del Sistema 138
4.1 Acerca de Raíces, Sombreros y la Sensación de Poder . . . . . . . . . . . . . . . 138
4.1.1 La cuenta root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.1.2 Abusando del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.1.3 Como proceder con los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.1.4 Fijando las reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.1.5 Lo que todo esto significa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.2 Arrancando el Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.2.1 Utilizando un disquete de arranque . . . . . . . . . . . . . . . . . . . . . . . . 141
4.2.2 Utilizando LILO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.3 Cerrando el Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.4 Gestión de Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.4.1 Conceptos de gestión de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.4.2 Añadiendo usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.4.3 Borrando usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.4.4 Poniendo atributos de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.4.5 Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.5 Archivando y Comprimiendo Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.5.1 Utilizando tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.5.2 gzip y compress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.5.3 Juntándolo todo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.6 Usando Disquetes y Haciendo Copias de Seguridad . . . . . . . . . . . . . . . . . 151
4.6.1 Utilizando disquetes para copias de seguridad . . . . . . . . . . . . . . . . . 151
4.6.2 Utilizando disquetes como sistemas de ficheros . . . . . . . . . . . . . . . .152
4.7 Actualizando e Instalando Nuevo Software . . . . . . . . . . . . . . . . . . . . . . . . 153
4.7.1 Actualizando el núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
4.7.2 Actualizando las librerías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.7.3 Actualizando gcc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4.7.4 Actualizando otro software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4.8 Gestionando Sistemas de Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4.8.1 Montando sistemas de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.8.2 Comprobando sistemas de ficheros . . . . . . . . . . . . . . . . . . . . . . . . 158
4.9 Utilizando un fichero de intercambio . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
4.10 Tareas Varias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
4.10.1 Ficheros de arranque del sistema . . . . . . . . . . . . . . . . . . . . . . . . . 161
4.10.2 Estableciendo el nombre del ordenador . . . . . . . . . . . . . . . . . . . . . . 161
4.11 Qué Hacer En Una Emergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
4.11.1 Recuperación utilizando un disquete de mantenimiento . . . . . . . . . 163
4.11.2 Arreglando la password de root . . . . . . . . . . . . . . . . . . . . . . . . . . 163
4.11.3 Arreglando sistemas de ficheros corrompidos . . . . . . . . . . . . . . . . . .164
4.11.4 Recuperando ficheros perdidos . . . . . . . . . . . . . . . . . . . . . . . . . . 164
4.11.5 Arreglando librerías corrompidas . . . . . . . . . . . . . . . . . . . . . . . . . 164
5 Características avanzadas 165
5.1 El sistema X Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.1.1 Requisitos de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.1.2 Instalación de XFree86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
5.1.3 Configuración de XFree86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.1.4 Introducción de los datos de la tarjeta gráfica . . . . . . . . . . . . . . . . . . 177
5.1.5 Funcionamiento de XFree86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.1.6 Ejecución con problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.2 Acceso a ficheros MS-DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.3 Redes con TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.3.1 Hardware requerido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.3.2 Configuración de TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
5.3.3 Configuración de SLIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.3.4 Utilización de dip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.4 Red con UUCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
5.5 Correo Electrónico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
5.6 News y USENET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
A Fuentes de Información de Linux 198
A.1 Documentos en Línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
A.2 Manuales del Proyecto de Documentación de Linux . . . . . . . . . . . . . . . . .200
A.3 Libros y Otros Trabajos Publicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
A.3.1 Usando UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
A.3.2 Administración de Sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
A.3.3 The X Window System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
A.3.4 Programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
A.3.5 Manejo del Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
B Lista de Vendedores de Linux 205
C Tutorial de FTP y Lista de Sites 208
C.1 Aprendiendo ftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
C.2 Registrandose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
C.3 Moviendonos dentro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
C.4 Traerse ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
C.5 Saliendo de FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
C.6 Usando ftpmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
C.7 Lista de FTP Sites de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
D Lista de BBS de Linux 215
D.1 Estados Unidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
D.2 Fuera de los Estados Unidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
E Linux en España 219
E.1 Internet Sites en España . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
E.2 BBS Españoles con ficheros Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
F The GNU General Public License 221
F.1 Preámbulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
F.2 Términos y Condiciones para la Copia, Distribución y Modificación . . . .222
F.3 Apéndice: Cómo aplicar estos términos a sus nuevos programas . . . . . . . 225
Glosario 227
Indice de Materias 228 - 246
Prefacio
"You are in a maze of twisty little passages, all alike."
Tiene ante usted a uno de los sistemas más completos y amenazantes que jamás se ha escrito:
Linux, el clónico de UNIX gratuito para el ordenador personal (PC), generado por un heterogeneo
equipo formado por gurús de UNIX y hackers junto al recién llegado de turno. El sistema en sí refleja
esta compleja herencia y, a pesar de que el desarrollo de Linux puede parecer un esfuerzo voluntario
desorganizado, el sistema es potente, rápido y gratuito. Es un verdadero sistema operativo de 32 bits (1).
_________________________________________
(1) N. del T.: En la actualidad ya existen versiones de 64-bits para algunas otras plataformas hardware distintas del PC.
________________________________________________________________________________
Mis propias experiencias con Linux comenzaron hace años, cuando me senté a adivinar como
instalar la única "distribución" disponible en aquel tiempo_un par de disquetes que me hizo llegar
H.J. Lu. Descargué una pila de ficheros y leí páginas y páginas de notas de instalación líbremente
organizadas. De algún modo, conseguí instalar este sistema básico y hacer que todo funcionase.
Esto fue mucho antes de que se pudiera comprar el software de Linux en CD-ROM a distribuidores
mundiales; de hecho, antes de que Linux siquiera supiese como acceder a una unidad CD-ROM.
Esto fue antes del XFree86, antes de Emacs, antes del soporte de software comercial, y antes de que
Linux llegase a ser un verdadrero rival de MS-DOS, Microsoft Windows, y OS/2 en el mercado del
ordenador personal.
Tiene en sus propias manos el mapa y libro de ruta hacia el mundo de Linux. Espero que este
libro le ayude a echarse a andar con el que yo considero que es el más rápido y más potente sistema
operativo que existe para el ordenador personal. Instalar su propio sistema Linux puede ser un gran
momento de diversión_de modo que coja una taza de café, sientese cómodamente, y siga leyendo.
Mientras esté con ello coja una taza también para mí. Yo también he estado despierto enredando
con el Linux durante días.
Audiencia
Este libro esta destinado a cualquier usuario de PC que quiera instalar y usar el Linux en su sis-
tema. Se asume que Ud. tiene unos conocimientos básicos sobre ordenadores personales y sistemas
operativos tales como MS-DOS, pero no se asume ningún conocimiento previo sobre Linux o UNIX.
A pesar de esto, sugerimos a los principiantes de UNIX que investiguen en alguno de los muchos
y buenos libros que existen sobre él. Algunos de ellos aparecen listados en el Apéndice A.
Organización del Libro
Este libro contiene los siguientes capítulos:
Capítulo 1, Introducción a Linux, da una introducción general a lo que es Linux, que puede hacer
por Ud., y que se necesita para hacerlo funcionar en su sistema. También proporciona sugerencias
útiles para obtener ayuda y reducir el stress general.
Capítulo 2, Obtener e Instalar Linux, explica como obtener el software de Linux, así como la
forma instalarlo_desde reparticionar su unidad, crear sistemas de ficheros, y cargar el software en
el sistema. Contiene instrucciones que se suponen generales para cualquier distribución de Linux, y
confía en que la documentación suministrada para su versión particular cubra todos los huecos.
Capítulo 3, Tutorial de Linux, es una introducción completa de como usar el sistema Linux para
principiantes de UNIX. Si ya tiene experiencia previa con UNIX, la mayoría de este material debería serle familiar.
Capítulo 4, Administración del Sistema, presenta muchos de los conceptos importantes de la
administración del sistema bajo Linux. Esto será también de interés para administradores de sistemas UNIX que quieran saber acerca de las formas concretas de llevar un sistema en Linux.
Capítulo 5, Características Advanzadas, presenta al lector un gran número de las características
avanzadas que soporta el Linux, tales como el Sistema X-Window y el protocolo de red TCP/IP. Se
incluye una guía completa de configuración de XFree86-3.1.
Apéndice A, Fuentes de Información de Linux, es un listado de otras fuentes de información
acerca de Linux, incluyendo grupos de noticias, listas de distribución, documentos en-línea, y libros.
Apéndice B, Lista de Vendedores de Linux, proporciona una breve lista de vendedores de software que ofrecen software y servicios de Linux.
Apéndice C, Tutorial de FTP y Lista de Sites, es un tutorial para recibir ficheros desde Internet
con FTP. Este apéndice también incluye una lista de sites de FTP que mantienen software Linux.
Apéndice D, Lista de BBS Linux, es una lista de BBS (2) a lo ancho del mundo que mantienen
software de Linux. Dado que la mayoría de usuarios de Linux no disponen de acceso a Internet, es
importante que se ponga a disposición la información sobre los sistemas BBS.
Apéndice F, La licencia GNU General Public License, contiene una copia de la Licencia GNU, el
acuerdo de licencia bajo el cual se distribuye Linux. Es muy importante que los usuarios de Linux
entiendan la GPL; en los últimos meses han surgido muchos desacuerdos sobre los términos de dicha Licencia (3).
_________________________________________
(2) Sistema de Tablón de Boletines, Bulletin Board Sistem
(3) N. del T.: Precisamente por eso hemos decidido dejar el original de la GPL intacto y en inglés. No conocemos de la existencia de ninguna traducción oficial de la GPL al castellano.
________________________________________________________________________________
Apéndice E, Linux en España, es una relación de todos aquellos aspectos de Linuxque puedan in-
teresar al usuario español. Contempla forums de mensajería españoles, BBS, canales de distribución,
ftp-sites españoles, etc
Reconocimientos
Este libro ha tardado mucho en hacerse, y mucha gente ha sido responsable de su realización. En
particular, me gustaria agradecer a Larry Greenfield y Karl Fogel por su trabajo en la primera
versión del Capítulo 3, y a Lasr Wirzenius por su trabajo en el Capítulo 4. Gracias a Michael K.
Johnson por su apoyo al LDP (4) y las convenciones LATEX usadas en este manual, y a Ed Chi, quien me envió una copia impresa del libro para su edición.
_________________________________________
(4) LDP es Linux Documentation Project, o Proyecto de Documentación de Linux
________________________________________________________________________________
Gracias a Melinda A. McBride de SSC, Inc., quien hizo un excelente trabajo completando el
índice de los Capítulos 3, 4, y 5. También quisiera agradecer a Andy Oram, Lar Kaufman, y Bill
Hahn de O'Reilly and Associates por su ayuda al Linux Documentation Project.
Gracias a Linux Systems Labs, Morse Telecommunications, Yggdrasil Computing, y otros por su
soporte del Linux Documentation Project a través tanto de las ventas de este libro como de otros
trabajos.
Muchas gracias a gran cantidad de activistas, incluyendo (sin ningún orden específico) a Linus
Torvalds, Donald Becker, Alan Cox, Remy Card, Ted T'so, H.J. Lu, Ross Biro, Drew Eckhardt, Ed
Carp, Eric Youngdale, Fred van Kempen, Steven Tweedie, y otros muchos más, por dedicar tanto
tiempo y energía a este proyecto, y sin los cuales no habría nada sobre lo que escribir.
Gracias especialmente al gran número de lectores que han enviado sus útiles comentarios y cor-
recciones. Hay tantísimos que citar aqui. >Quién necesita un corrector ortográfico teniendo tanta
audiencia?
Matt Welsh
13 de Enero de 1994
La traducción
Lo anterior es por parte del autor. Asi que, por lo que al equipo de traducción respecta tengo que
agradecer especialmente a aquellos que han colaborado en traducir este gran montón de líneas, que
yo solo no me hubiera atrevido ni siquiera a intentarlo: Gerardo Izquierdo, Juan Jose Amor, Eduardo Lluna, Luis Ramón Duarte, Guillermo Bautista y Carlos Martínez Chacartegui, así como a todos aquellos que también se ofrecieron a colaborar en esta tarea.
Quiero hacer constar que todo nuestro esfuerzo ha sido llevado a cabo de una forma completamente altruista. Ninguno de nosotros somos profesionales de la traducción y eso, lamentablemente, se nota. Te ruego que seas benevolente con nosotros y que, en la medida de tus posibilidades, nos ayudes a hacer de este libro la mejor fuente de consulta en español sobre Linux.
Un agradecimiento especial a mi gran amigo Ramón Gutierrez, quien me dio la idea de traducir
este libro y me apoyó hasta terminarlo, además de encargarse de la tarea más importante, la de
montar todos los trozos.
Alfonso Belloso
10 de noviembre de 1996
Créditos y aspectos Legales
El Proyecto de Documentación de Linux es un amplio grupo de escritores, correctores, y editores
que están trabajando en un conjunto definitivo de manuales de Linux. El coordinador general del
proyecto es Matt Welsh, ayudado por Lars Wirzenius y Michael K. Johnson.
Este manual no es más que uno entre un conjunto de varios distribuidos por el Proyecto de
Documentación de Linux, que incluyen una Guía de Usuario de Linux, Guía del Administrador
del Sistema, y Guía del Hacker del Kernel. Estos manuales están todos disponibles en formato
fuente LATEX y salida Postscript a través de FTP anónimo en sunsite.unc.edu, en el directorio
/pub/Linux/docs/LDP (5)
_________________________________________
(5) N. del T.: Esperamos que, en breve, pueda recoger esta versión traducida y actualizada también allí
________________________________________________________________________________
Animamos a cualquiera al que le guste escribir o editar a que se una a nosotros a fin de mejorar
la documentación de Linux. Si dispone de acceso a correo electrónico de Internet (e-mail), puede
apuntarse al canal DOC de la lista de distribución de correo Linux-Activists enviando un mensaje
a
linux-activists-request[arroba]niksula.hut.fi
con la línea
X-Mn-Admin: join DOC
como primera línea del cuerpo del mensaje.
Sírvase ponerse en contacto con el autor y coordinador de este manual si tiene preguntas, postales, dinero, o ideas. Matt Welsh puede ser localizado via Internet e-mail en mdw[arroba]sunsite.unc.edu, y en la vida real en
205 Gray Street
Wilson, N.C. 27896
U.S.A.
UNIX es una marca comercial de X/Open.
Linux no es una marca comercial, y no tiene conexión alguna con UNIXTM o X/Open.
El Sistema X Window es una marca comercial del Massachusetts Institute of Technology.
MS-DOS y Microsoft Windows son marcas comerciales de Microsoft, Inc.
Copyright Oc 1992-1994 Matt Welsh
205 Gray Street NE, Wilson NC, 27893 USA
mdw[arroba]sunsite.unc.edu
Linux Installation and Getting Started puede ser reproducido y distribuido, en su totalidad o en
parte, sujeto a las siguientes condiciones (6).
_________________________________________
(6) N. del T.: Las mismas condiciones son aplicables a esta traducción
________________________________________________________________________________
0. La nota de copyright de arriba y esta notificación de permiso se deben conservar completas en
todas las copias completas o parciales.
1. Cualquier traducción o trabajo derivado de Linux Installation and Getting Started debe ser
aprobado por el autor por escrito antes de su distribución.
2. Si Ud. distribuye Linux Installation and Getting Started parcialmente, debe incluir instruc-
ciones para obtener la versión completa de este manual, y proporcionar medios para la obtención de una versión completa.
3. Se pueden reproducir pequeñas porciones como ilustraciones para revistas o citas en otros
trabajos sin esta notificación de permiso si se da la mención oportuna.
4. La Licencia Pública General "GNU General Public License", a la que se hace referencia más
abajo, puede reproducirse bajo las condiciones dadas con ella.
5. Varias secciones de este documento están sujetas a copyrights separados. Cuando esas sec-
ciones estén cubiertas por un copyright distinto, se hará saber el susodicho copyright. Si
Ud distribuye Linux Installation and Getting Started en parte, y esa parte esta,
en su totalidad, cubierta bajo un copyright separado conocido, se aplicarán las
condiciones de ese copyright.
Se pueden conceder excepciones a estas reglas con fines académicos: Escriba a Matt Welsh, a la
dirección de arriba, o por correo electrónico a mdw[arroba]sunsite.unc.edu, y pregunte. Estas restricciones están aquí para protegernos como autores, no para restringirles a Uds. como educadores o aprendices.
El autor anima a los distribuidores de software de Linux en cualquier medio a usar el libro como
una guía de instalación y de nuevo usuario. Dado el copyright de arriba, Ud. es libre de imprimir
y distribuir copias de este libro con su software. Puede optar por distribuir este libro sin cargo
alguno, o para lograr un beneficio. Si lo hace asi, puede desear incluir un pequeño "suplemento de
instalación" para su versión.
El autor desearía saber de cualquier plan de publicar y distribuir este libro comercialmente. De
este modo, podemos asegurar de que Ud. se mantiene al dia con nuevas revisiones. Y, si hubiese
una nueva versión a punto de salir, Ud. podría desear retrasar la publicación del libro hasta que
esté disponible.
Si Ud. esta distribuyendo este libro comercialmente, cualquier donación, royalties, y/o copias
impresas serian enormemente apreciadas por el autor. La contribución en este sentido muestra su
apoyo al software libre y al Proyecto de Documentación de Linux.
Todo el código fuente en Linux Installation and Getting Started se ha puesto bajo la licencia GNU
General Public License. Vea el Apéndice F con una copia de la licencia GNU "GPL."
Notación usada en el documento
Este acuerdo de notación debería de ser obvio, no obstante se incluye aquí por si acaso.
Negita Usado para resaltar conceptos nuevos, AVISOS, y palabras clave de un len-
guaje.
itálicas Usado para enfatizar en el texto, y ocasionalmente para citas o presentaciones al
comienzo de una sección. También usado para indicar comandos que teclee el usuario
cuando se muestra interacción con la pantalla (ver debajo).
<sesgado> Usado para marcar meta-variables en el texto, especialmente en representaciones
de la línea de comandos. Por ejemplo,
ls -l <foo>
donde <foo> "equivale a" un nombre de fichero, como /bin/cp.
Escritura de máquina
Usada para representar interacción de pantalla, como en
$ ls -l /bin/cp
-rwxr-xr-x 1 root wheel 12104 Sep 25 15:53 /bin/cp
También se usa en ejemplos de código, ya sea código C, un script de la shell, o
cualquier otro, y para mostrar ficheros en general, tales como ficheros de configuración.
Cuando sea necesario, y por una mejor claridad, estos ejemplos o figuras
se incluirán en cajas.
|_Tecla_| Representa una tecla a pulsar. A menudo lo verá de esta forma:
________
Press |_return_|to continue.
3 Un diamante en el margen, como un diamante negro en una pista de esqui, señala
"peligro" o "precaución". Lea detenidamente los párrafos marcados de esta forma.
_________________________________________________________________________________
Nota del Convertidor: Por motivos obvios de conversión de formatos, esta notación no se ha podido mantener.
_________________________________________________________________________________
Capítulo 1
Introducción a Linux
Linux es probablemente el acontecimiento más importante del software gratuito desde el original
Space War, o, más recientemente, Emacs. Se ha convertido en el sistema operativo para los negocios, educación, y provecho personal. Linux ya no es solo para gurús de UNIX que se sientan durante horas frente a la resplandeciente consola (aunque le aseguramos que un gran número de usuarios pertenece a esta categoría). Este libro le ayudará a sacarle el máximo partido.
Linux (pronounciado con una i corta, como en LIH-nucs) es un clónico del sistema operativo
UNIX que corre en ordenadores Intel 80386 y 80486. Soporta un amplio rango de software, desde
TEX a X Windows al compilador GNU C/C++ a TCP/IP. Es una implementación de UNIX versátil,
distribuida gratuitamente en los términos de la Licencia GNU (vea el Apéndice F).
Linux puede convertir cualquier PC 386 o 486 en una estación de trabajo. Le pondrá todo el
poder de UNIX en la punta de sus dedos. En los negocios ya se instala Linux en redes enteras,
usando el sistema operativo para manejar registros financieros y de hospitales, un entorno de usuario distribuido, telecomunicaciones, etc. Universidades de todo el mundo usan Linux para dar cursos de programación y diseño de sistemas operativos. Y, por supuesto, entusiastas de los ordenadores de todo el mundo están usando Linux en casa, para programar, entretenerse, y conocerlo a fondo.
Lo que hace a Linux tan diferente es que es una implementación gratuita de UNIX. Fue y aun
es desarrollado por un grupo de voluntarios, principalmente en Internet, intercambiando código,
comentando fallos, y arreglando los problemas en un entorno abierto. Cualquiera es bienvenido a
sumarse al esfuerzo de desarrollo de Linux: todo lo que se pide es interés en producir un clónico
gratuito de UNIX y algunos conocimientos de programación. El libro que tiene en sus manos es su
guía de viaje.
1.1 Sobre este libro
Este libro es una guía de instalación e iniciación al sistema Linux. El objetivo es conseguir que los
nuevos usuarios se adapten y hagan funcionar el sistema, condensando tanto material importante
como sea posible dentro de un libro. En lugar de abarcar muchos de los volátiles detalles técnicos,
esas cosas que tienden a cambiar con el veloz desarrollo, le ofrecemos una base suficiente con la que podrá buscar más por Ud. mismo.
Linux no es difícil de instalar y usar. Sin embargo, como cualquier implementación de UNIX, a
menudo hay algo de magia negra implicada para conseguir que todo funcione correctamente. Esper-
amos que este libro le introduzca en el mundo del Linux y le muestre cuan atractivo puede llegar a
ser este sistema operativo.
En este libro se tratan los siguientes temas.
o ¿Qué es Linux? El diseño y la filosofía de este sistema operativo único, y lo que puede hacer
por Ud.
o Todos los detalles de lo que es necesario para correr Linux, incluyendo sugerencias sobre que
tipo de configuración hardware se recomienda para un sistema completo.
o Como obtener e instalar Linux. Hay muchas distribuciones del software de Linux. Presentamos
una discusión general de las distribuciones de software de Linux, como obtenerlas, e instruc-
ciones genéricas para instalar el software (que deberían ser aplicables a cualquier distribución).
Esta edición también contiene instrucciones específicas para la distribución Slackware de Linux.
o Un breve tutorial de introducción a UNIX, para aquellos usuarios que nunca antes hayan tenido
contacto con UNIX. Este tutorial debería proporcionar, esperamos, material suficiente para que
completos novatos consigan los conocimientos básicos de como moverse por el sistema.
o Una introducción a la administración de sistemas con Linux. Esto abarca las tareas más
importantes con las que los nuevos administradores de Linux necesitarán familiarizarse, tales
como crear usuarios, manejar los sistemas de ficheros, y muchas más.
o Información sobre configuración de aspectos más avanzados de Linux, como el Sistema X Window, redes con TCP/IP y SLIP, y la puesta en marcha del correo electrónico y sistemas de
news.
Este libro es para el usuario de ordenador personal que desea iniciarse en Linux. No se asume
experiencia previa de UNIX, pero se espera que los novatos busquen más materiales sobre la marcha.
Para los no familiarizados con UNIX, se da una lista de fuentes de información útiles en el Apéndice A.
En general, se pretende que este libro se lea junto con otro libro sobre conceptos básicos de UNIX.
1.2 Breve historia de Linux
UNIX es uno de los sistemas operativos más populares del mundo debido a su extenso soporte y
distribución. Originalmente fue desarrollado como sistema multitarea con tiempo compartido para
miniordenadores y mainframes a mediados de los 70, y desde entonces se ha convertido en uno de los sistemas más utilizados a pesar de su, ocasionalmente, confusa interfaz con el usuario y el problema de su estandarización.
¿Cuál es la verdadera razón de la popularidad de UNIX? Muchos hackers consideran que UNIX
es el auténtico y único sistema operativo. El desarrollo de Linux parte de un grupo en expansión de
hackers de UNIX que quisieron hacer su sistema con sus propias manos.
Existen numerosas versiones de UNIX para muchos sistemas, desde ordenadores personales hasta
supercomputadores como el Cray Y-MP. La mayoría de las versiones de UNIX para ordenadores
personales son muy caras. Cuando se escribía este libro, una copia para una máquina 386 del UNIX
System V de AT&T costaba unos 1500 dólares estadounidenses.
Linux es una versión de UNIX de libre distribución, inicialmente desarrollada por Linus Torvalds (1) en la Universidad de Helsinki, en Finlandia. Fue desarrollado con la ayuda de muchos programadores y expertos de Unix a lo largo y ancho del mundo, gracias a la presencia de Internet. Cualquier habitante del planeta puede acceder a Linux y desarrollar nuevos módulos o cambiarlo a su antojo. El núcleo de Linux no utiliza ni una sola línea del código de AT&T o de cualquier otra fuente de propiedad comercial, y buena parte del software para Linux se desarrolla bajo las reglas del proyecto de GNU de la Free Software Foundation, Cambridge, Massachusetts.
_________________________________________
(1) torvalds[arroba]kruuna.helsinki.fi.
____________________________________________________________________________
Inicialmente, sólo fue un proyecto de aficiónado de Linus Torvalds. Se inspiraba en Minix, un
pequeño UNIX desarrollado por Andy Tanenbaum, y las primeras discusiones sobre Linux surgieron en el grupo de News comp.os.minix. Estas discusiones giraban en torno al desarrollo de un pqeueño sistema UNIX de carácter académico dirigido a aquellos usuarios de Minix que querían algo más.
El desarrollo inicial de Linux ya aprovechaba las características de conmutación de tareas en
modo protegido del 386, y se escribió todo en ensamblador. Linus dice,
"Comencé a utilizar el C tras escribir algunos drivers, y ciertamente se aceleró el
desarrollo. En este punto sentí que mi idea de hacer un `un Minix mejor que Minix'se
hacía más seria. Esperaba que algún día pudiese recompilar el gcc bajo Linux. . .
"Dos meses de trabajo, hasta que tuve un driver de discos (con numerosos bugs, pero
que parecía funcionar en mi PC) y un pequeño sistema de ficheros. Aquí tenía ya la
versión 0.01 [al final de Agosto de 1991]: no era muy agradable de usar sin el driver de
disquetes, y no hacía gran cosa. No pensé que alguien compilaría esa versión."
No se anunció nada sobre esa versión, puesto que las fuentes del 0.01 jamás fueron ejecutables:
contenían solo rudimentos de lo que sería el núcleo , y se asumía que se tenía acceso a un Minix para poderlo compilar y jugar con él.
El 5 de Octubre de 1991, Linus anunció la primera versión "oficial" de Linux, la 0.02. Ya podía
ejecutar bash (el shell de GNU) y gcc (el compilador de C de GNU), pero no hacía mucho más. La
intención era ser un juguete para hackers. No había nada sobre soporte a usuarios, distribuciones,
documentación ni nada parecido. Hoy, la comunidad de Linux aun trata estos asuntos de forma
secundaria. Lo primero sigue siendo el desarrollo del kernel.
Linus escribía en comp.os.minix,
"¿Suspiráis al recordar aquellos días de Minix-1.1, cuando los hombres eran hombres
y escribían sus propios drivers? ¿Os sentís sin ningún proyecto interesante y os gustaría
tener un verdadero S.O. que pudiérais modificar a placer? ¿Os resulta frustrante el tener
solo a Minix? Entonces, este artículo es para vosotros.
"Como dije hace un mes, estoy trabajando en una versión gratuita de algo parecido
a Minix para ordenadores At-386. He alcanzado la etapa en la que puede ser utilizable y
voy a poner las fuentes para su distribución. Es solo la versión 0.02. pero he conseguido
ejecutar en él bash, gcc, gnu-make, gnu-sed, compress, etc."
Tras la versión 0.03, Linus saltó a la versión 0.10, al tiempo que más gente empezaba a participar
en su desarrollo. Tras numerosas revisiones, se alcanzó la versión 0.95, reflejando la esperanza
de tener lista muy pronto una versión "oficial". (Generalmente, la versión 1.0 de los programas
se corresponden con la primera teóricamente completa y sin errores). Esto sucedía en Marzo de
1992. Año y medio después, en Diciembre del 93, el núcleo estaba en la revisión 0.99.pl14, en una
aproximación asintótica al 1.0. Actualmente, el núcleo se encuentra en la versión 1.1 parche 52, y se
acerca la 1.2.2
Hoy Linux es ya un clónico de UNIX completo, capaz de ejecutar X Window, TCP/IP, Emacs,
UUCP y software de correo y News. Mucho software de libre distribución ha sido ya portado a
Linux, y están empezando a aparecer aplicaciones comerciales. El hardware soportado es mucho
mayor que en las primeras versiones del núcleo. Mucha gente ha ejecutado tests de rendimiento en
sus sistemas Linux 486 y se han encontrado que son comparables a las estaciones de trabajo de gama media de Sun Microsystems y Digital. >Quién iba a imaginar que este "pequeño" clónico de UNIX iba a convertirse en un estándar mundial para los ordenadores personales?
1.3 Características del sistema
Linux implementa la mayor parte de las características que se encuentran en otras implementaciones de UNIX, más algunas otras que no son habituales. En esta sección nos daremos una vuelta por todo ello.
Linux es un sistema operativo completo con multitarea y multiusuario (como cualquier otra
versión de UNIX). Esto significa que pueden trabajar varios usuarios simultáneamente en él, y que
cada uno de ellos puede tener varios programas en ejecución.
El sistema Linux es compatible con ciertos estándares de UNIX a nivel de código fuente, in-
cluyendo el IEEE POSIX.1, System V y BSD. Fue desarrollado buscando la portabilidad de los
fuentes: encontrará que casi todo el software gratuito desarrollado para UNIX se compila en Linux
sin problemas. Y todo lo que se hace para Linux (código del núcleo, drivers, librerías y programas
de usuario) es de libre distribución.
En Linux también se implementa el control de trabajos POSIX (que se usa en los shells csh
y bash), las pseudoterminales (dispositivos pty), y teclados nacionales mediante manejadores de
teclado cargables dinámicamente. Además, soporta consolas virtuales, lo que permite tener más
de una sesión abierta en la consola de texto y conmutar entre ellas fácilmente. A los usuarios del
programa "screen" les resultará familiar esto.
El núcleo es capaz de emular por su cuenta las instrucciones del coprocesador 387, con lo que en
cualquier 386 con coprocesador o sin él se podrán ejecutar aplicaciones que lo requieran.
Linux soporta diversos sistemas de ficheros para guardar los datos. Algunos de ellos, como el
ext2fs, han sido desarrollados específicamente para Linux. Otros sistemas de ficheros, como el
Minix-1 o el de Xenix también están soportados. Y con el de MS-DOS se podrán acceder desde
Linux a los disquetes y particiones en discos duros formateados con MS-DOS. Además, también
soporta el ISO-9660, que es el estándar seguido en el formato de los CD-ROMs. Hablaremos más
sobre los sistemas de ficheros en los capítulos 2 y 4.
Linux implementa todo lo necesario para trabajar en red con TCP/IP. Desde manejadores para
las tarjetas de red más populares hasta SLIP/PPP, que permiten acceder a una red TCP/IP por
el puerto serie. También se implementan PLIP (para comunicarse por el puerto de la impresora) y
NFS (para acceso remoto a ficheros). Y también se han portado los clientes de TCP/IP, como FTP,
telnet, NNTP y SMTP. Hablaremos más acerca de esto en el capítulo 5.
El núcleo de Linux ha sido desarrollado para utilizar las características del modo protegido de
los microprocesadores 80386 y 80486. En concreto, hace uso de la gestión de memoria avanzada del modo protegido y otras características avanzadas. Cualquiera que conozca la programación del 386 en el modo protegido sabrá que este modo fue diseñado para su uso en UNIX (o tal vez Multics). Linux hace uso de esta funcionalidad precisamente.
El núcleo soporta ejecutables con paginación por demanda. Esto significa que sólo los segmentos
del programa que se necesitan se cargan en memoria desde el disco. Las páginas de los ejecutables
son compartidas mediante la técnica copy-on-write, contribuyendo todo ello a reducir la cantidad de
memoria requerida para las aplicaciones.
Con el fin de incrementar la memoria disponible, Linux implementa la paginación con el disco:
puede tener hasta 256 megabytes de espacio de intercambio o "swap" (3) en el disco duro. Cuando
el sistema necesita más memoria, expulsará páginas inactivas al disco, permitiendo la ejecución de
programas más grandes o aumentando el número de usuarios que puede atender a la vez. Sin embargo, el espacio de intercambio no puede suplir totalmente a la memoria RAM, ya que el primero es mucho más lento que ésta.
_________________________________________
(3) El nombre swap es inadecuado: no se intercambian procesos completos, sino páginas individuales. Por supu esto, en muchos casos se expulsan al disco procesos completos, pero no siempre ocurre.
____________________________________________________________________________
La memoria dedicada a los programas y a la cache de disco está unificada. Por ello, si en cierto
momento hay mucha memoria libre, el tamaño de la cache de disco aumentará acelerando así los
accesos.
Los ejecutables hacen uso de las librerías de enlace dinámico.
Esto significa que los ejecutables comparten el código común de las librerías en un único fichero,
como sucede en SunOS. Así, los ejecutables serán más cortos a la hora de guardarlos en el disco,
incluyendo aquellos que hagan uso de muchas funciones de librería. También pueden enlazarse
estáticamente cuando se deseen ejecutables que no requieran la presencia de las librerías dinámicas
en el sistema. El enlace dinámico se hace en tiempo de ejecución, con lo que el programador puede
cambiar las librerías sin necesidad de recompilación de los ejecutables.
Para facilitar la depuración de los programas, el núcleo de Linux puede generar volcados de
la imagen de memoria de los programas (ficheros core). Entre esto y la posibilidad de compilar
ejecutables con soporte de depuración, el programador podrá averiguar la causa de los fallos de su
programa.
1.4 Software
En esta sección le haremos una breve introducción sobre las muchas aplicaciones software disponibles para Linux y sobre tareas típicas con ordenadores. Después de todo la parte más importante del sistema radica en la cantidad de software disponible que existe. El hecho de que la mayor parte de ese software sea gratis lo hace aún más impresionante.
1.4.1 Comandos y utilidades básicas
Prácticamente cada utilidad que espere encontrar en un sistema UNIX estandard ha sido transladada
a Linux. Esto incluye comandos básicos como ls, awk, tr, sed, bc, more, y muchos más. Diga el
nombre de una. Es seguro que Linux la tiene. En Linux puede esperar encontrar un entorno de
trabajo que le sera familiar si procede de entornos UNIX. Todos los comandos estandard y utilidades
están ahí. (Los usuarios novatos de Linux deberían ver el Capítulo 3 para una introducción a los
comandos básicos del UNIX.)
Hay disponibles numerosos editores de texto, incluyendo vi, ex, pico, jove, GNU Emacs y sus
variantes como Lucid Emacs (el cual incorpora extensiones para usarlo bajo X Window), y joe. Sea
cual sea el editor que esté acostumbrado a usar, es prácticamente seguro que habrá sido portado a
Linux.
La elección de un editor de texto es un asunto interesante. Muchos usuarios de UNIX siguen
usando editores "simples", como vi (de hecho, el autor escribió este libro usando vi sobre Linux.
Pero vi tiene muchas limitaciones debido a su antigedad, por lo que están ganando popularidad
editores más modernos (y complejos) como Emacs. Emacs proporciona un completo lenguaje de
macros basadas en LISP con su intérprete, una poderosa sintaxis de órdenes y multitud de otras
opciones interesantes. Existe un conjunto de macros de Emacs para leer correo electrónico y 'news',
moverse por el árbol de directorios, e incluso tener una sesión de psicoterapia con un psicoterapeuta
de inteligencia artificial (indispensable para Linuxeros estresados :-) )
Un punto interesante es que la mayoría de las utilidades básicas para Linux son programas GNU.
Estas utilidades GNU proporcionan características avanzadas que no se encuentran en las versiones
estandard para BSD ó AT&T. Por ejemplo, la versión de GNU del editor vi, elvis, incluye un
lenguaje de macros estructurado que difiere de la versión inicial de AT&T. De cualquier modo, las
utilidades GNU se esfuerzan por mantenerse compatibles con sus equivalentes BSD y System V.
Mucha gente considera las versiones GNU de estos programas superiores a las originales.
La utilidad más importante para la mayoría de los usuarios es el intérprete de comandos.
El intérprete de comandos es un programa que lee y ejecuta órdenes del usuario. Además, muchas
proporcionan características como control de procesos (permitiendo al usuario manejar varios
procesos corriendo a la vez), redirección de entrada/salida, y un lenguaje de órdenes para escribir
scripts. Una script es un fichero que contiene un programa en el lenguaje de ordenes del intérprete
de comandos, similar a los ficheros "batch" de MS-DOS.
Hay varios tipos de intérpretes de comandos disponibles para Linux. La principal diferencia entre
ellos es el lenguaje de comandos. Por ejemplo, el C Shell (csh) usa un lenguaje de comandos muy
parecido al lenguaje de programación C. El clásico Bourne Shell usa un lenguaje de comandos
diferente. Un argumento para la elección de un determinado intérprete de comandos es el lenguaje
de comandos que proporciona. El intérprete de comandos que use, definirá su entorno de trabajo
bajo Linux.
No importa el intérprete de comandos que esté acostumbrado a usar, alguna versión de este
habrá sido probablemente llevada a Linux. La más popular es el GNU Bourne Again Shell (bash),,
que es una variante del Bourne clásico que incluye muchas características avanzadas como control de
procesos, historial de órdenes, terminación de comandos y ficheros, edición de la línea de comandos
al estilo Emacs y poderosas extensiones al lenguaje de comandos del Bourne clásico. Otro intérprete
de comandos muy popular es el tcsh, una versión del C Shell con funcionalidad avanzada similar
a la encontrada en bash. Otros intérpretes de comandos son zsh, un pequeño intérprete similar al
Bourne; el Korn (ksh); BSD's ash y rc, el intérprete de comandos de Plan 9.
Linux le da la oportunidad única de configurar el sistema a su gusto según sus necesidades. Por
ejemplo, si usted es la única persona que usa el sistema, y prefiere el editor vi, y el intérprete de
comandos bash, no es necesario que instale otros editores e intérpretes de comandos. La actitud
"hágaselo usted mismo" es la que se impone entre los usuarios de Linux.
1.4.2 Formateado y proceso de textos
Casi la totalidad de los usuarios de ordenadores tiene la necesidad de usar un sistema de preparación
de documentos de algún tipo. (¿Cuantos entusiastas de los ordenadores conoces que todavía usen
papel y lapiz?. No demasiados, apostamos por ello). En el mundo de los PC, procesado de textos es
la norma: esto implica edición y manipulación de texto (a menudo en un entorno WYSIWYG (4) y la
producción de copias impresas del texto con dibujos, tablas y otros adornos.
_________________________________________
(4) N. del T.: WYSIWYG: "What-You-See-Is-What-You-Get". "Lo-que-ves-es-lo-que-obtienes"
_____________________________________________________________________________________
En el mundo UNIX, el formateado de textos es mucho más común. Es bastante diferente del clásico
concepto de proceso de textos. Con un sistema de formateado de textos, el texto es introducido por
el autor usando un "lenguaje de composición", que describe como debe ser formateado el texto.
En lugar de introducir el texto dentro de un entorno de proceso de textos especial, los fuentes
del texto pueden ser modificados con cualquier editor de textos como vi o Emacs. Una vez el
texto fuente está completo (en el lenguaje de composición), el usuario formatea el texto con un
programa separado, que convierte el texto fuente a un formato adecuado para la impresión. Esto
es en cierta forma análogo a programar en un lenguaje como C, y "compilar" el documento a una
forma imprimible.
Hay muchos formateadores de textos disponibles para Linux. Uno es groff, la versión GNU del
clásico nroff originalmente desarrollado por Bell Labs y todavía usado en muchos sistemas UNIX
por todo el mundo. Otro sistema de formateado de textos moderno es TEX, desarrollado por Donald
Knuth de gran popularidad. Dialectos de TEX, como LATEX, también están disponibles.
Formateadores de texto como TEX y groff difieren entre si principalmente en la sintaxis del
lenguaje de composición. La elección de un sistema de formateo frente a otro estará basada en las
utilidades disponibles para satisfacer sus necesidades, así como en su gusto personal.
Por ejemplo, algunas personas consideran que el lenguaje de composición de groff es un poco
oscuro por lo que usan TEX, que es más legible para humanos. Pero, groff es capaz de producir
salida en ASCII llano, visualizable en un terminal, mientras que TEX está destinado principalmente
para salida a impresora. Por lo tanto, existen varios programas para producir salida ASCII de
documentos formateados con TEX, o para convertir TEX a groff.
Otro sistema de formateo de texto es texinfo, una extensión de TEX usada para la documentación
de programas por la 'Free Software Foundation'. texinfo es capaz de producir documentos impresos
o un documento "Info" con hiperenlaces por los que nos podemos mover desde un único fichero fuente.
Los ficheros Info son el formato principal de documentación usado por paquetes de GNU como Emacs.
Los formateadores de texto son usados ampliamente en la comunidad informática para producir
informes, tesis, artículos de revistas y libros (de hecho, este libro ha sido producido con LATEX). La
capacidad de procesar el lenguaje fuente como un fichero de texto llano abre la puerta a muchas
extensiones al formateado de texto en sí, puesto que los documentos no son guardados en un oscuro
formato, legible solo por un procesador de textos particular, los programadores tienen la posibilidad
de escribir analizadores y traductores para el lenguaje de composición y extender el sistema.
¿Que aspecto tiene el lenguaje de composición? En general, el texto fuente consiste principalmente
en el texto en si mismo, junto con "códigos de control" para producir efectos particulares, como
cambio de tipo de letra, seleccionar margenes, crear listas, ..etc.
Como ejemplo, tomemos el siguiente texto:
Sr. Torvalds:
Estamos muy preocupados con sus planes actuales de añadir sugestión post-hipnótica en
el código del terminal de Linux. Nos sentimos así por tres razones:
1. Mostrar mensajes subliminares en el terminal no es solo inmoral, sino una pérdida
de tiempo;
2. Ha sido probado que las sugestiones post-hipnóticas no son efectivas cuando se usan
sobre `UNIX hackers'desprevenidos;
3. Ya hemos añadido descargas eléctricas de alto voltaje como medida de seguridad en
el código de login.
Esperamos que lo reconsidere.
Este texto aparecería en el lenguaje de formateo de LATEX como sigue:
\begin{quote}
Sr. Torvalds:
Estamos muy preocupados con sus planes actuales de a\~nadir
{\em sugesti\ón post-hipn\ótica\/} en el c\ódigo del
terminal de {\bf Linux}. Nos sentimos as\'{\i} por tres razones:
\begin{enumerate}
\item Mostrar mensajes subliminares en el terminal no es solo
inmoral, sino una p\érdida de tiempo;
\item Ha sido probado que las sugestiones post-hipn\óticas
no son efectivas cuando se usan sobre `UNIX hackers'
desprevenidos;
\item Ya hemos a\~nadido descargas el\éctricas de alto voltaje
como medida de seguridad en el c\ódigo de {\tt login}.
\end{enumerate}
Esperamos que lo reconsidere.
\end{quote}
El autor escribe el texto `fuente' anterior usando un editor de texto y genera la salida formateada
procesando el texto con LATEX. A primera vista, el lenguaje de composición puede parecer oscuro,
pero es realmente fácil de aprender. Usar un sistema de formateo de textos hace cumplir las normas
tipográficas en la escritura. Por ejemplo, todas las listas enumeradas dentro del documento tendrán
el mismo aspecto, aunque el autor modifique la definición del `entorno'de la lista enumerada. La
meta principal es permitir al autor concentrarse en la escritura del texto en lugar de preocuparse
por las convenciones tipográficas.
Los procesadores de texto WYSIWYG son atractivos por muchas razones; proporcionan un po-
deroso (y a veces complejo) interface visual para la edición del documento. Pero este interface
está inherentemente limitado por aquellos aspectos de la estructura del texto que son accesibles al
usuario. Por ejemplo, muchos procesadores de texto proporcionan un `lenguaje de formateado' especial
para producir expresiones complicadas como pueden ser las fórmulas matemáticas. Esto es idéntico
al formateado de textos, aunque en una escala mucho menor.
El sutil beneficio del formateado de textos es que el sistema te permite especificar exactamente
lo que quieres. También, los formateadores de texto permiten editar el texto fuente con cualquier
editor de texto y el fuente es fácilmente convertible a otros formatos. Esta flexibilidad y potencia la
obtenemos a cambio de renunciar al interface WYSIWYG.
Muchos usuarios de procesadores de texto estan acostumbrados a ver el texto formateado tal y
como lo editaron. Por otra parte, cuando se escribe con un formateador de texto, generalmente no
nos preocupamos sobre el aspecto que tendrá una vez formateado. El escritor aprende a imaginarse
el aspecto que tendrá el texto una vez formateado a partir de las órdenes de formateado usadas en el
fuente.
Hay programas que permiten ver el documento formateado en una pantalla gráfica antes de
imprimirlo. Por ejemplo, xdvi visualiza un fichero `independiente de dispositivo'generado por TEX
en X Windows. Otras aplicaciones, como xfig proporcionan interfaces gráficos WYSIWYG para
dibujar, los cuales son posteriormente convertidos al lenguaje de formateo de textos para su inclusión
en el documento.
Los formateadores de texto como nroff están disponibles desde mucho antes de que apareciesen
los procesadores de texto. Sin embargo, mucha gente todavia prefiere el uso de los formateadores de
texto porque son más versátiles e independientes del entorno gráfico. En cualquier caso, el procesador
de textos idoc está también disponible en Linux y no pasará mucho tiempo hasta que también veamos
procesadores de texto comerciales disponibles. Si de ninguna forma quieres renunciar al proceso de
texto en favor del formateo de textos, siempre puedes ejecutar MS-DOS o algún otro sistema operativo
además de Linux.
Hay disponibles muchas otras utilidades relacionadas con el formateo de textos. El potente sistema
METAFONT, usado para diseñar fuentes para TEX, está incluido el la distribución de TEX para
Linux. Otros programas incluyen ispell, un corrector ortográfico interactivo; makeindex, usado
para generar índices en documentos LATEX; así como muchos paquetes de macros para groff y TEX
para el formateo de diferentes tipos de documentos y textos matemáticos. Hay disponibles programas
de conversión entre fuentes de TEX y groff a miles de otros formatos.
1.4.3 Lenguajes de programación y utilidades
Linux proporciona un completo entorno de programación UNIX, incluyendo todas las librerías es-
tandard, herramientas de programación, compiladores, depuradores y todo aquello que esperarías
encontrar en otro sistema UNIX. En el mundo del desarrollo de programas UNIX, las aplicaciones
y sistemas suelen ser programados en C ó C++. El compilador estandard de C y C++ para Linux
es el GNU gcc, el cual es un avanzado y moderno compilador que permite multitud de opciones. Es
también capaz de compilar C++ (incluyendo las características de AT&T 3.0) así como en Objetive-C
y otros dialectos de C orientados a objetos.
Además de C y C++ han sido llevados a Linux muchos otros lenguajes de programación tanto
interpretados como compilados, como Smalltalk, FORTRAN, Pascal, LISP, Scheme, Ada (si es tan
masoquista como para programar en Ada, no le detendremos). Además hay disponibles varios
ensambladores para escribir código del 80386 en modo protegido. Los lenguajes favoritos de UNIX
como Perl (el lenguaje de guiones para terminar con todos los lenguajes de guiones) y Tcl/Tk
(un procesador de órdenes al estilo del intérprete de comandos incluyendo soporte para desarrollar
aplicaciones simples para X Window).
El depurador avanzado gdb también ha sido llevado a Linux. Permite examinar los programas
para localizar errores, o examinar la causa de un "cuelgue" usando un volcado del sistema (core
dump). gprof utilidad de perfilado que permite obtener estadísticas de prestaciones de sus progra-
mas, permitiendo saber en que parte de su programa se va la mayor parte del tiempo de ejecución.
El editor Emacs proporciona un entorno interactivo de edición y compilación para varios lenguajes
de programación. Otras herramientas incluyen GNU make e imake, usados para dirigir el proceso
de compilación de aplicaciones grandes ó RCS, sistema de control de revisiones.
Linux dispone de librerías compartidas enlazadas dinámicamente, lo que permite a los ejecutables
ser mucho menores al enlazar el código de las librerías en tiempo de ejecución. Estas librerías DLL
(Dinamically Linked Library) también permiten al programador de aplicaciones sustituir funciones
ya definidas con su propio código. Por ejemplo, si un programador desea escribir su propia versión
de la función de librería malloc(), el editor de enlaces usaría la nueva rutina del programador en
lugar de la que se encuentra en las librerías.
Linux es ideal para desarrollar aplicaciones UNIX, proporciona un moderno entorno de pro-
gramación con todos los detalles y funcionalidad necesarios. Se soportan varios estandards como
POSIX.1, permitiendo a los programas escritos para Linux ser fácilmente llevados a otros sistemas.
Los programadores profesionales de UNIX y administradores de sistemas pueden usar Linux para
desarrollar programas en casa y luego transferir los programas a los sistemas UNIX del trabajo. Esto
no solo puede ahorrar una gran cantidad de tiempo y dinero, sino que también le permitirá traba-
jar con la comodidad de su propia casa (5). Los estudiantes de informática pueden usar Linux para
aprender la programación en UNIX y explorar otros aspectos del sistema como la arquitectura del
núcleo.
_________________________________________
(5) El autor usa su sistema Linux para desarrollar y probar aplicaciones X Window en casa, que pueden ser directamente compiladas en estaciones de trabajo en cualquier parte.
_________________________________________
Con Linux, no solo tienes acceso a un conjunto completo de librerías y utilidades de programación,
también tiene acceso al código fuente completo del núcleo y las librerías.
1.4.4 El sistema X Window
El sistema X Window es un interface gráfico estandard para máquinas UNIX. Es un potente entorno
que soporta muchas aplicaciones. Usando X Windows, el usuario puede tener múltiples terminales
a la vez en ventanas sobre la pantalla, cada una conteniendo una sesión diferente. Un dispositivo
apuntador como el ratón es usado a menudo en el interface X, pero no es indispensable.
Han sido escritas muchas aplicaciones especificamente para X, como juegos, utilidades gráficas,
herramientas de programación y documentación, y muchas más. Con Linux y X, su sistema es una
auténtica estación de trabajo. Junto con una red TCP/IP puede incluso visualizar aplicaciones que
se están ejecutando en otras máquinas en su pantalla local, tal y como es posible con otros sistemas
corriendo X.
El sistema X Window fué desarrollado originalmente en el MIT y es de libre distribución. A pesar
de esto muchas empresas han distribuido sus mejoras particulares al diseño original de X Window. La
versión de X Window disponible para Linux es conocida como XFree86, una adaptación de X11R5 (6) de
libre distribución para sistemas UNIX basados en 80386, como es Linux. XFree86 soporta una gran
variedad de tarjetas de video, incluyendo VGA, Super VGA y gran cantidad de tarjetas aceleradoras
de video. Esta es una distribución completa de X Windows conteniendo el servidor de X, muchas
aplicaciones y utilidades, librerías de programación y documentación.
_________________________________________
(6) N. del T.: Linux dispone en la actualidad de la versión X11R6 de X Window
___________________________________________________________________________________
Aplicaciones X estandard incluyen xterm (emulador de terminal usado por la mayoría de las
aplicaciones en modo texto dentro de X); xdm (el gestor de sesiones, maneja los 'login'); xclock (un