DAEP Instalacion de Linux y administracion de paquetes

De Gleducar, http://www.gleducar.org.ar

Tabla de contenidos

¿Qué es una partición?

Una partición en un disco duro es la creación de divisiones "no físicas" o lógicas, que permite tener la sensación de "dos o más discos en uno".

Una de las funciones del particionado, es que a partir de un solo disco duro se pueden tener tantos sistemas operativos como particiones haya. Otra podría ser asegurarnos que si una partición se ve afectada por problemas de seguridad, solo esa se dañe, permitiendonos seguir teniendo el resto de los datos en las otras particiones que están intactas.

Partición primaria

Cuando se ideó el sistema de particiones de disco, hace ya mucho tiempo, se pensó en que 4 particiones serían más que suficientes para cubrir todas las necesidades. Esto cambió bastante y (también hace mucho tiempo) se tuvo que pensar en una solución al problema, esa solución se llamó Partición extendida.

Partición extendida

Las particiones extendidas fueron la solución que se le puso al límite de 4 particiones. Son particiones que simulan un espacio libre en el disco duro, y cuentan como una partición primaria, es decir, el número de particiones primarias y extendidas no debe ser superior a 4.

Este tipo de particiones, nunca puede almacenar datos, ya que son particiones que marcan un espacio dedicado al almacenamiento de particiones lógicas.

Particiones lógicas

Son particiones que se forman dentro de las particiones extendidas. El número de particiones lógicas dentro de una partición extendida es ilimitado, y son particiones capaces de almacenar datos como si se tratara de una partición primaria.

Tabla de particiones

La tabla de particiones está alojada en el MBR del disco, a partir del byte 446 del sector de arranque y ocupa 64 bytes, contiene descriptores para 4 particiones (de 16 byte cada una), llamadas particiones primarias, cada registro ocupa 16 bytes y en ese registro se almacena todo lo relacionado con la partición, si es arrancable, si no lo es, el formato, el tamaño y el sector de inicio.

Tabla de particiones

MBR

El registro de arranque maestro (Master Boot Record), es un sector de 512 bytes al principio del disco rígido que contine una secuencia de comandos necesarios para cargar un sistema operativo. Es decir, es el primer registro del disco duro, el cual contiene un programa ejecutable y una tabla donde están definidas las particiones del disco duro.

Es el primer sector físico (Cilindro 0, Cabeza 0, Sector 1) asignado a un disco rígido en un sistema. Cada disco duro tiene un MBR, pero no todas los BIOS pueden arrancar el sistema operativo desde cualquiera de los discos. Cuando se arranca desde el disco rígido, el BIOS copia el contenido del MBR en una dirección fija de la memoria para luego darle el control. Este código arrancará seguidamente el sistema operativo, ya sea desde la primera partición primaria del disco o desde un Boot-Loader o cargador, algo más complejo pero que permite cargar el sistema desde cualquier partición.

Formato SWAP

El formato SWAP es un formato, que tiene como objetivo convertir la partición en un espacio de intercambio, y se utiliza como memoria de respaldo, esto es, cuando la memoria RAM se ha llenado por completo, la partición formateada en SWAP se encarga de almacenar la información, sustituyendo a la memoria RAM.

Aunque su principal función es respaldar la memoria RAM, tambien es utilizada para mover programas poco activos o que no necesitan grandes cantidades de memoria física y pasarlos a la memoria de intercambio y de esta forma, liberar memoria RAM para grandes programas que la necesitan.

El equivalente dentro de Windows es la Memoria virtual. En el caso de este sistema, es un archivo, a diferencia de Linux, que utiliza una partición, o incluso a veces, un disco duro independiente.

¿Es necesaria la memoria SWAP?

