BUSCAR

CIENCIA

psicología (0)salud y cuerpos (2)sociedad (2)investigación ecológica (2)

CULTURA

biografías infames (3)historia (5)cultura agroambiental (3)espiritualidad (0)gastronomía (0)sexo (4)personajes de la gráfica (0)reporte multicultural RSJ (1)sociedad y política (9)

TECNOLOGIA

opensource (4)tecnología sostenible (6)tecnología antigua (0)sociopolítica digital (0)tutoriales (5)criptoeconomía (0)gadgets (1)

ENTRETENIMIENTO

biografías musicales (2)curiosidades del mundo (1)anime y manga (0)videojuegos (0)

Linux para principiantes 3: estructura del sistema

tecnología
Responsable del artículo: Miqi SG

14/12/2021 | Sección: tecnología

Temas: opensource, tutoriales.

Descripción: software y hardware de código abierto, adquiere nuevas habilidades tecnológicas.

Linux para principiantes 3: estructura del sistema

Si te encuentras migrando de un sistema como Windows, seguramente te preguntarás ¿dónde está Mis Documentos? ¿dónde esta Archivos de Programa? ¿en dónde se instalan mis aplicaciones? ¿si en Windows hay un folder de archivos altamente sensibles, llamado "windows", en linux hay uno igual llamado "linux"?

Si por otro lado, no sientes familiaridad con ningún sistema y este es el primero que exploras, seguramente la cantidad de folders con nombres crípticos te confundirá bastante.

Ya sea que operes Linux desde CLI o desde GUI (conceptos que revisamos en el artículo de esta misma serie titulado "conociendo la Terminal") los directorios serán básciamente los mismos en todas las distribuciones GNU-Linux. Para empezar, la estructura básica comienza en el directorio raíz (simbolizado con una diagonal « / ») y dentro de este estarán todos los demás lugares importantes del sistema Linux. A diferencia de Windows en donde la base del sistema comienza en las diferentes letras de las unidades como « A:\ » o « C:\ » , en Linux cualquier unidad habitará dentro del directorio raíz « / ».

Filesystem Hierarchy Standard (FHS)

El estándar de jerarquía de archivos de sistema o FHS por sus siglas en inglés, es una convención para sistemas en Linux y Unix. En el sitio oficial de la Fundación Linux encontramos descritos (a un nivel bastante técnico) los objetivos de contar con este paradigma de ordenamiento de directorios; estos básicamente se resumen en darle la posibilidad al usuario, así como a los programadores, de predecir en qué directorios deberían poder encontrar o colocar ciertos archivos. Esta jerarquía funciona como un árbol de directorios que como un árbol, marcan el tronco principal y las ramas que se subdividen unas de otras en diferentes niveles de ejecución del sistema operativo. 

Bootloader

El concepto de Bootloader (cargador de arranque) es también importante ─pero más complejo debido a los diferentes sitemas de arranque que manejan diferentes versiones de Linux─ y en general lo que hay que entender de este concepto es que una vez que encendemos una computadora con Linux instalado, esta tiene una serie de órdenes básicas alojadas en algo llamado el BIOS, un acrónimo para Basic Input-Output System (sistema básico de entradas y salidas), el cual se encarga de buscar en su Master Boot Record o MBR (Registro maestro de arranque) un programa llamado GRUB (GRand Unified Bootloader, es decir un cargador de arranque unificado) el cual a su vez buscará uno o varios núcleos (Kernel) de Linux instalados en el sistema y, o bien arrancará el único que haya, o bien nos dará a elegir cuál Kernel de Linux queremos arrancar, y es entonces que este bootloader se hará responsable de montar la raíz « / » para que a partir de allí se puedan montar todos los demás elementos del árbol de directorios.

Es importante saber que el BIOS puede configurarse para buscar un cargador de arranque en cualquier unidad que la PC sea capaz de explorar, esta unidad puede ser un disco duro, o incluso un USB o DVD ¿recuerdan cuando Windows se arrancaba desde un disco floppy y por eso la unidad del floppy sigue siendo la primer letra del alfabeto « A:\ » para Windows? es algo similar.

En otro momento profundizaremos en estos elementos, pero básicamente el orden de ejecución luego de encender una computadora viene siendo este:

BIOS ejecuta MBR en la unidad que el BIOS esté configurado para buscar primero, luego el MBR ejecuta GRUB y este arrancará el Kernel de Linux que encuentre, y si encuentra varios nos dará a elegir cuál de todos queremos arrancar, al alegir uno GRUB se encarga de arrancarlo y este tomará el control para montar el directorio raíz « / » y de ahí todos los demás sistemas de archivo del árbol de directorios.

Montar y Desmontar

