Introducción al sistema operativo Linux Historia. El sistema más antiguo tipo UNIX se llamó MULTIX (MULTiplexed Information Computing System, Sistema de computación de información multiplexada) fue un proyecto de investigación llevado a cabo por GE, AT&T Bell Laboratories y el MIT a finales de los años 60's. En 1969, Ken Thompson y Dennis Ritchie y los investigadores de AT&T Bell Laboratories desarrollaron UNIX como una modificación de MULTIX para minicomputadoras. En 1973 Ken Thompson y Dennis Ritchie reescribieron el sistema operativo utilizando el lenguaje C, desarrollado por ellos mismos, lo cual permitió hacer el sistema portable a diferentes arquitecturas de hardware. Rápidamente UNIX creció y se desarrollo en dos ramas: El system V rama comercial del sistema, desarrollada por varias compañías como Sun Microsystems (Solaris), HP (HP/UX) y Silicon Graphics (IRIX). La rama académica BSD (Berkeley Software Distribution), versión no comercial de UNIX, de la cual derivan muchas distribuciones como FreeBSD y OpenBSD (con versiones para múltiples plataformas), así como, sistemas comerciales como Apple OS X. En 1984, Richard Stallman, fundó el proyecto GNU (Gnu's Not Unix) que se basa en toda una filosofía sobre el desarrollo del software. La idea de Stallman es crear un sistema operativo que sustituya a UNIX pero de código abierto, en el cual el usuario disponga del código
fuente de los programas y los pueda modificar y redistribuir En 1991 Linus Torvalds, un estudiante de ciencias de la computación de la universidad de Helsinky (Finlandia), publicó a través de internet un kernel de sistema operativo (clon de UNIX, escrito en lenguaje C), que rápidamente se difundió y desarrollo en la comunidad especializada. El proyecto GNU vio la oportunidad de utilizar el kernel de fuente abierta en su sistema; surgieron varias distribuciones GNU/Linux, entre las más populares se encuentran Debian, SUSE, RedHat y Mandrake. En la actualidad existen alrededor de 47 distribuciones GNU/Linux, muchas de ellas se pueden descargar de la red. Las compañías han adoptado como estrategia comercial mantener dos frentes de batalla, por un lado distribuyen una versión comercial, pero también apoyan proyectos de código libre. Por ejemplo, RedHat tiene el proyecto Fedora y Apple tiene el proyecto Darwin. Linux ha sido registrado bajo los términos de la Licencia Pública General- GPL (General Public License). Esta licencia, escrita por la Free Software Foundation (FSF), está diseñada para evitar que alguna persona restrinja la distribución de software. También significa que debe estar disponible el código fuente. Cualquiera puede modificar Linux y distribuir sus modificaciones, siempre que mantenga el código bajo la misma licencia.
Linux es solo un núcleo de sistema operativo (clon de UNIX). El proyecto GNU (Gnu's Not Unix) está dedicado a desarrollar un sistema operativo libre, de código abierto- seguro y funcional. Las distribuciones conocidas como linux, son en realidad distribuciones basadas en el sistema GNU con el núcleo Linux, la denominación correcta para estos sistemas es GNU/Linux.
Introducción a Linux El sistema operativo Linux se compone de tres elementos básicos: El kernel, el file system y el Shell. El kernel o núcleo del sistema operativo, gestiona los recursos del computador. Se ocupa de los discos, impresoras, líneas de comunicación. El File system: El sistema de archivos es la estructura para la organización de los datos, proporcionando los medios para el almacenamiento de la información. El Shell es el intérprete de órdenes. Es la parte que ve el usuario y traduce sus peticiones en acciones a realizar por el kernel y por programas.
debidamente redistribuirlo.
documentado
para
Licencia GPL: General public license es un software que puede usar libremente, se puede modificar y distribuir, pero no se pueden hacer restricciones de ninguna clase para su distribución. Se creó para evitar que se apropiaran de los derechos de autor. Fue promovido por la FSF (Free Software Foundation) Software de dominio público: puede ser copiado sin costo, pero no se puede distribuir. Prevalecen los derechos de autor del creador original. Freeware: software gratuito que se puede bajar de internet, pero no se puede modificar. Shareware: Software que se puede bajar gratis de internet, pero solo puede ser utilizado por un tiempo limitado. Después se debe pagar un costo por su uso. Distribuciones de Linux: Son las diferentes versiones y programas de aplicación creadas a partir de Linux, por usuarios o empresas. Las más conocidas son: Red hat, Slackware, Suse, Mandrake, Ubuntu.
Conceptos básicos
Kernel: Este es el componente principal del sistema operativo. Se encarga de asignar tareas y manejar el almacenamiento de datos. El kernel, es la parte residente en memoria del sistema operativo.
Software libre: Free software (open source), es una tendencia al desarrollo de software sin limitación de derechos de autor y bajo precio. Se puede ejecutar sin importar el propósito, se puede modificar y el código fuente debe estar en
Shell: Esta es la utilidad que procesa las peticiones de los usuarios. Cuando se ingresa un comando en la terminal, el shell lo interpreta y llama el programa deseado. También es un lenguaje de programación de alto nivel que puede utilizarse en la
combinación de programas de utilidad para crear aplicaciones completas. El shell puede soportar múltiples usuarios, múltiples tareas, y múltiples interfaces para sí mismo. Los dos shells más populares son el BourneShell (System V) y el Cshell (BSD Unix). Multiusuario: Dependiendo del equipo disponible, LINUX puede soportar desde uno hasta más de 100 usuarios, ejecutando cada uno de ellos un conjunto diferente de programas. Multitarea: Linux puede ejecutar varias tareas simultáneamente. Cada tares tiene asignado un espacio de memoria y una prioridad. Las tareas siguen líneas de ejecución distintas de forma que alguna de ellas puede quedar bloqueada sin afectar al resto de las tareas.
Multiplataforma: Linux corre en muchas CPUs distintas (Intel y AMD). Sistema de archivos: La estructura de archivos de Linux facilita la utilización de una gran cantidad de archivos. Utiliza una estructura jerárquica o de árbol que permite a cada usuario poseer un directorio principal con tantos subdirectorios como desee. Cada usuario es propietario de sus archivos y para ello cada fichero dispone de una serie de permisos.
Estructura del sistema operativo Los sistemas tipo UNIX, son pequeños programas que en conjunto realizan todas las funciones de interacción entre el usuario, los procesos y el hardware.
Un sistema operativo tipo UNIX se representa en forma de capas que interactúan entre sí, la capa mas interna representa el hardware de la computadora El hardware se comunica con el núcleo o kernel del sistema operativo; el núcleo es un programa que se encarga de administrar los procesos, los sistemas de archivos y de controlar el hardware del sistema por medio de controladores de dispositivo. El núcleo tiene un Entorno de sistema, que se encarga de la interacción entre el usuario, los programas (compiladores, editores), daemons (es un tipo especial de proceso informático que se ejecuta en segundo plano para dar algún tipo de servicio) y el núcleo. El entorno del sistema consta de muchos programas como por ejemplo interpretes de línea de comandos (Shell, que traduce los comandos ingresados por el usuario y los convierte en instrucciones que puede entender el Kernel), programas de administración (como fdisk), comandos de línea (como ls: lista el contenido de un directorio y cd: cambia de directorio).
Capas del sistema operativo Linux
Administración del sistema (Kernel) Linux, al ser un sistema operativo tipo Unix, se compone de capas.
El Shell La administración del sistema se lleva a cabo en la segunda capa, llamada Kernel o núcleo su principal objetivo es la administración de los recursos hardware y los procesos que se ejecutan. Sus funciones básicas son:
Creación de procesos Administración de estatus de procesos (activo, running, waiting, etc) Administración de memoria operativa y almacenamiento secundario (memoria RAM, memoria ROM, etc). Administración de dispositivos de hardware (discos duros, extraíbles, etc). Administración de comunicaciones (puertos, conexiones, puentes, redes). Interfaz para aplicaciones, con comunicación directa al kernel o bien, a través del Shell. Interfaz para usuarios, con línea de comandos (Bash) o con gestores de ventanas o interfaz gráfica (Gnome, KDE, Xfce, Fluxbox, etc).
Ambiente gráfico de Linux Linux tiene un entorno gráfico muy potente donde el usuario interactúa con la maquina. Este sistema gráfico se conoce como XFree86 o X- Windows. XFree86 es solo el modo grafico, la apariencia depende del sistema de ventanas del sistema operativo, como KDE, Gnome. A través del entorno grafico se puede manejar completamente el sistema, pero no es indispensable. Todas las operaciones administrativas se pueden realizar desde el modo texto, desde una terminal remota o consola.
Linux viene con un shell Bourne denominado bash, escrito por la organización “Free Software Foundation". El nombre bash proviene de Bourne Again Shell. Se trata de un shell Bourne avanzado: tiene las capacidades estándar de programación que se encuentran en todos los shells Bourne y además varias de las características interactivas que se encuentran en los shells C. bash es el shell predeterminado cuando se usa Linux. El Shell es un intérprete de órdenes, procesa las líneas de órdenes para determinar las acciones que se deben llevar a cabo. Determina de donde procede la entrada de la orden y a dónde va la salida. Luego el Shell, ejecuta el programa indicado en la orden, con los argumentos adecuados, es decir, con las opciones y nombres de archivos. Shell de presentación. Cuando un usuario ingresa al sistema, se inicia automáticamente un programa de Shell. Este Shell de presentación comúnmente es el Bash. Scripts especiales del usuario. Cuando se inicia el Shell, se busca un archivo llamado .bash_profile en el directorio del usuario. Este archivo contiene órdenes que personalizan su entorno. El Shell lee y ejecuta las instrucciones que contiene. Personalización del entorno. El usuario puede realizar modificaciones al entorno de trabajo en Linux, para que sean tenidas en cuenta al iniciar una sesión de trabajo.
Si se quiere ver el archivo .bash_profile, se debe teclear cat >> .bash_profile, esta orden permite añadir algunas instrucciones a este archivo.
Líneas de comando: La pantalla en donde se indican los comandos a ejecutar, indica que el sistema se encuentra esperando La petición de orden del sistema (prompt). El símbolo $, corresponde al usuario del sistema y # para el root. Cada símbolo indica que se está esperando una orden.
2.
Para cambiar la forma de petición de orden, use PS1= “Linux:>”. El texto entre comillas es a gusto del usuario. El cambio en la línea de comandos permanecerá hasta que se cierre sesión con exit, el comando logout o presionando <Ctrl><D> (guardar) Cada línea de órdenes termina con <Enter>, carácter que le indica al Shell que comience a procesar la orden. Los argumentos de la línea de comandos y las opciones modifican lo que hace la orden y la forma como lo hacen. Los argumentos generalmente son el nombre de uno o más archivos. Algunos símbolos y argumentos son instrucciones para el Shell Se usa > para redireccionar la salida de un archivo y | para utilizar la salida de una orden como entrada a otra.
Herramientas de desarrollo de software Existen herramientas para mejorar el desarrollo en Linux, que al igual están disponibles para usarse gratuitamente. 1.
Anjuta: Es un entorno de desarrollo para C/C++ avanzado.
3.
4.
5.
Es un servicio gratuito, de código abierto para el IDE (Entorno de desarrollo integrado) de C y C + + . Es fácil de instalar y ofrece características tales como la gestión de proyectos, un depurador interactivo y un poderoso editor de código fuente (con fuente de la navegación, de código, y el resaltado de sintaxis). Glade: es un RAD (desarrollo rápido de aplicaciones), guarda los proyectos en XML y puede generar código C para este meta-formato. Adicionalmente. el meta-formato puede ser convertido a otros lenguajes gracias a módulos. Incluye una serie de módulos de interfaz, tales como cuadros de texto, etiquetas de diálogo, entradas numéricas, casillas de verificación y menús para el desarrollo de interfaces más rápida. GCC: es un compilador GNU que funcione para C, C + +, Java,. Es una herramienta de línea de comandos muy potente. Quanta Plus: Editor HTML ideal para usuarios Linux en entorno KDE (interfaz grafica para linux), que ofrece un excelente navegador de directorios, que facilita el acceso de una manera fácil e intuitiva a los archivos HTML y gráficos alojados en el disco rígido, carpetas compartidas, periféricos o directamente en Internet. Cuenta también con un completo panel de previsualización. Kdevelop : El proyecto KDevelop fue iniciado en 1998 para diseñar un entorno de desarrollo integrado, fácil de usar, para C/C++ en Unix. Es un IDE (Integrated Development Environment, Entorno integrado de desarrollo)
para programar en C y C++ en Linux.
Instalación de Linux Los asistentes de instalación de Linux, facilitan el proceso de instalación del sistema. Los siguientes son los pasos generales: 1. Particiones de disco: Una partición es una división lógica del disco duro, la cual permite tener separadamente varios sistemas operativos o datos. Cuando ya se tiene instalado un sistema operativo y no haya espacio para la creación de una nueva partición, es necesario liberar en el sistema actual espacio en disco (800 Mb a 2 Gb).
2. Al obtener el espacio necesario se procede a instalar. El tamaño de la partición debe tener en cuenta: Partición /boot /home / Swap
Tamaño 5 Mb por debajo del cilindro 1024 200Mb o mas de acuerdo el número de usuarios El restante No mayor a 2 veces el tamaño de la memoria
Swap: Memoria virtual. Es una técnica de gestión que ayuda a la ejecución de programas y el manejo de sus entornos de manera parcial, es decir que no tienen que estar completamente en memoria principal. 3. Selección de Software: Se debe especificar la lista de los programas que se desean instalar.
El root o superusuario puede agregar o desinstalar paquetes después de la instalación del sistema. 4. Asignación del Root: Linux solicita al usuario que ingrese la clave del root, Si no aparece esta pregunta, la clave debe ser <Enter>. 5. Instalación del LILO: (Linux Loader), es el programa que permite cargar Linux en la memoria y darle el control. Se debe decidir si se instala en el MBR o en la partición reservada para el Boot, opción recomendada. MBR: Master Boot Record, es el primer sector del disco duro, ubicado en el cilindro 0, cabeza 0, sector 1. Su función es mantener información que permita dividir lógicamente el disco duro en zonas más pequeñas denominadas particiones El MBR está compuesto por 3 partes: el código de arranque (446 Bytes), la tabla de partición (64 Bytes) y un número mágico 55h, AAh (2 Bytes, que es una constante que valida la información contenida en el sector de arranque). 6. Configuración del XFree86: Es fundamental para que el modo grafico funcione correctamente. Este proceso puede ser transparente para el usuario, pero es posible que se tenga que configurar la tarjeta de video o resolución del monitor.
Algunos comandos iniciales
Bibliografía.
<Ctrl><Alt>F1: se accede al Shell de Linux
Richard Petersen, Manual de referencia, Linux. Osborne, McGraw-Hill. 1a edición en español, 2001.
Cat [archivo1] [archivo2] .muestra el contenido de uno o varios archivos. ls [opciones] [archivos]; -(list)- Lista el contenido de un directorio, mostrando todos los archivos que cumplan cierto patrón pwd: imprime en pantalla cuál es la ubicación actual en el árbol de directorios del sistema de ficheros cd [directorio]; Cambia de directorio, sin argumentos se llega a home. mkdir [opciones] directorio; Crea un directorio. rmdir [opciones] directorio; Borra directorios. Man: ver manuales Su: cambiar a superusuario Exit: salir <Ctrl><Alt> suprimir: reinicia el sistema adecuadamente Clear: Limpia pantalla
passwd; Permite cambiar la contraseña. whoami ; muestra el nombre de usuario efectivo. logname ; muestra el nombre de usuario. id [usuario]; muestra datos de identi_caci_on del usuario (uid, gid, grupos, etc.)
Carlos Eduardo Gómez Montoya, Julián Esteban Gutiérrez Posada. Linux: comandos y conceptos. 2000 Manuel Sergio Jaime Rodríguez http://thales.cica.es/files/glinex/practicasglinex05/guadalinex/linux/Unidad%201.p df http://www.paraisogeek.com/como-seorganiza-el-sistema-linux/ http://www.somoslibres.org/modules.php? name=News&file=article&sid=2529