1. Introducción 1.1 Un poco de historia de GNU/

UNIX es uno de los sistemas operativos más populares del mundo debido a su extenso soporte y distribución. Originalmente fue desarrollado como sistema multitarea con tiempo compartido para miniordenadores y mainframes a mediados de los 70, y desde entonces se ha convertido en uno de los sistemas más utilizados a pesar de su, ocasionalmente, confusa interfaz con el usuario y el problema de su estandarización.

¿Cuál es la verdadera razón de la popularidad de UNIX? Muchos hackers consideran que UNIX es el autentico y único sistema operativo. El desarrollo de Linux parte de un grupo en expansión de hackers de UNIX que quisieron hacer su sistema con sus propias manos.

A principios de los 80's, el científico Richard Stallman del MIT, decidió comenzar a desarrollar un sistema operativo libre con el nombre de GNU, acrónimo de las palabras “¡GNU No es UNIX!”, a finales de la década estaba prácticamente completo pero le faltaba el núcleo o kernel.

Linux es una versión de UNIX de libre distribución, inicialmente desarrollada por Linus Torvalds, al otro lado del mundo en la Universidad de Helsinki, en Finlandia. Fue desarrollado con la ayuda de muchos programadores y expertos de Unix a lo largo y ancho del mundo, gracias a la presencia de Internet. Cualquier habitante del planeta puede acceder a Linux y desarrollar nuevos módulos o cambiarlo a su antojo.

Inicialmente, solo fue un proyecto de aficionado de Linus Torvalds. Se inspiraba en Minix, un pequeño UNIX desarrollado por Andy Tanenbaum, y las primeras discusiones sobre Linux surgieron en el grupo de News comp.os.minix. Estas discusiones giraban en torno al desarrollo de un pequeño sistema UNIX de carácter académico dirigido a aquellos usuarios de Minix que querían algo más.

El núcleo de Linux no utiliza ni una sola línea del código de AT&T o de cualquier otra fuente de propiedad comercial, y buena parte del para Linux se unió y desarrolla bajo las reglas del proyecto de GNU de la Foundation, Cambridge, Massachusetts.

Hoy GNU/Linux es ya un clónico de UNIX completo, capaz de ejecutar X Window, TCP/IP, Emacs, UUCP y software de correo y News. Mucho software de libre distribución ha sido ya portado a Linux, y están empezando a aparecer aplicaciones comerciales. El hardware soportado es mucho mayor que en las primeras versiones del núcleo. Mucha gente ha ejecutado tests de rendimiento en sus sistemas Linux 486 y se han encontrado que son comparables a las estaciones de trabajo de gama media de y Digital. ¿Quién iba a imaginar que este "pequeño" clónico de UNIX iba a convertirse en un estándar mundial para los ordenadores personales?

1.2 Qué es software libre? http://www.gnu.org/philosophy/free-sw.es.html

Libre no significa solamente gratis, la idea principal detrás de esta palabra es la libertad de compartir la información. Es el punto máximo de la libertad tanto para el desarrollador como para el usuario, en inglés una misma palabra (free) significa tanto libre como gratis, lo que ha dado lugar a cierta confusión.

• El programa pueda ser utilizado sin ningún tipo de limitación. • Pueda ser distribuido libremente y copiado a cuantas computadoras sea necesario. • El programa siempre debe estar acompañado del código fuente. • Un programa de software libre se puede vender, siempre y cuando se respeten los

Pagina 1 de 25 nombres de los autores originales.

Software Libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso se refiere a cuatro libertades de los usuarios del software.

• Libertad de usar el programa, con cualquier propósito • Libertad de estudiar cómo funciona y adaptarlo a tus necesidades • Libertad de distribuir copias • Libertad de mejorar el programa y hacer públicas las mejoras

Para que estas libertades sean reales, deben ser irrevocables mientras no se haga nada incorrecto; si el desarrollador del software tiene el poder de revocar la licencia aunque no se le haya dado motivos, el software no es libre.

Son aceptables, sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre, mientras no entren en conflicto con las libertades centrales. Por ejemplo, copyleft (izquierdo de copia) es la regla que implica que, cuando se redistribuya el programa, no se pueden agregar restricciones para denegar a otras personas las libertades centrales. Esta regla no entra en conflicto con las libertades centrales, sino que más bien las protege.

Así pues, quizás se paga para obtener copias de software GNU, o tal vez se pueden obtener sin ningún costo. Pero independientemente de cómo se consigan las copias, siempre se tendrá la libertad de copiar y modificar el software, e incluso de vender copias.

Software libre tampoco significa “no comercial”. Un programa libre debe estar disponible para uso comercial, desarrollo comercial y distribución comercial. El desarrollo comercial del software libre ha dejado de ser inusual; el software comercial libre es muy importante.

Es aceptable que haya reglas acerca de cómo empaquetar una versión modificada, siempre que no bloqueen a consecuencia de ello la libertad de publicar versiones modificadas. Reglas como “Si haces disponible el programa de esta manera, debes hacerlo disponible también de esta otra” pueden ser igualmente aceptables, bajo la misma condición. (la regla así todavía deja decidir si publicar o no el programa). También es aceptable que la licencia requiera que, si has distribuido una versión modificada y el desarrollador anterior te pide una copia de ella, debas enviársela.

