INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ 1. Introducción El contenido de esta unidad podría ser mucho mayor de lo que es. Desde Linux se pueden realizar muchas tareas de las que nos podemos beneficiar incluso en el caso de que no seamos usuarios del mismo. Describirlas todas aquí exigiría un número de páginas excesivo para los objetivos que se pretende alcanzar a lo largo de este curso. Haremos, pues, una selección de las capacidades y herramientas de uso general que puedan resultar de mayor interés, por su aplicación inmediata, a los usuarios que comparten Linux con otros sistemas operativos como el monotarea DOS o el monousuario Windows. Primero veremos las posibilidades del gestor de arranque LILO. Después daremos un repaso a las herramientas para la copia, empaquetado y compresión de archivos y terminaremos con un ejemplo de instalación tipo de varios sistemas operativos, en el mismo disco duro, aplicando las utilidades de instalación y restauración de todos ellos siempre al amparo de las capacidades que nos brinda Linux. 2. El gestor de arranque de Linux El sistema operativo Linux dispone de dos gestores de arranque: el lilo y el grub. El segundo de ellos es más reciente y algo más complejo de manejar. Sin embargo el lilo ha venido utilizándose desde hace tiempo, está disponible en todas las distribuciones y tiene un uso, relativamente, sencillo. El LILO (LInux LOader) es un pequeño programa cuya finalidad es cargar en la RAM del ordenador (memoria volátil) un determinado sistema operativo que se encuentra almacenado, en forma de archivos, en el disco duro (memoria no volátil). 2.1. ¿Qué sistema operativo se arranca? Cada vez que se enciende el ordenador se repite la misma secuencia. El sistema operativo que hay instalado en una partición del disco duro, debe copiarse en RAM para poder ser utilizado. Esta secuencia puede resumirse en las siguientes fases: 1.Conexión del ordenador a la red. La fuente de alimentación suminstra corriente y envía una señal al µP para que cargue las primeras instrucciones de la ROM (reset). 2.El BIOS realiza una comprobación del hardware del ordenador. Si detecta alguna anomalía seria, el proceso de arranque se detiene. Si todo es correcto, sigue. 3.El BIOS lee en la configuración de arranque (SETUP), guardada en la CMOS-RAM, GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 1 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ el orden en que debe buscar los dispositivos físicos del sistema para localizar en su primer sector un posible cargador (boot). Normalmente, estos dispositivos, son la unidad de disquetes, la unidad CDROM o alguno de los discos duros. Si no encuentra ninguno de estos dispositivos, el proceso de arranque, también se detiene. 4.Si localiza un cargador (boot) en algún dispositivo de almacenamiento, por ejemplo el primer sector de un disquete, o de un disco CD, este boot, carga en RAM el sistema operativo contenido en dicho dispositivo. 5.Si se trata de un disco duro, con una o varias particiones primarias creadas, y en cada una de ellas un sistema operativo instalado, el software de la BIOS pasa el control al boot instalado en el MBR, generalmente por el fdisk de DOS-Windows, y éste busca una partición que está activa, carga en RAM el boot de esta partición el cual, a su vez, realizará la carga del sistema operativo instalado en dicha partición activa. 6.Sin embargo en disquetes, y en discos duros, en el primer sector se puede guardar un gestor de arranque en lugar de un cargador. Cuando el BIOS carga en RAM el gestor, éste interactúa con el usuario para preguntarle qué partición, de qué disco, desea seleccionar para arrancar el sistema operativo instalado en ella. El gestor carga en RAM el boot de la partición seleccionada y a continuación este mismo boot carga el sistema operativo instalado en la partición elegida. Puede darse el caso de que esa partición, en vez de un cargador tenga también otro gestor de arranque y en este caso preguntaría de nuevo repitiéndose el proceso con una segunda elección. 7.Lo primero que se carga en la RAM es el núcleo del sistema operativo. Luego se ejecutan los diferentes archivos de configuración, se cargan los archivos necesarios y el sistema queda operativo para iniciar una sesión. NOTA: Entendemos por el BIOS (en masculino) el conjunto de programas o software que hay grabado en la memoria no volátil, de sólo lectura, como es la ROM BIOS, o simplemente la BIOS (en femenino) localizada en la placa base del ordenador. Uno de estos programas contiene las rutinas del sistema básico de entrada y salida de datos (Basic Input Output System). Otro se denomina SETUP y se inicializa generalmente al pulsar la tecla Supr o la F2, en tiempo de arranque, y permite introducir datos de configuración del ordenador según las preferencias del usuario. Estos datos, como pueden ser, el orden en que se buscan los dispositivos de arranque o la habilitación de dispositivos hardware, se guardan en otra memoria de lectura y escritura, volátil, denominada CMOS-RAM la cual utiliza la energía de una pila de 3V de alimentación permanente para que no pierda su contenido al desconectar el ordenador de la red. A cada nueva conexión, el BIOS, de la ROM lee los datos de configuración que hay en la CMOS-RAM y el sistema arranca conforme a nuestras preferencias. 2.2. ¿Qué es el LILO? GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 2 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ Bajo el nombre de LILO, se agrupa a un conjunto de archivos, que se distribuyen dentro de un mismo paquete llamado también lilo. Normalmente, este paquete, suele instalarse durante el proceso de la instalación del sistema operativo. Sin embargo, esto, también puede hacerse más tarde. Para comprobar su instalación o para averiguar la versión, en Debian, podemos hacer $ dpkg -l | grep lilo. Nos aparecerá la información siguiente: ii lilo 22.2-3 LInux LOader - The Classic OS loader can load other OO SS El gestor LILO puede arrancar uno o varios sistemas operativos, sean o no Linux, instalados en una o más particiones de uno sólo, o de varios, discos duros del ordenador. Para lograr este propósito, LILO, debe configurarse adecuadamente. Un primer paso para conseguirlo es conocer los archivos principales que lo forman y saber cuál es la función que desempeña cada uno de ellos. Estos archivos son: w/sbin/lilo. Es un programa binario, ejecutable, que está a disposición sólo del superusuario (root) y que actúa básicamente como un "compilador". Es el programa que se encarga de escribir los 446 primeros bytes del primer sector del disco o partición en donde se instala el gestor. w/etc/lilo.conf. Es el archivo básico de configuración del lilo. Es un archivo de texto sin formato, editable con el vi, que contiene los valores de todos aquellos parámetros que se pueden modificar a gusto del administrador del sistema. w/boot/boot.b. Es un archivo binario (de código) que contiene una "plantilla" de todo cuanto debe escribirse en el primer sector del disco o de la partición en que se instala LILO. En resumen: El único archivo que podemos modificar es el /etc/lilo.conf. Después de cada cambio en el lilo.conf, siempre debe ejecutarse el /sbin/lilo. El contenido del archivo /boot/boot.b será "modulado" con los datos existentes en /etc/lilo.conf y el resultado final será escrito, por el /sbin/lilo, sobre el sector correspondiente del disco duro (o disquete). 2.3. ¿Cómo modificar el lilo.conf ? Antes de comenzar cualquier modificación debe realizarse una copia de seguridad, con nombre distinto, del archivo /etc/lilo.conf. No se recomienda cambiar el nombre, o la ubicación, del archivo /etc/lilo.conf porque, por defecto, el /sbin/lilo lo buscará en el directorio /etc y bajo el nombre lilo.conf. Por ejemplo, podemos dar, a la copia, el nombre de lilo.viejo. # cp /etc/lilo.conf /etc/lilo.viejo El contenido del archivo de configuración /etc/lilo.conf puede resumirse en una sección global, de contenido general, más una sección local, de contenido específico, por cada uno GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 3 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ de los sistemas operativos que debe arrancar lilo. Pondremos un archivo ejemplo de un lilo.conf de un Linux Debian instalado en /dev/hda7. # Sección global lba32 (Modo de funcionamiento del disco duro. 32 bits On y LBA). boot=/dev/hda (Lugar donde se instalará el lilo). root=/dev/hda7 (Partición raíz del sistema Linux que instala el gestor). install=/boot/boot-menu.b (Archivo que contiene el menú que muestra lilo). map=/boot/map (Archivo que contiene un mapa de particiones del disco). prompt (Hace que LILO espere, muestre el menú y pregunte). timeout=150 (Tiempo, en 0,1 segundos, que tarda en arrancar la opción por defecto). vga=normal (Resolución de pantalla en el arranque a 80x25 caracteres). # Secciones locales other=/dev/hda2 (Partición que arranca por defecto, por ser la primera local). label=WINDOWS98_hda2 (Nombre que aparecerá en el menú). image=/vmlinuz (La imagen del kernel utilizada en el arranque de /dev/hda7 label=DEBIAN30_hda7 es /vmlinuz. En la sección global es root=/dev/hda7). read-only other=/dev/hda6 label=SuSE80_hda6 (Para arrancar otro sistema Linux). other=/dev/hda1 password=cursillo label=MSDOS622_hda1 (Arranca un DOS nativo en /dev/hda1). (Contraseña para el arranque). En las líneas de lilo.conf las que requieren de una mayor atención, por ser las que con mayor frecuencia suelen modificarse, son: El lugar donde se instalará el gestor. boot=/dev/fd0 para el disquete, boot=/dev/hda para el MBR del primer disco, boot=/dev/hda3 para el primer sector de la partición /hda3 (primaria o extendida), boot=/dev/hdb para el MBR del segundo disco duro, etc. El tiempo que espera lilo en iniciar la carga del sistema operativo por defecto. Por ejemplo, si es timeout=100 tardará 10 segundos, si es timeout=1 el arranque será inmediato no dejando tiempo para elegir otro sistema que no sea el establecido por defecto y sin escribir esta línea se obtiene un tiempo de espera infinito. Al pulsar cualquier tecla durante la aparición del menú de lilo, esta temporización también se torna infinita. Por defecto, lilo, arranca el sistema operativo que aparece en la primera sección local. La carga comienza al agotarse el timeout o bien al pulsar INTRO. Para arrancar desde cualquier otra partición, seleccionar en el menú su label (especificado también en su sección local), seguido de INTRO. El prompt, es necesario escribirlo. Esta línea obliga al gestor a detenerse y nos dé GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 4 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ opción para seleccionar otro sistema operativo. Si se suprime, no hay temporización y se carga, sin preguntar, el sistema por defecto. Esta última posibilidad es útil cuando un ordenador tiene instalado sólo un sistema operativo o bien cuando lilo se instala en el primer sector de una partición, por ejemplo extendida, y debe ser llamado, a su vez, por otro lilo instalado en el MBR. La clave, si se coloca en una sección local, la contraseña afecta sólo al sistema operativo en ella definido pero, si se escribe dentro de la sección global, entonces, todos los sistemas arrancables la pedirán después de su selección en el menú de inicio de lilo. 2.4. La compilación y otras opciones de /sbin/lilo La sintaxis completa de la línea de comandos necesaria para actualizar el gestor de arranque, cada vez que se efectúe una modificación en el archivo /etc/lilo.conf, es la siguiente: # /sbin/lilo -C /etc/lilo.conf (opción -C --> compile --> compila). Sin embargo, si el compilador es el lilo, y se encuentra en /sbin y el archivo a compilar se llama lilo.conf y se encuentra en /etc, cosa que es lo más habitual, la línea anterior puede reemplazarse simplemente por el comando único: # lilo Cuando lilo.conf es compilado, /sbin/lilo guarda una copia de seguridad del boot existente antes de que sea sobreescrito por el nuevo. Esto permite utilizar la opción -u (unistall) para desinstalarlo y poder recuperar el anterior. Debe escribirse: # /sbin/lilo -u /dev/hda (Por ejemplo para desinstalarlo del MBR de /dev/hda). Para suprimir el lilo alojado en el MBR del primer disco duro, desde DOS-Windows, se puede utilizar la opción disponible en el fdisk escribiendo C:\> fdisk /MBR. Cada vez que se instala Windows-98 o MSDOS622, también se realiza esta operación de modo automático. Existen dos opciones más que puede resultar interesantes cuando se quiere cambiar ela temporización en el arranque o la partición por defecto. Estas son opciones son: # /sbin/lilo -d 200 # /sbin/lilo -D REDHAT (-d --> delay --> Cambia el retardo a 20 segundos). (-D --> default Para arrancar, por defecto, una sección local cuyo sistema operativo tiene un label=REDHAT). Para obtener más información, buscar ayuda en # man lilo.conf y en # man lilo. 2.5. ¿Cómo rescatar el sistema si ha perdido el lilo? Como siempre, lo mejor es prevenir. Si se da el caso en que el MBR ha sido alterado involuntariamente o borrado por cualquier circunstancia y el ordenador se niega a arrancar desde el GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 5 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ disco duro, la solución más simple consiste en volcar una copia imagen del primer sector del disco duro que, previamente, debemos haber creado y guardado en un disquete fácilmente localizable. Sin embargo, si lo anterior no es posible, es bastante probable que podamos instalar el lilo, de nuevo, siguiendo los pasos siguientes: wIniciar un sistema Linux de rescate (en disco-RAM) por ejemplo mediante los disquetes boot y root de Debian. Podemos usar también un CD de instalación, uno o dos disquetes de un minilinux, es decir arranque por disquete o con disco CD. wUna vez iniciada una sesión, como superusuario, crearemos un subdirectorio en el raíz que llamaremos, por ejemplo, linux, tecleando # mkdir /linux. wAveriguar la partición del disco que contiene el sistema Linux que vamos a rescatar. Para nuestro ejemplo supondremos que es /dev/hda6. Se necesita conocer con exactitud cuál es el sistema de archivos utilizado en esta partición. Supondremos que es de tipo ext2. wMontar la partición tecleando # mount -t ext2 /dev/hda6 /linux wCambiar la raíz del sistema de archivos actual por el de la partición a rescatar y arrancar el shell que hay ella. # chroot /linux (para Debian) o bien, en el caso de SuSE, # chroot /linux /bin/bash. wCompilar wVolver el lilo, para que se reinstale, haciendo # /sbin/lilo. al sistema raíz inicial del rescate escribiendo # exit. wDesmontar wReiniciar la partición objeto del rescate. # umount /dev/hda6 (en nuestro ejemplo). el sistema y verificar que la gestión del arranque es correcta haciendo: # reboot 3. Utilidades para comprimir archivos gzip y bzip2 Existen muchas herramientas en Linux que nos permiten realizar la compresión de archivos. Veremos las dos de uso más frecuente. Antes de entrar en su modo de empleo, debemos tener bien presente que, estos compresores, tienen las características siguientes: wSon no destructivos. Esto quiere decir que después de aplicar la descompresión, de un archivo comprimido, se obtendrá un archivo idéntico al original. No tienen, pues, ningún parecido con los compresores, por ejemplo, de audio (MP3) o de vídeo (MPEG2) que sí pierden información al comprimir. wEl tamaño del archivo comprimido obtenido es muy variable. Es función directa de dos parámetros. El primero, como es evidente, es el tamaño real del archivo original. El segundo está relacionado con los segmentos de bytes iguales y GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 6 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ seguidos que contiene el archivo origen. wEl tiempo empleado en realizar la compresión depende de la calidad del compresor y del tamaño del archivo comprimido obtenido. A mejor compresión, mayor tiempo. Así el bzip2 comprime alrededor de un 10% más que el gzip a cambio de invertir, más o menos, el doble de tiempo. En archivos pequeños no tiene demasiado importancia, pero a partir de los 100 MB debe sospesarse la conveniencia de usar uno u otro. Durante la descompresión, la diferencia de tiempo, no es relevante si se compara la rapidez entre ambos compresores. El programa /bin/gzip, es un compresor de libre distribución, disponible también para DOS-Windows, que acepta varios niveles de compresión, del 1 al 9, y que admite la entrada desde un archivo, desde la salida estándar, mediante redirección, o desde un dispositivo en bruto. La salida siempre se envía a un archivo con la extensión .gz. Esta extensión es creada por el propio compresor y añadida al nombre del archivo, cuando hay un archivo original con un nombre, o bien debe ser indicada por el usuario cuando no hay archivo de entrada porque procede de una redirección mediante tubería. Veremos, con unos ejemplos, las posibilidades de uso más importantes de gzip. Mediant la opción -c, gzip, conserva el archivo original, por defecto lo suprime. $ cal 2003 > año.min $ cal 2003 > año.max $ cal 2003 > año $ ls -l año* $ gzip -1 año.min $ gzip -9 año.max $ ls -l año* (Crea un archivo de texto con 1977 bytes). (Otro archivo igual al anterior pero con otro nombre). (Y otro para comparar después). (Hacer un listado largo de todos para ver su tamaño). (Mínima calidad de compresión. Más rápido). (Máxima calidad de compresión. Más lento). (Otro listado largo de todos para ver y comparar resultados). $ cal 2003 | gzip -1 > año.directo.min.gz $ cal 2003 | gzip -9 > año.directo.max.gz $ ls -l año* (Comprime desde la salida estándar). (Idem al anterior pero con más calidad). (Listar y comprobar). $ cal 2001 > año2001 (Creación de un archivo). $ gzip -9 -c año2001 > años1.gz (Compresión conservando el original). $ cal 2002 > año2002 (Creando otro archivo). $ gzip -9 -c año2002 >> años1.gz (Añade otro archivo al comprimido). $ gzip -9 -c año2001 año2002 > años2.gz (Comprimir dos archivos a la vez). $ cat año2001 año2002 | gzip -9 -c > años3.gz (Más eficiente que la anterior). $ dd if=/dev/zeros of=año.zeros bs=1 count=1977 (Otro archivo con "zeros"). $ gzip -9 -c año.zeros (Compresión). $ ls -l año* (Comparar el tamaño tan reducido de año.zeros.gz). GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 7 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ $ dd if=/dev/fd0 | gzip -9 > disco.img.gz (Imagen comprimida de un disquete). $ dd if=/dev/fd0 bs=446 count=1 | gzip -9 > lilo.img.gz (Sólo de su gestor). $ ls -l *.img.gz (Para listar sólo las imágenes comprimidas). La descompresión de un archivo, antes comprimido con gzip, se puede realizar utilizando directamente el descompresor /bin/gunzip y también empleando, de nuevo, el compresor /bin/gzip con la opción -d (decompress). Por defecto, si no se indica ninguna otra opción, ambos, suprimen el archivo original comprimido, y de extensión .gz, y crean otro archivo descomprimido, con el mismo nombre y sin dicha extensión. Podemos mantener el original añadiendo la opción -c (conservar) en la misma línea de comandos y en este caso la salida de gzip se envía a la pantalla desde donde se puede redireccionar, de nuevo, hacia otro archivo y también hacia un dispositivo en bruto. Observar que las dos opciones, -c y -d, se pueden escribir juntas. Es importante tener en cuenta que el algoritmo que usa gzip es compatible, y por tanto los archivos con él comprimidos se pueden descomprimir, con winzip. Veremos algunos ejemplos y posibilidades de empleo de la descompresión. $ gzip -d -c año.max.gz $ gunzip -d -c año.max.gz (Salida a pantalla. Mantiene el original). (Mismo que el anterior, usando gunzip). $ gzip -d -c año.max.gz > AÑO.max (Salida a nuevo archivo. Mantiene original). $ gzip -d año.max.gz (Salida al archivo año.max. Borra el original). $ gzip -cd lilo.img.gz > /dev/fd0 (Para restaurar una imagen comprimida del lilo). $ gzip -cd lilo.img.gz | dd bs=1 count=446 of=/dev/fd0 (Mismo pero más seguro). $ gzip -cd disco.img.gz > /dev/fd0 (Descomprime y graba la imagen al disquete). $ gzip -cd disco.img.gz | dd bs=1k count=1440 of=/dev/fd0 (Más seguro). $ gzip -cd toms.img-gz | dd bs=1k count=1722 of=/dev/fd0 (Disquete de toms). En cuanto a la herramienta /usr/bin/bzip2, señalar que, es más eficiente en la calidad de compresión pero consume más tiempo de procesado. Por tanto se utiliza en arhivos de tamaño reducido y en todos aquellos en que el lugar de almacenamiento está limitado, por ejemplo, para comprimir y escribir un kernel en un disquete de arranque de Linux. Comparada con gzip podemos observar que aporta algunas diferencias. wLa extensión de los archivos comprimidos con bzip2 es .bz2 en lugar de .gz. las calidades de compresión desde -1, la más baja, hasta -9, la más alta. wDispone de la opción -c para enviar la salida a la pantalla. wPara no borrar el archivo original debe especificarse la opción -k (keep). wPara descomprimir se utiliza también la opción -d. wOtra utilidad que permite tambien descomprimir es /usr/bin/bunzip2. wLos archivos con extensión .gz no pueden descomprimirse con bzip2, ni los de wMantiene GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 8 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ extensión .bz2 con gzip. Se propone, como trabajo para practicar, repetir, utilizando bzip2, todos los ejemplos antes realizados empleando gzip. Como estudio comparativo del tiempo empleado y de la calidad de compresión obtenida entre estos dos programas, puede realizarse la práctica siguiente. $ time -p dd if=/dev/zero bs=1M count=50 | gzip -9 > zeros1.gz $ time -p dd if=/dev/zero bs=1M count=50 | bzip2 -9 > zeros2.bz2 $ ls zeros* La utilidad /usr/bin/time se comporta como un cronómetro que contabiliza el tiempo total que ha invertido un comando, o una tubería de comandos, en completar su trabajo. En el ejemplo anterior, el archivo original, en ambos casos, es de 50 MB y lleno de "zeros". El archivo zeros1.gz queda con un tamaño de 50.913 bytes y ha tardado unos 3 segundos en comprimirse. Sin embargo el zeros2.bz2 tiene 81 bytes y ha empleado unos 10 segundos en la compilación. No siempre los resultados, en lo que a la calidad de compresión se refiere, son tan espectaculares debido a que los archivos no contienen todos sus bytes iguales. En la práctica, para una imagen real de un disco duro, se observa una reducción de un 10 a un 20% del archivo comprimido con bzip2, respecto del obtenido con gzip, pero el tiempo consumido sigue siendo superior en torno al 300%. Para más detalles utilizar las páginas del manual $ man gzip y $ man bzip2, respectivamente. 4. La utilidad tar. Creación de paquetes .tar La herramienta /bin/tar ha heredado su nombre de tape archive. Esto es así porque en sus comienzos se utilizaba, en Unix, para realizar copias de seguridad de los datos en cinta magnética. Actualmente ha evolucionado mucho y se ha convertido en un formato estándar de empaquetar en un sólo archivo, que lleva la extensión .tar, no sólo copias de seguridad sino también multitud de aplicaciones como es el caso del entorno ofimático Open Office. Un paquete .tar no tiene nada que ver con otro paquete .rpm ni con uno .deb. El paquete creado con /bin/tar, contiene archivos y directorios debidamente ordenados y debe desempaquetarse también utilizando la misma herramientar tar con la cual se ha creado. 4.1. Empaquetado y extracción de archivos GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 9 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ Veremos en, primer lugar, cómo se realiza el empaquetado de varios archivos en uno sólo. Utilizaremos la sintaxis siguiente: $ tar -c -v -f paquete.tar archivo1 archivo2 archivo3 wtar Es el nombre de la orden. (Un programa binario). Es una opción necesaria para crear, es decir, empaquetar . (-c --> create). w-v Opción, no necesaria, para mostrar información de los archivos a medida que los va empaquetando. Es útil incluirla. (-v --> verbose). w-f Opción necesaria para para que tar envie la salida al archivo de destino cuyo nombre que sigue a las opciones, en nuestro ejemplo paquete.tar, y no sea enviado, por defecto, a la pantalla. (-f --> file). w archivo1, archivo2 y archivo3 Son los nombres de los archivos a empaquetar. w-c La sintaxis -cvf y la -c -v -f son, las dos, equivalentes. Pondremos un ejemplo sencillo para empaquetar tres archivos. $ cal 1 2003 > enero (Crea un archivo de texto con un tamaño de 140 bytes). $ cal 2 2003 > febrero (Otro archivo de texto con 141 bytes). $ cal 3 2003 > marzo (Y otro más de 148 bytes). $ tar -cvf trimestre.tar enero febrero marzo (Crea el paquete trimestre.tar). $ ls -l enero febrero marzo trimestre.tar (Para listar y ver los tamaños). Observar que los archivos originales que se han empaquetado, no han sido borrados. Por otro lado es necesario poner, al paquete creado, la extensión .tar para que después sea posible desempaquetarlo. De momento no debe preocuparnos el tamaño excesivo que presenta el paquete, ya que, por defecto, tar no comprime y además, en este ejemplo, se han utilizado archivos muy pequeños y no es precisamente éste el uso previsto de tar. Para la extracción de los archivos contenidos en un paquete .tar emplearemos la sintaxis de la siguiente línea en donde es necesaria la opción -x (extract) para indicarle a tar que debe desempaquetar. Esta opción es la opuesta a -c descrita anteriormente. Se puede usar, si se desea, la opción -v y es obligado escribir la opción -f para que tar tome como entrada de información el archivo escrito a continuación de las opciones, que deberá tener la extensión .tar. Como ejemplo, suprimiremos los archivos del ejercicio anterior y después los recuperaremos a partir del archivo trimestre.tar $ rm enero febrero marzo $ tar -xvf trimestre.tar $ ls -l enero febrero marzo trimestre.tar GVA CEFIRE ESPECÍFICO DE FP CHESTE (Primero borramos los archivos). (Proceso para extraer los archivos). (Un listado para verlos de nuevo). V. Ros Brandon - M. Blanes Monllor -- 10 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ 4.2. Creación de paquetes con archivos y directorios La herramienta tar también permite crear un paquete único en el cual esté incluido todo un conjunto de archivos y directorios, debidamente ordenados. Para que tar realice este trabajo, debemos darle, en la línea de comandos, un directorio a partir del cual debe realizar, recursivamente, el empaquetado. Todos los archivos, subdirectorios y sus posibles archivos, contenidos en el directorio especificado quedarán incluidos en el paquete .tar que se ha creado. La sintaxis a utilizar es: # tar -cvf paquete.tar /directorio Durante el proceso de extracción, debe tenerse en cuenta que el directorio de mayor jerarquia será creado con la misma ruta y nonbre del directorio que se utilizó en el empaquetado. Por tanto debemos situarnos en el directorio raíz en ambos procesos. En el ejemplo anterior, si se ha empaquetado /directorio, que es "hijo" del raíz, debemos extraer el contenido de paquete.tar desde el directorio raíz y escribir lo siguiente: # tar -xvf paquete.tar (Todo el árbol desempaquetado colgará de /directorio). Otra de las capacidades que tiene tar es poder comprimir un paquete al mismo tiempo que lo crea. Simplemente se añade la opción -z (zip) al mismo tiempo que al nombre del paquete se incrementa también con la extensión .gz. El resultado obtenido es muy parecido a empaquetar primero con tar y después comprimir con gzip. Es necesario mantener el orden de las opciones en estos comandos: # tar -czvf paquete.tar /directorio # tar -xzvf paquete.tar (Para la creación y compresión del paquete). (Para su descompresión y extracción). Si deseamos que tar mantenga los permisos de los archivos y directorios empaquetados, debemos añadir la opción -p (preserve) escrita después de -c y antes de -z en la lista de opciones. La línea de comandos a emplear sería entonces: # tar -cpzvf paquete.tar /directorio # tar -xpzvf paquete.tar (Creación, preservado y compresión). (Descompresión, preservado y extracción). 4.3. ¿Cómo modificar el tamaño de una partición con tar Describiremos un ejemplo práctico, con los pasos a seguir, para cambiar el tamaño y el tipo del sistema de archivos de una partición, sea o no de Linux, sin perder los datos que contiene o el sistema operativo en ella instalado. Es más, si la partición es de DOS-Windows, aunque no GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 11 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ cambiemos ni el tamaño de la partición ni el tipo de sistema de archivos o el tamaño del clúster, se habrá realizado un desfragmentado completo en un tiempo muy breve comparado con el que invierte el DEFRAG.EXE. Supongamos que en el disco duro /dev/hda tenemos una partición de 50 MB, que ocupa los cilindros 1 al 7, con un id 6, es decir FAT16, y tiene instalado el MSDOS622 ocupando tan sólo 22 MB de espacio. Nos interesa reducirla a un espacio total de 30 MB con el fin de recuperar los 20 MB que no están aprovechados. En este supuesto práctico no modificaremos el tipo de FAT porque DOS no admite mas que FAT16 para "barrer" una partición de 30 MB. PASO 1. Arrancar el MSDOS y crear un disquete de inicio que contenga el sistema, el SYS.COM y el FORMAT.COM. C:\> FORMAT /S A: C:\> COPY C:\DOS\SYS.COM A: C:\> COPY C:\DOS\FORMAT.COM A: PASO 2. Arrancar Linux y hacer lo siguiente: # mkdir /origen (Creamos un directorio hijo del raíz). # mount -t msdos /dev/hda1 /origen (Montamos el DOS en él). PASO 3. Nos cambiamos al directorio raíz del sistema Linux y creamos, con tar, un paquete con el contenido íntegro de /dev/hda1. # tar -cpzvf dos.tar.gz /origen (El paquete tendrá unos 14 MB). # umount /origen (Salvados los datos, desmontar la partición). PASO 4. Utilizando el fdisk de Linux, suprimir la partición /dev/hda1 y crear en su lugar otra /dev/hda1 que comprenda sólo los cilindros 1 al 4. Cambiar su id a 6 (FAT16) y guardar los cambios. PASO 5. Crear el sistema de archivos FAT16 en /dev/hda1. Lo podemos hacer desde Linux o bien desde el disquete de inicio de MSDOS creado ya que contiene el FORMAT.COM. Utilizar una de entre las tres opciones siguientes: # mkfs -t msdos /dev/hda1 (Si disponemos de /sbin/mkfs). # mkdosfs /dev/hda1 (Si tenemos el /sbin/mkdosfs). A:\> FORMAT C: (¡ASEGURARSE QUE C: ES /dev/hda1!). PASO 6. Una vez encogida y formateada, montar la nueva partición en /origen. # mount -t msdos /dev/hda1 /origen # cd / (El nombre /origen el mismo). PASO 7. Empleando tar, volcar todos los datos. El directorio actual deberá ser el raíz. GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 12 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ # tar -xpzvf dos.tar.gz # umount /origen (Los datos vuelven a /dev/hda1). (Desmontar la partición). PASO 8. Arrancar el DOS desde el disquete y reinstalar los archivos de systema. A:\> SYS C: (Se reinstala el MSDOS.SYS y el IO.SYS) Los pasos esenciales son el 3, 4, 5, 6 y 7. Los demás pueden no ser necesarios en la mayoría de las ocasiones cuando ya se ha adquirido cierta práctica en el empleo de esta herramienta. Observar que en el paso 5 es donde se decide si se cambia, o no, el tipo del sistema de archivos y es una opción interesante cuando se modifica una partición de Linux, o de Windows, dado que ambos sistemas operativos soportan varios de ellos. En el caso de encoger o ampliar una partición de Windows-98, el paso 8 no es necesario, pero en el paso 5, previo al formato, deben borrarse los 63 primeros sectores de la partición. En el caso de una partición de Linux, todo esto no es necesario. 4.4. ¿Cómo instalar un paquete tar? Caso del Open Office Para instalar el entorno ofimático Open Office de Sun lo primero es conseguirlo en un paquete .tar.gz (unos 70 MB) en el cual también aparecerá el código de la versión y la plataforma para la cual se ha compilado (Intel) seguido del idioma (es). Está disponible en internet y en muchos de los CD's que regalan las publicaciones, revistas y libros, del sector informático. La apariencia del paquete será: OOo_1.0.1_LinuxIntel_install_es.tar.gz. Conseguido el paquete en un disco CD, iniciaremos una sesión, como superusuario, y realizaremos las operaciones siguientes: a.- Montaremos el disco CD, que contiene el paquete, en el directorio /cdrom. # mount -t iso9660 /dev/hdc /cdrom -o ro (/dev/hdc si es el master y el 2º IDE). b.- Crearemos un directorio temporal, por ejemplo en /tmp, y nos cambiamos a él. # mkdir /tmp/temporal # cd /tmp/temporal c.- Copiaremos el paquete en el directorio temporal. # cp /cdrom/OOo_1.0.1_LinuxIntel_install_es.tar.gz /tmp/temporal d.- Descomprimimos el paquete usando gunzip o gzip -d. (El primero acabará 0.1 o 0.2 segundos antes que el segundo). # gunzip OOo_1.0.1_LinuxIntel_install_es.tar.gz GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 13 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ e.- Mediante tar, extraemos todos los componentes del paquete. # tar -xpvf OOo_1.0.1_LinuxIntel_install_es.tar f.- Cambiamos al directorio install, creado por tar, dentro de temporal. # cd /tmp/temporal/install g.- Ejecutamos el script de instalación que tar ha creado dentro de install. Seguir las instrucciones que aparezcan en pantalla. # ./install h.- Arrancar el entorno gráfico del KDE y, navegando, localizar en /usr --> /user/local --> /usr/local/OpenOffice.org1.0 otro script llamado setup. Ejecutarlo y seguir las instrucciones por pantalla. Al finalizar tendremos el Open Office instalado para root. i.- Para cada usuario, iniciar una sesión en el entorno gráfico, con su login, y ejecutar de nuevo el /usr/local/OpenOffice.org1.0/setup. j.- Final, como superusuario, suprimir todo el contenido del directorio temporal. # rm -rf /tmp/temporal (ATENCION: No confundir el directorio). 5. La utilidad cpio Otra herramienta, tan potente como antigua en Unix, es /bin/cpio. Su nombre procede de copy in/out por "entrada y salida de copias". En realidad es un programa que permite realizar copias de archivos y de directorios y guardarlos de diferentes maneras y en distintos sitios, es decir, nos permite realizar copias de seguridad de directorios, árboles de directorios y particiones enteras incluyendo los archivos existentes en ellas sean de un sistema operativo o sean de datos. Además podemos emplearla para realizar copias de particiones de Linux o de Windows. La copia puede guardarse también en dispositivos en bruto, por ejemplo en disquetes sin sistema de archivos o en particiones de disco duro incluso permite crear un archivo de salida con toda la información de entrada. Veremos las opciones más importantes que admite /bin/cpio y después realizaremos un ejercicio práctico de uso a título de ejemplo. w-B (Blocks). Ajusta el tamaño de entrada y salida de bloques a 5120 bytes. Por defecto, cpio, trabaja con bloques de 512 bytes. Por tanto esta opción acelera la velocidad de procesado de información obtenida/volcada del/al disco duro. w-p (pass mode). Modo de paso, es decir, actúa como un filtro en el cual el árbol de directorios de entrada se envía hacia otro directorio de salida. Funciona de modo parecido a como lo haría, si pudiese, un "XCOPY" del DOS-WIndows. w-o (output mode). Modo de salida redirigido hacia un archivo. En este caso nos recuerda a tar creando un archivo con la opción -c. GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 14 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ w-i (input mode). Es el modo de uso complementario al anterior. La entrada será tomada a partir de un archivo. Sería el equivalente a utilizar tar con la opción -x para extraer. w-d (directory). Fuerza a crear directorios en el destino caso de que no existan. Es necesario ponerla para copiar un árbol de directorios completo. w-m (modification time). Mantiene la fecha y hora de creación o de modificación de los archivos copiados. w-v (verbose). Nos muestra información a medida que realiza la copia. Es conveniente para seguir de cerca cómo progresa el trabajo. Para realizar la copia de archivos, se puede enviar a la entrada de cpio, mediante redirección de la salida estándar, una lista con todos ellos obtenida mediante la orden /usr/bin/find sin ninguna opción. Por ejemplo, si tecleamos los comandos: $ cd /bin y luego $ find . nos aparecerá en pantalla una lista completa con todos los archivos existentes en el subdirectorio de archivos binarios sistema y además cada archivo contendrá su ruta absoluta. 5.1. Copia en disquete usando cpio Analizaremos un par de ejemplos prácticos sobre cómo copiar un fichero, o un árbol de directorios y archivos, de tamaño superior al disponible en un disquete utilizando la salida en bruto. En el primer ejemplo supongamos que hemos descargado de internet un archivo, en formato .pdf con un tamaño de 2.5 MB y que tiene el nombre 4475.pdf (un DOGV). No cabe en un sólo disquete y esto obliga a utilizar dispositivos de almacenamiento de capacidad superior. Sin embargo cpio realiza la operación de modo muy fácil partiendo el archivo en dos y solicitando un segundo disquete cuando el primero ya está lleno. Puede utilizar el disquete en bruto, con tal de que tenga formato, es decir sin ningún sistema de archivos creado, lo que incrementa un poco más la capacidad de almacenamiento. Sólo debemos marcar, sobre la etiqueta, el orden en que son escritos los disquetes para que después cpio pueda recomponer el archivo original al ir leyéndolos en el mismo orden en que fueron creados. La secuencia de operaciones a realizar durante el proceso de copia es la siguiente: wColocar un disquete con formato en /dev/fd0. Etiquetarlo como 4475.pdf 1/2. wAsegurarnos de que estamos en el directorio donde reside el archivo 4475.pdf. wEscribir en la línea de comandos: # ls 4475.pdf | cpio -ov > /dev/fd0. wCuando el disquete esté lleno aparecerá el mensaje: Found end of tape . . . . wColocar un segundo disquete. Etiquetarlo como 4475.pdf 2/2. wPara que la copia continue escribir: /dev/fd0 INTRO. GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 15 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ Para recuperar el archivo origen, a partir de los dos disquetes creados por cpio, hacer: wSituarse sobre el directorio en el cual deseamos descargar el archivo 4475.pdf. wColocar el disquete marcado con la etiqueta 4475.pdf 1/2 en la unidad /dev/fd0. wEscribir en la línea de comandos: # cpio -iv < /dev/fd0 . wCuando el disquete ha sido leido aparecerá: Found end of tape . . . . wColocar el segundo disquete etiquetado como 4475.pdf 2/2. wPara que la copia continue escribir: /dev/fd0 INTRO. En el segundo ejemplo supondremos que deseamos realizar una copia de seguridad, en disquetes, de todos los archivos binarios contenidos en el subdirectorio /bin. Para tener conocimiento del espacio necesario podemos usar la orden du (disco utilizado) que devuelve el espacio utilizado en disco, por un directorio y todos sus archivos, medido en Kbytes. Para no arriesgarnos a que el sistema sufra algún daño, podemos realizar una copia previa en el directorio misbin, pasarla a copia de seguridad en disquetes, suprimir el directorio misbin y después restaurarlo con cpio a partir de los disquetes. Para generar la copia de seguridad, nos situamos en nuestro directorio personal y: w# mkdir misbin (Se crea el directorio /home/usuario1/misbin). cp /bin/* misbin (Copiar todo el contenido de /bin en /home/usuario1/misbin). w# du misbin (Ver los bloques utilizados. Unos 3838KB. 3.8 MB). w# cd misbin (Directorio actual /home/usuario1/misbin). w# find . | cpio -ov > /dev/fd0 (Para comenzar la copia del disquete bin 1/3). w/dev/fd0 INTRO (Para copiar el bin 2/3 cuando aparezca Found end of tape . . ). w/dev/fd0 INTRO (Para copiar el bin 3/3 cuando aparezca Found end of tape . . ). w# Para restaurar la copia, nos aseguramos de estar en el directorio propio y: w# rm misbin/* (Suprimimos todos los archivos). w# cd /home/usuario1/misbin (Directorio actual /home/usuario1/misbin). w# cpio -iv /dev/fd0 (Para leer el contenido del disquete bin 1/3). w/dev/fd0 INTRO (Para leer el bin 2/3 cuando aparezca Found en of tape . . .). w /dev/fd0 INTRO (Para leer el bin 3/3 cuando aparezca Found en of tape . . .). 5.2. Traslado de un árbol de directorios completo usando cpio La herramienta cpio, cuando se utiliza con la opción -p, funciona en "modo de paso" como si fuese una tubería. En este modo la salida no es entregada a un archivo, como ocurre cuando se emplea la opción -o, sino que es enviada a un directorio especificado como argumento. GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 16 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ Si además se le añade la opción -d, creará los directorios cuando sea necesario. Si nos situamos sobre el directorio original y tecleamos el comando find para que busque a partir del directorio actual . (un punto) sin especificar ninguna opción, find mostrará una lista recursiva con la ruta completa de todos los archivos que pertenecen a dicho directorio. Esta lista, mediante una tuberia, puede encauzarse hacia la entrada de cpio. Si nos situamos en el directorio raíz, aparecerán todos los archivos de la partición en que tenemos instalado el sistema operativo. Puede comprobarse haciendo lo siguiente: # cd / # find . Control+c # find . | wc -l (Cambio al directorio raíz). (Para listar todos los archivos, con su ruta absoluta). (Para detener el listado). (Una forma muy sencilla de contarlos). La salida de cpio puede enviarse a un directorio cualquiera o bien a un directorio especial. Si creamos este directorio especial con el nombre /destino, hijo del raíz, y en él montamos una partición libre de un disco duro en la que se ha creado un sistema de archivos, y se lo damos como argumento a cpio para que deposite la salida en él, lo que realmente estamos haciendo es una copia "en directo" de toda la partición cuyos archivos listados constituyen la entrada de cpio. Está claro que la partición de destino puede ser de mayor o de menor tamaño que la original pues sólo es necesario que sea algo más grande que el espacio realmente ocupado en la original. El sistema de archivos también puede ser diferente y incluso con otro sistema operativo. Veremos alguna de estas posibilidades a continuación. Supongamos que deseamos tener dos sistemas linux iguales y nos decidimos por trasladar la distribución instalada en la partición /dev/hda6, con sistema de archivos reiserfs y que utiliza sólo 0.9 GB de los 2 GB asignados, a otra partición, /dev/hda2, de sólo 1.5 GB pero con sistema de archivos ext2. En /dev/hda2 tenemos actualmente instlado Windows-98 con FAT 32 ocupando 2 GB pero quremos deshacernos de él. Supondremos también que los dos linux deberán ser serán arrancables desde el lilo. El procedimiento a seguir también sirve para la ocasión en que necesitamos cambiar el disco duro por avería o para ampliar su capacidad. Deberemos utilizar un sistema linux de rescate bien sea un minilinux, desde un disquete, o desde una partición de disco duro que no será nunca /dev/hda6 (pues no debemos trabajar "en caliente" al mover toda la partición). El procedimiento a seguir será el siguiente: w# fdisk /dev/hda (Borrar /dev/hda2 de 2 GB y crearla de 1500 MB con id 83). w# reboot (Sólo si se utiliza como rescate el disco /dev/hda, reiniciar). w# mkfs -t ext2 /dev/hda2 (Crear el sistema de archivos en /dev/hda2). w# mkdir /destino (Preparar un directorio para la salida). w# mount -t ext2 /dev/hda2 /destino (Montar la partición en donde copiar). w# mkdir /origen (Preparar un directorio para la entrada). w# mount -t reiserfs /dev/hda6 /origen (Montar la partición desde donde copiar). w# df (Comprobar que se han montado ambas particiones). GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 17 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ w# w# cd /origen (Situarnos en la raíz de la partición que vamos a copiar). find . | cpio -mpdBv /destino (Realizar la copia de partición a partición). (Esperar entre 10 y 20 minutos aproximadamente). Si nos detenemos aquí, en este punto, habremos realizado tan sólo una copia de seguridad de todo nuestro sistema operativo Linux. Si además queremos hacer arrancable esta copia usando el lilo.conf de /dev/hda6, e instalarlo en el MBR de /dev/hda, proseguiremos efectuando lo restante: w# chroot /destino (Cambiamos la raíz del sistema operativo actual por /dev/hda2). w# vi /etc/fstab (Reemplazar /dev/hda6 por /dev/hda2 y reiserfs por ext2). w# vi /etc/lilo.conf (Suprimir las líneas delay, prompt y timeout. Además en w las líneas boot=/dev/hda6 y root=/dev/hda6, cambiar hda6 por hda2 ). w# /sbin/lilo (Grabar el lilo.conf de /dev/hda2 en el primer sector de /dev/hda2). w# exit (Abandonar el sistema de archivos raíz en /dev/hda2). w# chroot /origen (Cambiar el sistema de archivos raíz a /dev/hda6). w# vi /etc/lilo.conf (Añadir una sección local other=/dev/hda2 y label=linux2). w# /sbin/lilo (Grabar el nuevo lilo.conf de /dev/hda6 en el MBR de /dev/hda). w# umount /origen /destino (Desmontar las particiones /dev/hda6 y /dev/hda2). w# reboot (Reiniciar y cuando aparezca el menú del lilo, seleccionar linux2). El procedimiento anterior es muy sencillo y con la práctica llega a dominarse, incluso con cierta rapidez, dado que los comandos empleados son casi siempre los mismos. Además este ejemplo recoge la situación más variada que se puede presentar: cambiar el sistema operativo, cambiar el tamaño en la partición, cambiar su sistema de archivos y hacerla arrancable. Lo más probable es que, en la mayoría de situaciones prácticas, sólo se dará uno o dos de estos cambios. Sin embargo no deja de constituir una tarea importante de administración del sistema que siempre conlleva cierto riesgo siendo el más frecuente CONFUNDIR LA PARTICION DE DESTINO. 6. Arranque y restauración de varios SS OO desde Linux. En muchos de los apartados de unidades anteriores se ha aludido, de forma reiterada, a las capacidades que, generosamente, ofrece Linux a otros sistemas operativos incluídos los de software propietario. Entre las funciones más importantes podemos citar la posibilidad de particionar el disco duro, gestionar el arranque de los sistemas operativos instalados en ellas, realizar la copia de seguridad en directo, o a través de un paquete, crear la imagen de una partición o de un disco entero, comprimir copias o imágenes, volcar copias de seguridad en directo o mediante desempaquetado, borrar una partición del disco o el disco duro completo, etc. A título de resumen y como ejemplo práctico se describe, a continuación, el proceso a seguir para realizar una instalación de cuatro sistemas operativos: MSDOS622, Windows-98, Linux Debian 3.0 y un Linux Debian 3.0 de rescate; todos ellos arrancables mediante lilo. También GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 18 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ se expone cómo crear una copia de seguridad del sistema que hay en cada partición, cómo guardarlo en el mismo disco duro (y en un disco CD) y caso de necesidad cómo se restaura de nuevo. Desglosaremos todo el proceso en las fases siguientes. 6.1. Limpieza del disco duro Antes de comenzar el particionado del disco, trabajo previo a la instalación de cualquier sistema operativo, debemos efectuar una "limpieza" completa del mismo. Esta limpieza consiste en borrar con bits "0" todos los bytes, de todos los sectores, del disco. Es importante recordar que el formato de DOS-Windows, al igual que el de Linux, simplemente borra la zona del área de sistema mientras que los demás sectores mantienen los bytes con el valor que tenían antes del formato y que no tienen porqué ser 0000 0000. El objetivo que se persigue al limpiar el disco es doble: 1º. Obtener imágenes comprimidas de menor tamaño. En efecto, al copiar el disco, o una de sus particiones, para obtener una imagen, cuando se ha terminado de instalar en ella un sistema operativo, todos los bytes no utilizados seguirán siendo iguales a 0 y por tanto apenas ocuparán espacio al realizar su compresión. El tiempo empleado en comprimir, también, será menor. 2º. Eliminar cualquier vestigio de información residual, o basura innecesaria, tal vez virus, que potencialmente suponen un peligro. Si decidimos desprendernos de un disco porque se ha quedado falto de capacidad, también conviene "limpiarlo" porque constituye un buen sistema para que sus datos no lleguen a manos de terceros, cosa que no debe perder de vista cualquier organización que invierte cierto tiempo en triturar la información impresa en papel cuando ya no la necesita. Hay empresas que "viven" de rescatar información de discos "supuestamente inservibles". Para borrar un disco duro entero, por ejemplo /dev/hda de 6 GB, podemos iniciar un sistema linux de rescate desde un disquete, o desde otro disco duro, por ejemplo /dev/hdb. Arrancamos el fdisk y creamos una partición única, por ejemplo /dev/hda1, que comprenda todos los cilindros del disco. Tomamos nota del número de bloques que ocupa, por ejemplo 6248000, y utilizaremos el comando: # time -p dd if=/dev/zero of=/dev/hda bs=1k count=6248000 La opción time -p puede omitirse cuando no queremos saber cuánto tiempo ha invertido dd en borrar el disco. La partición /dev/hda1 se crea con el único objetivo de conocer el tamaño del disco en bloques para poder utilizar dd. Esta partición se eliminará al borrar el disco. Si se plantea la necesidad de borrar sólo una partición, sin alterar el contenido de las demás, debemos pasarle a dd el nombre de la partición y su tamaño en cilindros, valores que se pueden averiguar tecleando # fdisk -l. Supongamos que es /dev/hda2 y que tiene 2.048.287 bloques GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 19 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ de 1k (2 GB). Para limpiar esta partición emplearemos el comando siguiente: # dd if=/dev/zero of=/dev/hda2 bs=1k count=2048287 Es evidente la importancia que tiene NO EQUIVOCARSE, ni en el nombre, ni en el tamaño. Como siempre se puede anteponer el cronómetro time -p para conocer el tiempo empleado. NOTA: Cuando escribimos /dev/hda, dd, toma en cuenta todo el disco a partir del sector 1, el MBR. Si escribimos /dev/hda1, dd, se centra en dicha partición a partir de su primer sector, generalmente el 64. En el primer caso se puede barrer todo el disco y en el segundo sólo la partición primaria 1. La extensión de la zona barrida depende del tamaño de bs y del valor de count. 6.2. Creación de particiones Después de borrar todo el disco duro podemos crear las particiones necesarias para nuestro propósito. Es muy importante no particionar todo el espacio disponible en disco y no agotar las cuatro particiones primarias, es decir, debemos reservar alguna sin crear, por ejemplo la número 4. A título de ejemplo describiremos el particionado de un disco de 6 GB de un ordenador Comelta, de los empleados en el aula de informática, que incluye un disco duro de 6 GB y una RAM de 128 MB. /dev/hda1 /dev/hda2* /dev/hda3 /dev/hda4 cil 1a7 56.196 bloques cil 8 a 262 2.048.287 bloques cil 263 a 776 4.128.705 bloques LIBRE Id 6 FAT16 50 MB MSDOS622 Id c FAT 32 2.000 MB Windows-98 (activa) Id f Extendida LBA /dev/hda5 /dev/hda6 /dev/hda7 /dev/hda8 cil 263 a 295 265.041 bloques cil 296 a 550 2.048.256 bloques cil 551 a 769 1.759.086 bloques cil 770 a 776 56.196 bloques Id 82 swap 256 MB Todos los Linux Id 83 reiserfs 2.000 MB Linux Debian 3.0 Id 83 ext2 1.700 MB Rescate e imágenes Id c FAT 32 50 MB Datos La capacidad de sólo 6 GB en este disco duro resulta algo ajustada para las prestaciones que, en este caso, se le exigen. Un disco de 20 GB sería el de tamaño más adecuado en cuyo caso se ampliaría la partición de datos a unos 10 GB y se dejaría sin particionar el resto para una posible lógica /dev/hda9 o primaria /dev/hda4. La partición swap tiene un tamaño de 256 MB, el doble de la RAM, 128 MB, instalada en el ordenador. Observar también que para los dos linux, instalados en /dev/hda6 y /dev/hda7, se utiliza la misma partición de intercambio, ya que ambos nunca se arrancarán al mismo tiempo y por tanto la pueden compartir. GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 20 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ 6.3. Instalación de los sistemas MSDOS-Windows Después de particionar el disco debemos instalar los sistemas operativos MSDOS622 y Windows-98, si es éste nuestro deseo, pero realizando las operaciones en el orden siguiente: wUtilizando un disquete de Windows-98, que contenga el FORMAT.COM, arrancamos por disquetera. wCon el FDISK.EXE comprobamos las particiones existentes en el disco. Deberán aparecer con las letras C: --> /dev/hda2, D: --> /dev/hda8 y E: --> /dev/hda1. Windows-98 "no vera" más que las particiones anteriores ya que el resto serán catalogadas como NON-DOS. wCon el FORMAT.COM, daremos formato a C: (Label --> WIN98), D: (Label --> DATOS) y E: (Label --> DOS622). El format "mira" la partición y según el Id que ésta tiene, 6 o c, crea un sistema de archivos con el tipo de FAT correspondiente, FAT 16 o FAT 32, respectivamente. wEl primer sistema operativo a instalar será MSDOS622. El DOS sólo verá la partición /dev/hda1 (FAT 16) y le asignará la letra C: en donde podremos instalarlo. Podemos activar esta partición (desactivando /dev/hda2) y comprobar que arranca a través del gestor del MBR. wEl segundo sistema operativo a instalar será Windows-98. Deberemos asegurarnos de que la única partición primaria que está activa es la /dev/hda2 para que la tome como C:. Mediante un sistema de rescate Linux podemos activar y desactivar cualquier partición del disco. Al terminar la instalación, el MBR quedará sobreescrito y en el arranque, por disco duro, será Windows-98 el sistema que se cargará, como si el MSDOS622 ya no existiese. Sin embargo los datos que hay en /dev/hda1 y en /dev/hda8 serán accesibles desde Windows y aparecerán con las letras E: y D: respectivamente. Más adelante, veremos cómo arrancar MSDOS con el LILO. 6.4. Instalación de los sistemas Linux El primer sistema Linux, la distribución Debian 3.0, lo instalamos en la partición /dev/hda6 utilizando un sistema de archivos reiserfs y como intercambio la partición /dev/hda5. El resto de particiones, de momento, las ignoramos. Cuando pregunte por el lugar donde instalar el gestor de arranque debemos responder con la opción el MBR de /hda. Proseguimos con la instalación y configuración de todas las aplicaciones que consideremos de interés. Cuando hayamos terminado, debemos hacer dos cosas más: GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 21 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ wLa primera es editar el /etc/lilo.conf, suprimir la temporización y establecer por defecto el arranque del Linux de la partición /dev/hda6. Cambiaremos la línea boot=/dev/hda por boot=/dev/hda6. Eliminamos todas las demás secciones locales, pues no nos interesa que, este lilo, arranque otros sistemas operativos. No olvidar ejecutar el /sbin/lilo para grabar el lilo en el primer sector de /dev/hda6. En este momento, tenemos dos lilos instalados: uno en el MBR (primer sector del disco) y otro en el boot de /dev/hda6 (primer sector de la partición hda6). wLa segunda es opcional pero muy conveniente. Se trata de montar la partición de datos /dev/hda8 con sistema de archivos FAT 32 para que la podamos compartir tanto desde Windows, como desde Linux. Podemos crear un directorio llamado /datos con el comndo # mkdir /datos. Para que se monte de modo automático, durante el arranque, debemos editar el archivo /etc/fstab y añadir una línea como la siguiente: /dev/hda8 /datos vfat defaults 0 0 Disponer de un segundo sistema Linux, en el mismo ordenador, que nos sirva como sistema de rescate, necesita muy pocos recursos y a cambio nos ofrece muchas ventajas. En nuestra instalación ejemplo, se ha destinado la partición /dev/hda7 para alojarlo. Una selección de sólo los paquetes del sistema de base de Debian 3.0 requiere un espacio en disco de unos 100 MB. Sin embargo se han asignado 1800 MB con el fin de guardar también, de forma permanente o temporal, las copias de seguridad, imágenes comprimidas y los paquetes .tar.gz, correspondientes a todos los sistemas operativos instalados en nuestro ordenador. Desde el sistema de rescate instalado en el disco duro se crean, y se restauran, las copias de seguridad de forma más cómoda y segura. Además este segundo Linux puede utilizar la misma memoria de intercambio /dev/hda5, sin coste adicional, porque cuando funciona el Linux de /dev/hda7 no lo hace el de /dev/hda6, y vicerversa. La instalación del sistema de rescate puede hacerse según sigue: wArrancando con el CD binario número 1 de Debian iniciaremos un proceso de instalación en el cual seleccionaremos como partición raíz la /dev/hda7 y como intercambio la /dev/hda5. Se recomienda utilizar sistema de archivos tipo ext2 en /dev/hda7, por ser más estándar. wInstalaremos sólo el sistema de base. Haremos el sistema arrancable y le diremos que el gestor de arranque se instale en el MBR de /dev/hda. Este nuevo lilo sobreescribirá al anterior, pero esto es preferible para mayor comodidad seguridad. wReiniciamos el ordenador y comprobamos si están presentes, en el menú de arranque del lilo, los cuatro sistemas operativos: MSDOS, Windows, Debian y Rescate. Si falta alguno, editar el /etc/lilo.conf, realizar la corrección oportuna y volver a compilar con /sbin/lilo. Es conveniente añadir en la sección local del Rescate una GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 22 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ clave de acceso, que aparecerá en el menú de lilo, de modo que sólo puedan arrancar el sistema de mantenimiento las personas autorizadas. wCon el fin de hacer el sistema más seguro, después de instalar el sistema de rescate, debe deshabilitarse, en la configuración de arranque del ordenador, la posibilidad de arrancar por disquete o por CD dejando como opción sólo el disco duro primario maestro. Además introduciremos en el SETUP otra clave de acceso para impedir así modificar el orden anteriormente establecido para los dispositivos de arranque. Está claro que el permitir arrancar con un disquete de Linux es abrir las puertas del disco duro del ordenador de par en par. 6.5. Creación de imágenes y copias de seguridad Una vez que tenemos funcionando el sistema de rescate, lo arrancamos e iniciamos una sesión como root con su clave de acceso, que no debería coincidir con la del menú del lilo, ni con la del SETUP, aunque todo esto depende del nivel de seguridad que deseamos implementar en el ordenador en cuestión. Es evidente también que el sistema de rescate no necesita ninguna cuenta de usuario. Resulta cómodo, y seguro a la vez, crear dos subdirectorios del raíz que llamaremos /origen y /destino, más un tercero para guardar las imágenes en /root/images. # mkdir /origen /destino /root/images (Se crean los tres a la vez). Para crear una imagen de la partición /dev/hda2 en donde está instalado Windows-98 es recomendable borrar antes todo el espacio libre en disco creando un archivo con "nulos" obtenidos a partir de /dev/zero. Esto limpiará los sectores que se han "ensuciado" durante la instalación de Windows y nos reducirá un poco más el tamaño de la imagen resultante. Debemos hacer lo siguiente. # mount -t vfat /dev/hda2 /destino (Monta la partición de Windows). # df (Anotar los bloques libres en /dev/hda2. Supongamos que son 1.248.000). # dd if=/dev/zero of=/destino/zeros bs=1k count=1248000 (Crea el archivo). # rm /destino/zeros (Una vez el disco está limpio, borrar el archivo). # umount /destino (Desmontar /dev/hda2). # dd if=/dev/hda2 bs=1k count=2048287 | gzip -9 > /root/images/hda2win.gz Deberá comprobarse, sobre todo en la última línea de las órdenes anteriores, que el nombre de la partición, el tamaño en bloques y el archivo de destino son todos correctos. Una vez obtenida la imagen, puede copiarse en la partición de datos y enviarla por la red a otro ordenador para proceder a su grabación, como archivo, en sistema iso 9660. Esto en el caso de que el ordenador en cuestión no disponga de dispositivo grabador de discos CD. GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 23 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ Para la obtención de la imagen de la partición de MSDOS puede teclearse directamente la siguiente línea de comandos: # dd if=/dev/hda1 bs=1k count=56196 | gzip -9 > /root/images/hda1dos.gz La creación de una imagen de la partición del Linux de /dev/hda6 se crea del mismo modo. Pondremos, pues, un ejemplo de otra posibilidad como es crear un paquete con tar. # mount -t reiserfs /dev/hda6 /origen (Montar la partición). # cd / (Cambiar del directorio actual al raíz). # tar -cpzvf /root/images/hda6deb.tar.gz /origen (Creación del paquete). # umount /origen (Desmontar la partición). Podemos obtener también una copia de la partición /dev/hda7 (la de rescate) arrancando el sistema instalado en /dev/hda6 y haciéndola desde allí. En este caso conviene crearla antes de guardar ninguna imagen en /root/images. Cuando creamos un paquete con tar no es necesario borrar el espacio libre en disco porque sólo se copian los archivos, no los sectores. Incluso, arrancando por disquete, se puede crear una imagen de la partición /dev/hda5 (swap) utilizando dd. El proceso a seguir, una vez hemos arrancado, es: # mkdir /destino (Crear el subdirectorio en RAM). # mount -t ext2 /dev/hda7 /destino (Para guardarlo en " linux rescate"). # dd if=/dev/hda5 bs=1k count=265041 | gzip -9 > /destino/root/images/hda5swp.gz # umount /destino (Desmontar la partición). 6.6. Volcado de imágenes y copias de seguridad Para restaurar el sistema operativo de una partición, iniciaremos el linux de rescate y utilizaremos las imágenes en él guardadas. Pongamos, como ejemplo, que necesitamos volcar una imagen creada con dd y gzip. Haremos lo siguiente: # gzip -cd /root/images/hda1dos.gz > /dev/hda1 # gzip -cd /root/images/hda2win.gz > /dev/hda2 (Para MSDOS). (Para Windows). Si se trata de restaurar un paquete .tar.gz, por ejemplo el que contiene Debian: # mount -t reiserfs /dev/hda6 /origen (Monta en /origen, pues así se empaquetó). # rm -rf /origen/* (Borrar todos los archivos antiguos). # cd / (Situarnos en directorio raíz como cuando se creó). GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 24 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ # tar -xpzvf /root/hda6deb.tar.gz # umount /origen (Volcará todos los archivos sobre /origen). (Desmontar la partición). Finalmente, otra situación que se puede plantear es que no dispongamos de las copias de seguridad en el disco duro. En este caso debemos recurrir a las guardadas en el CD. Supondremos también que no hay sistema linux de rescate en el disco duro y nos vemos obligados a utilizar un disquete. Veremos los pasos a seguir para volcar una imagen desde el CD y un linux en disco-RAM. # mkdir /origen (Crear un direcorio para montar el CD-ROM). # mount -t iso9660 / dev/hdc / origen (Montar el CD. Se supone IDE 2º-esclavo). # cd /origen ("Situarnos" sobre el CD). # ls -l (Un listado largo para ver los archivos que hay en el CD). # gzip -cd hda2win.gz > /dev/hda2 (Para restaurar la imagen de Windows-98). # umount /origen (Desmontar el CD). Para restaurar un paquete .tar.gz guardado en un disco CD y utilizando un arranque por disquete, el proceso a seguir es: # mkdir /destino (Un directorio para montar el CD). # mount -t iso9660 /dev/hdc /destino (Se supone que se monta el 2º IDE esclavo). # mkdir /origen (Un directorio para montar /dev/hda1). # mount -t msdos /dev/hda1 /origen (Montamos la partición de MSODS). # rm -rf /origen/* (Borrar todos los archivos antiguos). # cd / (Cambiar al directorio principal). # ls -l /destino (Listar el contenido del CD par ver nombres de archivos). # tar -xpzvf /destino/hda1dos.tar.gz (Desempaquetar y volcar archivos). # umount /destino /origen (Desmontar la partición). NOTA. La instalación tipo que se descrito anteriormente está actualmente funcionando en los ordenadores Comelta del aula de informática del IES 7 POLITECNICO de Castellón y forma parte del proyecto Desarrollo y posibilidades de aplicación en el centro educativo del sistema operativo Linux. Este proyecto está acogido a la convocatoria según la Orden del 25 de abril de 2002 (DOGV de 17-02-02) de la Consellería de Cultura y Educación. Fue presentado por este Instituto y posteriormente aprobado por resolución del 30 de noviembre de 2002 de la Dirección General de Ordenación e Innovación Educativa y Política Lingüística (DOGV de 15-10-2002). El desarrollo de este proyecto se ha llevado a cabo a lo largo del curso escolar 2002/2003. GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 25 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ --- o --- 7. Indice de contenidos 1. Introducción 2. El gestor de arranque de Linux 2.1. ¿Qué sistema operativo se arranca? 2.2. ¿Qué es el LILO? 2.3. ¿Cómo modificar el lilo.conf ? 2.4. La compilación y otras opciones de /sbin/lilo 2.5. ¿Cómo rescatar el sistema si ha perdido el lilo? 3. Utilidades para comprimir archivos: gzip y bzip2 4. La utilidad tar. Creación de paquetes .tar 4.1. Empaquetado y extracción de archivos 4.2. Creación de paquetes con archivos y directorios 4.3. ¿Cómo modificar el tamaño de una partición con tar 4.4. ¿Cómo instalar un paquete tar? Caso del Open Office 5. La utilidad cpio 5.1. Copia en disquete usando cpio 5.2. Traslado de un árbol de directorios completo usando cpio GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 26 -- INICIACIÓN AL USO Y ADMINISTRACIÓN DEL S O LINUX UNIDAD 8. ADMINISTRACION Y SEGURIDAD ________________________________________________________________________________________________________________________ _ 6. Arranque y restauración de varios SS OO desde Linux. 6.1. Limpieza del disco duro 6.2. Creación de particiones 6.3. Instalación de los sistemas MSDOS-Windows 6.4. Instalación de los sistemas Linux 6.5. Creación de imágenes y copias de seguridad 6.6. Volcado de imágenes y copias de seguridad 7. Indice de contenidos GVA CEFIRE ESPECÍFICO DE FP CHESTE V. Ros Brandon - M. Blanes Monllor -- 27 --