El concepto de montar y desmontar es necesario para comenzar a entender la estructura del sistema en Linux. Los comandos « mount » (montar) y « umount » (que viene de unmount, que significa desmontar) son aquellos que le permiten a Linux "ver" los directorios y archivos contenidos en tales directorios, sin el comando « mount » Linux simplemente no podría "ver" los archivos dentro de alguna unidad de almacenamiento, aunque estén ahí, serían invisibles. El directorio raíz « / » es lo primero que es montado por un proceso llamado bootloader (cargador de arranque) de Linux, y entonces, a partir de ahí todos los demás sistemas de archivos (particiones del disco duro principal, o unidades externas como un usb o un DVD) son montados en el árbol de directorios jerárquicos del sistema operativo.

Los directorios básicos dentro de la raíz serán:

  • bin
  • boot
  • cdrom
  • dev
  • etc
  • home
  • lib
  • lib<variante>
  • media
  • mnt
  • opt
  • proc
  • root
  • run
  • sbin
  • srv
  • sys
  • tmp
  • usr
  • var

/bin

Bin viene de Binaries. En este directorio encontramos programas binarios básicos, o bien enlaces a esos binarios, que deben ser accesibles al montarse el directorio raíz « / » cuando aún ningún otro sistema de archivos se encuentra montado. Justo aquí encontramos el comando « ls », o el « sudo », o el « pwd », mismos que ya revisamos en el tutorial de esta serie titulado "conociendo la Terminal"; también aquí encontramos « mount » y « umount » de los que hablamos aquí arriba, entre varios otros comandos básicos.

/boot

Este directorio es interesante. Aquí se alojan todos los elementos necesarios para arrancar el sistema operativo ¿Pero si /boot está dentro de raíz « / » y raíz es montado por el bootloader, cómo arranca boot antes que raíz? Justo este paso es interesante, pues el BIOS se encarga de montar /boot en la RAM de tu computadora. Dentro de /boot encontraremos generalmente a GRUB y el Kernel, es así que BIOS, al montar temporalmente /boot en la RAM tendrá acceso a la copia principal de GRUB, la cual tendrá registrados todos los demás Kernels alojados en nuestro dispositivo. Una vez que elegimos el Kernel, el BIOS le delega todo el control a GRUB, el cual monta la raíz y libera la RAM.

Esta es la razón por la cual podemos arrancar Linux desde un DVD o un USB, porque el BIOS tiene el poder de montar cualquier directorio /root, que se le configure para leer primero, en la RAM de nuestro equipo y correr desde ahí una versión "abreviada" de Linux.

/cdrom

Este directorio no está dentro del Filesystem Hierarchy Standard (FHS), y se encuentra generalmente en desuso, pero aún aparece en algunas distribuciones. Aquí solían montarse las imagenes de discos CD-Rom. Actualmente todos los medios extraíbles, dvd, cd, usb, SDcards, se montan en un directorio llamado /media.

/dev

Dev es abreviación de Devices, o Dispositivos en español. Linux trata los dispositivos, como un disco duro, como archivos, o mejor dicho pseudo-archivos; es decir, no son archivos, pero Linux los registra como si fuesen archivos. En este directorio encontramos los dispositivos físicos, montados como archivos, y diferentes programas necesarios para manipular estos dispositivos.

/etc

Este directorio aloja archivos de configuración de todo tipo, pero eso sí, son específicos de ejecución con espectro general del sistema. Las configuraciones para programas instalados por usuarios individuales se encuentran en el directorio personal de cada usuario. Aquí se alojan, por ejemplo, configuraciones del BIOS.

Bajo el consenso FHS, dentro de /etc no debe haber ningún binario ejecutable, solamente archivos de configuración que pueden modificarse con cualquier editor de textos para así personalizar o modificar su comportamiento general.

/home

Dentro de este directorio encontramos un listado de todos los usuarios del sistema, cada uno tiene su propio folder personal. Es dentro de cada uno de estos directorios personales de cada usuario que se encuentran las configuraciones personales de cada usuario, una versión específica del /etc global, por así decirlo. Cada usuario regular tiene el permiso de modificar cualquier cosa dentro de su folder/carpeta, pero necesitarán privilegios extra (como de administrador, por ejemplo) si quieren modificar archivos fuera de su carpeta personal.

Este directorio es más o menos equivalente a "Mis Documentos" den Windows, es decir, una carpeta personal, no obstante guarda diferencias significativas, pues a diferencia de la carpeta Mis Documentos de Windows, en la carpeta de usuario dentro de /home no solo habitarán nuestros archivos personales y carpetas como "Música, Documentos, Descargas, Videos" sino que aquí también se instalan directamente algunos programas que no necesariamente son compartidos, como aquellos instalados en /opt o /usr. En la carpeta de usuario también habitan archivos de configuración importantes para cada usuario (que no son compartidos ni con otros usuarios ni con el sistema).

