Empezando a conocer a GNU/Linux:
El Kernel o núcleo.
El kernel, es decir, el núcleo de Linux es el componente más importante del sistema operativo. Podríamos decir que es la base que va a soportar a todo el sistema que más adelante se construirá sobre él. Sin el Corazón del sistema (en realidad el kernel es el embrión diseñado por Linus Torvals que luego dio origen a todo lo que hoy conocemos como Linux), nada podría funcionar…, en realidad sin el kernel el resto del sistema es impensable.
Las tareas o funciones principales que lleva a cabo este núcleo son:
A) La planificación y llevar a cabo la ejecución de los diferentes procesos repartiendo el tiempo entre ellos en función de prioridades establecidas y algoritmos determinantes de dicha planificación de las diferentes tareas.
B) La gestión de la entrada/salida y la jerarquía del sistema de ficheros.
C) La administración de las funciones de bajo nivel para controlar todo el hardware.
El usuario casi nunca va a necesitar tocar nada en el núcleo del sistema salvo que le surja la necesidad de actualizarlo o modificar su configuración, ya que el manejo del kernel, aunque no es una tarea imposible, sí es delicada y debería ser perfectamente conocido lo que se quiere hacer y cómo se quiere hacer, ya que una manipulación incorrecta a la hora de recompilarlo podría darnos efectos indeseados.
Un Kernel típico puede constar de más de 20.000 líneas de código de las cuales un 80% está escrito en C y el resto depende de la máquina. Por ello, aunque no es imprescindible, es muy aconsejable que cualquier persona que quiera retocar algo en el núcleo conozca básicamente este lenguaje de programación.
Linux ofrece los ficheros fuente del Kernel bajo la licencia GPL. Estos ficheros tienen el nombre linux-x.y.z.tar, donde x.y.z es el número de la versión.
Ya que, como hemos apuntado antes, la tarea de modificación del kernel de Linux no es tarea fácil ni útil para todo el mundo, creemos que queda fuera de los objetivos de estos apuntes ir más allá en la explicación del proceso de compilación, pero, como siempre en este sistema, existen muchos recursos disponibles en línea para obtener información completa sobre este asunto.
¿Qué es la Shell del sistema?
La Shell de Linux es el programa que recibe información del usuario mediante la entrada estándar por órdenes o ficheros y que transforma en instrucciones que puedan ser entendidas por el Kernel. Además de ser un intérprete de comandos similar a lo que era el command.com en MS-DOS,, la shell es un lenguaje de programación bastante potente que soporta múltiples usuarios, múltiples tareas y varias interfaces. Esto hace pues, que la Shell termine por resultar muchísimo más poderosa que la que tenía el viejo dos. Al igual que en MS-DOS o en FreeDos se pueden generar miniprogramas llamados archivos de procesamiento por lotes y que tienen la extensión bat que se encargan de generar series de comandos para ayudarnos en determinadas tareas del sistema que nos pueden resultar penosas de hacer, en la sehll de linux existen estos mismos procesos por lotes pero tremendamente potenciados, se les conoce como scripts y suelen tener la estensión .sh y llegan casi a ser un verdadero lenguaje de programación.
Al hilo de la extensión sh de los ficheros de scripts adelanto aquí algo en lo que más adelante nos pararemos algo más, pero que considero que es vueno que se vaya conociendo ya. Los ficheros y carpetas de linux normalmente no tienen extensión. Bueno esto no es del todo cierto, muchos ficheros y carpetas tienen extensión pero esta simplemente es indicativa de una posible utilidad de la misma, pero, al contrario que en los sistemas DOS y Windows, las extensiones no hacen a un archivo, es decir, en windows un archivo exe es un archivo ejecutable y el sistema como tal lo trata de ejecutar cuando lo invocamos, o un dll es una librería dinámica, en linux cada archivo es gestionado por el sistema según sea su permiso, es decir, un archivo llamado «programa» si tiene un atributo de ejecutable será ejecutado como programa por el sistema; un archivo llamado «programa.exe» que no tenga el atributo de ejecutable, aunque fuera un programa el sistema no lo entendería como tal. Así que de momento lo que me interesa es que os vayais olvidando de las extensiones como info de atributo de archivo ejecutable. No obstante esto lo profundizaremos más adelante y ahora seguimos con lo que estábamos, que me disperso y esto no es bueno.
El prompt o indicativo de la línea de comandos es la señal con la que el shell indica que está preparado para recibir una orden. Se representa por los signos # o $, dependiendo si se está trabajando como usuario o como root (superusuario), y su aspecto es configurable por el usuario.
Linux ofrece la posibilidad de usar varias shells:
– sh (Bourne Shell): /bin/sh
– ksh (Korn shell): /bin/ksh
– csh (C Shell): /bin/csh
– bash (Bourne Again Shell): /bin/bash
Las dos shell más populares en Unix son el Bourne Shell (System V) y el Cshell (BSD Unix). En Linux es el Bourne Shell (bash) una variante del Bourne clásico
que incluye características más avanzadas y que hoy en día va a ser la que nos aparezca instalada por omisión en la mayor parte de las distribuciones linux más populares.
Para cambiar la shell actual deberás usar el comando: chsh. Pero posiblemente nunca necesitarás hacerlo si no eres de esas personas trasteadoras.
Una vez que un usuario normal accede al sistema con su login y su password, se le cede el control a la shell, la cual normalmente ejecuta dos ficheros de
configuración: el general /etc/profile y el particular /home/DirectorioUsuario/.profile. A continuación la propia shell despliega el literal «inductor
de coma> ESTRUCTURA DE DIRECTORIOS Y ARCHIVOS
Estructura de ficheros