DPD Instalación de Linux y administración de paquetes

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

Tabla de contenidos

Esquema de particionado de disco

Los estudiantes deberían poder diseñar un esquema de particionado para un sistema Linux.

Objetivos clave
Ubicar sistemas de archivos y SWAP separando particiones o discos.
Adaptar el diseño al uso previsto del sistema.
Asegurarse que la partición /boot está conforme con los requerimientos de

arranque del BIOS.

Archivos, términos y utilidades
Sistema de archivos / (root) 
Sistema de archivos /var
Sistema de archivos /home
Espacio de swap
Puntos de montaje
Particiones

Introducción

GNU/Linux y sistemas Unix en general, tiene un único árbol de directorios. Es decir que no existen unidades (como ocurre en windows, etiquetadas C: D: etc..), en reemplazo de estas, existe una carpeta raiz que contiene al resto de las carpetas.

El directorio raiz se simboliza con una barra (/) y los subdirectorios con el nombre seguido de la barra: /home, /bin, /sbin etc. Si estos, a su vez, tienen subdirectorios, se separan con barras, de la siguiente manera:

/home/usuario1
/home/usuario2
/var/log
/var/mail

Existe un criterio para ordenar los directorios en el servidor de un colegio, que puede ayudarnos a la hora de tomar decisiones al respecto.

Lo importante en esta sección no es la distribución de los directorios en si, sino el hecho que los discos rígidos, disqueteras y otros dispositivos de almacenamiento, son parte de este árbol.

Es decir que el directorio / puede estar en un disco distinto que el directorio /home o /var. Costará acostumbrarnos a esto al principio, pero luego veremos que es realmente muy útil.

Hasta ahora sólo se mencionó disco como algo genérico, pero en realidad son las particiones las que pueden entrar en juego aquí. Es decir que podemos hacer algo como esto:

  • la segunda partición del primer disco tiene el contenido de /
  • la tercer partición del cuarto disco (el esclavo de la 2da ide, por ejemplo) tiene el contenido de /home
  • el tercer disco (el master de la 2ª ide, por ejemplo) es la carpeta /cdrom

Para incorporar un poco más de vocabulario usaremos la palabra montar. se dice entonces:

  • la segunda partición del primer disco está montado en /
  • la tercer partición del cuarto disco está montado en /home
  • el tercer disco está montado en /cdrom

Y para mejorar nuestro dialecto, sabremos como llama linux a las cosas:

  1. hda es el Maestro de la 1er IDE
  2. hdb es el Esclavo de la 1er IDE
  3. hdc es el Maestro de la 2er IDE
  4. hdd es el Esclavo de la 2er IDE

Y si queremos decir una partición en especial completamos con el nro de partición al final. Ejemplos

  • La 3er partición del maestro de la 1er IDE se dice hda3

Entonces, algo muy normal es terminar hablando con amigos linuxeros diciendo

  • hda2 está montado en /
  • hdd4 está montado en /home
  • hdc está montado en /cdrom

Entonces surge la primer pregunta importante ¿qué debo montar en dónde?, se tienen por un lado particiones de discos y por otro lado carpetas. Cada carpeta tiene una semántica específica que está definida por los criterio que fueron mencionados arriba. Por ahora sólo nos limitaremos a ver pocas carpetas, sólo las interesantes:

  • /home contiene los archivos de los usuarios del sistema
  • /var contiene los datos variables, no es de importancia entrar en detalles, sólo saber que aqui se encuentra el mail a entregar (/var/mail) y las paginas web (/var/www)

Entonces como adminstradores, para responder la pregunta, vamos a tener que preguntarnos: ¿cuanto usarán los usuarios? ¿cuanto mail va a circular? ¿cuanto me ocupará las paginas web?

En base a esas preguntas asignaré los tamaños de las particiones.

Ejemplo

Tengo 40 usuarios en la escuela, son los alumnos del último año y viendo los trabajos practicos anteriores la mayoría usa 2,5 MB por trabajo; son 13 materias y 3 trabajos por materia: 2.5 * 13 * 3 = 97.5 MB., El correo que guardan en el disco suma alrededor de 60MB por alumno.

Entonces mis cuentas tendrían que ser:

  • Trabajos practicos = 100 MB
  • Correo = 60 MB

