Linux: Instalación y Primeros Pasos

____________________________________________________________________________

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

reloj simple); xman (un lector de páginas de