/lib

Lib es corto para Librerías. Dentro de este directorio encontramos librerías compartidas a nivel global por otras aplicaciones. Incluso directorios como /bin o /sbin buscarán librerías necesarias dentro de este directorio.

/lib<variante>

Si usamos un equipo de 64 bits, Linux es capaz de crear un directorio /lib32 para librerías compatibles con 32bits, así que podemos tener /lib, /lib32 y /lib64 conviviendo en el mismo sistema, así las aplicaciones de 64 y 32 bits pueden encontrar diferentes versiones de librerías dentro del mismo sitema.

/media

Aquí se montarán (tanto automática como manualmente) las unidades externas, como CD, DVD, SD card, USB, et cétera.

/mnt

Este directorio sirve para montar achivos de sistema temporalmente. Es más un directorio enfocado en desarrolladores o usuarios avanzados que manualmente tengan necesidad de montar temporalmente algún sistema de archivos para hacer pruebas, respaldos u otras operaciones avanzadas.

/opt

Opt viene de Optional. Este directorio puede ser llamado Optional Packages o Paquetería Opcional. Este podría ser algo similar al folder de Archivos de Programa en Windows, o el de Aplicaciones de Mac. Pero ojo, es solo "un poco similar", pues no todos los programas se instalan aquí, solo algunos, y esto no responde a ningún estándar, sino a capricho de quien programa alguna aplicación. En resumen, aquí podrás encontrar *algunos* programas, sin ninguna razón específica para que estén aquí y no en otro lado.

Sí, es extraño, pero Linux tiene este tipo de debates con la estandarización de algunas prácticas entre programadores.

/proc

El nombre de Proc viene de Process Files. Este directorio es similar a /dev en el sentido de que aloja pseudo-archivos que en lugar de ser archivos que representan dispositivos físicos conectados, representan procesos básicos del sistema.

/root

En Linux existe una imagen, o mejor dicho, un actor o personaje de suma importancia para el sistema: el usuario raíz. El usuario root, como es comunmente conocido, es un usuario especial que cuenta con absolutamente todos los privilegios más altos del sistema, está por encima del usuario administrador y obviamente por encima de cualquier usuario regular sin privilegios altos.

De la misma manera que cada usuario, tanto administradores como de bajo rango de privilegios, habitan dentro de /home, el usuario de más alto privilegio, que es el root user, tiene su propia carpeta que es esta de /root, y cuando cualquier usuario, incluyendo al Administrador del sistema, intenta accesar a la carpeta /root, el permiso será denegado. Para acceder a este directorio uno tiene que usar el comando SU, que significa Super Usuario, para "convertirse" en el usuario root y entonces sí, acceder a esta carpeta.

No hay que confundir el directorio root « /root » con el directorio raíz « / », que aunque root signifique literalmente raíz, son dos cosas diferentes: uno es el directoro del *usuario* root, y el otro es el directorio *raíz* de todo el árbol de directorios.

/run

Este directorio es un tanto nuevo dentro del FHS, y se utiliza por algunos procesos de sistema como un lugar en donde almacenar temporalmente algunos archivos importantes para su ejecución. Difiere del directorio /tmp (temporal) en el sentido que /run no permite el borrado tan "a la ligera" de sus contenidos, por lo que estos archivos, si bien son temporales y se borran automáticamente al volver a arrancar el sistema, guardan un valor un poco más alto para algunos procesos del sistema y aquí están mejor protegidos que en /tmp.

/sbin

Sbin viene de System Administrator Binaries. Este directorio es muy similar a /bin, con la diferencia de que aquí se alojan procesos básicos para el usuario root. 

/srv

Srv viene de Service Data. Este directorio es usado cuando la computadora está siendo utilizada como un servidor web. De otro modo, al igual que /mnt, estará vacío siempre.

/sys

Este es otro directorio un tanto reciente dentro del FHS, viene de System. Este directorio es similar a /dev, en el sentido de que monta pseudo-archivos importantes para el sistema, con la diferencia de que /dev los monta físicamente desde las unidades de almacenamiento, mientras que /sys los monta virtualmente en la memoria RAM, para un acceso más rápido por parte del sistema.

En resumen, este directorio optimiza la velocidad del sistema operativo al darle un acceso rápido a ciertos procesos importantes localizados en otros directorios, virtualizándolos y teniéndolos muy a la mano por medio de la memoria RAM.

/tmp