Total, 160 MB por alumno, como son 40 alumnos: 160 MB * 40 = 6400 MB

Conclusión
al menos 6.4 GB para /home

Ahora analicemos el resto de las carpetas: el correo saliente, es el correo que está en tránsito para salir a internet, es importante tener espacio disponible siempre. Y cuando existen enlaces lentos o esporádicos, es algo a tener en cuenta. Para evitar perder correos. Suponiendo que mis usuarios generen 2 MB de correo diario promedio (si, en especial esos ppt que se envian). Y suponemos que lo máximo que hemos estado sin internet fueron 3 dias

Entonces mis cuentas tendrían que ser:

  • Tráfico diario: 80 MB de correos promedio.
  • 3 días sin conexión: 240 MB
Conclusión: al menos 240 MB para /var/mail

y por último, paginas web. Es un error común sólo pensar en las páginas que se pueden producir en la escuela. Hay que pensar en aplicaciones web que la escuela puede usar, como un wiki, una aplicación que ordene bibliotecas, un calendario compartido o una aplicación de webmail. Esto brinda muchas posibilidades. Pero supondremos:

  • Soft para bibliotecas: 5 MB
  • Calendario compartido: 5 MB
  • Wiki: 10 MB
  • Webmail: 5 MB
Conclusión: 25 MB para /var/www

Aunque habría que incluir la base de datos, pero de todas formas es para darnos idea de proporciones. En este ejemplo vemos que /home es mucho más que el resto, pero si revisamos bibliografía respecto a este tema, muchos autores insisten en tener un /var con mayor capacidad, ya que piensan en un servidor destinado principalmente a correo, web, y servicios similares.

Particiones y Puntos de montaje

Para una instalación tipica de escuela, deberíamos hacer 2 particiones. La partición donde irá la carpeta / y otra donde irá la carpeta /home

  1. / con 4GB a 8GB estará bien, dependerá de la cantidad de utilidades instaladas, pero una instalación tipica.
  2. /home tendrá como mínimo el espacio calculado. Y como máximo todo lo que podamos. De esta manera garantizamos la escalabilidad en el numero de usuarios.

Si existe previamente en el disco Windows y se quiere conservar, existen utilidades para reparticionar dejando libre parte del disco que luego será usado en la instalación de GNU/Linux.

SWAP

Linux necesita SWAP, lo más eficiente es dedicar una partición a espacio SWAP. Según el uso del equipo y el criterio a aplicar recomiendan mayor o menor espacio en SWAP. Para una escuela tipo, hay que poner la misma cantidad de SWAP que de memoria. NUNCA tenemos que correr el riesgo de quedarnos sin memoria+swap ya que Linux comienza a comportarse extremadamente mal en estos casos

NOTA
Si la performance se ve afectada por demasiado uso de disco, debido a que SWAPea mucho, hay que comprar más memoria. Tener más o menos espacio destinado a SWAP no va a mejorara la performance.

Sólo hay que utilizar una partición y etiquetarla como tipo de archivos SWAP de Linux, y cuando arranque automáticamente va a entrar en uso.

Particionando en MDV

En la seccion Particionando su disco de la Guía de comienzo, se detalla como particionar el disco en instalaciones de mandriva/mandrake

Administrador de arranque

Los estudiantes deberían poder seleccionar, instalar y configurar un administrador de arranque (boot manager).

Objetivos clave
Proveer ubicaciones alternativas de arranque y resguardar las opciones de

arranque (por ejemplo, usando un disquete o CDROM booteable).

Instalar y configurar un administrador de arranque como GRUB o LILO.
Interactuar con el administrador de arranque.
Archivos, términos y utilidades
/boot/grub/grub.conf
/boot/grub/menu.lst
grub-install
MBR
superblock
first stage boot loader
/etc/lilo.conf
lilo

Introducción al arranque

Según la definición de wikipedia "El registro principal de arranque o registro de arranque maestro como también se conoce (del inglés Master boot record cuyo acrónimo es MBR), es un sector de 512 bytes al principio del disco duro 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."

Entonces en este registro se aloja un pequeñisimo programa que nos mostrará un menu para elegir una partición para arrancar.

En el mundo del software libre tenemos 2 opciones muy potables:

  1. GRUB
  2. LILO

