Linux avanzado para principiantes

Esta es la primera de una serie de entradas que tratará de abordar a Linux entrando en detalles que por lo general no se tocan mucho por ir muy a bajo nivel. Todo lo anterior sin entrar mucho en tecnicismos en la medida en que se pueda y lo mas didáctico que me salga para que todos lo puedan entender.

Como supongo que todo usuario de Linux que recién está dando sus primeros pasos viene de Windows, trataré de usar analogías a este otro sistema operativo también para ser mas claro.

¿Te gusta Linux?,  ¿Querés aprender un poco mas o entender mejor como funciona? [email protected] entonces, abrí una consola por que vas a aprender practicando.

¿Sos un usuario experimentado en Linux? Entonces puede que te interese saltearte esta primera parte para ir directamente a la parte dos, donde ya se habla de los metadatos en sí. (Todavía en redacción).

Tux frente a una PC

(Tux, la mascota de GNU/Linux – Imagen de Occam)

Para empezar bien desde la base y poder luego ir subiendo a capas superiores, primero lo primero.

El sistema de archivos.

Un sistema de archivos es la estructura que le da forma al medio de almacenamiento de datos –normalmente el disco rígido– para poder mas adelante contener información. Si el disco rígido fuera una estantería por armar que va a contener cajas con tornillos el día de mañana, de fábrica esa estantería viene sin armar, sin estantes, sin cajas y obviamente sin tornillos.

El sistema de archivos es el que –entre otras tantas cosas– arma la estantería, define que altura separa un estante de otro, que largo tiene cada estante y de esa forma a su vez, define cuantas cajas (directorios) llenas de tornillos (archivos) entrarán en total. (En realidad es bastante mas complejo que eso, pero por ahora lo dejamos ahí para el que no esté muy interiorizado).

Como no todos los dueños de ferreterías tienen los mismos requerimientos, hay diferentes tipos de estantería, uno para cada situación puntual. Linux puede hacer uso y abuso de todos los sistemas de archivos que existen, es compatible y puede leer y escribir tanto en sistemas de archivos pensados para Linux como los diseñados para Windows y variantes de Unix. De preferencia por lo probado de su velocidad, escalabilidad, estabilidad y robustez, todas las distribuciones modernas de Linux te ofrecerán hacer uso de la versión 4 del sistema de archivos extendido para Linux, el famoso “Ext4”.

Entre los tantos sistemas de archivos que Linux soporta, por mencionar un puñado destacan:

  • CIFS/SMBFS/AFS y NFS: Salvo por el último, los primeros tres suelen ser el estándar para transferencia de archivos en red entre PCs con Windows o Mac Os X. Si tenés una red con otras PC corriendo Windows o Mac, cuando movés información entre una PC y la otra estás usando alguno de estos sistemas de archivos para redes, no por que Mac o Windows sean compatibles con Linux si no por que Linux es compatible con ambos.
  • Ext2/3/4: Las versiones “base”, “con dirección asistida y aire acondicionado” y “con doble tracción, turbo, nitro y esteroides” del sistema de archivos por defecto de Linux.
  • FAT12/16/32 y NTFS: Puede leer y escribir en todos los sistemas de archivos habidos –y esperemos que también en los por haber– de sistemas operativos de Microsoft.
  • Btrfs/ReiserFS/Reiser4/XFS y un largo etcétera para los usuarios de Linux mas exigentes, cada uno con sus respectivas bondades y vicisitudes. (A mí déjenme con Ext4, que es una maravilla).
  • ISO 9660 y UDF para CD y DVD y así hasta el infinito…

Para muchos de los siguientes ejemplos usaremos el comando “cat“, un concatenador de archivos pensado originalmente para unir dos o mas archivos entre si pero que al final todo el mundo termina usando para leer en el contenido de un archivo de texto plano.

Podés ver que sistemas de archivos está usando tu Linux ejecutando en una consola:

# mount

O bien este otro:

# cat /proc/mounts

