lunes, 5 de noviembre de 2007

Capitulo 1: Introducción a GNU/Linux

1.- Introducción

Introduccion a GNU/Linux
Conceptos básicos GNU/Linux
Arranque de Linux
Sistema de archivos
Nombre de archivos en Linux
Software adicional para GNU/Linux
Usuarios y permisos de Archivos
Arranque de Linux II
Nombramiento de dispositivos y particiones


Introducción a GNU/Linux

Para empezar, GNU/Linux es un sistema operativo. Esto significa que es un conjunto de instrucciones que nos va a permitir "hacer cosas", cualquier tipo de tarea, con nuestro ordenador. Sus características más notables son:

  • Proviene de UNIX, otro sistema operativo, y es casi un derivado de él.

  • Es parte del proyecto GNU, lo que significa, entre otras muchas cosas, que es libre y que muchas veces no estás obligado a pagar por él. Puedes usarlo de modo gratuíto y además puedes modificar su código fuente, para adaptarlo a tus propias necesidades o para contribuir en su continuo desarrollo, en el que toman parte programadores de todo el mundo (tú puedes ser uno de ellos). Antes de seguir leyendo y aprendiendo sobre él, conviene que visites http://www.gnu.org/ en la que se dan algunos detalles sobre qué es el proyecto, qué puedes hacer y qué no puedes hacer con el código fuente además de algunos otros detalles importantes.

  • Es potente, seguro y estable. Debido a ello resulta un sistema operativo ideal para servidores ya que cumple muy bien esta función aunque como sistema operativo de oficina, de escritorio o de publicación también es excelente.

  • Existen infinidad de programas para cualquier tipo de tarea que se quiera desarrollar y aunque muchos de ellos son gratuitos (no por ello de menos calidad que los comerciales, pues muchas veces los superan), también existen aplicaciones comerciales.

  • Es un sistema multiusuario real y multitarea y funciona de manera muy productiva en redes. Desde sus raíces UNIX siempre lo ha sido. En definitiva Linux pone todo lo bueno de los grandes UNIX y algunas cosas más al alcance de todo el mundo. ¿Lo vas a dejar ahí? ¿Lo vas a desaprovechar? Un consejo, yo no lo haría.

Hablemos un poco de la historia de GNU/Linux. Comencemos presentando a quien podemos considerar como el creador de Linux. Su nombre es Linus Trovalds. Puede decirse que Linus Trovalds creó este sistema operativo en 1991. Escribió un KERNEL (parte principal de un sistema operativo) y lo dejó a disposición de sus amigos y luego de toda la Internet para que cualquiera pudiese mejorarlo. Siempre se ha seguido la regla POSIX para que el sistema operativo sea compatible con otros UNIX y de esta manera tener mayor software a su disposición, y que el que se cree para Linux valga también en otros UNIX. Algún tiempo más tarde, para adaptar el sistema operativo y facilitar la instalación, nacieron las compañías distribuidoras de Linux. Entre ellas destacan RedHat, Debian, Caldera, SuSE, Mandrake... Estas distribuidoras pueden cobrar por ofrecer sus productos en CD o en algún otro soporte, pero deben poner su código a disposición del público, si han utilizado software GNU (bajo licencia GPL, que dice entre otras cosas que si usas código GPL en tu programa, tu programa se convierte automáticamente en GPL). Actualmente Linus Torvalds sigue coordinando el trabajo de los programadores de todo el mundo en el núcleo del sistema operativo para mejorarlo y adaptarlo al nuevo hardware.

¿Cabe la posibilidad de preguntarse cuál es la mejor distribución de Linux? GNU/Linux tiene muchas distribuciones, y por lo general, no existe una distribución mejor que las demás, cada una de ellas tiene sus puntos a favor en determinados aspectos. Así, Debian es una distribución que no es realmente comercial en sí como lo son la mayoría de las otras. El desarrollo de Debian es muy parecido al voluntariado que existe en el desarrollo del kernel de Linux. Para los que se aproximan por primera vez a Linux, es cierto que Mandrake, si se tiene una máquina con recursos suficientes, ofrece una instalación y configuración sencillas y un entorno gráfico personalizado ideal para no perderse al principio. Claro que siempre depende de tí y si tienes la oportunidad de tratar con varias distribuciones, trabaja con la que te sientas más cómodo.

¿Puede haber problemas? Dependiendo del hardware que tengas en tu ordenador, porque Linux no soporta algunos dispositivos como Winmódems (módems diseñados para funcionar sólo con M$ Windows, en su mayoría internos), algunas tarjetas de sonido, etc.