Aunque puede llegar a funcionar sin tener ningún área de intercambio, es muy recomendable crearla. La razón es que siempre es bueno quitar de la memoria los procesos poco usados, ya que eso permite usar la RAM para otras tareas. Tan bueno es que todas las distribuciones de Linux actuales crean una partición para SWAP en el proceso de instalación por defecto.

¿Un punto de partida?

La forma de repartir el espacio de un disco rígido es algo que no suele estar a la vista de nadie que use una computadora, mucho menos como usuario. Para evitar complejas definiciones de lugares en el volúmen físico (HD), utilizamos lo que llamamos "abstracciones". Estas abstracciones nos permiten decir la ubicación de un archivo en una partición de un disco, en un disco o en un conjunto de discos de una manera simple y directa.

Por ahora solo vamos a decir que esta abstracción tiene siempre uno o más puntos de partida y que desde ese punto de partida se genera un sistema de archivos que nos permite ubicar un archivo de manera inequívoca.

Para Windows no se trata de un único punto de partida sino de varios de ellos, las unidades C:; D:; E:; etc.

Para el caso de Linux, el punto de partida es único y se representa siempre con la barra normal, es decir: "/". Y desde ese punto de partida podremos ubicar cualquier archivo, en cualquier unidad de disco, ya sea fija o removible.

Administradores de arranque

Un administrador de arranque es un programa sencillo diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan varios pequeños programas que se suman los unos a los otros, hasta que el último de ellos carga el sistema operativo. Estos Pequeños programas no son en sí mismos un sistema operativo, sino simplemente un cargador de arranque de segundo nivel, como Lilo o Grub o GAG, que es capaces de cargar el sistema operativo propiamente dicho, y finalmente, transferirle el control.

LILO

LinuxLoader, funciona en una variedad de sistemas de archivos y puede arrancar un sistema operativo desde el disco duro o desde un disco flexible externo. LILO permite seleccionar entre 16 imágenes en el arranque. En las primeras distribuciones de Linux LILO era el sistema de facto utilizado para arrancar el sistema. En la actualidad es una segunda opción en favor del gestor de arranque GRUB.

Gestor de arranque LILO

GRUB

El GRUB (Grand Unified Bootloader), es un gestor de arranque múltiple que se usa comúnmente para iniciar dos o más sistemas operativos instalados en una misma computadora. Tiene muchas más opciones configurables, es más flexible con los distintos medios desde donde bootear el sistema y es muy adaptable a diversas geometrías de disco.

Gestor de arranque Grub

GAG

GAG (Gestor de Arranque Gráfico), es un programa gestor de arranque, esto es, un programa que se carga en el momento de arrancar la computadora y que permite elegir que sistema operativo, de entre los que haya instalados en el disco rígido. En la actualidad, permite arrancar hasta 9 sistemas operativos diferentes y no requiere instalarse en el MBR del disco o en partición aparte. Lo que lo vuelve muy interesante para arranque múltiple en terminales delgadas que también puedan arrancar alguna versión de Windows.

Gestor de arranque GAG

Código fuente y código objeto

Es bueno recordar un par de conceptos antes de encarar procesos importantes en la administración de un sistema operativo, en especial si es libre.

Cuando usamos un programa en una computadora, estamos usando un ejecutable. Éste, es un archivo (o un conjunto de archivos) binario que está (o debería estar) correctamente instalado en nuestro sistema. Es decir, en el lugar correcto, con los enlaces correspondientes para llamarlo y enlazado con las librerías compartidas (shared libraries) que correspondan.

Pero antes de instalar ese binario, debemos convertirlo en binario, ya que el programador no entiende lenguaje binario (no la mayoría por lo menos), sino algún lenguaje de alto nivel. Para esa conversión, se necesita de otro programa llamado compilador, de allí que el proceso se llame Compilación.

El compilador toma el código fuente (archivo de texto escrito en algún lenguaje de alto nivel por un ser humano) y lo transforma en código objeto (archivo binario que ya no es facilmente legible por un humano) mediante el proceso de compilación.

