guide3

Capítulo 3

En el principio

This login session: $13.99, but for you $11.88.

Tal vez ha tenido experiencia con MS-DOS u otro sistema operativo monousuario, como OS/2 o el de Macintosh. En esos sistemas operativos, Ud. no tiene que identificarse frente a la computadora antes de poder utilizarla; siempre se supone que es el único usuario en el sistema y que puede acceder a todo lo que quiera. Por el contrario, Unix es un sistema operativo multiusuario, no sólo puede utilizarlo más de una persona a la vez, sino que las distintas personas recibirán distinto trato.

Para poder identificar las personas, Unix necesita un usuario para que el proceso denominado ingreso1 pueda identificarlo o identificarla2. Apenas se enciende una computadora, tiene lugar un complejo proceso antes que la misma esté lista para ser usada. Como esta guía está orientada a Linux, les diré que es lo que sucede durante la secuencia de arranque3.

Debe advertir Ud. que si está utilizando Linux en alguna clase de ordenador distinto a una PC Intel, algunos temas de este capítulo no se aplicarán a su caso. En su mayoría, dichos temas se encontrarán en la Sección 3.1.

Si Ud. está interesado únicamente en utilizar su computadora, puede saltearse toda la información de este capítulo, excepto la de la Sección 3.3.

3.1 La computadora despierta

Lo primero que sucede cuando se conecta la alimentación a su computadora es la ejecución de un programa denominado BIOS. Su nombre proviene de las iniciales de Basic Input/Output System, que significa Sistema de Entrada/Salida Básico. Este programa está almacenado de manera permanente dentro de la computadora en chips que normalmente son del tipo de lectura solamente. Para nuestros propósitos, el BIOS es un programa que nunca se puede cambiar. Al funcionar, realiza ciertas comprobaciones mínimas y luego se fija si hay un disquete en la primer disquetera. Si encuentra alguno, mira en su "sector de arranque" y comienza a ejecutar su código, si lo hay. Si hay un disquete pero no contiene un sector de arranque, el BIOS mostrará el siguiente mensaje:

Non-system disk or disk error

_____________________________________________

1 N. del T.: ingreso en inglés logging in

2 Desde ahora en adelante, utilizaré los pronombres masculinos para identificar a todas las personas. Esta es la convención estándar en inglés (N. del T.: y en castellano), y con esto no quiero decir que sólo los hombres pueden utilizar computadoras.

3 N. del T.: arranque, del inglés boot-up.

Si quitamos el disquete y apretamos una tecla, el proceso de arranque continuará. Si no existe un disquete en la disquetera, el BIOS se fija si existe un registro maestro de arranque (MBR: master boot record) en el disco rígido. Si es así comienza a ejecutar el código que allí encuentra, que se ocupa de cargar el sistema operativo. En los sistemas Linux, el cargador se llama LILO (por LInux LOader), puede ocupar el MBR y en ese caso cargará el Linux. (La distribución en particular que esté utilizando puede manejar el arranque desde el disco rígido de otra manera, así que debe controlar esto en la documentación que se incluye con la distribución. Otra buena referencia es la documentación de LILO, [1 ].)

3.2 Linux despierta

Luego que el BIOS le pasa el control a LILO, LILO a su vez le pasa el control al núcleo de Linux. El núcleo es el programa central del sistema operativo, que controla a todos los demás. Lo primero que hace Linux una vez que comienza su ejecución es cambiar la CPU a modo protegido. El procesador 803864 que controla su computadora tiene dos modos que se denominan "modo real" y "modo protegido". El sistema operativo DOS corre en modo real, al igual que el BIOS. Sin embargo, los sistemas operativos más avanzados necesitan correr en modo protegido. Por ello, cuando Linux arranca, descarta el BIOS.

Los procesadores distintos al 386 llegan a este estado de manera diferente. Ningún otro procesador necesita cambiar a modo protegido, y sólo unos pocos tienen un contexto tan pesado de carga, como LILO y el BIOS. Una vez que arranca el núcleo, Linux trabaja casi de la misma manera.