¿Puedo tener Windows y Linux en la misma máquina? ¡Claro! Como veremos más adelante la clave está en particionar el disco duro, para que Windows use una parte y Linux use otra, de manera que no interfieran. También como veremos después, el cargador de arranque de Linux te permitirá elegir qué sistema operativo iniciar.


Conceptos básicos de GNU/Linux

En esta sección Vamos a tratar algunas cosas que tenemos que tener claras antes de instalar y comenzar a utilizar Linux. No tienes que aprenderlas de memoria (para eso está este manual), simplemente lee esto con atención y estarás en disposición de continuar aprendiendo sobre Linux.


Arranque de Linux

Veamos qué es lo que pasa cuando nuestra máquina arranca y tenemos que elegir un sistema operativo. Cuando la BIOS termina su chequeo, empieza a buscar dónde hay software para ser ejecutado. Si los CDROMs no son de arranque, pasa al primer disco duro por defecto. En el principio del disco duro o MBR (acuérdate, lo vas a ir más de dos veces con Linux) o en una partición queda instalado con Linux un cargador de arranque. Los dos más usados son LILO (LInux LOader) y GRUB. Nada más arrancar se ejecuta este cargador cuya misión permitir al usuario elegir sistema operativo de los que tenemos en nuestro ordenador quiere utilizar. Al instalarse, LILO (o GRUB) habrán sido configurados para poder arrancar cualquier sistema operativo que tengamos instalado, reconoce la mayoría de los existentes. Seleccionamos nuestra versión de Linux y el cargador da paso al Kernel de Linux que empieza a hacer sus chequeos y a montar (hacer utilizable) el sistema de archivos.


Sistema de archivos

El sistema de archivos es más o menos "la forma de escribir los datos en el disco duro". El sistema de archivos nativo de Linux es el EXT2. Ahora proliferan otros sistemas de archivos con journalising (si se arranca sin haber cerrado el sistema, no necesitan hacer un chequeo sino que recuperan automáticamente su último estado), los más conocidos son EXT3, ReiserFS y XFS.

La estructura de directorios que sigue Linux es parecida a la de cualquier UNIX. No tenemos una "unidad" para cada unidad física de disco o partición como en Windows, sino que todos los discos duros o de red se montan bajo un sistema de directorios en árbol, y algunos de esos directorios enlazan con estas unidades físicas de disco. MUY IMPORTANTE: Las barras en Linux al igual que en cualquier UNIX son inclinadas hacia la derecha, como se puede ver más abajo (ese es el motivo de que en internet sean inclinadas hacia la derecha ya que nació bajo UNIX y en Linux podremos aprovechar todas sus ventajas). Expliquemos esto más a fondo, incluyendo los directorios principales:


Tabla 1.1. Estructura de directorios en Linux

DirectorioDescripción
/Es la raíz del sistema de directorios. Aquí se monta la partición principal Linux EXT.
/etcContiene los archivos de configuración de la mayoría de los programas.
/homeContiene los archivos personales de los usuarios.
/binContiene comandos básicos y muchos programas.
/devContiene archivos simbólicos que representan partes del hardware, tales como discos duros, memoria...
/mntContiene subdirectorios donde se montan (se enlaza con) otras particiones de disco duro, CDROMs, etc.
/tmpFicheros temporales o de recursos de programas.
/usrProgramas y librerías instalados con la distribución
/usr/localProgramas y librerías instalados por el administrador
/sbinComandos administrativos
/libLibrerías varias y módulos ("trozos") del kernel
/varDatos varios como archivos de log (registro de actividad) de programas, bases de datos, contenidos del servidor web, copias de seguridad...
/procInformación temporal sobre los procesos del sistema (explicaremos esto más en profundidad posteriormente).


Nombres de archivos en Linux

Los nombres de archivos en Linux (como en todos los UNIX) distinguen mayúsculas de minúsculas, esto es, son "case sensitive". Los archivos README, readme, REadme y rEadme por ejemplo son archivos distintos y por lo tanto al ser nombres distintos pueden estar en el mismo directorio.

En Linux los archivos no tienen por qué tener una extensión. La suelen tener a modo orientativo, pero no es en absoluto necesario. Linux sabe qué contiene cada archivo independientemente de cuál sea su extensión. Por comodidad, podremos llamar a todos nuestros archivos de texto con la extensión .texto, o a todos nuestros documentos con la extensión .documento, de esta manera, podremos luego agruparlos más fácilmente.

Los ficheros y directorios ocultos en Linux comienzan su nombre por un punto (.)