¿Por qué se montan de esta forma los sistemas de archivos en tu Linux?

Lo podés verificar listando el contenido del archivo fstab que es el que controla todo eso:

# cat /etc/fstab

Un sistema de archivos típico de Linux contiene lo que podría separarse en dos categorías: Datos y metadatos.

Los metadatos serían el equivalente a las etiquetas que tiene pegado cada tornillo y cada caja llena de tornillos para que podamos identificar que son, cuanto miden/pesan, de donde salieron, si están a la venta o no, cuanto tiempo llevan almacenados ahí, etc, etc..

Los datos son todo lo demás, el sistema operativo instalado y tu información personal, todos los archivos y directorios que tu disco rígido, CD/DVD, pendrive o lo que fuere pudiera contener:

  • Archivos: Un archivo es un conjunto de información individual almacenado, puede ser una foto, música, un documento, una planilla de cálculo, etc. Toda la información que un usuario genera y almacena la guarda en forma de archivos. Son los tornillos de nuestra estantería conceptual.
  • Directorios: Los directorios son conjuntos de archivos, subdivisiones que se hacen para mantener mas ordenado lo que de otra forma sería un caos, las cajas para agrupar nuestros tornillos de forma de que no se mezclen unos con otros.

En Linux, los directorios se pueden subdividir en dos tipos:

  • El directorio raíz o root: Identificado siempre como   / Es el directorio principal, el padre, el que contiene toda la información. No puede ser renombrado o borrado, siempre existe. Es el soporte de nuestra estantería.
  • Subdirectorios: Son todas las subdivisiones adicionales que le hubiéramos hecho al directorio raíz a los efectos de ordenar la información. Pueden tener nombres arbitrarios y pueden ser creados, renombrados y borrados por el usuario. Estas son las cajas para contener tornillos de nuestra estantería.

Algunos de los directorios mas comunes, que vas a encontrar en todos los Linux:

  • boot – Contiene el cargador de arranque –Grub o ¿Lilo, alguien lo usa todavía?– y por lo general aloja también al kernel, el núcleo del sistema operativo, lo que en definitiva es Linux en sí.
  • bin – Contiene archivos que son ejecutables por cualquier usuario sin privilegios de administrador lo mismo que los que se encuentran en /usr/bin. Muchos de los programas que instales en Linux meterán sus ejecutables en alguno de estos dos subdirectorios.
  • sbin – Contiene archivos ejecutables que no pueden abiertos por nadie si no se dispone de privilegios de superusuario/administrador. Normalmente la mayoría de los programas que encontrás dentro de /sbin ya vienen pre-instalados con tu distribución.
  • etc – Aloja todos los archivos de texto plano de configuración del sistema operativo y los programas instalados. /etc es a Linux lo que el registro es a Windows.
  • home – Alberga la´configuración personalizada y la información de los usuarios. Todo lo que guardes en una PC con Linux por defecto se guarda en /home/tu_nombre_de_usuario. Es el equivalente al Documents and Settings de Windows Nt.
  • mnt y media – Dependiendo de tu distribución puede que dispongas de alguno de estos dos subdirectorios que dentro contienen todas las unidades de almacenamiento estraibles o no: Tu/s disco/s rígido/s, tus unidades de CD/DVD, tus pendrives, lectores de tarjetas, etc.
  • lost+found – Un subdirectorio en donde fsck, la utilidad de comprobación de discos (el equivalente a scandisk/chkdsk de Windows), va almacenando todos los archivos huérfanos que vaya encontrando después de un mal apagado, Lo mismo que los FOUND.000, FOUND.001, etc. de Windows.

Ya de menor interés para esta guía pero no de menor relevancia por eso siempre están /lib que almacena todas las librerías al igual que /var/lib, es como el equivalente a system y system32 de Windows, /sys que contiene objetos exportados del kernel (nada que sea de mucha utilidad para el usuario de a pié), /opt para todos los programas que pueden ser problemáticos y por eso se separan de /usr, /usr para todos los archivos de programas preinstalados o que vos como usuario instales a continuación, /var para todo el contenido que es modificado con frecuencia, las bases de datos, el caché, los archivos temporales, etc.