A continuación, Linux mira que clase de hardware tiene debajo. Necesita saber que clase de discos rígidos tiene, si hay o no un ratón de bus, si está conectado a una red, y otras trivialidades como esas. Linux no puede recordar ciertas cosas luego de apagado, de manera que las pregunta cada vez que arranca. Afortunadamente, no se las pregunta a Ud.: ¡se las pregunta al hardware! Durante el arranque, el núcleo de Linux muestra unos cuantos mensajes, aunque con ciertas variaciones.

Puede leer acerca de esos mensajes en la Sección 3.4. Este proceso de consulta puede causar algunos problemas con el sistema, pero si lo hace, lo hará probablemente cuando instale Linux por primera vez. Si tiene problemas, consulte la documentación de la distribución.

El núcleo solamente se ocupa de administrar los otros programas, entonces cuando está satisfecho con que todo anda bien debe arrancar otro programa para que haga los trabajos útiles. El programa que el núcleo arranca se llama init. _____________________________________________

4 Cuando hable del 80386, también hago referencia a computadoras basadas en 80486, Pentium, y Pentium Pro a menos que específicamente indique lo contrario. Además, abreviaré 80386 mediante el término 386.

Figura 3.1 El camino que sigue un PC Intel hasta que nos muestra el indicativo del intérprete de comandos. Init puede o no arrancar X. Si lo hace, corre xdm. Si no, corre getty.

Una vez que el núcleo arranca init, no lanza ningún otro programa. El núcleo se transforma así en un administrador y proveedor, no en un programa activo.

Por lo tanto, para saber que es lo que hace la computadora luego que el núcleo arranca, deberemos examinar init. La complicada secuencia de arranque por la que atraviesa init no es idéntica en todas las computadoras. Para Linux existen varias versiones de init, y cada una hace las cosas a su manera. Además también influye si su máquina está en red, e incluso cual distribución utilizó para instalar Linux. Algunas de las cosas que pueden suceder cuando init arranca son:

o

El control de integridad del sistema de archivos. ¿Pero qué es un sistema de archivos?, se estará preguntando Ud. . Un sistema de archivos es la disposición de los archivos en el disco rígido. Además permite que Unix sepa cuales partes del disco rígido están ocupadas y cuales no. Desafortunadamente, ciertos factores como los cortes en el suministro de energía hacen que la información que el sistema de archivos tiene sobre la disposición en el disco de los archivos no coincida con la disposición real. En estos casos se ve la utilidad de un programa llamado fsck, que es capaz de encontrar estas situaciones y (con suerte) corregirlas.

o

Se lanzan programas especiales de encaminamiento para las redes. Estos programas informan a su computadora cómo se supone que puede comunicarse con las otras.

o

Se borran los archivos temporales que crean ciertos programas.

o

Se actualiza correctamente el reloj del sistema. Esto es más complicado de lo que puede parecer, pues Unix de manera predeterminada, necesita la hora en UCT (Universal Coordinated Time), también conocido como hora de Greenwich, y el reloj de la CMOS (que es alimentado por una batería dentro de la computadora) muy probablemente estará configurado con la hora local. Esto significa que debe tener algún programa que lea la hora del reloj de la CMOS y la corrija transformándola en hora UCT.

Después que init termina con sus actividades de arranque, comienza con sus tareas planificadas.

init se convierte así en el padre de todos los procesos del sistema Unix. Un proceso es simplemente un programa que está corriendo; como cualquier programa puede correr más de una vez, entonces puede haber más de un proceso para un programa dado en particular.

En Unix, los procesos (instancias de un programa) se crean mediante una llamada al sistema5 (que es un servicio provisto por el núcleo) denominada fork. (Se lo llama "fork" o bifurcación pues un proceso se bifurca en dos independientes.) init forkea (bifurca) unos cuantos procesos, los que a su vez forkean6 otros. En su sistema Linux con toda seguridad init corre varias instancias de un programa llamado getty. getty es el programa que le permitirá iniciar el ingreso al usuario, y que a continuación lanzará el programa login.

3.3 La actuación del usuario

3.3.1 El ingreso