Cualquier aplicación del sistema guardará archivos temporales en este directorio, por lo mismo es un directorio altamente volatil, no solo se borra cada que reiniciamos el sistema operativo, sino que hay algunos programas que borrarán el contenido de este directorio cada ciertos segundos/minutos/horas para aligerar la carga del sistema.

/usr

Usr viene de User Binaries and Read-Only data, o Binarios del Usuario y datos de Solo-Lectura. En este directorio habitan las aplicaciones compartidas entre usuarios, digamos que contiene una versión "pequeña" de /bin, /sbin, /lib para que estas instalaciones y configuraciones no conflictuen con aquellas que le sirven al sistema global. Esta es otra especie de "Archivos de Programa" de Windows, en donde se almacenan aplicaciones que no son nucleares ni cruciales para el sistema núcleo de Linux.

/var

Datos Variables. Este directorio es como /usr, pero mientras que este último es Solo-Lectura, en el caso de /var es uno también con permiso de Escritura. Aquí se guardan algunos archivos temporales, bitácoras (llamados "logs" en inglés), entre otros archivos útiles para aplicaciones compartidas por usuarios.

Conclusión

En cuanto al "lugar en donde se instalan nuestros programas" en Linux, bueno, es un poco un lío, uno no tan complicado ya que te acostumbras, pero definitivamente es muchas veces más confuso que en Windows o Mac en donde sus aplicaciones habitan en un solo directorio. Esto ha sido un dilema con Linux desde siempre, el hecho de que no exista un consenso único y claro sobre en qué directorio instalar programas. La respuesta, en resumen, de ¿a dónde van mis programas? sería que estos se pueden instalar directo en la carpeta de usuario dentro de /home, otras veces entro de /opt, otras veces dentro de /usr, y los programas que más cruciales son para el sistema se instalan en /bin o /sbin.

Conocer un poco sobre los diferentes directorios y los sistemas de archivos nos servirá mucho no solo para saber cómo navegar nuestro sistema Linux con seguridad de no romper nada importante, y para arreglar algunos problemas por nuestra propia cuenta, sino tambien al aprender cómo instalar manualmente un sistema operativo Linux, actividad que exige de nuestra parte conocer la lógica básica del árbol de directorios y adicionalmente los Tipos de Sistemas de Archivos (ext, ext2, ext3, ext4, XFS, btrfs, FAT, FAT32, ExFAT, NTFS, et cétera) para saber cómo formatear ciertas unidades, dónde montar ciertos directorios y comprender cómo lograr una compatibilidad alta entre nuestros archivos en Linux y así poder compartir, por ejemplo en un USB, archivos con otros sistemas como Windows o Mac cuando sea necesario.

Referencias

  • https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
Palabras clave del artículo: linux, opensource, software libre, gnu, gnu linux, linux os, tutorial, sistema operativo, tutoriales, sistema de archivos, árbol de directorios

Responsable de este artículo:

Miqi SG

Editor de la RSJ, nací para estudiar. Alquimista charlatán.

visita

Comentarios

Páginas

Agrega tu comentario:

Solo los usuarios registrados pueden mostrar su foto de perfil y borrar sus propios comentarios.

Artículos relacionados

Linux para principiantes: conociendo la Terminal

tecnología
Responsable del artículo: Miqi SG

01/10/2021 | Sección: tecnología

Temas: opensource, tutoriales.

Descripción: software y hardware de código abierto, adquiere nuevas habilidades tecnológicas.

Linux para principiantes: conociendo la Terminal

¿Estás cambiándote a Linux pero no tienes ni idea de como empezar? Esta serie de tutoriales son para ti. Aprende lo básico que necesitas para operar un sistema operativo Linux. Parte I

Continuar leyendo ⟶

Linux para principiantes 2: instalando programas

tecnología
Responsable del artículo: Miqi SG

01/10/2021 | Sección: tecnología

Temas: opensource, tutoriales.

Descripción: software y hardware de código abierto, adquiere nuevas habilidades tecnológicas.

Linux para principiantes 2: instalando programas

¿Estás cambiándote a Linux pero no tienes ni idea de como empezar? Esta serie de tutoriales son para ti. Aprende lo básico que necesitas para operar un sistema operativo Linux. Parte II

Continuar leyendo ⟶

Utilizando Git en Linux: comandos locales básicos

tecnología
Responsable del artículo: Miqi SG

01/10/2021 | Sección: tecnología

Temas: opensource, tutoriales.

Descripción: software y hardware de código abierto, adquiere nuevas habilidades tecnológicas.

Utilizando Git en Linux: comandos locales básicos

¿Qué es un software de control de versiones, y por que Git? Git permite separar por pasos controlados el flujo de modificaciones que se le van realizando a un proyecto de programación

Continuar leyendo ⟶
Regresar Arriba