De entre medio de todos los directorios de la estructura por defecto de Linux destacan dos que son virtuales e importantísimos: dev y proc. Ninguno de los dos tiene equivalente en Windows.

  • /dev: Un directorio cuyo contenido en virtual y volátil, se regenera en cada reinicio gracias a Udev y contiene una lista de todos los dispositivos que conforman tu PC. Por hacer una analogía, el contenido de /dev combinado con el de /sys serían algo así como el administrador de dispositivos de Windows pero en versión peligrosamente potenciada. Digo peligrosamente por que desde /dev se accede directamente a los dispositivos y si no se usa con cuidado, con privilegios de administrador, podés romper todo.
  • /proc: Este también es virtual y lo regenera en cada reinicio el núcleo de Linux, permite leer el estado o hacer modificaciones en tiempo real de casi todos los parámetros que el kernel controla.

Por ejemplo, se puede probar un mouse leyendo el puerto que lo controla al tipear en una consola:

# cat /dev/input/mice

O leer la salida del generador de números aleatorios de Linux:

# cat /dev/urandom

O probar la placa de sonido escuchando el generador de números aleatorios o el mouse:

# cat /dev/input/mice > /dev/dsp

Se pueden leer las características completas de tu/s microprocesador/es tipeando:

# cat /proc/cpuinfo

O el estado de la memoria:

# cat /proc/meminfo

O de la batería de la Laptop:

# cat /proc/acpi/battery/bat0/state

** Util también si se reemplaza /state por /info en el comando anterior.

O la tabla de PCs de la red con la que tu Linux ha tenido contacto reciente:

# cat /proc/net/arp

Podés usar el comando cat que en este caso uso para leer archivos contra todo el contenido de /dev /proc y /sys sin miedo que al ser solo lectura, no hay peligro.

El concepto es siempre el mismo, los parámetros modificables en el kernel y los dispositivos se manifiestan en forma de archivos dentro de estos directorios virtuales, estos archivos se pueden leer y escribir en tiempo real modificando inmediatamente el comportamiento del sistema operativo.

En la próxima entrega: Directorios, Archivos, Permisos – Superbloques, Inodos, enlaces simbólicos.

¿Me equivoqué en algo? ¿Te gustaría agregar algo en el post? Comentarios, sugerencias y aportes para sumar conocimientos a esta guía, serán todos bienvenidos.