Lo primero que hay que hacer para poder utilizar una máquina con Unix es identificarse frente a la misma. Este proceso, conocido en inglés como logging in (registro de ingreso), es la manera que tiene Unix de saber cuales son los usuarios autorizados para utilizar el sistema. Durante el ingreso se le preguntará un nombre de cuenta y una contraseña7. Los nombres de las cuentas son por lo general parecidos a los nombres de las personas, y se lo asignará el administrador del sistema. Si Ud. es el administrador del sistema deberá crearse una cuenta para poder trabajar sin los cuidados especiales que requiere la cuenta root. (La información necesaria para llevar a cabo dicha tarea podrá encontrarla en Installation and Getting Started 8 o en The Linux System Administrator's Guide.)

Luego de que tenga lugar la secuencia de procedimientos durante el arranque, Ud. verá en la pantalla algo como lo que se muestra a continuación: (la primer línea es meramente un saludo (podría ser alguna advertencia legal, o cualquier otra cosa)

Welcome to the mousehouse. Please, have some cheese.

mousehouse login:

Sin embargo, puede ser que lo que el sistema le presente al arrancar no se parezca a esto. Por ejemplo, puede que en lugar de una aburrida pantalla de texto nos muestre una pantalla gráfica. Aún en este caso, la computadora le pedirá sus datos al ingreso y más o menos de la misma manera. Si éste es el caso en su sistema, entonces el entorno de trabajo que utilizará es el sistema X. El X Window

System es un sistema de ventanas y en el capítulo 5 se discutirán algunas de las diferencias con las que se enfrentará. De cualquier manera, el proceso de ingreso será similar en ambos casos.

_____________________________________________

5 N. del T.: llamada al sistema del inglés system call.

6 N. del T.: Mis disculpas por el término, prometo no usarlo más :-).

7 N. del T.: contraseña, palabra clave del inglés password

8 N. del T.: Puede consultar la versión en castellano ya existente

Esta es, por supuesto, la invitación que Ud. buscaba para ingresar (login). A lo largo de este manual utilizaremos el usuario ficticio (o no tan ficticio, dependiendo de su máquina) larry9. Donde Ud. vea larry debe poner el nombre de su propia cuenta. Los nombres de las cuentas se basan en general en los nombres reales; los sistemas Unix más grandes y serios tienen cuentas que usan el apellido del usuario, alguna combinación de nombre y apellido, y aún se da el caso que deban agregarle algunos dígitos. Por ejemplo, nombres de cuentas posibles para Larry Greenfield podrían ser: larry, greenfie, lgreenfi, lg19.

mousehouse será, de la misma manera, el "nombre" de la máquina sobre la que trabajaré.

Es posible que cuando Ud. instale Linux se le pregunte el nombre que desea asignarle. Esto no es demasiado importante, pero cada vez que haga falta utilizaré mousehouse o, más raramente, lionsden cuando necesite de un segundo sistema por razones de claridad o de contraste.

Luego de teclear larry y apretar |_Intro_|, nos encontramos con lo siguiente:

mousehouse login: larry

Password:

Linux está solicitando su contraseña10. Cuando escriba su contraseña no podrá ver lo que está tecleando, en razón de la privacidad necesaria a dicha palabra. Escriba cuidadosamente: puede borrar caracteres, pero no podrá ver lo que está editando. No escriba muy despacio si hay gente mirándole, podrían llegar a descubrirla. En cualquier caso, si se equivoca no se haga problemas, pues el sistema le dará otra oportunidad de ingresar.

Luego que ingrese correctamente su nombre de cuenta o nombre de usuario y su contraseña, aparecerá un corto mensaje denominado "mensaje del día"11 que se obtiene del archivo /etc/motd.

Este archivo se utiliza para dar a conocer cualquier clase de información a los usuarios con respecto al estado del sistema y es responsabilidad del administrador del sistema fijar su contenido. Después de todo esto aparece un prompt. Un prompt es un símbolo que nos indica que la computadora está lista para recibir un comando. Debe parecerse a la siguiente figura:

/home/larry$

Si Ud. está utilizando X Window, el prompt aparecerá en alguna de las "ventanas" que hay en pantalla. (Las "ventanas" son simples cajas rectangulares.) Para escribir en el prompt, mediante el ratón, mueva el cursor del mismo (probablemente se ve como una gran "X" o una flecha) dentro de la ventana.

3.3.2 Al abandonar la computadora

¡No apague la computadora directamente! ¡Se arriesga a perder valiosos datos!

A diferencia de la mayoría de las versiones de DOS, no es una buena idea apagar la llave de alimentación de la computadora así como así, cuando termine de utilizarla. Si reinicia la máquina (con el botón de reset) sin antes tomar las debidas precauciones será igual de pernicioso. Linux tiene una antememoria o caché que mejora el rendimiento del disco. Esto significa que temporalmente guarda en RAM información perteneciente al sistema de almacenamiento permanente12.

_____________________________________________

9 N. del T.: He dejado aquí sin traducir ni cambiar el nombre del autor de la versión en inglés, y lo mismo vale para otros nombres como el de la máquina, etc. .

10N. del T.: contraseña del inglés password.

11N. del T.: mensaje del día del inglés Message Of The Day(motd).

Las diferencias entre lo que Linux cree que hay en el disco y lo que efectivamente está almacenado en el disco se sincronizan cada 30 segundos. Si desea apagar o reiniciar la computadora, necesitará ejecutar algún procedimiento que indique a Linux que debe detener el sistema de caché y actualizar la información en el disco.

Si ya ha terminado sus tareas con la computadora, pero aún está dentro del sistema (ya tecleó su nombre de usuario y su palabra clave), lo primero que debe hacer es registrar la salida (logout) del sistema. Para ello, teclee el comando logout. Todos los comandos se envían oprimiendo la tecla marcada como |_Enter_|, |_Return_| ó |_Intro_|. Hasta que no aprieta |_Intro_| no pasa nada, y por lo tanto, puede borrar lo que escribió y recomenzar.

/home/larry$ logout

Welcome to the mousehouse. Please, have some cheese.

mousehouse login:

Ahora puede ingresar otro usuario.

3.3.3 Como apagar la computadora

Si el suyo se trata de un sistema en el cual trabaja un único usuario (Ud., :-)) puede desear apagar la computadora cuando haya finalizado su trabajo con ella13. Para "bajar el sistema"14, o sea, apagarlo ordenadamente, deberá ingresar a una cuenta especial denominada root. La cuenta del root es la cuenta del administrador del sistema y puede acceder a todos los archivos que existen en el sistema. Si desea apagar la computadora, primero debe bajar el sistema, y para ello deberá obtener la palabra clave que utiliza el administrador del sistema. Por favor, ingrese Ud. Entonces como root:

mousehouse login: root

Password:

Linux version 1.3.55 (root@mousehouse) #1 Sun Jan 7 14:56:26 EST 1996

/# shutdown now

Why? fin del dia de trabajo

URGENT: message from the sysadmin:

System going down NOW

... fin del dia de trabajo ...

Now you can turn off the power...

_____________________________________________

12 La diferencia entre "RAM" y un disco rígido es como la diferencia entre la memoria de corto plazo y la de largo plazo. Al quitar la alimentación de la computadora es como si le diéramos un fortísimo golpe en la cabeza olvidará todo lo que tenía en la memoria de corto plazo. Pero las cosas guardadas en la memoria de largo plazo, el disco rígido, estarán bien. El disco es miles de veces más lento que la RAM.

13 Para evitar el debilitamiento prematuro de ciertos componentes de hardware, es mejor que apague la computadora sólo cuando ya no la vaya a utilizar por el resto del día. Encender y apagar una vez al día la computadora probablemente es el mejor compromiso entre ahorrar energía y machacar el sistema.

14 N. del T.: bajar el sistema del inglés shutdown.

El comando "shutdown now" prepara al sistema para que pueda apagarse o reiniciarse. Debe esperar por el mensaje que dice que es seguro apagar o reiniciar el sistema. (Cuando el sistema le pregunta "Why?"15, sólo le está preguntando una razón para decirle a los otros usuarios. Como no hay otra persona utilizando el sistema cuando Ud. lo baja, puede responderle con lo que se le ocurra, o con nada.)

Un pequeño dato para el perezoso: como alternativa al enfoque de logout/login se puede utilizar el comando su. Mientras está trabajando con su nombre de cuenta habitual (larry a nuestros efectos) escriba "su" y luego |_Intro_|. Se le solicitará la palabra clave del administrador del sistema, y si la ingresa correctamente tendrá a partir de dicho momento los privilegios que le corresponden al mismo. Ahora, con estos privilegios agregados, podrá bajar el sistema mediante el comando "shutdown now".