Con distinta filosofía pero con el mismo principio habrá que configurar el menu de cada uno de ellos para que nos deje elegir entre GNU/Linux y Windows (o combinaciones de varios sistemas operativos)

Configurando LILO

Toda la configuración de LILO se encuentra en /etc/lilo.conf el contenido es similar a algo así:

boot=/dev/hda
install=/boot/boot.b
default=linux
prompt
timeout=5
message=/boot/message
image=/boot/vmlinuz
        label=linux
        root=/dev/hda6
        append=" hdc=ide-scsi ide1=autotune ide0=autotune"
other=/dev/hda2
        label=windows
        table=/dev/hda

Por ahora esto puede parecer inentendible pero vamos a analizar línea a línea:

boot=/dev/hda

Significa que el dispositivo de arranque es /dev/hda (/dev/hda es el disco maestro de la controladora IDE primaria). El sector de arranque o boot sector de ese dispositivo contendrá a LILO cuando inicie el equipo.

install=/boot/boot.b

/boot/boot.b es un archivo usado como nuevo sector de arranque.

default=linux
prompt
timeout=5

Con estas tres opciones se especifica que:

  • prompt : Pregunta que núcleo hay que utilizar (el caso contrario puede ser que haya sólo uno y no se quiera elegir).
  • default: En caso de no poner nada, se elija linux
  • timeout: Tiempo en décimas de segundos a esperar, si no se elije ninguna de las opciones.
message=/boot/message

Se muestra un mensaje que es el archivo /boot/message que puede contener algo como:

Bienvenido a LILO, el selector de SO de arranque!

Elija un sistema operativo de la lista.
O espere 5 segundos para que arranque el sistema predeterminado.

Luego vienen las configuraciones de los núcleos en si. En el ejemplo existen 2 núcleos, uno de linux y el otro es un Windows.

Las dos configuraciones son distintas pero tienen una linea en común. Esta es label.

label es el identificador de núcleo para LILO, es de suponer que tiene que ser único. Puedo tener varios núcleos de linux pero no con label=linux en mas de uno de ellos.

Simplemente habrá que asignarlos de distinta manera como por ejemplo label=linux-2.2.19 y label=linux-2.4.3.

Si por un momento repasamos este concepto, nos vamos a dar cuenta que default=linux hace referencia al núcleo que posee label=linux. Cuando cambiemos de configuración a label=linux-nuevo recordemos cambiar default también.

Para correr un sistema no sólo necesitamos el núcleo, sino también archivos, que componen el árbol de directorios que surge de la raiz o root.

Por eso,

root=/dev/hda6

especifica que se va a usar la sexta partición del disco como directorio raíz o simplemente raíz, es decir que, todo lo que esté en esa partición va a pasar a ser el directorio / donde estarán /bin/, /etc/, /home/, /usr/, /lib/, etc.

En este concepto independizamos el núcleo de los archivos que maneja. Una vez que está el núcleo corriendo, los archivos se pueden obtener de diferentes lugares. Por ejemplo particiones, otros discos, discos flexibles, hasta un dispositivo que se encuentra a través de una red (Un hipotético /dev/red o comúnmente denominado /dev/nfsroot).

Casi cualquier archivo/dispositivo puede ser root.

Por ultimo la linea:

append=" hdc=ide-scsi ide1=autotune ide0=autotune"

Pasa parámetros al núcleo para ajustar configuraciones, las cuales dependerán de cada sistema.

Instalando LILO

Una vez que está correctamente configurado (mediante el archivo /etc/lilo.conf), es necesario escribir el sector de arranque del dispositivo (Utilizamos la palabra dispositivo en vez de disco porque puede ser que estemos configurando otra alternativa de arranque).

Un error común es pensar que sólo editando el archivo se guarda la configuración, hay que recordar que es un archivo más, incluso se puede utilizar otro archivo.

Para grabar hay que ejecutar:

root@maquina:/root# lilo
Adding linux *
Adding windows
root@maquina:/root#

Y listo. Si es que no surgió ningún problema.

El asterisco (*) indica que núcleo se cargará por defecto (default). En nuestro caso es la entrada que contiene label=linux.

La tecla TAB muestra todas las posibilidades de nucleos a cargar. Obviamente muestra el contenido de label.

