UNIVERSIDAD DE COSTA RICA ESCUELA DE INGENIERÍA ELÉCTRICA Programación Bajo Plataformas Abiertas IE-0117 Profesor: Francisco Siles Canales Asistente: Félix Suarez Bonilla Tarea 1 98/100 Grupo 1 Estudiante: Christian Chaves Bejarano A81740 1. ¿Qué es Linux? Mencione 5 corporaciones o empresas internacionales utilizando Linux. Mencione 3 empresas en el mundo que brinden servicios de mantenimiento instalación y desarrollo sobre software libre. 8/10 Linux es un sistema operativo, compatible Unix. Dos características muy peculiares lo diferencian del resto de sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningun tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente. La definición de software libre es más amplia ... es que respeta la libertad de los usuarios ... software El sistema lo forman el núcleo del sistema (kernel) más un gran número de programas / bibliotecas que hacen posible su utilización. Muchos de estos programas y bibliotecas han sido posibles gracias al proyecto GNU, por esto mismo, muchos llaman a Linux, GNU/Linux, para resaltar que el sistema lo forman tanto el núcleo como gran parte del software producido por el proyecto GNU. El software libre suele estar disponible en forma gratuita, pero no requisito ... puede ser de pago y ser distribuido comercialmente. Linux se distribuye bajo la GNU General Public License por lo tanto, el código fuente tiene que estar siempre accesible y cualquier modificación ó trabajo derivado tiene que tener esta licencia. es un Linux hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel entonces un estudiante de informática de la Universidad de Helsinki, llamado Linus Torvalds. Hoy en día el sistema continúa siendo diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinacion de Torvalds. Empresas utilizando Linux: Amazon: amazon web service implementa el sistema operativo Linux Intel: esta empresa implenta su propio sistema operativo basado en Linux. AMD: apuesta por la incorporación de Linux en sus nuevos controladores con la finalidad de competir con sus grandes rivales. Hewlett-Packard: HP hizo pública una importante declaración destinada a proteger a sus clientes y a reafirmar su liderazgo y compromiso con Linux. Sony Entertainment: el videojuego Play Station III fabricado por esta empresa de renombre mundial posee su propio sistema operative Linux. Empresas en el mundo que brinden servicios de mantenimiento instalación y desarrollo sobre software libre. Oracle: Oracle ofrece un conjunto de sistemas de hardware y software de negocios integrados y optimizados que ayuda a las organizaciones a superar la complejidad y empezar a innovar. Las últimas versiones de Oracle han sido certificadas para poder trabajar bajo GNU/Linux. IBM: Esta empresa está comprometida a brindar a los clientes el hardware que mejor se adapte a sus cargas de trabajo implementando un entorno operativo Linux con el fin de reducir costos. Xtech: XTech brinda asesoría técnica y realiza migraciones a software libre, generalmente desde software propietario. 2. ¿Qué es GNU? 10/10 GNU es un proyecto iniciado por Richard Matthew Stallman con el fin de crear un sistema operativo similar a UNIX pero con licencia que permitiese el acceso al código fuente, además de la distribución y copia que pudiese ser utilizado para cualquier fin. EL GNU es el acrónimo recursivo de “GNU is Not Unix”, una costumbre muy popular entre los hackers informáticos para nombrar diferentes proyectos o diseños. Stallman cuenta así su propia desición: “La elección fácil era unirme al mundo del software propietario, firmar los acuerdos de no revelar y prometer que no iría en ayuda de mi amigo hacker. Es muy probable que desarrollara software que se entregaría bajo acuerdos de no revelar y de esa manera incrementara también las presiones sobre otra gente para que traicionaran a sus compañeros. Podría haber hecho dinero de esta manera, y talvez me hubiese divertido escribiendo código. Pero sabía que al final de mi carrera al mirar atrás a los años construyendo paredes dividir a la gente, sentiría que usé mi vida para empeorar el mundo” Stallman, tomado de [1] Muy bien! El proyecto GNU tuvo una gran acogida. Cientos de programadores de todo el mundo se identificaron con su manifiesto fundacional y comenzaron a colaborar y producir componentes del futuro sistema operativo libre. 3. ¿Qué es una distribución de Linux? Menciones 10 distribuciones de Linux y comente sus principales características, además de las principales diferencias entre ellas. 15/15 Por su propio espíritu el software libre se ramifica en una serie de comunidades de usuarios y programadores aglutinados en torno a proyectos surgidos de necesidades concretas. Este modo de desarrollo produce una cierta dispersión del software disponible en cada momento y no existe una entidad autorizada o centralizada responsable de GNU/Linux. No obstante para que un sistema operativo funcione sin problemas y sea fácil de instalar es necesario un trabajo de coordinación de sus distintos componentes: kernel, librerías aplicaciones de usuario, entorno gráfico, etc. Este trabajo de configuración y mantenimiento se realiza en los sistemas operativos libres bajo el soporte de las llamadas distribuciones. Una distribución es por tanto un sistema GNU/Linux que integra kernel, un conjunto de aplicaciones de sistema y una colección de programas de usuario listo para instalar. Son como los helados que están hechos con la misma materia prima y los hay de muchos sabores. Cada sabor sería una distribución GNU/Linux. Tomado de [1] Muy bien! Actualmente existen más de 300 disribuciones de GNU/Linux y su número es creciente en la medida en que cada vez resulta más fácil hacer una distribución propia a partir de las existentes. Entre ellas destacamos: Ubuntu Distribución basada en Debian, con lo que esto conlleva y centrada en el usuario final y facilidad de uso. Muy popular y con mucho soporte en la comunidad. El entorno de escritorio por defecto es GNOME. REDHAT ENTERPRISE Esta es una distribución que tiene muy buena calidad, contenidos y soporte a los usuarios por parte de la empresa que la distribuye. Es necesario el pago de una licencia de soporte. Enfocada a empresas. FEDORA Esta es una distribución patrocinada por RedHat y soportada por la comunidad. Facil de instalar y buena calidad. DEBIAN Otra distribución con muy buena calidad, fundada en agosto de 1993 por Ian Murdock. El proceso de instalación es quizás un poco más complicado, pero sin mayores problemas. Gran estabilidad antes que últimos avances. OpenSuSE Otra de las grandes. Facil de instalar. Version libre de la distribucion comercial SuSE. SuSE LINUX ENTERPRISE Otra de las grandes. Muy buena calidad, contenidos y soporte a los usuarios por parte de la empresa que la distribuye, Novell. Es necesario el pago de una licencia de soporte. Enfocada a empresas. SLACKWARE Esta distribución es de las primeras que existio. Tuvo un periodo en el cual no se actualizo muy a menudo, pero eso es historia. Es raro encontrar usuarios de los que empezaron en el mundo linux hace tiempo, que no hayan tenido esta distribucion instalada en su ordenador en algun momento. GENTOO Esta distribución es una de las unicas que incorporaron un concepto totalmente nuevo en Linux. Es una sistema inspirado en BSD-ports. Podeis compilar/optimizar vuestro sistema completamente desde cero. No es recomendable adentrarse en esta distribucion sin una buena conexion a internet, un ordenador medianamente potente (si quereis terminar de compilar en un tiempo prudencial) y cierta experiencia en sistemas Unix. KUBUNTU Distribución basada en Ubuntu, con lo que esto conlleva y centrada en el usuario final y facilidad de uso. La gran diferencia con Ubuntu es que el entorno de escritorio por defecto es KDE. MANDRIVA Esta distribución fue creada en 1998 con el objetivo de acercar el uso de Linux a todos los usuarios, en un principio se llamo Mandrake Linux. Facilidad de uso para todos los usuarios. 4. ¿Quién es el dueño de Linux? 10/10 Si bien es cierto el creador y fundador de Linux fue en ese entonces un estudiante de nombre Linus Torvalds, en la década de los 90, este sistema operativo es un claro ejemplo del software libre que se rige bajo los términos de la GPL (General Public License), la cual es una licencia creada por Free Software Foundation en 1989, la cual está orientada principalmente a proteger la libre distribución, modificación y uso de software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios. 5. Investigar las siguientes aplicaciones. ¿Cuál es la función de cada uno de ellos? Firefox: navegador de Internet multiplataforma desarrollado por Mozilla. K3b: acrónimo del inglés KDE Burn Baby Burn, es el grabador de CD y DVD oficial del escritorio KDE. Es software libre, muy potente y completo. Pertenece al módulo KDE Extragear, que le permite tener su propio ciclo de publicación diferente del resto de KDE. Kate: Kate es un editor de textos para el entorno de escritorio KDE. Kate significa KDE Advanced Text Editor, es decir Editor de textos avanzado para KDE. 10/10 Gimp: herramienta de edición de imágenes con características similares a Photoshop. Existe una versión portátil de GIMP que puede ser transportada y usada directamente desde una memoria USB sin necesidad de instalarse en el ordenador. Xawtv: aplicación que permite mostrar canales de television mediante el manejo de la tarjeta de televisión. Este soporta dispositivos en video4linux y la extensión Xvideo. Wine: reimplementación libre de la API de Windows (Win16 y Win32), es decir, un proyecto que permite ejecutar programas diseñados para Windows bajo sistemas operativos de la familia Unix. VirtualBox: Sun xVM VirtualBox es un software de virtualización para arquitecturas x86 que fue desarrollado originalmente por la empresa alemana Innotek GmbH, pero que pasó a ser propiedad de la empresa Sun Microsystems en febrero de 2008 cuando ésta compró a innotek. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como “sistemas invitados”, dentro de otro sistema operativo “anfitrión”, cada uno con su propio ambiente virtual. Por ejemplo, se podrían instalar diferentes distribuciones de GNU/Linux en VirtualBox instalado en Windows XP o viceversa. Kino: es un editor de vídeo digital para Linux que permite capturar vídeo de una cámara DV, recortar los clips creados, añadir algunos efectos y exportar a formatos como MPEG-1, MPEG-2, VCD, SVCD o DVD. Vlc: reproductor multimedia multiplataforma y de código abierto que permite reproducir prácticamente todos los formatos de vídeo y audio más utilizados en la actualidad (MPEG, DivX, WMV, AVI, MOV, MP4, MKV, FLV, MP3, OGG…). Kdenlive: Un potente editor de video no lineal para entornos de escritorio KDE. Kdenlive tiene soporte de todos los formatos FFmpeg (tal como MOV, AVI, WMV, MPEG,XviD, y FLV), y también soporta las razones de aspecto 4:3 y 16:9 para PAL, NTSC y varios estándares HD, incluyendo HDV. El video puede exportarse a dispositivos DV, o escribirse en DVD con capítulos y un menú simple. 6. Investigar los siguientes comandos de consola. Explicar en detalle cada uno de ellos. Menciones y explique un ejemplo de utilización para cada uno de ellos. 20/20 Cd Change directory: cambiar directorio. Podemos usarlo con rutas absolutas o relativas. En las absolutas le indicamos toda la ruta desde la raíz (/). Por ejemplo, estemos donde estemos, si escribimos en consola… $ cd /etc/apt …nos llevará a esa carpeta directamente. Del mismo modo si escribimos… $ cd / …nos mandará a la raíz del sistema de ficheros. Las rutas relativas son relativas a algo, y ese algo es la carpeta donde estemos actualmente. Imaginad que estamos en /home y queremos ir a una carpeta que se llama temporal dentro de vuestra carpeta personal. Con escribir… $ cd tu_carpeta/temporal …nos situará allí. Como hemos obviado el /home inicial ya que si no lo introducimos toma como referencia el directorio donde estamos, que es ese. Ls Es de los comandos básicos que todo usuario de Linux debe aprender. Nos muestra el contenido de la carpeta que le indiquemos después. Por ejemplo. Si queremos que nos muestre lo que contiene /etc: $ ls /etc Si no ponemos nada interpretará que lo que queremos ver es el contenido de la carpeta donde estamos actualmente: $ ls Además acepta ciertos argumentos que pueden ser interesantes. Para mostrar todos los archivos y carpetas, incluyendo los ocultos: $ ls -a Para mostrar los archivos y carpetas junto con los derechos que tiene, lo que ocupa, etc: $ ls -l Apt-get Apt proviene advanced packets tool: herramienta avanzada de paquetes. Es uno de los comandos más útiles que se han desarrollado en los sistemas GNU/Linux debian o basados en esta distro. Nos permite comprobar actualizaciones, actualizar todo el sistema. También nos ofrece funcionalidad para buscar, descargar e instalar paquetes con una sola orden. Apt-cache El comando apt-cache nos permite realizar operaciones basados en la información de los paquetes que tenemos en nuestros repositorios. Este comando no realiza cambio alguna en el sistema, simplemente nos permite obtener información de los paquetes. ORDENES Las opciones que pueden ser utilizadas con el comando apt-cache son: add nombre_fichero: Añade información de paquetes a los repositorios. Este opción debe ser seguida por uno o mas nombre de paquetes. gencaches: Genera la caché de los paquetes fuentes y de los binarios a partir de los repositorios listados en /etc/apt/sources.list y de /var/lib/dpkg/status. showpkg nombre_paquete: Muestra las dependencias (normales) y dependencias inversas del paquete listado. Las dependencias normales deben cumplirse al instalar un paquete, las inversas no son obligatorias. stats: Muestra diferentes tipos de estadísticas acerca de la cache de paquetes de los repositorios. showsrc paquete(s): Muestra todos los campos de los paquetes fuentes que coincidan con los paquetes listados. dumpavail: Muestra un listado de todos los paquetes que están disponibles en los repositorios. unmet: Muestra un resumen de todas las dependencias incumplidas entre los paquetes de los repositorios. show nombre_paquete: Muestra la información del paquete listado en la línea de comandos. Útil para realizar la búsqueda de paquetes antes de instalación. search exp-regular: Realiza una búsqueda en el nombre y descripción de los paquetes y muestra un pequeño resumen de los que coincidan. Acepta expresiones regulares como nombre de paquetes. Se puede utilizar con la opci'on--full para mostrar la descripción completa (como la opción show) y la opción --names-only para mostrar sólo los nombre de los paquetes en los resultados. Dpkg-reconfigure Permite la reconfiguración de un paquete ya instalado Aptitude aptitude: aptitud, habilidad. En el fondo juega con las siglas de apt para crear aptitude. Es una versión mejorada de apt. Si os habéis fijado en todos los manuales y entradas donde había un proceso de instalación he usado aptitude en lugar de apt. El segundo es quizá el más extendido al ser el que vio la luz primero. apt cuando instala algo te puede realizar una sugerencia para que instales algo más que te podría venir bien, pero no lo hace. Hay programas que a la vez usan otros para algunas de sus funciones u opciones. apt no instalaría los segundos, como mucho te avisaría. Sin embargo aptitude sí que lo instalará porque sabe que de alguna forma es indispensable para el que has pedido. Ssh SSH es un programa que permite acceder a otro ordenador a través de la red, ejecutar comandos en la máquina remota y mover ficheros entre dos máquinas. Provee autenticación y comunicaciones seguras sobre canales inseguros. Es un reemplazo de rlogin, rsh y rcp. El comando ssh ofrece comunicación encriptada y segura entre dos sistemas sobre una red no segura. Este comando reemplaza al telnet, rlogin, rsh. Ejemplo para iniciar una sesión en otra máquina usando ssh: [usuario1@localhost usuario1]$ ssh usuario1@servidor.dominio.es The authenticity of host 'servidor.dominio.es (192.168.0.2)' can't be established. RSA key fingerprint is 97:4f:66:f5:96:ba:6d:b2:ef:65:35:45:18:0d:cc:29. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'servidor.dominio.es' (RSA) to the list of known hosts. usuario1@servidor.dominio.es's password: [usuario1@servidor.dominio.es usuario1]$ Scp El comando scp permite copiar ficheros entre dos máquinas. Utiliza ssh para la transmisión de la información, por lo que ofrece la misma seguridad que el ssh. De la misma manera utiliza los métodos de autenticación dessh. Este comando reemplaza al rcp, ftp. Este es un ejemplo de uso del scp para copiar desde la máquina local a una remota: [usuario1@localhost]scp /tmp/file usuario1@servidor.dominio.es:/tmp También podemos copiar ficheros entre dos máquinas remotas: Ejemplo [usuario1@localhost]scp usuario1@anotherhost:/tmp/file \ usuario1@servidor.dominio.es:/tmp Lsmod Despliega la información referente a los módulos que están habilitados por el "kernel". Ps El comando ps muestra por pantalla un listado de los procesos que se están ejecutando en el sistema. Si no añadimos ningún parámetro, ps mostrará los procesos del usuario con el que estamos logueados. Por otra parte, los parámetros más básicos a conocer son los siguientes: -aux Lista los procesos de todos los usuarios con información añadida (destacamos más abajo). -a Lista los procesos de todos los usuarios. -u Lista información del proceso como por ejemplo el usuario que lo está corriendo, la utilización de Cpu y memoria, etc. -x Lista procesos de todas las terminales y usuarios -l Muestra información que incluye el UID y el valor “nice“. –forest – Muestra el listado procesos en un formato tipo árbol que permite ver como los procesos interactuan entre si, podría ser algo similar al comando pstree. Grep Este comando realiza una búsqueda en los ARCHIVOs (o en la entrada estándar, si no se especifica ninguno) para encontrar líneas que concuerden con PATRÓN. Por defecto grep imprime en pantalla dichas líneas. Sus opciones más interesantes son: -c Modificar la salida normal del programa, en lugar de imprimir por salida estándar las líneas coincidentes, imprime la cantidad de líneas que coincidieron en cada archivo. -e PATRÓN Usar PATRÓN como el patrón de búsqueda, muy útil para proteger aquellos patrones de búsqueda que comienzan con el signo «-». -f ARCHIVO Obtenee los patrones del archivo ARCHIVO -H Imprimir el nombre del archivo con cada coincidencia. -r Buscar recursivamente dentro de todos los subdirectorios del directorio actual. El patrón de búsqueda normalmente es una palabra o una parte de una palabra. También se pueden utilizar expresiones regulares, para realizar búsquedas más flexibles. Du Este comando informa al usuario de la cantidad de almacenamiento utilizado por los archivos especificados, posee varias opciones: Sus opciones más significativas son: -s Muestra únicamente los tamaños de los archivos especificados en la línea de comandos. -h Muestra los tamaños de archivo en un formato más legible. -c Muestra en pantalla el espacio total ocupado por los archivos especificados. -x Omite en el conteo aquellos directorios que pertenezcan a otro sistema de archivos. 7. Investigar los siguientes archivos de sistema. Explicar en detalle la función de cada uno de ellos. 15/15 La mayoría de los sistemas Unix tienen una distribución estándar de archivos, de esta forma los recursos que el sistema posee y los archivos, serán fácilmente localizados. Esta distribución forma el árbol de directorios el cual comienza con /, también conocido como directorio raíz. Luego de este directorio continúan algunos subdirectorios de carácter muy importante como: /bin, /etc, /dev, /usr. /etc/sources.list Dado que inicialmente se encuentra el subdirectorio /etc. Vamos a contener una serie de archivos de configuración del sistema. Dentro del subdirectorio /etc/sources.list podremos encontrar la lista de los repositorios. /etc/fstab De nuevo debido a que inicialmente se encuentra el subdirectorio /etc. Vamos a contener una serie de archivos de configuración del sistema. Luego en específico el subdirectorio /etc/fstab contiene información sobre los dispositivos que se montaran automáticamente durante el arranque del sistema. /etc/grub/menu.Ist Dado que inicialmente se encuentra el subdirectorio /etc. Vamos a contener una serie de archivos de configuración del sistema /etc/passwd En el subdirectorio o archivo /etc vamos a contener una serie de archivos de configuración del sistema. Luego el archive en específico controla el uso de usuarios, en contraseñas, con permisos y grupos que pertenecen a cada usuario, archivo muy importante si uno quiere tener un superusuario además que el ya conocido root. /etc/group El archivo /etc/group contiene una lista de los usuarios que pertenecen a los diferentes grupos. De hecho, cada vez que un gran número de usuarios puede tener acceso al sistema, frecuentemente se los ubica en grupos diferentes, cada uno de los cuales posee sus propios derechos de acceso a los archivos y directorios. /etc/network/interfaces Dado que inicialmente se encuentra el subdirectorio /etc. Vamos a contener una serie de archivos de configuración del sistema que nos permite tener las interfaces de la red. /etc/resolv.conf Vamos a contener una serie de archivos de configuración del sistema, en este caso poseemos la configuración necesaria para poder resolver los nombres de los servidores en Internet. /var/log/syslog El subdirectorio /var, contiene directorios que a menudo cambian su tamaño o tienden a crecer. Muchos de estos directorios solían residir en /usr, pero desde que estamos tratando de dejarlo relativamente inalterable, los directorios que cambian a menudo han sido llevados a /var. El subdirectio en específico /var/log/syslog, contiene varios archivos de interés para el administrador del sistema, específicamente históricos del sistema, los cuales recogen errores o problemas con el sistema. Otros archivos guardan las sesiones de presentación en el sistema, así como los intentos fallidos. /proc/versión El subdirectorio en general /proc representa a las procesos en ejecución. Aquí se encuentra archivos que reciben o envían información al núcleo. En este sistema de archivo en específico /proc/versión, se brinda y almacena la información de la versión del kernel. /proc/cpuinfo Su contenido representa a las procesos en ejecución. Aquí se encuentra archivos que reciben o envían información al núcleo. Referencias: 10/10 [1] Maynor Fco. Gómez Torres (Marzo 2009). Introducción a Linux. Ubuntu en live CD. Madrid. [2] http://www.linux-es.org/sobre_linux [3] http://www.xtech.com.ar/servicios.html [4] http://www.oracle.com/us/corporate/history/index.html [5] http://www-03.ibm.com/linux/ [6] http://www.muylinux.com/2011/07/08/amd-apostara-por-linux/ [7] http://www.hp.com/latam/gr/linux.html [8] http://www.gnu.org/ [9] http://techtastico.com/post/100-aplicaciones-imprescindibles-para-ubuntu-linux/ [10] http://www.guia-ubuntu.org/index.php?title=K3b [11] http://virtualbox.es/ [12] http://doc.ubuntu-es.org/Sistema_de_archivos [13] http://rm-rf.es/el-comando-ps-listar-y-manejar-procesos/