22 Comentarios

  1. Escribiles algo de los boot loaders. Es el gran misterio para todos los que aterrizan en linux. Muchos se frustran con eso y borran todo.

    • Me sentí tan bien cuando quité el GRUB de mi laptop. Un SO que no me permite apagar normalmente mi PC, no tiene mi respecto aún (Ubuntu 10.10)

      xD Nos vemos!

      • Le falta, le falta rato a Ubuntu todavía… Ya no se puede decir que está verde, pero que le falta maduración seguro. Para no errarle, te diría que vuelvas a probar en aproximadamente diez años.

        Antes de eso, no esperes de Linux lo mismo que te da Windows.
        En la otra punta estamos el resto de los usuarios, a los que Windows no nos va a dar nunca lo que nos da Linux y por eso le tenemos paciencia y le ponemos ganas pero para todo eso hace falta tiempo y no todos lo tienen disponible…

        ¡Saludos!

    • Ese soy yo!!!

      Pd: inicio la pc , me abre el grub eligo que me habra el “slitaz 3.0”, me aparece en pantalla “descompressing linux….” y kaboom , se reinicio ¿alguna solucion?

      • Como no conozco slitaz, lo mejor sería que preguntes en el foro de la distribución en cuestión en donde seguramente ya le pasó a alguien mas y pudo solucionarlo. Con seguridad tu problema está en el kernel que no es compatible con vaya uno a saber que cosa que contiene tu PC dentro que las demás no.

        Como no conozco tu PC y no conozco el kernel de slitaz no te puedo dar mas datos. Si te puedo ayudar en alguna otra cosa avisame.

        ¡Saludos!

      • Slitaz es un Debian. Es mas que nada una distro para ser usada como LiveCD, aunque creo que está la opción de instalarla.
        Como dijo Juan, o tenés algún problema de incompatibilidad (puede pasar en PCs muy viejas o con chipsets raros), que se arreglaría descubriendo que es lo incompatible y agregando una línea al boot loader que salte alguna comprobación; o también podés tener corrupta la imagen del kernel o la initrd (aunque en esos casos no se debería reiniciar, sino tirarte un kernel panic). En estos dos últimos casos reinstalando se arregla.

        Saludos y suerte con eso

  2. Cuando necesitaba algo así, en un lenguaje familiar, con onda… No lo encontré. Tuve que aprender a palazo limpio, por ahi fue mejor pero, prefería algo mas amigable.

    Ya bastante impactante es salir del mono….digo de windows y pasar a la libertad

  3. Cristian, gracias por la sugerencia. El bootloader estaba en los planes, antes de llegar al kernel, si o si tengo que pasar por ahí

    Ignacio, bienvenido al club de los apaleados, jeje. Esperemos que esta especie de guía le venga bien a los que recién estén arrancando en Linux.

    ¡Saludos!

  4. se ve en la cara da ignacio la apaleada que sufrio, pero de esa es la unica que aprendi tambien, hasta que murio el disco y segui con el live-cd, suerte men.
    Juan, magistral la entrada, seguire de cerca a ver como avanzamos en linux, que siempre hay algo por saber

  5. jajaja
    Es una foto carnet, la tengo en la libreta de la facu y en la cédula
    Igual coincido, me dejó arruinado aprender como aprendí jaja

  6. Sobre los sistemas de archivos, además de que Ext3 y ahora Ext4 tienen casi todo lo que podamos necesitar, conviene usarlos también por ser mucho más populares, lo que hace que sean soportados por más herramientas de clonado de discos y yerbas similares. Realmente muy amena y útil la forma de explicarlo, felicitaciones Juan!

  7. Muy bueno Juan, como siempre el toque alt-tabero le queda muy bien. Aunque espero que no moleste a la lectura del artículo para personas no rioplatenses.

    Un consejo para mejorar un poco esta redacción sería que expliques para que sirve cat antes de tirar todos los ejemplos, y no después.

    Otra cosa, se me ocurre mencionar el omnipresente directorio lost+found equivalente al oculto y no siempre presente FOUND.000 de los NT. Y también los que suelen estar, media y mnt. Bah, mas que nada el primero, que es masomenos equivalente a entrar a Mi PC en Windows. Y uno que estoy viendo en algunas distros últimamente es srv, que contiene los datos que usan los servidores instalados (onda Apache)

    Creo que es todo, el resto, genial

    Saludos

    • Gracias por las sugerencias. Ya están hechas las modificaciones. Media y mnt se me olvidaron, nunca los uso para nada

      ¡Saludos!

      • y si… desde que HAL monta todo solo desde los exploradores de archivos nos olvidamos que existen, pero ahí están. En verdad, el directorio de montaje de dispositivos es /media. En cambio, /mnt se usa para montar comparticiones de red (cifs, nfs, etc). Y yo en el laburo lo sigo usando para eso. Vendría a ser un equivalente de las unidades de red de Windows

        • Tampoco uso HAL, ni Dbus ni volman, ni ivman, ni nada que se le parezca. (Va a sonar raro, si, y me da un poco de vergüenza pero todavía ando montando y desmontando a mano cuando necesito algo, pleno 2010 casi 2011…)

          En mis Gentoo ni /mnt ni /media están por que nunca existieron y por eso no los tuve en cuenta. Se me hizo mala costumbre montar las cosas en /home y desde entonces tengo un /home/mn/multi y un /home/mn/pen en donde monto y desmonto cada vez que necesito algo, rara vez necesito montar mas de dos cosas en simultáneo.

          Terminado de escribir todo lo anterior, haciendo memoria, mi servidor de almacenamiento si tiene /mnt, pero es el único (también corre Gentoo)

          ¡Saludos!

  8. Tal vez entre la ultima vez que use un Debian y ahora se puede, pero en su momento (6 mese atrás) no podía escribir en NTFS, solo leer.

    • No se puede directamente usando el kernel estándar de Debian. Sin embargo, hay dos opciones: o recompilar el kernel con soporte de escritura ntfs en modo kernel, aún en fase experimental y con algunos errores, o usar un módulo fácilmente instalable del kernel llamado fuse que monta drivers de dispositivos de almacenamiento en modo usuario, y existe un driver para él llamado ntfs-3g, que es el que usan todas las distros. Es muy estable, y nunca tuve ningún error.
      En Debian para instalarlo y habilitarlo, basta con que instales el paquete ntfs-3g con sus dependencias, y usás ese mismo nombre de filesystem para montarlo. Yo hace unos años usaba Debian y siempre anduvo perfecto. Pensaba lo mismo que vos, que no soportaba lectura y escritura en ntfs, hasta que me puse a pensar por que en Ubuntu si se podía, si solo era una “hija” de Debian. Y googleando un poco, todo quedó funcando!

      Saludos!

      • No te puedo creer, ¿Debian no trae Ntfs-3g de serie?

        Rarísimo, hoy en día me parece que es fundamental, ni el mas linuxero entre los linuxeros puede decir que no lo necesita o necesitó alguna vez.

        Montano, si ya instalaste ntfs-3g siguiendo las instrucciones de eVeR de ahi en mas es tan simple como ejecutar:

        mount -t ntfs-3g /dev/ruta_al_dispositivo /mnt/punto_de_montaje

        Para tener acceso en modo lectura-escritura.

        ¡Saludos!

        • eso, lo que te dijo Juan, o agregás una línea a /etc/fstab parecida a esta:

          /dev/ruta_al_disp [espacio] /media/punto_montaje [espacio] ntfs-3g [espacio] auto, rw [espacio] 0 [espacio] 0

          Reemplazando ” [espacio] ” por un espacio o tabulación, o lo que te guste. Si necesitás mas opciones, con un man ntfs-3g está todo bastante claro y bien explicado.

          De todos modos, y algo que Juan desconoce por razones que explica antes, HAL monta las particiones ntfs usando el ntfs-3g, así que podés montar todo desde un click con tu administrador de archivos preferido

  9. Hola, es la primera vez que escribo, los quiero felicitar por el contenido de este sitio, es muy útil, es la primera vez que entro y ya está agregado en marcadores :). Quería comentar que Debian si trae instalado ntfs-3g instalado de serie, al menos en squeeze, no sé en las versiones anteriores.

  10. HEY! Me encantaría que alguien me enseñará personalmente de la forma en que tu lo haces, en verdad tienes un don al explicar las cosas. Ya que recién encuentro esta pagina estaré mas por aquí ya que me a surgido un problemilla con un disco duro.

    Al utilizar la Utilidad de Discos que viene por defecto en Ubuntu 12.04 (horrible distribución, eso lo tengo en cuenta) le cambié a un disco la etiqueta, para esto lo tuve que desmontar, y al quererlo montar de nuevo (Oh sour-prise!) ya no pude montarlo, ni con ‘mount’ he podido.

    El disco es de 500 GB (NTFS), y la verdad no tengo ningún medio para crear una imagen como ya lo habias mencionado en un articulo. ¿Alguna forma de hacerlo que aun no se me haya ocurrido?

    Gracias por cualquier respuesta.

Dejar respuesta

Please enter your comment!
Please enter your name here