3.4 Mensajes del núcleo

Cuando se conecta la alimentación a su computadora, aparece una serie de mensajes en la pantalla, que describe el hardware conectado al ordenador. Estos mensajes son producto de la actividad del núcleo de Linux. En esta sección, intentaremos describir y explicar esos mensajes.

Naturalmente, estos mensajes varían de máquina a máquina. Describiré entonces los mensajes que aparecen en la mía. El siguiente ejemplo contiene todos los mensajes estándar y algunos específicos. (En general, la máquina sobre la que voy a realizar la descripción está mínimamente configurada: no verá por lo tanto mucha información relacionada con la configuración de dispositivos.)

Se utilizó Linux versión 1.3.55, uno de los más recientes al momento de escribir.

1. Lo primero que hace Linux es decidir que clase de tarjeta de vídeo y pantalla tiene conectado, de manera de seleccionar un tamaño de letra apropiado. (Cuanto más pequeño es el tamaño, más caben en una pantalla a la vez.) Linux puede consultarle si desea algún tipo de letra en particular, o puede que tenga una selección ya compilada en su interior16.

Console: 16 point font, 400 scans Console: colour VGA+ 80x25, 1 virtual console (max 63)

En este ejemplo, el dueño de la máquina decidió, al momento de compilar, que utilizaría el tipo de letra estándar tamaño grande. Además, notará que la palabra "color" está mal escrita. Evidentemente, Linus aprendió la versión incorrecta de idioma inglés17.

_____________________________________________

15 N. del T.: why? significa ¿por qué?.

16 "Compilada" se refiere al proceso mediante el cual un programa de computadora escrito por una persona se traduce a algo que entiende la computadora. Si una característica se ha "compilado en su interior" significa que está incluida en el programa.

17 N. del T.: "colour" es la variante ortográfica del inglés insular y "color" la norteamericana.

2. La próxima tarea del núcleo es informar acerca de la velocidad de su sistema, medida en "BogoMIPS". Un "MIP" equivale a un millón de instrucciones por cada segundo, mientras que un "BogoMIP" es un "bogus MIP"18: cuantas veces la computadora puede hacer absolutamente nada por cada segundo. (Como este bucle no hace nada en realidad, el número calculado no es tampoco una medida de la velocidad del sistema.) Linux utiliza este número cuando necesita esperar por algún dispositivo de hardware.

Calibrating delay loop.. ok - 33.28 BogoMIPS

3. El núcleo de Linux también nos comenta acerca de la utilización de la memoria:

Memory: 23180k/24576k available (544k kernel code, 384k reserved, 468k data)

Esto significa que la máquina tiene 24 megabytes de memoria. Parte de esta memoria está reservada por el núcleo. El resto puede ser utilizada por los programas. Éste es el lugar temporal conocido como RAM que se utiliza sólo como almacenamiento de corto plazo. Su computadora también dispone de una memoria permanente denominada disco rígido. El contenido del disco rígido se mantiene intacto aún luego de quitar la alimentación del ordenador.

4. A lo largo del proceso de arranque, Linux controla distintas partes del hardware y nos muestra mensajes indicativos de las mismas.

This processor honours the WP bit even when in supervisor mode. Good.

5. Ahora Linux pasa a la configuración de red. Lo que veremos a continuación está mejor explicado en The Linux Networking Guide19 , y está fuera del alcance de este documento.

Swansea University Computer Society NET3.033 for Linux 1.3.50

IP Protocols: ICMP, UDP, TCP

6. Linux soporta la FPU, la unidad de punto flotante20 Ésta es un chip especial (o parte de un chip en el caso del procesador 80486DX) que se ocupa de la aritmética con números no enteros.

Algunos de esos chips no están en buenas condiciones, y cuando Linux trata de identificarlos la máquina "se cuelga"21. La máquina deja de funcionar. Si esto sucede, Ud. verá en su pantalla lo siguiente:

Checking 386/387 coupling...

Sino, el mensaje será:

Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.

si está utilizando un 486DX. Si tiene un 386 con un 387, le aparecerá:

Checking 386/387 coupling... Ok, fpu using irq13 error reporting.

_____________________________________________

18 N. del T.: bogus significa espurio (para los argentinos: trucho).