Los lenguajes de programación, son solamente convenciones linguísticas que facilitan la escritura e interpretación de los algoritmos que forman un programa. De esta forma, cada lenguaje de programación se ajusta mejor para determinado tipo de situaciones a resolver por la algorítmica. Por eso es que un buen programador debe conocer varios lenguajes distintos para poder utilizar en cada caso, el más adecuado. Y nunca estar atado a un solo lenguaje y tratando de "adaptarlo" a todas las situaciones posibles.

Estos conceptos son fundamentales de entender a la hora de administrar seriamente un sistema. Posiblemente en un sistema operativo no libre la cosa se facilita porque no tenemos opciones disponibles. Los programas "siempre" vienen en formato binario, listos para instalar. Pero en esta facilidad se encierra la trampa de no tener posibilidades de saber lo que realmente hacen esos programas, así como la imposibilidad de reformar el programa para cambiar su comportamiento en algún aspecto, una vez compilado.

Dentro del software libre, tenemos más opciones. Si bien, a la mayoría de los programas, podremos obtenerlos en formato binario, ya compilado y listo para instalarse. También tendremos disponible el código fuente del programa, para estudiarlo, reformarlo, buscar nuevas o distintas funcionalidades; o recompilarlo nosotros mismos, de alguna manera específica a nuestro sistema para aumentar la seguridad, velocidad o prestaciones.

Así es que: si queremos realizar facilmente la tarea, podemos instalar desde los binarios; y si queremos mejorar la performance o verificar que hace realmente por simple paranoia... después de todo, tambien tengo ese derecho y libertad. ;-)

Librerias Compartidas

Estos ficheros contienen código que compartirán muchos programas. En lugar de que cada programa contenga una copia propia de las rutinas compartidas, éstas son guardadas en un lugar común, en /lib. Esto hace que los programas ejecutables sean menores y reduce el espacio usado en disco.

En el pasado, si un páquete en código fuente queria utilizar la potencia de las librerías compartidas, (ficheros .so, shared objects en unix), era necesario escribir software específico de soporte para cada plafaforma en la que el páquete se podía ejecutar. Era también necesario designar un interfaz de configuración de forma que el instalador del paquete pudiera seleccionar que clase de liberias eran construidas.


Administradores de paquetes y paquetes

Un paquete de software es una serie de programas que se distribuyen conjuntamente. Algunas de las razones para ello suelen ser que el funcionamiento de cada uno complementa o requiere a los demás, que sus objetivos están relacionados o como estrategia de márketing nomás.

Muchos sistemas operativos modernos emplean sistemas de control de paquetes que permiten que el administrador del sistema instale o desinstale estos, sin que en ningún momento queden programas instalados que no funcionen por falta de otros incluidos en su paquete.

Por otro lado, el usuario y hasta el administrador de sistemas no libres, está acostumbrado a que cuando necesita resolver algo, tiene que buscar por la red algún programa que haga eso que necesita, descargarlo y luego instalarlo (sin saber si al hacer eso, no dejará de funcionar otra cosa).

Gracias al adminstrador de paquetes de software de la distribución de linux que usemos, podremos directamente seleccionar el programa que necesitemos para resolver nuestra necesidad y éste se encargará de descargarlo de un lugar llamado "repositorio" usando la conexión a Internet, descargar los programas necesarios para que el nuestro funcione correctamente (dependencias) e instalará todo.

Y después dicen que instalar programas en Linux es dificil. :-P

En los años que tiene de existencia Linux, se han formado Distribuciones y muchas de estas, han hecho su propio sistema de paquetes, dándole distinto sistema y coeficiente de compresión, forma de ordenamiento de los archivos dentro de él, etc.

De esta forma, la distribución Red Hat, creo el sistema de paquetes RPM y el administrador YUM. La distribución Debian, el sistema DPKG y el administrador APT. Slackware, el sistema TGZ.