Cuando se habla de software libre, es mejor evitar términos como: “regalar” o “gratis”, porque esos términos implican que lo importante es el precio, y no la libertad. Visita la página Palabras y frases confusas que vale la pena evitar (http://www.gnu.org/philosophy/words-to-avoid.es.html), donde encontrarás una discusión acerca de estos términos.

El Software Libre se rige por licencias de uso y distribución, la licencia más utilizada es Licencia Pública General (GLP), la cual se encarga de proteger los derechos del autor y de los usuarios. La licencia pública general está desarrollada y soportada por la Fundación del Software Libre (FSF).

1.3 Qué son las distribuciones?

Una distribución Linux o distribución GNU/Linux (abreviada con frecuencia distro) es un conjunto de aplicaciones reunidas que permiten brindar mejoras para instalar fácilmente un sistema operativo basado en GNU/Linux. Son "sabores" de GNU/Linux que, en general, se diferencian entre sí por las herramientas para configuración y sistemas de administración de paquetes de software para instalar. La elección de una distribución

Pagina 2 de 25 depende de las necesidades del usuario y de gustos personales.

Existen numerosas distribuciones Linux. Cada una de ellas puede incluir cualquier cantidad de software adicional (libre o no), como algunos que facilitan la instalación del sistema y una enorme variedad de aplicaciones, entre ellos, entornos gráficos, suites ofimáticas, servidores web, servidores de correo, servidores FTP, etc.

http://es.wikipedia.org/wiki/Distribuci%C3%B3n_Linux

Descripción General Fecha de la Última Empresa primera Predecesor versión Precio (€) Licencia Público País P.R. estable

Debian Proyecto Desktop, agosto 1993 N/A 4.0 (Etch) Gratis cualquier DFSG Mundial GNU/Linux Workstation, Server

Proyecto noviembre Fedora Linux, Ver. 7 / Workstation, Server, Fedora Core Gratis GPL EEUU Fedora 2003 Red Hat Linux Junio 2007 Público

Fundación Workstation, Server, Gentoo marzo 2002 Enoch 2006.1 Gratis GPL Mundial Gentoo Público

Mandrake Mandriva 2007.1 Gratis (edición para Desktop, Mandriva julio 1998 Linux/Conectiva GPL Mundial Linux Spring descargar) Workstation, Server y Lycoris Xls

octubre rxart, rxart Rxart Pixart 3.0 €16 GPL Workstation, Server Argentina 2001 Linux

Patrick Workstation, Server, Volkerdin julio 1993 SLS 11.0 Gratis GPL EEUU Linux Público g

Descarga gratuita Novell, Workstation, Server, SUSE Linux marzo 1994 Jurix 10.3 disponible GPL Mundial OpenSUSE Desktop, Público Ed. Profesional: 51,95

7.04 octubre Desktop, Debian (Feisty Gratis LiveCD GPL Mundial Ltd. 2004 Workstation, Server Fawn)

Descripción técnica (julio 2007) Princip al Herramienta API principal Sistemas de Administrado sistema actualizaci y lenguaje API principal y lenguaje Kernel ficheros Arquitectura r de de ón de Aplicaciones Aplicaciones CLI compatibles Paquetes fichero paquetes Gráficas s

x86, x86-64, IA64, PowerPC, ext2, JFS, XFS, , SPARC, Debian Linux FAT, NTFS, ISO Synaptic, pre-LSB con C, otros ext3 SPARC64, APT Varias GNU/Linux 2.6.18 9660, UDF, NFS, Adept, APT y (estándar POSIX) Alpha, MIPS, ReiserFS ARM, PA-RISC, Mac/VME 68k, S/390

Linux ext2, ReiserFS, up2date, Fedora 2.6.18 x86, x86-64, pre-LSB con C, otros ext3 FAT, ISO 9660, yum, APT RPM, yum Varias Core Fed.Core i386, PowerPC (estándar POSIX) UDF, NFS (limitado) Verid 9

ext2, ReiserFS, up2date, Linux x86, x86-64, pre-LSB con C, otros Rxart ext3 FAT, ISO 9660, net, APT , ASK Varias 2.6.34 i386, PowerPC (estándar POSIX) UDF, NFS (limitado)

ext2, JFS, XFS, FAT, NTFS, ISO x86 (i586), pre-LSB con C, otros ext3 urpmi RpmDrake Varias Linux 2.6.17 9660, UDF, NFS, x86-64, PPC (estándar POSIX) ReiserFS

ReiserF Swaret, Linux JFS, XFS, FAT, Slackware S, x86, IA64, Slapt-get, installpkg y pre-LSB con C, otros 2.4.33 / NTFS, ISO 9660, Varias Linux ext3/ex S/390 otros no upgradepkg (estándar POSIX) 2.6.18 UDF, NFS t2 oficiales

ext2, ext3, YaST2 JFS, XFS, FAT, x86, IA64, (Misma Linux pre-LSB con C, otros openSUSE ext3 NTFS, ISO 9660, x86-64, Versión de RPM, YaST Varias 2.6.18.8 (estándar POSIX) UDF, NFS, PowerPC YaST Reiser4 Avanzada)

Ubuntu Linux ext3 JFS, XFS, NTFS, x86, x86-64 APT dpkg, Varias pre-LSB con C, otros

Pagina 3 de 25 Synaptic, ISO 9660, 2.6.20 APT y (estándar POSIX) ReiserFS Aptitude

Descripción extra (julio 2007) Entorno Gestor de Tema visual Instalación Administrador Paquetes Navegador web gráfico ventanas de Suite ofimática gráfica de archivos principal principal escritorio

Sí (a partir Debian Nautilus, Iceweasel, Metacity, OpenOffice.org, KOffice, 18000 de la 4.0 GNOME a elegir GNU/Linux Konqueror Konqueror KWin GNOME Office "Etch")

ClearLooks Nautilus, Mozilla Firefox, Metacity, (GNOME) OpenOffice.org, KOffice, Fedora Core 5000 Sí GNOME, KDE Konqueror Epiphany Kwin Bluecurve GNOME Office (KDE)

Mandriva Konqueror, Mozilla 4000 Sí Konqueror KDE KWin la Ora OpenOffice.org Linux Firefox

Konqueror, Mozilla Rxart Linux 2000 Sí Konqueror KDE KWin Rxart OpenOffice.org Firefox

Slackware Mozilla Firefox, muchos No Konqueror varios a elegir a elegir KOffice Linux Seamonkey

Mozilla Firefox, Konqueror (en OpenOffice.org, KOffice, SUSE Linux 12500 Sí Nautilus Gnome, KDE Metacity ClearLooks KDE), Epiphany (en GNOME Office GNOME)

menos de OpenOffice.org, GNOME Ubuntu Sí Nautilus Mozilla Firefox GNOME Metacity Human 18000 Office

Distribuciones en el tiempo

Pagina 4 de 25 1.4 Características del sistema

Linux es un sistema operativo completo con multitarea y multiusuario (como cualquier otra versión de UNIX). Esto significa que pueden trabajar varios usuarios simultáneamente en el, y que cada uno de ellos puede tener varios programas en ejecución.

El sistema Linux es compatible con ciertos estándares de UNIX a nivel de código fuente, incluyendo el IEEE POSIX.1, System V y BSD. Fue desarrollado buscando la portabilidad de los fuentes: encontrara que casi todo el software gratuito desarrollado para UNIX se compila en Linux sin problemas. Y todo lo que se hace para Linux (código del núcleo, drivers, librerías y programas de usuario) es de libre distribución.

En Linux también se implementa el control de trabajos POSIX (que se usa en los shells csh y bash), las pseudoterminales (dispositivos pty), y teclados nacionales mediante manejadores de teclado cargables dinámicamente. Además, soporta consolas virtuales, lo que permite tener mas de una sesión abierta en la consola de texto y conmutar entre ellas fácilmente. A los usuarios del programa "screen" les resultara familiar esto.

El núcleo es capaz de emular por su cuenta las instrucciones del coprocesador 387, con lo que en cualquier 386 con coprocesador o sin él se podrán ejecutar aplicaciones que lo requieran.

Linux soporta diversos sistemas de ficheros para guardar los datos. Algunos de ellos, como el ext que han sido desarrollados específicamente para Linux. Otros sistemas de ficheros, como el Minix-1 o el de Xenix también están soportados. Y con el de MS-DOS (FAT16 y FAT32) se podrán acceder desde Linux a los disquetes y particiones en discos duros formateados con MS-DOS. Además, también soporta el ISO-9660, que es el estándar seguido en el formato de los CD-ROM's.

Linux implementa todo lo necesario para trabajar en red con TCP/IP. Desde manejadores para las tarjetas de red mas populares hasta SLIP/PPP, que permiten acceder a una red TCP/IP por el puerto serie. También se implementan PLIP (para comunicarse por el puerto de la impresora) y NFS (para acceso remoto a ficheros). Y también se han portado los clientes de TCP/IP, como FTP, telnet, NNTP y SMTP.

El núcleo de Linux ha sido desarrollado para utilizar las características del modo protegido de los microprocesadores 80386 y 80486. En concreto, hace uso de la gestión de memoria avanzada del modo protegido y otras características avanzadas. Cualquiera que conozca la programación del 386 en el modo protegido sabrá que este modo fue diseñado para su uso en UNIX (o tal vez Multics). Linux hace uso de esta funcionalidad precisamente.

El núcleo soporta ejecutables con paginación por demanda. Esto significa que solo los segmentos del programa que se necesitan se cargan en memoria desde el disco. Las paginas de los ejecutables son compartidas mediante la técnica copy-on-write, contribuyendo todo ello a reducir la cantidad de memoria requerida para las aplicaciones.

Con el fin de incrementar la memoria disponible, Linux implementa la paginación con el disco (swap). Cuando el sistema necesita más memoria, expulsara paginas inactivas al disco, permitiendo la ejecución de programas más grandes o aumentando el número de usuarios que puede atender a la vez. Sin embargo, el espacio de intercambio no puede

Pagina 5 de 25 suplir totalmente a la memoria RAM, ya que el primero es mucho más lento que esta.

La memoria dedicada a los programas y a la cache de disco esta unificada. Por ello, si en cierto momento hay mucha memoria libre, el tamaño de la cache de disco aumentara acelerando así los accesos.

Los ejecutables hacen uso de las librerías de enlace dinámico. Esto significa que los ejecutables comparten el código común de las librerías en un único fichero, como sucede en SunOS. Así, los ejecutables serán mas cortos a la hora de guardarlos en el disco, incluyendo aquellos que hagan uso de muchas funciones de librería. También pueden enlazarse estáticamente cuando se deseen ejecutables que no requieran la presencia de las librerías dinámicas en el sistema. El enlace dinámico se hace en tiempo de ejecución, con lo que el programador puede cambiar las librerías sin necesidad de recompilación de los ejecutables.

2. Instalación

2.1 Cómo obtenerlo?

En este manual trabajaremos con la distribución de Debian, si se prefiere y estamos iniciándonos en el mundo de Linux puedo recomendar Ubuntu, ya que esta ultima esta basada en Debian y he visto que existe en internet bastante documentación, además, que personalmente considero que es una distribución que tiene más soporte y compatibilidad con el hardware ya que incluye librerías y paquetes propietarios precompilados que facilitan y ahorran mucho tiempo en la instalación y el trabajo con Linux. Debian tiene una política publica de que siempre se mantendrá como software libre y lo recomiendo para cuando se tiene un poco más de conocimiento de los paquetes y librerías, y más aun, cuando se tienen identificados donde buscar y obtenerlos en caso de que Debian no los incluya, pero eso no es exclusivo para su uso, la experiencia es enriquecedora y el aprendizaje es mayor que solo usar Ubuntu.

• www.debian.org • www.ubuntu.com

En las direcciones anteriores solo se tiene que descargar la(s) imágenes (ISO) de CD- ROM ó DVD-ROM para la arquitectura y las características del equipo en el que se va a instalar (, MAC, AMD-64, etc.), y como se conoce “quemarla”.

2.2 Requerimientos de hardware

Se puede estar convencido de lo maravilloso que es Linux y de las estupendas cosas que puede hacer por Usted. Sin embargo, antes de precipitarse e instalar el Linux, hay que asegurarse de los requerimientos y limitaciones de hardware en donde se instalará.

Hay que tener en cuenta que Linux fue desarrollado por sus usuarios, lo significa, en la mayoría de las ocasiones, que el hardware soportado por Linux es únicamente aquel al que usuarios y desarrolladores tienen realmente acceso. Según van apareciendo, se van soportando la mayor parte del hardware y los periféricos populares para sistemas 80386/80486 (de hecho, Linux soporta más hardware que algunas implementaciones comerciales de UNIX). Sin embargo, aun no son reconocidos algunos de los periféricos más oscuros y esotéricos. Según pasa el tiempo aumenta el hardware soportado por Linux, de manera que si sus periféricos favoritos no están soportados, hay gran probabilidad de que sean soportados próximamente.

Otro inconveniente en el soporte de hardware bajo Linux es que muchas compañías han decidido conservar las especificaciones del interfaz de su hardware como propietario.

Pagina 6 de 25 Como consecuencia de esto, los desarrolladores voluntarios de Linux simplemente no pueden escribir controladores (drivers) para esos periféricos (y si pudieran, tales controladores serían propiedad de la compañía dueña del interfaz, lo cual violaría el GPL). Las compañías que mantienen interfaces propietarios, escriben sus propios controladores para sistemas operativos como Microsoft Windows; el usuario final (es decir, usted) no necesita saber nada del interfaz. Desafortunadamente, esto impide a que los desarrolladores de Linux puedan escribir controladores para esos periféricos.

Hay muy poco que hacer en esta tesitura, en algunos casos los programadores han intentado escribir controladores "clonados" basándose en asunciones acerca del interfaz. En otras ocasiones, los desarrolladores trabajarán con la compañía en cuestión e intentarán obtener información del interfaz del periférico con un nivel de éxito que puede variar.

Es complicado y limitativo establecer los requerimientos mínimos de hardware para instalar Linux, debido a que varia desde una instalación básica hasta una en la que se instalen muchos paquetes o programas que muy probablemente no sean necesarios para el usuario, además de que existe una gran variedad de hardware y periféricos que resultaría imposible listar todos en este documento, una mejor idea es buscar en internet si tu hardware es compatible o no, recomendando lo siguiente.

Hardware concreto:

• Tarjetas wifi (http://linux-wless.passys.nl/) • Escaners (http://www.sane-project.org/sane-mfgs.html) • Impresoras (http://www.linuxprinting.org/printer_list.cgi)

Hardware en general:

• Sitio CompatibleLinux (http://www.compatiblelinux.org/) • Foro de LinuxCompatible (http://www.linuxcompatible.org/compatlist3.html) • Como de Compatibilidad de Hardware con Linux (http://es.tldp.org/COMO- INSFLUG/COMOs/Compatibilidad-Hardware-Como/Compatibilidad-Hardware- Como.html#toc3) • Linux Online (http://www.linux.org/vendor/hardware/index.html)

Portátiles, PDAs, teléfonos móviles...en los que se ha instalado Linux:

• http://linux-on-laptops.com/ • http://tuxmobil.org/

2.3 Particionamiento del disco duro

Efectivamente, para instalar Linux, se necesitará tener algo de espacio libre en disco duro. Linux soporta múltiples discos duros en la misma maquina; puede disponer de espacio para Linux en múltiples unidades si es necesario.

La cantidad de espacio en disco duro que se necesitará depende en gran medida de sus necesidades y de la cantidad de software que va a instalar. Linux es relativamente pequeño en relación a las implementaciones de UNIX; podría correr un sistema completo con 10-20 megabytes de espacio. Sin embargo, si se quiere disponer de espacio para expansiones, y para paquetes más grandes como X-Window, se necesitará más espacio. Si se planea permitir a múltiples usuarios utilizar la maquina, se tendrá que dejar espacio para sus ficheros.

También, se necesita crear espacio de intercambio ("swap"), para ser usado como RAM

Pagina 7 de 25 virtual.

Puede ejecutar un sistema mínimo con menos de 20 megabytes; un sistema completo con toda la parafernalia en 80 megabytes o menos; y un sistema grande con sitio para muchos usuarios y espacio para futuras expansiones en un rango de 100-150 megabytes. De nuevo, estas cifras son meramente orientativas; se tendrá que decidir, según las necesidades y objetivos, los requerimientos específicos de almacenamiento para el sistema.

Antes era toda una odisea la instalación, la identificación de discos, tarjetas de red, video, sonido, monitor, etc., y casi todo se configuraba de manera manual. Actualmente el programa instalador de Debian/Ubuntu facilita la instalación de Linux, ya que casi siempre identifica el hardware de manera automática, la intervención del usuario solo se limita a seleccionar el lenguaje, la distribución del teclado, detección de la red (DHCP o configuración manual), nombre del equipo, nombre del host, la contraseña de administrador o superusuario (root), el nombre y contraseña de un usuario y los paquetes que se desean instalar como servidor WEB, SAMBA, CUPS, etc. Solo en la instalación de Debian solicita la contraseña de root, Ubuntu no recomienda el uso de root en ningún caso, para ejecutar comandos o realizar configuraciones como superusuario recomienda el uso del comando “sudo”.

El paso más delicado en la instalación es el particionamiento del disco duro, ya que con un poco de conocimientos previos sabemos que podemos perder toda información de las particiones que se borren, editen o formateen. Linux ofrece la posibilidad de convivir con otros sistemas operativos (Windows, Unix, OS/2, OSX, incluso otras distribuciones de Linux).

Previo a insertar el CD/DVD de instalación, debemos asegurarnos de tener un disco duro vacío e incluso sin particionar, o si se va instalar con otro S.O. debemos dejar un espacio vacío suficiente de acuerdo a las necesidades de uso que se le dará a Linux, para cuando lleguemos al particionamiento trabajaremos solo con el espacio que se haya reservado para Linux.

Para entender un poco más lo que vamos a hacer, veamos la siguiente estructura general de los discos duros.

Lo primero que hay es lo que se llama el MBR (Master Boot Record), también llamado tabla de partición, y después viene el espacio de disco que pueden usar libremente las particiones. Por supuesto, no tiene que haber exactamente cuatro particiones hechas, podemos tener sólo una, dos, tres o las cuatro, según nuestras necesidades.

El MBR es el lugar donde se indican cuántas particiones hay y cómo son. Para esto hay cuatro entradas, donde se guarda la información relativa a cada posible partición: si existe o no, de qué tipo es, en qué posición se encuentra dentro del disco duro, cuánto ocupa, flag de activo y demás.

Pagina 8 de 25 Además, el MBR contiene un pequeño programa (IPL), que podemos llamar gestor de arranque principal, encargado de arrancar una partición u otra. Este programita se ejecuta al arrancar el ordenador, después de los chequeos y otras cosas que hace la Bios.

De forma más general, las particiones pueden ser primarias o extendidas. La diferencia entre unas y otras está en su estructura interna. Hay muchos tipos de particiones primarias, dependiendo del sistema de archivos que utilice la partición.

Hemos de tener en cuenta que el tipo FAT16 tiene un tamaño máximo de 2G. Por eso, aunque Windows 95/98 se puede instalar en una partición FAT16, si queremos usar una partición de más de 2G, ha de usarse FAT32.

Las particiones extendidas son unas particiones especiales que a su vez están divididas internamente en partes independientes (llamadas unidades lógicas), pero el número de unidades lógicas no está limitado. Las unidades lógicas son parecidas a las particiones primarias, pero están dentro de particiones extendidas. Una partición extendida no es útil por sí misma, su única función es ser el recipiente de unidades lógicas.

Todos los S.O. se pueden instalar en particiones primarias, pero sólo algunos en unidades lógicas. Por ejemplo, Linux se puede instalar en unidades lógicas mientras que Windows no, éste último requiere obligatoriamente particiones primarias. Usan las unidades lógicas sólo para guardar datos. Esto limita el número de S.O. de este tipo que se pueden instalar, dado que como mucho puede haber hasta cuatro particiones primarias.

El hecho de que no esté limitado el número de unidades lógicas es una característica muy interesante para Linux. Todas las particiones de Linux, incluidas las de Swap, se pueden instalar en unidades lógicas. No es obligatorio usar particiones primarias. De esta manera, instalando Linux en unidades lógicas aún podemos tener hasta tres S.O. más, en sus correspondientes particiones primarias. Por ejemplo, podemos tener un disco duro como el siguiente:

Como vemos, hay una partición primaria para MS-DOS, otra para Windows 98 y otra para NT. Después está la partición extendida donde tenemos tres unidades lógicas, dos para Linux y una tipo FAT para datos. La utilidad de la unidad lógica tipo FAT es que independientemente del OS que usemos, todos los datos se encuentren en un mismo sitio.

Pagina 9 de 25 Para instalar Linux, mínimo se requieren dos particiones la swap y donde se instalará todos los archivos de Linux así como los directorios de usuarios, normalmente recomendaba que el tamaño de swap fuera el doble del tamaño de la memoria RAM, actualmente con los tamaños de memoria con los que cuentan los equipos de escritorio de 1GB basta con que se iguale el tamaño.

El sistema de directorios y archivos se puede instalar en diferentes particiones, lo cual recomiendo fervientemente, ya que si algo falla en un futuro se puede reinstalar todo Linux y especificar que algunas particiones no se formateen como /home, donde se almacenan los archivos de los usuarios.

Determinar cuantas particiones se deben de crear depende del usuario y uso que se le dará, por lo que hay que conocer un poco más de la estructura del directorios de Linux y que no es objetivo de este manual, por lo que solo se mostrara la siguiente gráfica, si se desea más información existe demasiada en internet.

/ Directorio Raiz |- bin Binarios (programas ejecutables) esenciales |- boot Informacion de booteo (arranque) |- dev Dispositivos |- etc Archivos de Configuracion |- home Directorios 'home' de los usuarios | |- usuario1 | |- usuario2 | |- usuario3 | |- lib Librerias de Sistema |- lost+found Archivos recuperados luego de comprobaciones del | sistema de archivos |- mnt Punto de montaje para dispositivos removibles y otras | |- cdrom unidades (una alternativa comunmente usada es /cdrom | |- floppy y /floppy) | |- zip | |- proc Directorio especial de contenidos virtuales con | informacion sobre procesos, dispositivos, etc. |- root Directorio home para el usuario root (Administrador) |- sbin Binarios administrativos esenciales |- tmp Espacio de trabajo temporal |- usr Programas opcionales | |- X11R6 Archivos de X Window | | |- bin Binarios | | |- include Headers | | |- lib Librerias | | |- man Manuales | | |- share Archivos comunes compartidos | | | |- bin Binarios | |- dict Diccionario (no muy comun) | |- doc Documentacion | | |- HOWTO Documentos guias sobre COMO realizar tareas especificas | | | |- etc Archivos de configuracion adicionales | |- include Headers para el preprocesador de C (includes) | |- info Archivos GNU info (paginas de informacion) | |- lib Librerias adicionales | |- local Archivos locales generalmente no soportados por la | | | distribucion, instalados por el administrador | | |- bin | | |- doc | | |- etc | | |- include | | |- lib | | |- man | | |- sbin | | |- share | |

Pagina 10 de 25 | |- man Paginas de MANuales | |- share Archivos comunes compartidos | |- sbin Binarios administrativos adicionales | |- src Directorios de codigos fuente (ej. /usr/src/linux/) | |- var Archivos administrativos (tales como logs del sistema) | y datos que cambian frecuentemente (como casillas de | correo y news, colas de impresion, etc.) |- lock Archivos 'lock', para protejer y bloquear el acceso a | procesos y dispositivos de manera exclusiva |- log Archivos log |- spool Archivos spool |- mail Casillas de correo de los usuarios

Personalmente recomiendo cinco particiones para una instalación básica

Punto de montaje Tamaño mínimo Sistema de archivos swap Igual al tamaño de la memoria RAM swap ext4 o ReiserFS, con la / 10GB característica de arranque /var 15GB ext4 o ReiserFS /usr 15GB ext4 o ReiserFS /home resto del disco duro ext4 o ReiserFS

Después de configurar las particiones, continuar con la instalación, esperar el proceso de formateo y copiado de los archivos, queda el ultimo paso a considerar el programa de arranque (GRUB o LILO), normalmente el instalador detecta si se cuenta con otros S.O. en otras particiones, las agrega al programa de arranque para que se seleccione el S.O. con el que desea trabajar después encender su computadora. al terminar y retirar el CD/DVD... listo... podemos encender nuevamente nuestro equipo y disfrutar nuestro nuevo sistema Linux.

3. La iniciación

3.1 Introducción

UNIX es un sistema operativo multitarea y multiusuario. Esto significa que puede haber más de una persona usando una computadora a la vez, cada uno de ellos ejecutando a su vez diferentes aplicaciones.

Esto difiere de MS-DOS, donde solo una persona puede usar el sistema en un momento dado. Bajo UNIX, para que los usuarios puedan identificarse en el sistema, deben presentarse (log in), proceso que consta de dos pasos: Introducir el nombre de usuario (login) (el nombre con que será identificado por el sistema), y una palabra de paso (password), la cual es su llave personal secreta para entrar en la cuenta. Como solo usted conoce su palabra de paso, nadie mas podrá presentarse en el sistema con su nombre de usuario.

En los sistemas UNIX tradicionales, el administrador del sistema asignará el nombre de usuario y una palabra de paso inicial en el momento de crear la cuenta de usuario. Como Usted instalo Linux entonces supongo que es el administrador del sistema, debe configurar su propia cuenta antes de poder presentarse, ya que no se recomienda trabajar solo con la cuenta root.

Además, cada sistema UNIX tiene un nombre del sistema (hostname) asignado. Este "hostname" le da nombre a la maquina, además de carácter y encanto. El nombre del

Pagina 11 de 25 sistema es usado para identificar maquinas en una red, pero incluso aunque la maquina no este en red, debería tener su nombre.

3.2 Administrando usuarios

Para crear una cuenta de usuario se utiliza el comando adduser seguido del nombre del usuario, después hay que completar la siguiente información: root@hostname:~# adduser usuario Añadiendo usuario 'usuario' ... Agregando nuevo grupo `usuario' (1001) ... Agregando nuevo usuario `usuario' (1001) con grupo `usuario' ... Creando el directorio personal '/home/usuario' ... Copiando archivos desde '/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: contraseña actualizada correctamente Cambiando la información de usuario para usuario Introduzca el nuevo valor, o presione ENTER para el predeterminado Nombre completo []: Número de habitación []: Teléfono del trabajo []: Teléfono de casa []: Otro []: ¿Es correcta la información? [y/N] y

Al crear un usuario se crea el home del usuario que es la estructura de directorios necesarios para el usuario, es importante mencionar en este momento que cada usuario tiene permisos sobre archivos y directorios. En Linux son muy importantes los permisos, ya que ningún usuario puede ver, mover, borrar archivos o directorios a los cuales no tenga permisos, solo el superusuario puede hacer lo que desee con todos los archivos y directorios del sistema y de los usuarios.

Para borrar un usuario, deluser root@hostname:~# deluser usuario Removiendo usuario usuario... Terminado. root@hostname:~#

3.3 Trabajando con directorios y archivos

Para trabajar con directorios se utilizan los siguientes comandos:

• cd - Cambia de directorio. • mkdir - Crea un directorio. • rm - Borra una archivo, pero si se usa el parámetro “-r” borra un directorio con todo lo que tenga dentro (archivos y subdirectorios). • mv - Mueve un archivo o directorio, también utilizado para cambiar el nombre. • cp - copia un archivo o directorio. • ls - Muestra el contenido del directorio, como el dir de MS-DOS. • ln - Crea enlaces simbólicos a un directorio o archivo root@hostname:~# cd /media/cdrom/mp3 root@hostname:/media/cdrom/mp3# cd .. //Se regresa al directorio anterior root@hostname:/media/cdrom# cd / //se regresa al directorio raíz root@hostname:/#

Nota: El prompt de la consola se compone del nombre del usuario “@” el nombre del equipo “:” y el directorio en el que se encuentra “#”.

Tip: Si se presiona la tecla [Tap] antes de terminar de escribir un comando, directorio o archivo, si existe y es el único que coincide con los caracteres ya escritos

Pagina 12 de 25 completará el comando, directorio o nombre de archivo, si no es el único que coincide mostrará una lista. root@hostname:/# us usbmodules useradd users usplash_down usb_printerid userdel users-admin usplash_write uscan usermod usplash root@hostname:/# us root@hostname:~# cd root root@hostname:~# mkdir ejemplo root@hostname:~# ls ejemplo root@hostname:~# ls -l //muestra el detalle de los archivos y directorios total 0 drwxr-xr-x 2 root root 48 2007-07-26 23:14 ejemplo root@hostname:~# ls -a //muestra todos los archivos o directorios incluyendo los ocultos . .bash_history .esd_auth .gnome2_private .recently-used.xbel .. .bashrc .gconf .lesshst .ssh .3ddesktop .config .gconfd .mysql_history .synaptic .aptitude ejemplo .gnome2 .profile .wapi root@hostname:~# root@hostname:~# rm -r ejemplo //borra un directorio y todo lo que contiene root@hostname:~# ls -l total 0 root@hostname:~# mkdir otro-directorio root@hostname:~# ls otro-directorio root@hostname:~# mv otro-directorio ejemplo //cambia el nombre del directorio root@hostname:~# ls ejemplo root@hostname:~#

La información que proporciona el comando ls -l, es la siguiente:

-rw-r--r-- 1 irvnet irvnet 1272 Sep 28 07:31 index.php | | | | | | | | | | | | | | tamaño nombre del archivo | | | | | |_ nombre grupo propietario | | | | | | | | | |_ nombre usuario propietario | | | | | | | |_ Permisos genericos | | | | | |_ Los siguientes tres digitos los permisos del Group | | | |___ los siguientes tres caracteres determinan los permisos del owner: | r de read, lectura; w, write, escritura y x de execute, ejecución | |___ El primer carácter indica si nos encontramos ante un directorio o un fichero: d significa directorio, - significa fichero, l significa link

Para cambiar los permisos de los archivos o directorios se utilizan los comandos chmod y chown.

La orden chmod puede usarse con letras o números. La forma más corriente es expresar los permisos numéricamente. Para comprender el significado tienes que tener en cuenta que convencionalmente 4 significa permiso de lectura. 2 permiso de escritura y 1 permiso de ejecución. Sumando estos valores vemos que un archivo puede tener los siguientes permisos (por cada tipo de usuario):

4= lectura 2= escritura 1= ejecución

6 (4+2)= lectura y escritura

Pagina 13 de 25 5 (4+1)= lectura y ejecución 3 (2+1)= escritura y ejecución 7 (4+2+1)= lectura, escritura y ejecución

Todo ello para los tres tipos de usuario.

Así, un chmod 777 significa que owner, group y others tienen permiso de lectura, escritura y ejecución. chmod 766 significa que el owner tiene permiso de lectura, escritura y ejecución, y el group y others permiso de lectura y escritura. Chmod 744 significa que el owner tiene permisos de lectura, escritura y ejecución, y group y others unicamente permisos de lectura.

Como ves, son tres dígitos, de izquierda a derecha designan los permisos del owner, group y others.

Vemos a continuación su equivalente en letras:

0 = --- = sin acceso 1 = --x = ejecución 2 = -w- = escritura 3 = -wx = escritura y ejecución 4 = r-- = lectura 5 = r-x = lectura y ejecución 6 = rw- = lectura y escritura 7 = rwx = lectura, escritura y ejecución

Asi, en el ejemplo de antes: rw-r--r-- significa que el owner tiene permisos de lectura y escritura (rw-); el group permisos de lectura unicamente (r--) y other, permiso de lectura (r--). Lo cual equivaldría numericamente chmod 644.

La sintaxis para usar chmod con texto: chmod [ugo][+-][rwx] [nombre_archivo] Donde [u=user, g=group y o=other]; [+/- activa o desactiva los atributos siguientes] [r=read, w=write, x=execute]

Por ejemplo, chmod go+r index.php significa que asignamos permisos de lectura para group y others en index.php

De esta forma solo cambiamos los atributos que especificamos, pero no alteramos otros compatibles que pudieran estar asignados anteriormente) por ejemplo, no modifica la atribución anterior a group de un permiso de ejecución).

Si queremos fijar de nuevo todos los permisos, la sintaxis sería: chmod go=r index.php donde asignamos a group y other permiso de lectura sobre index.php y eliminamos cualquier otro permiso para ambos.

Ten en cuenta asimismo que puedes usar comodines: chmod 644 *.html

Por otra parte para cambia el usuario y grupo propietario del archivo o directorio usamos: root@hostname:~# cp /etc/fstab . //copia el archivo fstab al directorio actual root@hostname:~# ls -l total 4 -rw-r--r-- 1 root root 2 2007-07-26 23:59 fstab drwxr-xr-x 2 root root 48 2007-07-26 23:39 ejemplo root@hostname:~# cp /etc/fstab archivo //copia el mismo archivo, pero lo escribe con otro nombre root@hostname:~# ls -l -rw-r--r-- 1 root root 2 2007-07-26 23:59 archivo -rw-r--r-- 1 root root 2 2007-07-26 23:59 fstab

Pagina 14 de 25 drwxr-xr-x 2 root root 48 2007-07-26 23:39 ejemplo root@hostname:~# chown -R usuario.usuario ejemplo //Cambia el directorio y todo lo que contiene root@hostname:~# ls -l total 4 -rw-r--r-- 1 root root 2 2007-07-26 23:59 archivo -rw-r--r-- 1 root root 2 2007-07-26 23:59 fstab drwxr-xr-x 2 usuario usuario 48 2007-07-26 23:39 ejemplo root@hostname:~# chown usuario.usuario fstab //Cambia el archivo root@hostname:~# ls -l total 4 -rw-r--r-- 1 root root 2 2007-07-26 23:59 archivo -rw-r--r-- 1 usuario usuario 2 2007-07-26 23:59 fstab drwxr-xr-x 2 usuario usuario 48 2007-07-26 23:39 ejemplo root@hostname:~# ln -s fstab mi_fstab //Crea un enlace simbólico al archivo fstab root@hostname:~# ls -l total 5 -rw-r--r-- 1 root root 2 2007-07-26 23:59 archivo drwxr-xr-x 2 usuario usuario 48 2007-07-26 23:39 ejemplo -rw-r--r-- 1 usuario usuario 779 2007-07-27 00:29 fstab lrwxrwxrwx 1 root root 5 2007-07-27 15:44 mi_fstab -> fstab root@hostname:~#

Cuando consultamos el contenido de un directorio y sus archivos y subdirectorios rebasan la capacidad que tiene la consola de mostrarlos, podemos utilizar el carácter llamado pipe “|” para unir varios comandos y el resultado de primero de la izquierda se aplica al siguiente de la derecha. root@hostname:~# cd /etc/ root@hostname:/etc# ls ... //observa la salida en pantalla, puedes ver todo el contenido? root@hostname:/etc# ls | more //permite hacer una paginación con la salida ... //observa nuevamente la salida, es mejor? root@hostname:/etc# ls | grep fs //filtra la salida a los archivos y directorios que coincidan con fs devfs fstab fstab.pre-uuid gnome-vfs-2.0 gnome-vfs-mime-magic initramfs-tools login.defs mke2fs.conf root@hostname:/etc#

También podemos crear archivos con las salidas que generan los comandos, es decir, podemos dirigir la salida que normalmente es establecida en pantalla a un archivo y guardarlo en disco, utilizando el carácter “>”. root@hostname:/etc# ls -l ... //normalmente no podemos observar todo el contenido del directorio root@hostname:/etc# ls -l > resultado root@hostname:/etc# more resultado ... root@hostname:/etc#

3.4 Mostrando el contenido y editando archivos

Ya podemos movernos entre los directorios, copiar, borrar, etc., ahora vamos a consultar el contenido de los archivos, para ello existen varios comando, pero yo prefiero los nativos y populares en S.O. tipo UNIX.

• more - Muestra el contenido de los ficheros indicados, una pantalla cada vez.

• tail - es un programa de los sistemas tipo Unix, que muestra las últimas líneas de uno o más archivos de texto.

tail tiene una opción especial, -f (del inglés follow, seguir), que permite hacer

Pagina 15 de 25 seguimiento a un archivo. En lugar de mostrar las últimas líneas y terminar, tail mostrará las últimas líneas y seguirá leyendo del archivo; conforme se le añadan nuevas líneas, tail las imprimirá.

Esta función es particularmente útil para archivos de registro. Para cerrar tail cuando esté haciendo seguimiento, basta interrumpirlo con Ctrl+c.

root@hostname:/etc# tail -f /var/log/messages ... //observa el resultado, desconecta y conecta el mouse...... //para terminar presiona Ctrl+c root@hostname:/etc#

• vi - es un editor de texto que se encuentra en (casi) todo sistema tipo Unix, por lo que conocer su funcionamiento es casi imprescindible.

posee tres modos: comando, edición y modo ex. En el modo comando es en el que arranca vi y se caracteriza por interpretar todo lo que se escribe como comandos (por ejemplo: eliminar o insertar líneas, desplazar el cursor, pasar al modo de edición, etc.). Al modo de edición se accede pulsando la tecla Insert o i y se vuelve al modo comando pulsando Escape. Estando en el modo comando, si se pulsa la tecla de dos puntos (:) se pasa al modo ex. En él es posible introducir comandos, como por ejemplo salvar el archivo, salir del editor, ejecutar búsquedas, etc. Pulsando la tecla Escape se vuelve al modo comando.

✗ :q! Salir sin guardar los cambios ✗ :x Salir y guardar los cambios ✗ :w Guarda los cambios realizados hasta el momento

✗ /[cadena] Busca hacia la derecha y hacia abajo la siguiente instancia de “cadena” ✗ ?[cadena] Busca hacia la izquierda y hacia arriba la siguiente instancia de "cadena"

✗ dd Borra la linea completa donde se encuentre el cursor ✗ ZZ Salir y guardar los cambios ✗ h mueve el cursor un espacio a la izquierda ✗ j mueve el cursor una línea hacia abajo ✗ k mueve el cursor una línea hacia arriba ✗ l mueve el cursor un espacio a la derecha ✗ w mueve al principio de la siguiente palabra ✗ e mueve al final de la siguiente palabra ✗ E mueve al final de la siguiente palabra antes de un espacio ✗ b mueve al principio de la palabra anterior ✗ 0 mueve al principio de la línea actual ✗ ^ (acento circunflejo) mueve a la primera palabra de la línea actual ✗ $ (signo de dólar) mueve al final de la línea ✗ _ mueve al principio de la siguiente línea ✗ - (guión) mueve al principio de la línea anterior ✗ G mueve al final del fichero ✗ 1G mueve al principio del fichero ✗ nG mueve a la línea n ✗ Control+G muestra el número de línea actual ✗ % (por ciento) va al paréntesis correspondiente ✗ H mueve a la línea superior en pantalla ✗ M mueve a la línea de en medio de la pantalla ✗ L mueve al final de la pantalla ✗ n mueve el cursor a la columna n

✗ Control+f desplaza una pantalla hacia delante ✗ Control+b desplaza una pantalla hacia atrás ✗ Control+d desplaza media pantalla hacia abajo ✗ Control+u desplaza media pantalla hacia arriba

Pagina 16 de 25 root@hostname:/etc# vi resultado ... //disfruta tu primera experiencia con vi... paciencia... root@hostname:/etc#

En las versiones modernas de vi podremos usar las teclas de movimiento ya conocidas en muchos otros editores, no obstante, vi posee un montón de teclas de movimiento en el modo de comando y que se pueden utilizar en conjunción con otras órdenes para realizar, por ejemplo, búsquedas y substituciones. Como estas combinaciones de órdenes sobrepasan el objetivo de este manual, se puede buscar manuales y páginas man que hablen sobre el asunto.

3.5 Comprimiendo y empaquetando archivos o directorios tar - Se diseñó originalmente para crear copias de seguridad para ser almacenadas en cinta. Actualmente se utiliza para crear archivos.

Sintaxis Resultado tar cvf nombre_archivo.tar nombre_archivos_selecionados Crea una archvio .tar tar tvf nombre_archivo.tar Ver el contenido tar xvf nombre_archivo.tar Extrae el contenido gzip - Programa para comprimir ficheros, solo puede comprimir uno y no lo almacena en un segundo fichero.

Sintaxis Resultado gzip nombre_archivo Comprime .gz gzip * Comprime todo, NO los directorios gunzip nombre_archivo.gz Descomprime bzip2 - Está creado con un magnífico algoritmo sobre compresión de datos. Generalmente consigue que los ficheros queden en un 60-70% del tamaño que tienen los ficheros comprimidos con gzip.

Sintaxis Resultado bzip2 nombre_archivo Comprime .bz2 bunzip2 nombre_archivo.bz2 Extrae contenido

Una ventaja que se tiene en S.O. tipo UNIX es que se pueden combinar estos formatos para empaquetar y comprimir archivos y directorios. tar & gzip Sintaxis Resultado tar zcvf archivo.tar.gz nombre_archivos_seleccionados Crea un archivo .tar.gz tar ztvf archivo.tar.gz Muestra el contenido tar zxvf archivo.tar.gz Extrae el contenido tar & bz2 Sintaxis Resultado tar jcvf nombre_archivo.tbz2 Crea un archivo .tbz2 tar jtvf nombre_archivo.tbz2 Muestra el contenido tar jxvf nombre_archivo.tbz2 Extrae el contenido

Pagina 17 de 25 Además de estos formatos, también existen descompresores para UNIX para casi todos los formatos comprimidos que existen (zip, rar, arj, ace, etc.).

3.6 Instalando nuevos programas y actualizando nuestro sistema dpkg - es la base del sistema de gestión de paquetes de Debian GNU/Linux. es similar a RPM en distribuciones como RedHat, Fedora, Mandrake y Mandriva. Se utiliza para instalar, quitar, y proporcionar información sobre los paquetes .deb. root@hostname:~# dpkg -i nombre_paquete.deb //Instala el paquete especificado ... root@hostname:~# dpkg -r nombre_paquete //Remueve el paquete especificado previamente instalado

Debian posee una serie de herramientas que es necesario llamar para construir un paquete:

• dpkg-source empaqueta y desempaqueta los archivos fuentes de un paquete Debian. • dpkg-gencontrol lee la información de un árbol fuente Debian desempaquetado y genera un paquete binario de control, generando una entrada para éste en el fichero debian/files. • dpkg-shlibdeps calcula las dependencias de ejecutables respecto a librerías. • dpkg-genchanges lee la información de un árbol fuente Debian desempaquetado y ya construido, generando un fichero de control de los últimos cambios (un .changes). • dpkg-buildpackage es un script de control que se puede utilizar para automatizar la construcción del paquete. • dpkg-distaddfile añade una entrada de un fichero a debian/files. • dpkg-parsechangelog lee el fichero de cambios changelog de un árbol fuente Debian desempaquetado y genera una salida con la información de estos cambios, convenientemente preparada. dpkg es en sí misma una herramienta de bajo nivel; se necesita un frontal de alto nivel para traer los paquetes desde lugares remotos o resolver conflictos complejos en las dependencias de paquetes. Debian cuenta con para esta tarea. apt - Advanced Packaging Tool, es un sistema de gestión de paquetes creado por el proyecto Debian. apt simplifica en gran medida la instalación y eliminación de programas en los sistemas GNU/Linux.

No existe un programa apt en sí mismo, sino que APT es una librería de funciones C++ que se emplea por varios programas de Línea de comandos para distribuir paquetes. En especial, apt-get y apt-cache.

Existen también programas que proporcionan un frontispicio para APT, generalmente basados en apt-get, como aptitude con una intefaz de texto ncurses, Synaptic con una interfaz gráfica GTK+, o Adept con una interfaz gráfica Qt. Existe un repositorio central con más de 15 000 paquetes apt utilizados por apt-get y programas derivados para descargar e instalar aplicaciones directamente desde Internet, conocida como una de las mejores cualidades de Debian.

Fue diseñado originariamente para trabajar con paquetes .deb, en lo sistemas Debian (y derivados), pero desde entonces ha sido modificado para trabajar con paquetes RPM (apt- rpm), y para funcionar en otros sistemas operativos, como Mac OS X (Fink) y OpenSolaris (distribución Nexenta OS).

En Debian apt hace uso del archivo /etc/apt/sources.list para buscar, descagar e instalar paquetes .deb, este archivo contiene direcciones (url's) de repositorios a los cuales se conecta para tal objetivo, si se desea incluir otro repositorio basta con incluir la url del mismo, en ocasiones para incluirlos hay que buscar un poco de

Pagina 18 de 25 información del repositorio ya que normalmente solicitan llaves (KEY's) para poder descargar los paquetes. root@hostname:~# apt-get update //actualiza las listas de paquetes de acuerdo a los repositorios ... root@hostname:~# apt-get upgrade //actualiza todos los paquetes del sistema ... root@hostname:~# apt-cache search palabra_buscar //lista los paquetes disponibles de acuerdo a la palabra ... root@hostname:~# apt-get install paquete //instala el paquete especificado ... root@hostname:~# apt-get remove paquete //remueve el paquete especificado ... root@hostname:~#

3.7 Controlando tareas y procesos

Control de Tareas es una utilidad incluida en muchos shells (incluidas Bash y Tcsh), que permite el control de multitud de comandos o tareas al momento. Antes de seguir, deberemos hablar un poco sobre los procesos.

Cada vez que se ejecuta un programa, se lanza lo que se conoce como proceso, que es simplemente el nombre que se le da a un programa cuando se esta ejecutando. El comando ps visualiza la lista de procesos que se están ejecutando actualmente, por ejemplo: root@hostname:~# ps PID TTY TIME CMD 7809 pts/0 00:00:00 su 7816 pts/0 00:00:00 bash 19338 pts/0 00:00:00 ps root@hostname:~#

La columna PID representa el identificador de proceso. La última columna COMMAND, es el nombre del proceso que se esta ejecutando. root@hostname:~# yes //ejecución del comando yes en primer plano ... Ctrl+z //paramos el proceso [1]+ Stopped yes > /dev/null root@hostname:~# yes > /dev/null //ejecución del comando yes pero redireccionando su salida

Ctrl+z //paramos el proceso [1]+ Stopped yes > /dev/null root@hostname:~# fg //volvemos a ejecutar el proceso en primer plano yes > /dev/null

Ctrl+z //paramos el proceso [1]+ Stopped yes > /dev/null root@hostname:~# bg //volvemos a ejecutar el proceso pero en segundo plano [1]+ yes > /dev/null & root@hostname:~# kill %1 //terminamos el proceso root@hostname:~# jobs [1]+ Terminado yes > /dev/null root@hostname:~# yes > /dev/null & //ejecución en segundo plano [1] 19736 root@hostname:~# jobs [1]+ Running yes > /dev/null & root@hostname:~# kill %1 ó kill 19736 root@hostname:~# jobs [1]+ Terminado yes > /dev/null root@hostname:~#

Cuando se desea consultar no solo los procesos del usuario, sino también todos los procesos del sistema se utiliza el comando ps con los parámetros -aux y -A, practica con ellos... root@hostname:~# yes > /dev/null &

Pagina 19 de 25 [1] 21498 root@hostname:~# ps -aux ... root@hostname:~# ps -A ... root@hostname:~# killall -KILL yes //elimina el proceso yes [1]+ Terminado (killed) yes > /dev/null root@hostname:~# ps -A ... root@hostname:~# ps -aux ... root@hostname:~# yes > /dev/null & [1] 21722 root@hostname:~# killall -HUP yes //elimina y reinicia un proceso [1]+ Colgado yes > /dev/null

3.8 Archivos de configuración

Antes de comenzar a revisar estos archivos, hago la aclaración que no vamos a analizarlos de manera detallada, ya que cada uno contiene especificaciones y configuraciones muy especilizadas y complejas para poderlas cubrir en este manual, por ello y si se desea profundizar más siempre encontraremos información en San google. Además de que no son todos los archivos de configuración... hay más...

/etc/hostname Este archivo almacena únicamente el nombre del host, o en ocasiones se relaciona con el nombre del equipo, pero va más relacionado con la instalación de linux de cada equipo.

~/.bashrc Los ficheros .bashrc permiten ejecutar comandos automáticamente al hacer login. ~/.bashrc se ejecutará cuando ingrese un usuario, y /etc/bash.bashrc cuando cualquiera lo haga. En cualquier caso primero se carga el archivo global y después carga el archivo del usuario.

/etc/fstab Este archivo contiene líneas donde se indica qué dispositivo debe “montar”, el lugar donde “montarlo”, así como el sistema de archivos y las opciones (en este archivo, se pueden poner dos opciones más: auto y noauto, que indican si se debe “montar” automáticamente al arrancar el sistema o no, respectivamente). Después de realizar cualquier cambio en el archivo y queremos que se actualicen los dispositivos y opciones especificadas, debemos ejecutar como root o con sudo el comando mount -A.

Para conocer que dispositivos de almacenamiento y particiones existen en mi sistema podemos utilizar el comando fdisk -l.

/etc/X11/xorg.conf Este archivo almacena toda la configuración necesaria para los que se conoce como levantar el “servidor X”, en otras palabras para trabajar en modo gráfico, debian y ubuntu como tal (no y ), trabajan con el sistema gráfico de gnome, este archivo especifica las librerías gráficas, las fuentes (fonts), los dispositivos de mouse, teclado y tochscreen (si lo tienen), monitor y tarjeta de video, así como la resolución de video, frecuencia del monitor, etc, etc, etc...

Si se desea configurar el X pero no se quiere editar el archivo podemos utilizar el comando Xorg -configure ó dpkg-reconfigure xserver-xorg.

/etc/network/interfaces Aquí se configuran todas las interfaces de red que se tengan en el sistema, se pueden configurar para direcciones IP estáticas o dinámicas para obtenerlas mediante dhcp.

Configuración del archivo /etc/network/interfaces

Pagina 20 de 25 auto lo iface lo inet loopback

auto eth0 iface eth0 inet dhcp

auto eth1 iface eth1 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 gateway 192.158.1.254 broadcast 192.168.1.255

Directorio de inicio: /etc/init.d/... En este directorio normalmente se almacenan los script's de inicio de las aplicaciones o servicios (como servidor) que mi sistema debe cargar cuando se levanta el sistema. para personalizar que debe levantar y que no se puede utilizar en distribuciones debian el comando rcconf.

/boot/grub/menu.lst GRand Unified Bootloader (GRUB) es un gestor de arranque múltiple que se usa comúnmente para iniciar dos o más sistemas operativos instalados en un mismo equipo.

4. Servidores

4.1 Servidor LAMP (Linux + Apache + MySQL + PHP)

El acrónimo LAMP se refiere a un conjunto de subsistemas software necesarios para alcanzar una solución global, en este caso configurar sitios web o Servidores dinámicos con un esfuerzo reducido.

En las tecnologías LAMP esto se consigue mediante la unión de las siguientes tecnologías:

* Linux, el sistema operativo; * Apache, el servidor web; * MySQL, el gestor de bases de datos; * Perl, PHP, o Python, lenguajes de programación.

Ampliamente promocionado por el editor de la editorial O'Reilly Dale Dougherty, a sugerencia de David Axmark y Monty Widenus desarrolladores de MySQL, la influencia de la editorial O'Reilly en el mundo del software libre hizo que el término se popularizara rápidamente en todo el mundo.

Para nuestro servidor instalaremos Apache 2, MySQL 5, PHP 5 y phpMyAdmin para la administración de MySQL vía web, y obviamente Linux (en este caso Debian o algún Ubuntu).

Algo que me gusto de las distribuciones de Linux basadas en Debian, fue el super apt, el cual nos permite hacer instalaciones de paquetes bien configurados y adaptados a nuestro sistema de manera fácil y sencilla. Podemos hacer la instalación de un solo golpe, pero primero vamos a instalar Apache 2 y PHP 5, para observar que se hace en cada instalación. root@hostname:~# apt-get install apache2 php5 libapache2-mod-php5

Pagina 21 de 25 Nota: si se desea la versión 4 de php, cambiar el número a php4, libapache2-mod-php4.

El archivo de configuración de Apache está en “/etc/apache2/apache2.conf” y debemos colocar nuestras carpetas web en “/var/www/”. Si por ejemplo queremos que al entrar a http://localhost/blog entremos a nuestro blog, debemos crear la carpeta /var/www/blog/ y dentro de ésta colocar los archivos respectivos (como la instalación de Wordpress por ejemplo). El usuario de apache es www-data y el grupo es www-data.

Ahora vamos a instalar nuestro motor de bases de datos con MySQL. root@hostname:~# apt-get install mysql-server mysql-client php5-mysql

Si hemos instalado PHP 4, reemplazamos el número por php4-mysql.

El archivo de configuración está en /etc/mysql/my.cnf, los archivos de las bases de datos se almacenan en el directorio “/var/lib/mysql/”, el usuario es mysql y el grupo es mysql. Por defecto, MySQL crea el usuario root sin contraseña, para poner una contraseña (recomendable), en consola: root@hostname:~# mysql -u root ... mysql> USE mysql; mysql> UPDATE user SET Password=PASSWORD('nuevo-password') WHERE user='root'; mysql> FLUSH PRIVILEGES; mysql> quit ... root@hostname:~# mysql -u root -p ...

Y listo!!!, ya tenemos nuestro servidor web instalado..., para probarlo solo necesitamos crear el siguiente archivo /var/www/index.php, el cual solo va a contener las siguientes lineas.

Como pueden observar la instalación fue sencilla, ahora como se instalaría phpmyadmin?

Por último para iniciar o parar el servicio de apache y mysql basta con utilizar los siguientes comandos root@hostname:~# /etc/init.d/apache2 stop //para el servidor de apache root@hostname:~# /etc/init.d/apache2 start //inicia el servidor de apache root@hostname:~# /etc/init.d/apache2 restart //reinicia el servidor de apache root@hostname:~# /etc/init.d/mysql stop //para el servidor de mysql root@hostname:~# /etc/init.d/mysql start //inicia el servidor de mysql root@hostname:~# /etc/init.d/mysql restart //reinicia el servidor de mysql

4.3 Servidor DHCP

“Añadir máquinas a una red implica un trabajo extra de configuración. Una solución centralizada que use un servidor DHCP para asignar las direcciones IP y otros

Pagina 22 de 25 parámetros a las máquinas clientes nos quitará un motón de dolores de cabeza a la hora de administrarlas.”

DHCP (Dynamic Host Configuration Protocol), un protocolo que instalado en un servidor de una red local, permite la configuración automática del protocolo TCP/IP de todos los clientes de dicha red. Nos permite evitar el tedioso trabajo de tener que configurar el protocolo TCP/IP cada vez que agregamos una nueva máquina a la red, por ejemplo, dirección IP, servidores DNS, gateway, WINS y alguna que otra cosa más muy interesante también. Con un servidor DHCP tendremos una red con máquinas "plug-and-play", con sólo conectarlas podrá dialogar con red.

Para la instalación simplemente usamos apt. root@hostname:~# apt-get install dhcp3-server

En la instalación nos debemos de interesar por dos archivos /etc/dhcp3/dhcpd.conf y /var/lib/dhcp3/dhcpd.leases, este último almacena todas la direcciones IP asignadas a cada equipo con algunas descripción de la maquina, pero el que más nos debe de interesar es el dhcpd.conf, ya que aquí es donde se establece toda la configuración de nuestro servidor.

Existen dos clases de entradas en el archivo de configuración, las que empiezan con la clave option y el resto. Las opciones (Tabla 2) son pasadas a las máquinas clientes desde el servidor DHCP. Si las maquinas clientes pueden o no utilizar esta información, dependerá del sistema operativo que se tenga instalado. El resto de las entradas son usadas por el servidor para su propio uso interno (Tabla 1).

Pagina 23 de 25 El siguiente ejemplo es para un red considerada pequeña, ya que supone que no más de 20 máquinas van a estar conectadas a la red al mismo tiempo.

Queremos que el servidor dhcpd asigne IPs en el rango 192.168.2.50 hasta 192.168.2.60. También vamos a hacer uso de un domain-name-server para establecer un servidor de nombres y routers para especificar la puerta de enlace. Si no se tiene un servidor de nombres en la red, usaremos el proporcionado por el proveedor de Internet (ISP).

Podemos observar que en las llaves que encierran la definición del segmento de red. Cada entrada en el archivo de configuración debe terminar con un punto y coma.

01 default-lease-time 3600; 02 max-lease-time 14400; 03 04 subnet 192.168.2.0 netmask 255.255.255.0 { 05 range 192.168.2.50 192.168.2.69; 06 option domain-name-servers 194.25.2.129; 07 option broadcast-address 192.168.2.255; 08 option routers 192.168.2.1; 09 }

Para controlar la ejecución del servidor dhcp, al igual que en apache, utilizamos los siguientes comandos. root@hostname:~# /etc/init.d/dhcp3-server stop //para el servidor de dhcp root@hostname:~# /etc/init.d/dhcp3-server start //inicia el servidor de dhcp root@hostname:~# /etc/init.d/dhcp3-server restart //reinicia el servidor de dhcp

4.4 Servidor Proxy (Squid)

Squid es un Servidor Intermediario (Proxy) de alto desempeño que se ha venido desarrollando desde hace varios años y es hoy en día un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix®. Es muy confiable, robusto y versátil y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL). Siendo sustento lógico libre, está disponible el código fuente para quien así lo requiera.

Entre otras cosas, Squid puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS y otras muchas más como filtración de contenido y control de acceso por IP y por usuario.

Squid consiste de un programa principal como servidor, un programa para búsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas herramientas para administración y y herramientas para clientes. Al iniciar Squid da origen a un número configurable (5, de modo predefinido a través del parámetro dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una búsqueda única en servidores DNS, reduciendo la cantidad de

Pagina 24 de 25 tiempo de espera para las búsquedas en servidores DNS.

Al igual que en los anteriores servidores la instalación sencilla: root@hostname:~# apt-get install squid

Squid es considerado un servidor intermedio (proxy) muy ligero pero al mismo tiempo es muy potente con todas las opciones de configuración que tiene, por lo que intentar explicar todas las opciones y formas de configuración se saldría del objetivo de este taller, por lo que esta última práctica la dejaremos al usuario buscar en san google una configuración básica del archivo /etc/squid/squid.conf, además de que con ello se darán cuenta de la variedad tan basta que tiene de configuración.

Nota: Para que el squid pueda responder a las peticiones de los clientes se debe de tener configurado la redirección de paquetes al puerto predeterminado en el servidor, esto se hace con iptables. root@hostname:~# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 root@hostname:~# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQUERADE

4.5 Servidor de correo (QMAIL)

Por último el servidor de correo qmail, no pretendo reinventar la rueda, por lo que solo les voy a recomendar seguir la mejor guía de instalación: http://www.qmailrocks.org

Pagina 25 de 25