Compilación e instalación de programas

Los estudiantes deberían poder compilar e instalar programas ejecutables desde sus fuentes. Este objetivo incluye la capacidad de descompactar archivos fuente. Los estudiantes deberían poder hacer optimizaciones simples del makefile, por ejemplo, cambiando las rutas (paths) o agregando directorios incluídos (include). Tanto en el makefile, como usando herramientas de configuración.

Objetivos clave
Descompactar archivos fuente usando los utilitarios típicos de compresión.
Hacer optimizaciones simples al makefile, como cambiar el path o

agregar directorios include.

Aplicar parámetros al script configure.
Conocer que fuentes se guardan por defecto.
Empaquetar en formato RPM o DPKG usando las fuentes.
Archivos, términos y utilidades
comandos RPM y DPKG
/usr/src/
gunzip
gzip
bzip2 
tar 
configure 
make

Introducción

  • Un programa en Linux se separa en varios direcorios. (bin para binarios, etc para configuraciones, lib para bibliotecas etc.)
  • Explicar las jerarquias: / - /usr - /usr/local y ejemplos utiles de montar remotamente los directorios... (ya que en el aula pueden tener sistemas de clientes delgados que hagan uso de estas ventajas)

Sobre TGZ

  • Un tgz es un archivo comprimido. El programa que puede venir en:
    • previamente compilado
    • listo para compilar (codigo fuente).

Explicar como descomprimir unicamente, para la primer categoría.

Hablar muy muy brevemente de las utilidades de ayuda a la compilación (auto-tools en general), y la receta "./configure; make"

desventajas a la hora de desinstalar / saber que está instalado a modo de introducción a los sistemas de paquetes

Sobre RPM

RPM también es un archivo comprimido pero además posee:

  • como instalarlo
  • como desinstalarlo
  • como actualizarlo
  • que otros programas/bibliotecas necesita
  • que archivos posee
  • otro metadatos.
  1. Mostrar como instalar con RPM
  2. Mostrar como desinstalar.
  3. Mostrar como actualizar.
  4. Mostrar como hacer consultas a:
    • paquetes instalados
    • paquetes por instalar.

Introducir al concepto árbol de dependencias... y comenzar a ver herramientas como URPMI (o lo correspondiente a la distro elegida)

mostar instalar, actualizar, desinstalar, hacer consultas con URPMI

Sobre DPKG

Sabiendo RPM y URPMI mostrar la equivalencia de comandos DKPG y APT-GET

Expolicar los niveles de dependencia (depends, recommends, suggests)

Si alcanza el tiempo (y la cabeza de los estudiantes) ver el sistema de preferencias

Librerías compartidas

Los estudiantes deberían poder determinar las librerías compartidas de las que depende un ejecutable e instalarla cuando sea necesario.

Objetivos clave
Identificar las librerías compartidas.
Identificar las ubicaciones típicas del sistema de librerías.
Cargar librerías compartidas.
Archivos, términos y utilidades
ldd
ldconfig
/etc/ld.so.conf 
LD_LIBRARY_PATH

DPKG (Debian package management)

Los estudiantes deberían poder ejecutar paquetes usando las herramientas de paquetes de Debian.

Objetivos clave
Instalar, actualizar y desinstalar paquetes binarios en formato Debian.
Búsqueda de paquetes conteniendo archivos específicos o librerías que pueden o no estar instaladas.
Obtener información de los paquetes, como versión, contenido, dependencias, integridad del paquete y estado de la instalación (si el paquete está o no instalado).
Archivos, términos y utilidades
unpack
configure
/etc/dpkg/dpkg.cfg
/var/lib/dpkg/*
/etc/apt/apt.conf
/etc/apt/sources.list
dpkg
dselect
dpkg-reconfigure
apt-get
alien

RPM (Red Hat Package Manager)

Los estudiantes deberían poder perform package management using RPM based tools.

Objetivos clave
Install, re-install, upgrade, and remove RPM packages.
Obtain information on RPM packages such as version, status, dependencies, integrity, and signatures.
Determine what files a package provides, as well as find which package a specific file comes from.
Archivos, términos y utilidades
/etc/rpmrc
/usr/lib/rpm/*
rpm
grep

Bibliografía