Los nombres de archivos o directorios pueden ser muy largos, de más de 200 caracteres, lo cual nos da bastante flexibilidad para asociar el nombre de un archivo a lo que contiene. No obstante, hay ciertos caracteres que nunca se deberían utilizar a la hora de nombrar un archivo. Uno de ellos es el espacio, nunca llamaremos a un fichero con un nombre que contenga un espacio. Tampoco son recomendados otros caracteres raros como signos de puntuación (a excepción del punto), acentos o la ñ. En algunos casos Linux ni siquiera nos permitirá usarlos. Los recomendables son las letras A-Z, a-z, los números (0-9), el punto, el guión (-) y el guión bajo (_) para nombrar un archivo. Los acentos y la ñ tampoco se recomiendan.


Software adicional para GNU/Linux

Primero, hacer notar que LINUX NO ES WINDOWS. El software de Windows no funcionará en Linux, hay proyectos de emulación al respecto, que no recomendamos.

El software para Linux lo podemos encontrar de dos formas: en un paquete binario o en un paquete con su código fuente.

Paquetes binarios

Existen varios tipos de paquetes binarios. Todos tienen una característica en común, y es que contienen código de máquina, no código fuente, por eso cada tipo de procesador necesita su propia versión de cada paquete. Al haber varias distribuciones de Linux existen varios tipos de paquetes binarios, habiendo varias distribuciones que comparten sistema de paquetes. Los más comunes son:

  • Los paquetes RPM: Los usan las distribuciones RedHat, Caldera, Madrake, SuSE y TurboLinux entre otras. Su uso está muy extendido y es posible instalar este tipo de paquetes mediante la aplicación rpm. El nombre de los paquetes rpm es del tipo nombredelpaquete_version_plataforma.rpm

  • Los paquetes Debian (deb): Los usa la distribución Debian y sus derivadas. Es un sistema de paquetes muy potente y que facilita en gran medida la actualización del sistema, además de resolver las dependencias (qué paquetes necesitan a qué otros) y satisfacerlas instalando todos los paquetes necesarios automáticamente. La aplicaciones que gestionan este sistema de paquetes se llaman apt y dpkg. Los paquetes Debian se suelen nombrar de la forma nombredelpaquete_version_plataforma.deb

  • Los paquetes tgz de Slackware los usa la distribución del mismo nombre, y siguen los principios de los dos anteriores, son paquetes binarios aunque tienen una estructura distinta.

Paquetes de código fuente

Estos paquetes contienen los archivos que salen del ordenador del programador o programadores, lo que quiere decir que ya hay que aportar algo de nuestra parte para utilizar los programas que contienen. El proceso de instalación de este tipo de paquetes implica también una COMPILACIÓN, concepto que vas a escuchar más de tres veces. Una compilación nos permite que el programa que vamos a instalar se optimice totalmente para el tipo de componentes que tenemos en nuestro ordenador y el tipo de versión de GNU/Linux. Este programa que hemos compilado correrá más rápido que si nos hubiéramos limitado a instalar un paquete binario normal. La compilación de un programa requiere de unos COMPILADORES, que son unos programas que junto con unas LIBRERíAS de lenguajes de programación, consiguen transformar el código fuente en lenguaje de máquina. Trataremos más adelante cómo instalar software.

Son también de amplio uso los Source RPM, que son paquetes RPM pero que en vez de ser binarios, llevan código fuente. Mediante la instalación de este tipo de paquetes, lo que hacemos es crear un nuevo paquete optimizado (compilar un nuevo paquete) para nuestra máquina. Después instalamos este último.

Meta-Paquetes

