GNU / Linux Introducción a GNU / Linux 1 Un poco de historia l l 1991: Linus Torvalds creó Linux basándose en Minix, una pequeña implementación de UNIX para PC, escrito totalmente en C. Linus anunció la primera versión oficial de Linux, la 0.02 el 5 de Octubre de 1991 – l Constaba básicamente del Kernel, el shell bash y el compilador gcc. En verdad Linux es el Kernel o núcleo, y al resto de aplicaciones que corren sobre ese kernel (formando usualmente una distribución) debería llamársele GNU / Linux. 2 1 Qué es GNU / Linux l Richard Stallman: Software libre (free) – l l “...es como si te vendieran un coche con el capó sellado para que no pudieses ver el motor” Proyecto GNU realizado por la FSF (Free Software Foundation Promovieron la licencia GPL (General Public Licence), por la que los usuarios recibirían siempre el código fuente (Open Source) y el derecho a modificarlo (haciendo públicas las modificaciones), realizar las copias que deseen y redistribuirlo (bajo la licencia GPL) 3 Distribuciones de GNU / Linux l Debian: versión Sarge, Woody, Potato y Buzz. l Red Hat (Fedora): versión 9.0 l Mandrake: versión 9.2 l S.U.S.E. l Slackware l EsWare l Metadistros 4 2 GNU / Linux: cara y cruz l La cara: – Multitarea total – – Multiusuario Estabilidad – Código fuente abierto – Multitud de aplicaciones GNU – Inmune a la mayoría de virus (normalmente creados para Windows) – Gratis o de bajo coste. 5 GNU / Linux: cara y cruz l La cruz: – Entorno árido (pero poco a poco va mejorando) – Soporte de hardware: los fabricantes de hd no suelen crear drivers para Linux, y tampoco facilitan las especificaciones de dicho hd para crearlos. – Faltan aplicaciones necesarias (que sí están para Windows) – Se necesitan ciertos conocimientos para administrar profundamente el sistema y no tener miedo a experimentar 6 3 Debian l l Debian bien en tres versiones o sabores: – Stable o estable (Debian 3.1r1 Sarge, antes Woody 3.0r0 y Potato): conveniente para un servidor – Testing o de prueba (Sarge): conveniente para una estación de trabajo. Sería como una versión beta. – Unstable o inestable (Sid): versión en desarrollo (versión alfa) El paso de inestable a prueba se realiza congelando la versión cuando alcanza un cierto grado de madurez. 7 Debian l l Los paquetes de Debian se dividen en : – Versión/main: son los paquetes que están hechos de acuerdo a las directivas del software libre de Debian (DFSG) – Versión/contrib: paquetes cuya distrinbución está restringida (shareware) – Versión/non-free (paquetes de libre distribución pero que dependen de otros que no lo son Todos se encuentran en www.debian.org 8 4 Debian l Los paquetes de Debian a su vez pueden ser: – Paquetes binarios, que contienen ejecutables, archivos de configuración, páginas man/info, información sobre derechos de autor,... Tienen extensión .deb (.rpm) – Paquetes fuente, que contiene el código fuente original. Tienen extensión tar.gz 9 GNU / Linux Ubuntu 10 5 Ubuntu l l Live CD e instalable El siguiente software están disponibles en la version Breezy basada en Debian (http://www.debian.org/): – Linux-Kernel 2.6.x – Gnome como entorno gráfico estandard con Nautilus. – X Multimedia System (xmms) como decodificador MP3, Xine para MPEG-video y divX. 11 Ubuntu – Programas de conexión a Internet teléfonico y ADSL – Firefox y Mozilla Thunderbird – Programa de manejo Gráfico GNU (GIMP) – Utilidades para la recuperación de datos y de sistema, incluso de otros Sistemas. – Herramientas de análisis de seguridad para administradores de redes. – OpenOffice(TM), la versión libre GPL de la Suite StarOffice(TM) de SUN. 12 6 Ubuntu – Varios lenguajes de programación, herramientas de desarrollo y librerías para desarrolladores. – En total más de programas instalados 900 con unos 2000 programas, utilidades, y juegos. 13 Ubuntu l ¿Cuáles son los requirimientos mínimos del sistema? – Intel-compatible CPU (i486 o superior), – 16 MB de RAM para modo texto, y 128 MB para modo gráfico con Gnome – unidad de CD-ROM , o una unidad de disco y un CDROM (IDE/ATAPI o SCSI) normal, – tarjeta SVGA-compatible, ratones Serie o PS/2 o IMPS/2-compatible o USB. – 14 7 GNU / Linux Instalación 15 Recomendaciones para la instalación l Tipos de particiones: primarias, extendida y lógicas. – Particiones de arranque y del sistema l Particiones en Linux: puntos de montaje l Particiones separadas del disco duro – – – / (/+/boot/+/bin+/sbin/+/tmp+/var). En servidores separar /var (proxy-squid) /home (depende de los usuarios del sistema) +100 Mb /usr (2 Gb con X): depende de las aplicaciones instaladas. 16 8 Recomendaciones para la instalación l l Partición swap: – Mínimo 64 MB (128 MB) con KDE/GNOME – Regla: 2 veces la RAM (pero no más de 256 MB) Gestor de arranque LILO y compatibilidad con Windows – MBR – Primer sector de la partición del sistema – Disquete 17 Postinstalación l l l l l Actualización del sistema (apt-get update) Servicios o demonios que arrancan al iniciar el sistema: (ver init.d y rc5.d) Montaje de las particiones Windows y Linux a las que quiero acceder (ver archivo fstab) Instalación de paquetes opcionales: Webmin (ver capítulo de instalación de paquetes) Configuración e instalación de algunos módulos necesarios, por ejemplo soporte NTFS (ver capítulo del Kernel) 18 9 GNU / Linux Lo que todo linuxero debe saber 19 Acciones básicas l Arrancar el sistema l Hacer login l – En el shell (startX) – Desde las X: xdm, gdm Cambiar entre consolas: [Alt-F1] o [Ctrl-Alt-F1] – – Consolas o terminales: tty1 (teletypes) También [Alt - ->] l Hacer logout: [Ctrl-Alt-Supr], logout. l Apagar el sistema: Shutdown, init0, halt. 20 10 Acciones básicas l Ejecutar un comando: – $ hostname – $ hostname -opción $ hostname --help (opciones estilo GNU) – l Cambiar la password: $ passwd 21 Acciones básicas l ¿Quién hay en el sistema? – $ who: muestra quién hay en el sistema – $ whoami: muestra quién soy yo en el sistema (username) – $ w: muestra quién hay en el sistema y qué estan haciendo – $ last: muestra los últimos login de los usuarios (last usuario, para un usuario) 22 11 Buscar ayuda l Páginas man: – l $ man w Documentación en Linux – En /usr/docs o en /usr/share/doc – Howto´s y mini Howto´s – Proyecto LTDP – Proyecto Lucas 23 Buscar ayuda l l La orden apropos: Busca la herramienta o programa que podemos usar para realizar una cierta acción – $ apropos sort, apropos audio, apropos console – Otra forma es usar las páginas man. Com -k busca en las cabeceras de las páginas de ayuda: man -k sort ¿Para qué sirve un programa determinado? – $ whatis who – Opción help: $ whoami –help l (probar también -h o -?) 24 12 GNU / Linux El shell I (acciones básicas) 25 El shell l Interfaz de comandos l Tipos de shell: bash, csh, ksh, sh. l Prompt: $(usuario) , #(root) l Dejar que el shell complete la orden: Tab – l $ ls /mn [Tab] Histórico de órdenes: ? – Búsqueda en el histórico de órdenes: [Ctrl+r] y la orden 26 13 Teclas especiales en el terminal l Tab: completa y sugiere un comando incompleto l Cursores: navegar por el historial l Shift+Av. página o Re. Página, muestra pantallas en el terminal que no se ven l Ctrl-l: limpia la pantalla l Ctrl-r: Busca comandos en el historial 27 GNU / Linux Sistemas de ficheros I Ordenes básicas de manipulación de ficheros 28 14 Sistema de ficheros l l l Estructura jerárquica del sistema de ficheros en UNIX Linux trata todo (directorios, dispositivos, puertos,...) como ficheros Tipos de ficheros – Ficheros – – Directorios Enlaces (links) – Ficheros de bloque 29 Sistema de ficheros l Descripción del árbol de directorios – /: raíz – /home: homedirs de los usuarios – /root: homedir de root – – /mnt: montaje de las particiones /usr: aplicaciones instaladas – /bin: ficheros ejecutables (path) – /sbin: ficheros ejecutables de administación (path) 30 15 Sistema de ficheros l Descripción del árbol de directorios – /etc: ficheros de configuración – /dev: dispositivos – /boot: arranque del sistema – /proc: registro de configuración /tmp: ficheros temporales – – /var: aloja los registros (logs) del sistema y algunos cachés (proxu squid) 31 Comandos sobre el árbol de directorios l cd (Change directory) – Rutas relativas y absolutas: tree – pwd y directorio home (sólo cd) l ls (-a, -l, -x, --color) l mkdir (make directory) – l -p crea directorios padre si no existen Para crear un archivo debo usar un editor como Vi o Emacs 32 16 Comandos sobre el árbol de directorios l rm (-i, -f, -r) y rmdir l cp (-r para copiar directorio y todo su contenido) l mv -rf (también renombra) l Uso de comodines: * , ? [i,o] 33 GNU/LINUX Edición de archivos con Vi 34 17 Edición con Vi l l Dos modos: – Modo orden: Esc – Modo edición: a(anexar) / i (insertar) Modo orden: algunas órdenes importantes. – x: borrar un carácter – dd: borrar una línea – / cadena: buscar una cadena. n para buscar siguiente y N para buscar anterior – Desplazamiento: cursores, 0 para ir al principio de línea y $ para ir al final. 35 Edición con Vi l Seleccionar: pulso v y me despalzo hasta el final de la selección (?+cursores o ?+$) l Copiar: y l Cortar=eliminar (d,dd o x) l Pegar: p 36 18 Edición con Vi l l Trabajar con varios ficheros (buffers) – $ vi file1 file2 – Cambio de uno a otro, estando en modo orden escribo :bn, donde n es el número de bufer (empezando a numerarse por 1) – Nota: si cambio algo en un archivo debo guardar los cambios (:w) para pasar al otro bufer. En cualquier caso consultar man vi para otras acciones. 37 GNU / Linux Sistemas de ficheros II: acciones avanzadas 38 19 Enlaces a ficheros l l Hard links: – Mismo sistema de ficheros y mismo inodo – Si borro el fichero borro el enlace Links simbólicos: – Pueden estar en diferentes máquinas incluso – Diferente inodo – Si borro el enlace no borro el fichero l Orden ln (-s) l La orden find (-exec) 39 Compartiendo ficheros l l Grupos de usuarios: un usuario pertenece al menos a un grupo (el login group) – $ groups grupo – $ groups usuario Cuando creo un fichero por defecto yo soy el propietario y pertenece a su vez a mi login group l Determinar el propietario de un fichero: $ ls -l l Para cambiar el propietario o el grupo – $ chown usuario fichero – $ chgroup grupo fichero 40 20 Permisos sobre ficheros l Ver los permisos: $ ls -l l Cambiar permisos: $ chmod l – Letras: r,w,x / u, g, o, a – Numéricos: 777 Hacer un fichero privado (eliminando el grupo y otros: $ chmod go= fichero l Hacer un fichero ejecutable: +x l Permisos por defecto: $ umask 022 l Bit s y bit g. 41 Encontrar un fichero l Para encontrar unfichero que tenga en su nomnre la palabra audio: – $ locate audio o $ locate *audio – $ locate /. encuentra todos los fichero ocultos del sistema – NOTA: no distingue mayúsculas 42 21 Encontrar un fichero l La orden find – $ find /home -name Desktop – $ find /home -iname desktop (no distingue mayúsculas) – $ find /home -name 'D*' – $ find /home -name '*.tex' 43 Encontrar un fichero l Otros ejemplos: – $ find ~ -size +100k (ficheros mayores de 100k) – $ find ~ -empty (ficheros vacíos) # find ~ -user root (ficheros propiedad de root) – l Ejecutar comandos con los ficheros encontrados – – l $ find ~ -empty -exec rm -f {} \; -ok es igual pero pide confirmación Redireccionar errores: – $ find / -name 'et*' >~/file 2>/dev/null 44 22 Encontrar un fichero l Cómo saber el número de ficheros en un directorio: – l $ ls -a |wc -l Cómo saber el número de ficheros en un árbol: – Nº de ficheros y directorios:$ find /usr/share | wc -l – Nº de ficheros: $ find /usr/share \! -type d | wc -l (\! type d para excluir la lista de directorios y no contarlos) – Nº de directorios: $ find /usr/share \! -type f | wc -l (\! -type f para excluir la lista de ficheros y no contarlos) 45 Encontrar un fichero l l Localizar una orden: – $ which cd – Consejo: mirar siempre en /bin, /sbin, /usr/bin, /usr/sbin,... en general en el PATH Ver el tipo de un fichero – $ type fichero – $ file fichero 46 23 Filtros l La orden grep l La orden sort l La orden cut 47 Ver el contenido de un fichero l cat – Puede crear ficheros: cat > file – Puede agregar algo a un fichero sin abrirlo:cat >>file.existe l more l less l echo 48 24 Tratamiento de ficheros l La orden split: fracciona un archivo en partes. – $ split b2m prueba.bmp prueba.bmp. (prueba de 3M) l – Crea prueba.bmp.aa (2M) prueba.bmp.ab (1M) Para juntarlos: l l cat prueba.bmp.* > prueba.bmp Rm prueba.bmp.* 49 Comparar ficheros l La orden cmp: compara dos ficheros y ve si son iguales – l $ cmp file1 file2 La orden diff y sdiff también comparan pero dan más información – $ sdiff file1 file2 | less 50 25 Compresión de ficheros l l La orden gzip: – $ gzip file1, y obtendremos file1.gz, borrando file1 – $ gzip -r directorio (comprime los archivos de dentro) – $ gunzip file1.gz para descomprimir (también extensión z, Z, zip,..) Otros compresores: – bzip2 – zip – Compress 51 Empaquetar en un fichero l La orden tar: – $ tar -cvf file.tar file – $ tar -czvf file.tar.gz file (tar+gzip) – $ tar -xzvf file.tar.gz (descomprime y desempaqueta) 52 26 Sistema de ficheros y particiones l l La orden mount / umount – $ mount -t fat /dev/hda1 /mnt/windows – $ umount /dev/cdrom El fichero /etc/fstab – Estructura – Opciones: l l l User Auto ro 53 Sistema de ficheros y particiones l La orden df: informa del tamaño de los sistemas de ficheros y su uso – l $ df -h (h, human readable) La orden du: muestra lo que ocupa cada fichero del directorio donde me encuentre – $ du -hm (megas) o -k(kb) – $ du -sm /usr/local (muestra un resumen, sólo la última línea, es decir, lo que ocupa todo el directorio). 54 27 Disquetes l Formatear un disquete – l $ mke2fs /dev/fd0 Formatear con formato fat: – $ umount /floppy; mkfs -t fat /dev/fd0 – $ mformat /dev/fd0 55 GNU / Linux El shell II (acciones avanzadas) 56 28 El shell l Ejecutar una lista de comandos – l $ clear ; ls Tuberías (pipes) – $ who | w -l – $ man | less 57 El shell l Redireccionamiento de entrada y de salida – l Redireccionar la entrada a un fichero – l $ ls / > ~/filedir Anexar la salida a un fichero existente – l $ apropos < Keywords, donde Keywords es un fichero con palabras clave (órdenes) Redireccionar la salida a un fichero – l Entradas y salidas estándar y otras entradas y salidas $ ls /etc >> ~/filedir Redireccionar errores: 2>/dev/null 58 29 El shell l Redireccionar los mensajes de error a un fichero – l $ ls / 2> ~file.error Redireccionar la salida de un comando y tomarlo como entrada de otro es al fin y al cabo una tubería 59 Histórico de órdenes l Para ver el histórico de órdenes: – $ history – $ history | grep apropos $ !3, ejecuta la 3ª orden de éste histórico – l Guardado en ~/.bash_history 60 30 Personalizar el shell l Cambiar el prompt del shell: – $ PS1=' tus deseos son órdenes: ', con comillas porque contiene espacios – '\w ' indica el directorio actual – '\u ' el usuario actual '\h ' el nombre el equipo – l $ echo $PS1 61 Personalizar el shell l l Crear alias – $ alias bye=”exit” – $ alias ap=”apropos shell bash” Variable PATH: – l $ echo $PATH Se guardan en: – ~/.bashrc (o /etc/bashrc) para todos los shell excepto el login shell – ~/.bash_profile para el login shell 62 31 Personalizar el shell l Si los quiero unificar poner esta línea en el ~/.bash_profile – l If [ -f ~/.bashrc ]; then . ~/.bashrc; fi El archivo /etc/profile: cuando hago login cargo todo lo que esté en este fichero. Es válido para cualquier usuario del sistema, mientras que .bash_profile es distinto para cada usuario. 63 Variables del shell l Puedo definir variables para cualquier shell que arranque (ejecutando bash). Para ello debo exportarla. – l $ export (vería todas las variables exportadas) Exportar variables: – $ BAR=bar; FOO=foo – – $ export BAR $ echo $BAR $FOO – $ bash; $ echo $BAR $FOO 64 32 Variables del shell l l l En teoría debería poner set FOO=foo (unset) Otra forma sería declararlas y exportarlas en el .bash_profile, y estarían dispuestas para un login posterior. Puedo crear a su vez alias de órdenes: – $ alias 'lh = ls -lh' – $ alias – $ unalias lh 65 GNU / Linux Administración de los recursos del sistema 66 33 Gestión de procesos l l Orden ps: – Información (-w): PID, terminal, estado del proceso (S en pausa, R en ejecución y Z zombie) – $ ps -w [-e , -a, -u] La orden top: Muestra valores actualizándose instantáneamente. 67 Gestión de trabajos l l Trabajos: listado de trabajos ejecutándose – $ jobs – A cada trabajo se le asigna un número n como identificador. Un trabajo (proceso) puede ejecutarse en modo foreground (primer plano) o backgroung (segundo plano) – Background: $ ps -a & 68 34 Gestión de trabajos l l l Suspender un trabajo: [Ctrl-z] Para pasar un trabajo de foreground a background (y viceversa): – Primero suspenderlo – Luego escribir $ bg %n (fg para foreground) Parar un trabajo foreground antes de que acabe: [Ctrl-c] – $ cat [enter] l l [Ctrl-c] Parar un trabajo backround antes de que acabe: – $ kill %n 69 GNU / Linux Administración de usuarios 70 35 passwd y group l La información de los usuarios se guarda en /etc/passwd. – l Cada línea de /etc/passwd contiene un nombre de usuario, password, UID, GID, nombre completo, directorio particular y shell por defecto. La información de los grupos se guarda en /etc/group. – Cada línea de /etc/group contiene un nombre de grupo, password de grupo, GID y usuarios que lo componen. 71 Ficheros shadow l l Permite almacenar las contraseñas cifradas en un fichero de sólo lectura al que sólo se puede acceder como root. Son /etc/shadow y /etc/gshadow para passwd y group respectivamente. 72 36 Ordenes para la administración de usuarios y grupos useradd usuario groupadd grupo usermod usuario modificación u/g groupmod grupo l userdel usuario groupdel grupo l passwd username l l l l l pwconv shadow gpasswd groupname grpconv pwunconv a passwd convierte passwd a grpunconv revierte shadow Change user modifica vigencia de la password 73 Entorno de usuario y variables de entorno del sistema l Scripts de configuración – La configuración de bash en el arranque se toma de /etc/profile y /etc/bashrc. – Las órdenes en /etc/profile se ejecutan durante el login. – Las órdenes en /etc/bashrc se ejecutan cuando se invoca a bash. – Los cambios en estos archivos afectan a todos los usuarios del sistema. 74 37 Entorno de usuario y variables de entorno del sistema l Directorios particulares (home directories) – Se crean copiando el contenido de /etc/skel,y nos daría el home por defecto. – El administrador puede añadir o borrar ficheros de este directorio. 75 GNU / Linux X Window 76 38 X window l Arquitectura cliente-servidor X l Gestores de ventanas: – l Fvwm95, twm, sawfish, icewm, Enlightment ... Entornos de escritorio: – KDE – GNOME 77 X window l Cambiar la resolución: [Ctrl]-[Alt]-[+ / -] l Ejecutar un programa al iniciar sesión: – l l ~/.xsession Configurar las X: Xconfigurator y utilidades gráficas En debian: dpkg-reconfigure xserver-xfree86 78 39 GNU / Linux Administración básica: instalación de paquetes rpm y código fuente 79 Ejecutables estáticos y dinámicos l l l Ejecutables estáticos (linjkados estáticamente) contienen todas las funciones necesarias para ejecutarse, y no dependen de ninguna librería externa Ejecutables dinámicos: necesitan librerías externas compartidas para ejecutarse. Para ver si es dinámico: $ ldd /sbin/sln (ln estático) – Comparar el tamaño con el ln dinámico: $ ls /usr/sbin/ln 80 40 Ejecutables estáticos y dinámicos l Para ver de qué librerías depende: – l l $ ldd bin/ln ¿Quién tiene la fución de cargar éstas fuciones? La librería ld.linux.so.2 llamada el cargador dinámico (dinamyc loader) ¿Cómo encuentra las librerías necesarias el cargador dinámico? – $ cat /etc/ld.linux.so.2, y veo los directorios en los que busca 81 Ejecutables estáticos y dinámicos l l l Podría incluir rutas de directorios con librerías antiguas que quizá me gustaría que explorase el cargador dinámico. Pero cualquier cambio hecho en ld.so.conf debe refrescarse con la orden ldconfig, que actualiza un fichero llamado ld.so.cache. Para ver todas las librerías compartidas: – $ ldconfig -p | less 82 41 Instalación de aplicaciones desde las fuentes l Descargar el fichero con las fuentes: file.tar.gz l Descomprimirlo en un directorio temporal: – l $ tar zxf file.tar.gz Creación del Makefile: – $ ./configure – Normalmente se instalan en /usr/local (con los binarios en /usr/local/bin) Si quiero instalar las fuentes en otro sitio usar el modificador –preffix=ruta – En cualquier caso probar ./configure –help 83 Instalación de aplicaciones desde las fuentes l Compilar las fuentes para crear un ejecutable: – l Instalar las fuentes: – l l $ make (a veces make all) $ make install En cualquier caso leer el fichero README o INSTALL si lo hubiere Pueden venir escritos en perl (*.PL) En esta caso puede usarse perl Makefile.PL 84 42 Instalación de paquetes de aplicaciones l l La aplicación viene empaquetada como: – Rpm (Red Hat, Mandrake) – – Deb (Debian) Tgz (Slackware) – Pkg (Solaris) Se pueden convertir entre cualquiera de estos formatos usando el programa alien – $ alien f.rpm (y generaría un f.deb) 85 Instalación de paquetes de aplicaciones l Instalar un paquete rpm – l Actualizar un paquete rpm: -U – l $ rpm -ihv paq.rpm si no está instalada una versión anterior lo instala Eliminar un paquete rpm: -e – Forzar para eliminar dependencias con otros paquetes:-f – Instalar ignorando dependencias: --nodep (por ejemplo puedo actualizar algo cuyo paquete antiguo no pueda eliminar) 86 43 Antes de la instalación l Consultar si está instalado un paquete rpm: – l Mostrar dependencias esperadas antes de instalar: – l l $ rpm -q nfs (-í da más información) -R (-qpR) Verificar la integridad del paquete que me he bajado de internet: --checksig Consultar información del paquete rpm ya instalado: – -qp 87 Después de la instalación l Consultar información del paquete rpm: – Consultar la base de datos entera de paquetes:-qa – -d (sólo documentación asociada) -c (sólo archivos de configuración asocidos) – l Actualizar un paquete rpm: -U – l Si no está instalada una versión anterior lo instala Eliminar un paquete rpm: -e – Forzar para eliminar dependencias con otros paquetes:-f 88 44 Dependencias en la instalación (Mandrake) l Parte de una base de datos de paquetes, que pueden ser un CDROM, discos duros, ftp, sitios web,... l Mismo concepto que apt-get (Debian) l Para añadir fuentes de rpm´s: – # urpmi.addmedia dirección – # urpmi.addmedia mycd removable://mnt/cdrom/ – # urpmi.removemedia elimina fuentes – # urpmi.update -a actualiza la base de datos. – # urpmi.update –auto-select, instala las actualizaciones 89 Dependencias en la instalación (Mandrake) l Archivos de configuración urpmi: – /var/lib/urpmi/list.*: lista de los paquetes conocidos para urpmi. Cada fichero es una fuente – /var/lib/urpmi/synthesis.hdlist.*:contiene los grafos de dependencias entre los rpm´s – /var/lib/urpmi/cfg: localización de las fuentes (direcciones) – /var/cache/urpmi/: directorio donde se almacena temporalmente todos los rpm´s de fuentes remotas 90 45 Dependencias en la instalación (Mandrake) l Para solventar el problema de las dependencias se usa una herramienta llamada urpmi: – # urpmi vim, instalará el paquete vim y todos aquellos de los que dependa – # urpmi doocbook, si por ejemplo no sé cómo se llama el paquete para hacer Docbooks escribo eso y me lo dirá – # urpme vim, elimina los paquetes instalados. # urpmq vim, busca paquetes instalados – 91 Instalar paquetes en Debian l l Instalación de tareas (conjunto de paquetes) sencilla: usaremos tasksel – # deselect update – # tasksel Comando apt: Archivos donde se especifican las fuentes de los paquetes: – /etc/apt/sources.list y /etc/apt/apt.conf (en especial la línea donde dice default release testing) l – Si la cambio puedo usar paquetes de otras versiones. #apt-get update (actualiza después de la instalación según sources.list) 92 46 Instalar paquetes en Debian l Comandos apt: – # apt-cache searh texto: busca información de paquetes que tengan que ver con texto l # apt-cache searh web editor – # apt-cache show mozilla: muestra información del paquete mozilla – # apt-get install paquete: instala el paquete *.deb desde una ubicación de internet (sources.list) – # apt-get update: actualiza el paquete *.deb – # apt-get upgrade: actualiza todos los paquetes instalados. 93 Instalar paquetes en Debian – # apt-get -fix-broken -show-upgrade dist-upgrade: actualiza toda la distribución (sin cambiarla de status) y resuelve las dependencias posibles – # apt-get -u install paquete1 paquete2 instala p1 y desinstala p2 – # apt-get -u install paquete:instala el paquete y sus dependencias – # apt-get remove paquete: desinstala el paquete – # apt-get remove –purge paquete: desinstala el paquete y sus archivos de configuración – # apt-get install paquete: instala el paquete *.deb 94 47 Instalar paquetes en Debian l Comando dpkg: – – – # dpkg --install paquete.deb (la más práctica) # dpkg --remove paquete # dpkg --purge paquete (incluidos archivos de configuración) 95 Equivalencia urpmi-apt APT apt-get install apt-get upgrade apt-get update apt-get remove apt-cache search URPMI urpmi urpmi urpmi.update urpme urpmf 96 48 GNU/LINUX El proceso de arranque en Linux 97 El gestor de arranque LILO l l Programa que carga un kernel de Linux (u otro SO) en memoria y lo arranca. Tiene dos partes: – El boot loader: programa que intenta buscar y cargar un kernel. Reside en el sector de arranque del disco duro (MBR) o en el primer sector de la partición primaria y es arrancado por la BIOS. – La orden /sbin/lilo: actualiza el LILO según su fichero de configuración /etc/lilo.conf 98 49 El fichero /etc/lilo.conf l Parámetros más importantes: – Boot: el nombre de la partición desde la que arranca. – Image: El archivo específico del Kernel. – Label: etiqueta para cada imagen – Map: directorio donde está el fichero map. – Prompt: petición de parámetros de entrada al usuario durante el arranque (runlevel, parámetros del Kernel..) – Read-only: el sistema de ficheros raíz se montará como de sólo lectura. – Root: siguiendo a la imagen especifíca la partición que debe ser montada como raíz. – Timeout: tiempo de elección del SO a arrancar. 99 El fichero /etc/lilo.conf l Se puede modificar el arranque desde el prompt de LILO : – LILO: linux root=/dev/hda9 – Estos parámetros introducidos afectan al Kernel pero no a los módulos – Para ello editar /etc/conf.modules l Por ejemplo IRQ de la tarjeta de sonido 100 50 El proceso de arranque del sistema l Durante el arranque se da información que incluye: – Identificación del Kernel – Información de la memoria y la CPU – Hardware detectado (ratón, discos, puertos,...) l Se puede consultar con la orden dmesg. l Otros mensajes en /var/log/messages 101 El proceso de arranque del sistema l Arranque del Kernel l Montaje del sistema de ficheros raíz l Arranque del proceso init (PID 1) l Montaje del resto de sistemas de ficheros (fstab) l Inicialización de los terminales l Activación del nivel de ejecución o runlevel: demonios. 102 51 Runlevels (Niveles de ejecución) l l Determina qué servicios (daemons) se van a arrancar durante el arranque del SO Tenemos 6 posibles niveles: – Runlevel 0: Parada del sistema – Runlevel 1: Modo mantenimiento (monousuario): – Runlevel 2: Multiusuario sin red (NFS) – Runlevel 3: Multiusuario – Runlevel 4: Reservado – Runlevel 5: Arranque con GUI login (X Window) – Runlevel 6: Reinicio del sistema 103 Modificación del runlevel en ejecución l Para entrar en un nivel: – En el prompt de LILO: linux 1, siendo linux la etiqueta de la imagen del kernel – Directamente en el shell: init 1 104 52 El directoro /etc/init.d l l l l Es el directorio usado para mantener los scripts de arranque de los servicios del sistema – Son scripts no binarios – Reciben diferentes argumentos (start, stop, status, restart,...) rc.sysinit: se ejecuta al arrancar el SO y se encarga por ejemplo de montar los sistemas de ficheros. rc.local: invocado por rc.sysinit, contiene parámetros del arranque. rc: script usado para cambiar entre runlevels 105 El directorio /etc/rc.d l El directorio /etc/rc.d/init.d contiene scripts individuales de inincio/parada de cada servicio del sistema (por ejemplo httpd, demonio del Apache) – l l Por ejemplo para reiniciar Apache: /etc/rc.dinit.d httpd restart. Además contiene los directorios rc.# con links puntando a estos scripts, donde # va del 0 al 6 según el nivel de ejecución en el que estemos. Cuando el proceso init entra en el nivel n, examina todos los links en el directorio rc.n 106 53 El directorio /etc/rc.d l Estos links simbólicos se denotan de la siguiente forma: – [K|S] [nn] [init.d_name] Prefijos K y S: significan Kill y Start respectivamente, y definen si ese servicio debe estar arrancado o no. l [nn]: Determina el orden en el que los servicios deben arrancarse o pararse. l [init.d_name] nombre del script al que apunta. Sólo para poder identificarlos. l 107 El fichero /etc/inittab l Define el runlevel por defecto, especificado en una línea: – l id:n:initdefault, donde n es el runlevel por defecto. Para conocer cuál es nuestro nivel de ejecución escribimos #runlevel, devolviendo N 5. Por ejemplo, 3 5 significa que ha pasado de un nivel 3 al 5. 108 54 GNU / LINUX Trabajo básico en red 109 Acceso remoto con ssh l ¿Qué es telnet? l Ssh: telnet seguro (puerto 22) – l l $ ssh -l usuario nombre_del_equipo Transferencia de ficheros: sftp – $ sftp usuario@nombre_del_equipo – Comandos get, put, mget, mput, ls cd, !, exit. Cuidado con el fichero .ssh el homedir. 110 55 Navegación en Internet l Configuración: KPPP l Winmodems (www.linmodems.org) l Navegadores: – Mozilla – Navegador Web Konqueror – Galeon (Gnome) – Lynx (modo texto) 111 Otros servicios de red l Servidor Web Apache l Servidor de nombres DNS l Routers l Proxy (squid) l Correo (Sendmail, Postfix, Procmail) l Bases de datos (Mysql, Oracle) l Terminal Server (LTSP) 112 56 GNU / LINUX El kernel de Linux: compilación 113 Compilación del nucleo l Primero bajarse las fuentes del kernel l Ordenes para la compilación del núcleo: – # cd /usr/src/linux/linux-2.6.x – # make xconfig (make menuconfig, make config) (Configura el kernel) # make dep (genera información de dependencias) – – # make bzimage (compila la imagen binaria del kernel en el directorio /usr/src/linux/arch/i386/boot) 114 57 Compilación del nucleo l l Compilación e instalación de módulos (en usr/lib/linux2.4) – # make modules – # make modules_install Compilación e instalación de módulos en un kernel que se está ejecutando: – # insmod – # modconf (en Debian, con posible interfaz Gnome) 115 Y para terminar... 116 58