19 N. del T.: Disponible en castellano. Vea el apéndice D.

20 N. del T.: unidad de punto flotante del inglés Floating Point Unit.

21 N. del T.: se cuelga del inglés crashes.

7. Y ahora se controla la instrucción "halt".

Checking 'hlt' instruction... Ok.

8. Luego de esta configuración inicial, Linux escribe una línea identificándose a sí mismo. En ella explica cual es la versión del núcleo, la del compilador de C de GNU que se utilizó para compilarlo, y la fecha de dicha compilación.

Linux version 1.3.55 (root@mousehouse) (gcc version 2.7.0) #1 Sun Jan 7 14:56:26 EST 1996

9. El controlador serie comienza a consultar acerca del hardware instalado. Un controlador es una parte del núcleo que controla un dispositivo, normalmente un periférico. Se hace responsable por los detalles de la comunicación entre la CPU y el dispositivo. Esto permite que la gente que escribe aplicaciones de usuario se pueda concentrar en la aplicación, pues no tiene que preocuparse por como trabaja exactamente la computadora.

Serial driver version 4.11 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

tty02 at 0x03e8 (irq = 4) is a 16450

Aquí vemos que ha encontrado tres puertos serie. Un puerto serie es el equivalente del puerto COM en DOS; es el dispositivo que se utiliza normalmente para comunicarse con modems y ratones.

Lo que significan las líneas anteriores es que el puerto serie 0 (COM1) tiene la dirección 0x03f8.

Cuando dicho puerto interrumpe al núcleo, usualmente para decir que tiene datos listos, utiliza la IRQ 422. Las IRQ son un medio que tienen los periféricos de hablarse con el software. Cada puerto serie también tiene un chip controlador, que usualmente se denomina 16450; aunque también puede ser el 8250 o el 16550.

10. A continuación viene el puerto paralelo, que normalmente se conecta a la impresora. Los puertos paralelos en Linux tienen nombres que comienzan con lp. lp son las iniciales de Line Printer23, aunque en los tiempos actuales parece más apropiado usar las iniciales de Laser Printer. (Sin embargo, Linux se comunica sin problemas con cualquier clase de impresora conectada al puerto paralelo: de matriz de puntos, chorro de tinta, o laser.)

lp0 at 0x03bc, (polling)

Este mensaje dice que ha encontrado un puerto paralelo, y que usará el controlador de dispositivo estándar.

_____________________________________________

22 N. del T.: IRQ, Interrupt ReQuest (petición de interrupción).

23 N. del T.: Impresora de líneas.

11. Linux identifica luego las unidades de disco rígido. En el sistema que le estoy mostrando, mousehouse, tengo instalados dos unidades de disco rígido IDE.

hda: WDC AC2340, 325MB w/127KB Cache, CHS=1010/12/55

hdb: WDC AC2850F, 814MB w/64KB Cache, LBA, CHS=827/32/63

12. El núcleo ahora busca las unidades de disco flexible. En este ejemplo, la máquina tiene dos unidades: la "A" es una unidad de 5 1=4 ", y la "B" es una de 3 1=2 ". Linux denomina fd0 a la unidad "A", y fd1 a la unidad "B".

Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M

floppy: FDC 0 is a National Semiconductor PC87306

13. El próximo controlador que arranca en mi sistema ejemplo es el controlador SLIP. Escribe un mensaje acerca de su configuración.

SLIP: version 0.8.3-NET3.019-NEWTTY (dynamic channels, max=256) (6 bit encapsulation enabled)

CSLIP: code copyright 1989 Regents of the University of California

14. El núcleo explora dentro de los discos rígidos que ha encontrado. Busca las distintas particiones que tiene cada uno. Una partición es una sección lógica de una unidad que se utiliza para evitar que interfieran entre sí distintos sistemas operativos coexistentes. En este ejemplo, la computadora tiene dos discos (hda y hdb) con cuatro y una particiones, respectivamente.

Partition check:

hda: hda1 hda2 hda3 hda4

hdb: hdb1

15. Finalmente, Linux monta la partición raíz. Ésta es la partición del disco en la cual reside el sistema operativo Linux. Cuando Linux "monta" esta partición, hace que esté disponible para los usuarios.

VFS: Mounted root (ext2 filesystem) readonly.