Conocemos por meta-paquete a aquellos paquetes en los cuales no hay código fuente, o binarios, sino reglas sobre CÓMO construir e instalar dicho paquete. Estos paquetes los usan distribuciones como Gentoo Linux (http://www.gentoo.org), Linux From Scratch (http://www.linuxfromscratch.com) y algunos otros sistemas operativos como FreeBSD (http://www.freebsd.org). La ventaja que tienen estos paquetes es que son muy sencillos de generar, los binarios quedan optimizados para la máquina que los va a ejecutar, pero como todo, esto tiene una contrapartida.... las distribuciones que los usan pueden ser más complicadas de manejar y se necesitan conexiones muy rápidas y procesadores potentes si no se quiere estar mucho tiempo compilando los paquetes.


Usuarios y los permisos de archivos

Linux es un sistema operativo multiusuario. Cada usuario generalmente tiene su carpeta de usuario en /home/usuario. Por defecto sólo puede escribir, modificar y borrar archivos dentro de esta carpeta. Ningún otro usuario (excepto root) puede acceder a los archivos que hay en este directorio, ni si quiera puede ver cuáles son. Este usuario -por defecto- puede leer en el resto de las carpetas que hay en el sistema de archivos excepto en la de root y las de otros usuarios. Todos los programas recuerdan las preferencias de cada usuario, e incluso un usuario puede instalar un programa sin que los otros usuarios tengan acceso a él (vale sí, root si tendrá, lo sé, lo sabemos :-); aunque instalando los usuarios tienen muchas limitaciones como veremos después. Un usuario no puede causar por este motivo daño al sistema ni cambiar su configuración de ninguna forma. ¿Y quién es ese tal root? En cualquier sistema UNIX, root es "el que todo lo puede". Es la excepción que confirma la regla, es el superusuario todopoderoso de estos sistemas. Cuando hagas login como root en una máquina GNU/Linux, siente el poder bajo tus teclas. Puedes hacer todo lo que se te pase por la cabeza. Pero ojo, tienes poder para lo bueno y para lo malo. Tienes acceso a todo el sistema, pero una equivocación... sería fatal. Puedes cargarte el sistema Linux y los preciados datos y configuraciones que tengas en él. Por esto, para tareas normales SIEMPRE entraremos al sistema como un usuario normal por los riesgos que se corren trabajando como root. Además NUNCA usaremos Internet como root. Incluso algunos programas no permiten ser ejecutados por root por motivos de seguridad. Como ya habrás adivinado, la contraseña de root se la guarda uno en la cabeza y se asegura de que no se le olvida, y por supuesto se preocupa uno de que nadie pueda acceder a ella en ningún fichero o de que no la ven cuando la escribimos. Si se cree que la han podido adivinar o están cerca, se cambia. Cuanto más larga, tediosa y sin sentido sea esta contraseña, más seguro estará nuestro sistema. Recuerda que tu máquina Linux es tan segura como segura sea tu contraseña de root.

¿Qué son los permisos? Todos y cada uno de los archivos y directorios del árbol jerárquico que monta nuestro sistema Linux tienen permisos. Estos permisos dicen, para cada usuario del sistema, si puede ejecutarlo, si puede ver su contenido o si puede borrarlo o modificarlo. Del mismo modo, cada elemento del sistema de archivos tiene un dueño. Por defecto, este dueño del elemento (tanto directorio como archivo) tiene acceso total a él y puede realizar todas las acciones posibles permitidas. El resto de usuarios pueden leer y ejecutar este elemento por defecto aunque todo esto se puede cambiar para cada uno de los elementos. Todos los archivos de las carpetas de sistema y configuración suelen tener a root como propietario. Los de la carpeta personal de cada usuario tienen a ese usuario como propietario, pero el resto de usuarios normales no tienen ningún permiso sobre estos elementos, y lo mismo ocurre con la carpeta de root (que se encuentra en la raíz, en /root).


Aarranque de Linux II

Cuando el kernel ya ha montado el sistema de archivos, comienzan a inicializarse algunos procesos llamados "daemons" (demonios). Cada uno de estos demonios se inicia cuando el sistema arranca y durante su vida va acontrolar un proceso determinado, y va a permanecer en segundo plano (transparente para el usuario), no vamos a notar que se está ejecutando a menos que pidamos información a este proceso, lo detengamos o lo reiniciemos. Algunos de estos demonios son, por ejemplo, el servidor web, el servidor de correo, el cortafuegos, el servidor de nombres DNS... y muchos otros que gestionan varias tareas, en su mayoría servicios de servidor de red para servir de host a otras máquinas. Cuando todos esos demonios se hayan cargado, aparecerá ante nosotros una línea de texto de login (autentificación en un sistema) o bien una ventana de login gráfico. Vamos a empezar entrando como usuario normal primero.


Nombramiento de dispositivos y particiones

Debemos saber de qué manera nombra Linux a los discos duros que tenemos conectados a nuestra máquina y sobre todo a sus particiones. Todos los discos duros (IDE) comienzan su nombre como hd. Un ejemplo de nombre completo de disco duro sería hda y de la primera partición de ese disco duro sería hda1.

La 'a' significa que ese disco duro está conecatdo al IDE1 como maestro. Si fuera esclavo tendría la 'b', y si estuviera conectado al IDE2 como maestro, la 'c', y si estuviera al IDE2 como esclavo, la 'd'.

El número 1 indica que es la primera partición (primaria y no lógica) del disco duro en cuestión. La segunda geométricamente hablando (primaria) sería la 2 y así sucesivamente. La primera partición lógica de un disco duro se nombra con el número 5, independientemente de si pertenece a la primaria 1, 2, 3 ó 4. La segunda se nombraría con un 6 y así sucesivamente.

Con saber lo que significa hda1 o hdd2 o hdc5 es suficiente de momento.

No hay comentarios: