DPD Instalación de Linux y administración de paquetes
De Gleducar, http://www.gleducar.org.ar
Contenido |
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:
- hda es el Maestro de la 1er IDE
- hdb es el Esclavo de la 1er IDE
- hdc es el Maestro de la 2er IDE
- 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:
-
/homecontiene los archivos de los usuarios del sistema -
/varcontiene 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
-
/con 4GB a 8GB estará bien, dependerá de la cantidad de utilidades instaladas, pero una instalación tipica. -
/hometendrá 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:
- GRUB
- 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/localy 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.
- Mostrar como instalar con RPM
- Mostrar como desinstalar.
- Mostrar como actualizar.
- 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
- Unix Reviews
- Página LPI
- Apuntes IBM
- Manuales GPL
- Página de documentación libre de la UOC
- Documentación de capacitación de la empresa XTech