Está en la página 1de 37

Unidad 1: Paso 2 - Implementar el uso de aplicaciones orientados a la

virtualización de sistemas operativos

Presentado por: César Fernando Espitia Pérez


Código: 80822408
Grupo: 201494_10
Tutor: Daniel Andrés Guzmán

Universidad Nacional Abierta y a Distancia UNAD


Escuela de Ciencias Básicas Tecnología e Ingeniería ECBTI
Diplomado de Profundización en Linux – Opción de Trabajo de Grado
Bogotá D.C. Febrero de 2018
Tabla de contenido

Tabla de contenido

Introducción

Objetivos
General:
Específicos:

Capítulo 1: Descarga e instalación del software para virtualización VirtualBox


Aclaración y detalles iniciales:
Descarga e instalación:
Creación de la máquina virtual:

Capítulo 2: Descarga e instalación del sistema operativo GNU/Linux


Descarga de Ubuntu Mate:
Instalación de Ubuntu Mate:

Capítulo 3: Selección, clasificación y ejecución de comandos en consola


Manipulación de archivos y directorios: ls, mkdir, mv, cp, touch.
Administración de procesos: top, pidof, ps, kill, pstree.
Gestión de aplicaciones apt-get: install, remove, purge, update, upgrade.
Gestión de red: ping, netstat, who, traceroute, ssh.
Manipulación de hardware y controladores: lsusb, df, mount, free, fdisk
Compresión y descompresión de archivos: gzip, bzip2, zip, rar, tar.
Cuadro comparativo de escritorios para GNU/Linux:

Capítulo 4: Tabla de diferencias entre sistemas de archivos y directorios

Capítulo 5: Estructura de directorios GNU/Linux

Capítulo 6: Cuotas de disco en GNU/Linux

Capítulo 7: Modificación del tamaño de volúmenes lógicos GNU/Linux

Conclusiones

Lista de referencias
Introducción

Con la actividad desarrollada en este trabajo se pretende revisar, nivelar y afianzar los
conocimientos relacionados con la creación de máquinas virtuales, instalación de sistemas
operativos GNU/Linux Ubuntu 16.04 LTS, el reconocimiento de algunos comandos básicos de
uso frecuente en las terminales Ubuntu/Debian, la identificación del sistema de directorios
utilizados en GNU/Linux y algunos procesos de administración y gestión del sistema operativo
como tal.
En las siguientes páginas se presentarán guías paso a paso de los proceso antes mencionados con
el propósito de evidenciar y explicar las situaciones experimentadas durante todo el desarrollo de
la actividad.
Objetivos

General:

● Realizar un acercamiento al proceso de instalación y gestión del sistema operativo


GNU/Linux Ubuntu 16.04 LTS.

Específicos:

● Realizar la instalación del programa VirtualBox con sus plugins y adicionales, para
virtualizar la instalación de Ubuntu 16.04 LTS.
● Instalar Ubuntu 16.04 LTS haciendo uso de la tabla de particiones ofrecida por el CD de
instalación y activando los plugins de VirtualBox para optimizar la integración de la
instalación.
● Utilizar y explorar algunos de los comandos básicos de uso frecuente en la consola del
sistema GNU/Linux.
● Hacer una pequeña comparación entre 3 de los escritorios para Ubuntu más conocidos y
utilizados actualmente.
● Conocer e identificar los directorios principales en la estructura general del sistema
GNU/Linux.
● Gestionar el espacio de disco que tiene asignado un usuario o grupo de usuarios del
sistema.
● Administrar y reasignar el tamaño de las particiones del sistema Ubuntu.
Capítulo 1: Descarga e instalación del software para virtualización VirtualBox

Aclaración y detalles iniciales:


Antes de iniciar se aclara que la máquina sobre la que se trabajará ya cuenta con un
sistema operativo GNU/Linux cuya distribución es Linux Mint debido a lo cual el proceso de
instalación puede ser un poco diferente a lo que se realiza en otros sistemas como pueden ser
Windows o MacOS.

Descarga e instalación:
Aclarado lo anterior se procede a abrir la terminal del sistema usando la combinación de
teclas: CTRL+ALT+T luego de lo cual procedemos a descargar y registrar los archivos:
oracle_vbox_2016.asc y oracle_vbox.asc que son los que añaden a los repositorios del sistema
los Authentication Keys o llaves de autenticación del proveedor del software para garantizar que
los programas y paquetes que se están instalando en nuestro sistema son seguros y provienen de
una fuente fiable; los comandos que se ejecutan para este propósito son:
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

Figura 1. Descarga y registro de nuevos


repositorios para VirtualBox.

Figura 2. Actualización de repositorios.


Una vez registrados los nuevos repositorios se procede a actualizar nuestro administrador de
paqueterías y programas mediante la instrucción: $ sudo apt-get update
Luego de lo cual nuestro sistema podrá encontrar los programas, dependencias y paquetes de
software que se requieren para la instalación de VirtualBox, el comando que nos permite realizar
dicha instalación es:
$ sudo apt-get install virtualbox-qt virtualbox-ext-pack virtualbox-guest-additions-iso
Figura 3. Comando de instalación de Figura 4. Aceptación de licencia de uso.
VirtualBox.
En el comando ejecutado en la Figura 3 lo que instalamos fue: la máquina virtual con interfaz
gráfica (virtualbox-qt), las extensiones y paquetes adicionales entre ellos el de soporte de
dispositivos USB 2.0 (virtualbox-ext-pack), y los controladores adicionales entre ellos el de
visualización correcta de la pantalla (virtualbox-guest-additions-iso).
En seguida le damos la tecla (y) para confirmar la instalación con lo que nos muestra la licencia
de uso para configuración del paquete (virtualbox-ext-pack) la cual debemos aceptar para que
continúe la instalación, recordemos que este paquete es el que nos dará el soporte para utilizar
los dispositivos USB 2.0, por lo que es necesaria su instalación.

Después de que finalice el proceso de instalación, ya podemos ejecutar nuestro virtualbox


mediante el comando: $ virtualbox (Figura 5).

Figura 5. Ejecución de VirtualBox.

Creación de la máquina virtual:


Una vez tenemos nuestro VirtualBox instalado y listo vamos a proceder con la creación y
configuración de la máquina virtual en la que instalaremos Ubuntu Mate 16.04.3 LTS, para lo
que vamos a dar click en el botón New que se encuentra en la esquina superior izquierda del
VirtualBox.

Figura 6. Creación de la máquina. Figura 7. Tamaño de la memoria.

Lo primero que nos solicita el proceso de creación de la máquina virtual es el nombre de la misma que
para este caso es ubuntu con arquitectura de 64 bits, y el tamaño que de la memoria que se es 2048 MB.
Tal como se aprecia en las figuras 6 y 7.

Figura 8. Creación del disco. Figura 9. Extensión para el archivo del disco.

En las figuras 8 y 9 se nos pregunta es si queremos crear un disco duro virtual, utilizar uno existente o
dejarla sin disco; para este caso se eligió crear un disco y se le indicó que la extensión del archivo que
contendrá dicho disco virtual es *.VDI, que es la extensión de archivos nativa de Virtualbox.
Figura 10. Tipo de disco duro. Figura 11. Tamaño del disco.

Los pasos finales de la creación del disco son: elegir el tipo de disco que trabajará la máquina virtual
entre un tamaño máximo fijo o de tamaño máximo dinámico, (es decir que puede superar el máximo
estipulado) para ese caso se eligió el dinámico. Finalmente se determina el tamaño inicial del disco
para crearlo, este será de 16 GB.

Figura 12. Nueva máquina virtual Ubuntu Figura 13. Soporte USB 2.0

En la figura 12 observamos la nueva máquina virtual ubuntu lista para instalar el S.O. GNU/Linux. El
paso final es configurar el soporte para USB 2.0 en la opción: Settings -> USB y seleccionar USB 2.0
(EHCI) Controller tal como se aprecia en la figura 13; está opción ya se puede seleccionar sin
problemas porque durante la instalación del Virtualbox se incluyó el paquete virtualbox-ext-pack.
Capítulo 2: Descarga e instalación del sistema operativo GNU/Linux

Descarga de Ubuntu Mate:


Nos dirigimos a la página oficial de Ubuntu Mate: https://ubuntu-mate.org/ y
seleccionamos la pestaña Download y allí seleccionamos la la arquitectura de nuestra máquina
(64 bits), y finalmente elegimos la versión del S.O. que es 16.04.3 (Xenial). Entre las opciones
de descarga tenemos: un torrent, un link magnético y el archivo iso.

Figura 14. Selección de la versión. Figura 15. Descarga del ISO

Instalación de Ubuntu Mate:


Una vez tengamos el archivo de instalación, procedemos a colocarlo en el drive óptico
virtual de la máquina que está en la opción: Settings -> Storage, allí damos click en el icono de
disco óptico que está en Attributes para montar el iso, e iniciamos la máquina con el botón Start.
Figura 14.

Figura 14. Montaje del ISO en la máquina


Figura 15. Selección de idioma e instalación.
virtual.
Figura 16. Actualizaciones y uso de software Figura 17. Tipo de instalación.
propietario.

Una vez se inicia la máquina nos hará una serie de preguntas para la instalación del S.O.
empezando por el idioma y la opción de probar el sistema antes de instalarlo o de instalarlo
propiamente (Figura 15), luego nos pregunta si deseamos instalar las actualizaciones para el
S.O. y si queremos tener disponible también software de terceros para poder usar
características como reproducciones de archivos MP3 (Figura 16) después nos dice que
seleccionemos el tipo de instalación entre automática o personalizada (Figura 17), aca
seleccionamos la personalizada Something else para poder construir la tabla de particiones a
voluntad.

Figura 18. Asignación de swap. Figura 19. Punto de montaje raiz.

En la siguiente pantalla presionamos el botón New Partition Table para crear nuestra tabla de
particiones y seleccionamos el espacio libre para empezar a asignando 4 GB al área de
intercambio swap (Figura 18) que será usado por el S.O. como una memoria RAM auxiliar,
con lo cual quedamos con el equivalente a 6 GB de RAM, enseguida procedemos a asignar 10
GB de espacio a la raíz o root el cual será usado para instalar todo el sistema (Figura 19), y el
resto del espacio libre 3.1 GB se asigna al directorio de archivos personales de usuarios /home
(Figura 20); es posible crear tantas particiones como subdirectorios de sistema existen, pero
para fines prácticos solo se realizan los ya mencionados. Finalmente podemos ver como queda
nuestra tabla de particiones lista para ser instalada en el disco de la máquina (Figura 21).

Figura 20. Partición home. Figura 21. Tabla de particiones del sistema.

Figura 22. Ubicación y zona horaria. Figura 23. Usuario y clave para el S.O.

Luego presionamos el botón Install Now y nos hace la pregunta de confirmación de las
particiones que hemos creado, continuamos diciendo cual es nuestra ubicación y zona horaria
(Figura 22) y el nombre de usuario y contraseña de acceso al sistema (Figura 23); una vez el
proceso de instalación (que toma algunos minutos) termina, el sistema se reinicia e ingresamos
con nuestras credenciales de acceso previamente creadas (Figura 24), lo siguiente que debemos
hacer es instalar los componentes para optimización de la integración entre la máquina virtual
y la real, para lo cual insertamos el CD virtual Guest Additions (Figura 25) que forma parte de
los paquetes adicionales de VirtualBox.
Figura 25. Soporte Guest Additions.
Figura 24. Ingreso a ubuntu.

Figura 26. Instalación de gcc. Figura 27. Ejecución de guest additions.

En este punto es necesario instalar el paquete GCC de GNU/Linux el cual es un compilador de


C, C++, Objective-C, etc. y que es utilizado por algunas dependencias del programa de
instalación de Guest Additions. Esto lo hacemos mediante el comando: $ sudo apt-get install
gcc en una terminal (Figura 26), una vez realizado este proceso, procedemos a ejecutar la
instalación de Guest Additions (Figura 27) y finalmente reiniciamos la máquina para que el
sistema tome los cambios y nos presente la pantalla optimizada al ancho de la ventana de
Virtualbox (Figura 28).
Figura 28. Soporte video ajustado.

Capítulo 3: Selección, clasificación y ejecución de comandos en consola

A continuación se irán presentando las evidencias tanto de la consola como del GUI
(Graphical User Interface) en cada imagen presentada, a la izquierda la consola y a la derecha el
GUI.

Manipulación de archivos y directorios: ls, mkdir, mv, cp, touch.


El comando ls es utilizado para ver que archivos y directorios se encuentran en la ruta
que especifiquemos o en la que nos encontramos, podemos usarlo solo o con sub-opciones por
ejemplo: $ ls -l para ver detalles adicionales de cada archivo y directorio como fecha de creación,
tamaño, propietario y permisos (Figura 29). El comando mkdir nos permite crear directorios en
cualquier parte de nuestro sistema (siempre que tengamos permisos sobre dichas ubicaciones),
por ejemplo el comando: $ mkdir Personal crea un directorio llamado Personal en el directorio
actual (Figura 30).
Figura 29. Comando ls. Figura 30. Comando mkdir.

Figura 31. Comando mv. Figura 32. Comando cp.

Otro comando de gran utilidad es mv que sirve para mover un archivo o directorio a un nuevo
lugar, por ejemplo para mover el directorio Personal a la carpeta Documents, ejecutamos: $
mv Personal/ Documents (Figura 31), también podemos agregar una sub-opción para que
mueva el contenido del directorio por ejemplo: $ mv -r Personal/ Documents con la cual
mueve recursivamente todo el contenido (si lo tuviera) del directorio Personal. Si queremos
copiar en vez de mover un archivo o directorio entonces usamos el comando cp por ejemplo
para copiar nuestro directorio Personal dentro de Music pero sin que se borre de Documents
utilizamos el siguiente comando: $ cp -r Documents/Personal Music/ (Figura 32).
Figura 33. Comando touch.
El último comando de este grupo es touch y sirve para crear archivos de cualquier tipo; vamos a
crear Archivo.txt dentro de la ruta Documents/Personal para lo cual ejecutamos: $ touch
Documents/Personal/Archivo.txt, como vemos, debemos indicar la extensión del archivo que
vamos a crear (Figura 33).

Administración de procesos: top, pidof, ps, kill, pstree.


Entre los comandos de administración de procesos uno de los básicos y de gran
funcionalidad es top, este comando nos permite ver todos los procesos que se están ejecutando
en el sistema actualizándose constantemente y permitiendo ver información importante como: ID
del proceso, uso de memoria, uso de CPU, nombre del proceso, usuario que lo inició, etc. (Figura
34), una característica de este comando es que su ejecución no se detiene hasta que se le indica
que lo haga mediante la tecla q.

Figura 34. Comando top. Figura 35. Comando pidof.


Otro comando de gran utilidad es pidof el cual nos permite saber el ID de un proceso
específico, por ejemplo para saber el ID del proceso caja ejecutamos el comando: $ pidof caja
(Figura 35).

Figura 36. Comando ps. Figura 37. Comando kill.

Un comando similar a top pero más versátil es ps ya que nos da la ventaja de filtrar a la hora
de rastrear un proceso determinado, por ejemplo si queremos ver los procesos que fueron
iniciados por el usuario cesarespitia podemos usar el comando: $ ps -u cesarespitia (Figura
36), existe también el comando para terminar (matar) un proceso determinado cuando
conocemos el ID del mismo, este comando es kill, si por ejemplo queremos terminar la
ejecución del navegador firefox ejecutamos: $ kill -9 $(pidof firefox) (Figura 37). En el
comando anterior vemos la ejecución anidada o command substitution, en la que estamos
recuperando el ID del proceso firefox dentro de los paréntesis $(pidof firefox) y luego matamos
dicho proceso con el kill -9.

Figura 38. Comando pstree.


El último comando de este grupo es pstree el cual nos muestra los procesos en ejecución pero
desde una perspectiva de árbol en la que podemos identificar la dependencia entre procesos, es
decir que procesos dependen de que otro proceso esté en ejecución (Figura 38).

Gestión de aplicaciones apt-get: install, remove, purge, update, upgrade.


En cuanto a los comandos utilizados para administrar las aplicaciones del sistema
podemos encontrar principalmente los basados en el gestor de paquetería apt-get cuyo nombre
proviene de la sigla Advanced Packaging Tool y es el principal sistema de gestión de software
para distribuciones de GNU/Linux basadas en Debian, como por ejemplo Ubuntu.
Un par de comandos básicos para instalar y desinstalar programas en nuestro sistema son: apt-
get install y apt-get remove respectivamente, en el siguiente ejemplo vamos a instalar una
terminal de administración avanzada para GNU/Linux llamada terminator utilizando los
siguientes comandos: $ sudo apt-get install terminator para instalarla, y $ sudo apt-get
remove terminator para desinstalarla (Figuras 39 y 40).

Figura 39. Comando apt-get install. Figura 40. Comando apt-get remove.

Otro comando que sirve para desinstalar es apt-get purge pero es un poco más “peligroso” si
no se maneja con cuidado, debido a que elimina el programa incluyendo también cualquier
archivo de configuración y preferencias adicionales del mismo, lo que puede significar pérdida
de información personal o importante relacionada con algún programa que usualmente
trabajamos; para el ejemplo vamos a eliminar (terminator) con el comando: $ sudo apt-get
purge terminator (Figura 41).

Un comando que permite resincronizar los índices de los paquetes contra los repositorios
online es apt-get update con este comando podemos actualizar la información relacionada con
los programas disponibles en un repositorio para estar seguros de instalar versiones
actualizadas de los programas así como contar con la posibilidad de instalar software nuevo en
un repositorio determinado; este comando no requiere ningún otro parámetro adicional al ser
ejecutado: $ sudo apt-get update (Figura 42).
Figura 41. Comando apt-get purge. Figura 42. Comando apt-get update.

Figura 43. Comando apt-get upgrade.

El último comando de este grupo es apt-get upgrade y es utilizado para actualizar el software
que se encuentra instalado en nuestra máquina y que haya sido instalado desde un repositorio;
la diferencia entre este comando y el anterior radica en que upgrade actualiza el software
instalado mientras que update actualiza los índices del repositorio pero no afecta el software
instalado. Este comando tampoco requiere parámetros adicionales en su ejecución: $ sudo apt-
get upgrade (Figura 43).

Gestión de red: ping, netstat, who, traceroute, ssh.


Dentro del grupo de comandos de red, 2 de los más útiles son ping y netstat, el primero
es usado para verificar la existencia de conexión TCP hacia un destino específico ya sea
mediante la IP o el nombre DNS, y brinda información básica de dicha conexión si la hay, por
ejemplo para cada paquete informa: el tiempo que tardó, el número de “saltos” o sitios por los
que pasó, el tamaño en bytes la IP de origen, etc. (Figura 44); el segundo comando, netstat, es
usado para obtener información general del estado de las conexiones usadas por el sistema en un
momento dado, brinda información relacionada con los puertos, protocolos, IPs destino, estado,
ruta en el sistema, I-Nodo, etc. (Figura 45).

Figura 44. Comando ping. Figura 45. Comando netstat.

El comando who es bastante específico y permite básicamente conocer el nombre del usuario o
usuarios que se encuentren con una sesión activa en el sistema en un momento dado, así como
información adicional referente a la fecha y hora y la terminal usada (Figura 46); otro comando
es traceroute el cual muestra información de todos los nodos por lo que pasa un paquete para
llegar a un destino específico, difiere del comando ping en que esté último sólo permite saber
el tiempo que tarda el paquete en llegar a destino, en cambio traceroute brinda información de
todos los nodos de red por los que pasa el paquete (Figura 47).

Figura 46. Comando who. Figura 47. Comando traceroute.

El último comando de este grupo y uno de los más “potentes” es ssh, el cual permite controlar,
gestionar y administrar a través de la red otras máquinas, incluyendo el envío y recuperación
de archivos entre las mismas; ssh es ampliamente usado en el campo de administración de
infraestructura para el control y gestión de servidores a nivel empresarial, el ejemplo más
sencillo de uso es: $ ssh nombre-usuario@dominio/ip-server (Figura 48).
Figura 48. Comando ssh.

Manipulación de hardware y controladores: lsusb, df, mount, free, fdisk


Para manipular hardware podemos usar comandos como lsusb -t el cual nos permite
obtener información de todos los puertos USB disponibles para el sistema (Figura 49), entre la
información que ofrece está el número del bus utilizado, el número de dispositivo asociado al bus
y el ID asignado a dicha combinación, así como el detalle del nombre del dispositivo y/o
fabricante. El comando df -h es otro comando utilizado para monitoreo de espacio y uso de
recursos del sistema por parte de los diferentes componentes del sistema (Figura 50), entre otros
dato indica el tamaño asignado al recurso, el tamaño utilizado, el disponible, el porcentaje
disponible, el punto de montaje, etc.

Figura 49. Comando lsusb. Figura 50. Comando df.

El comando mount permite “asignar/montar” dispositivos físicos de la máquina a rutas


temporales para accesar la información de estos, por ejemplo en el caso de conectar un
pendrive USB pero no contar con automount es necesario montar dicho dispositivo
manualmente para lo cual usamos el comando: $ sudo mount -t vboxsf USB /media/USB/
(Figura 51), las partes del comando anterior son: sudo para ejecutar con permisos de
superusuario, mount -t vboxsf ejecuta el comando mount especificando el tipo de sistema de
archivos usado, en este caso “vboxsf”, USB indica el nombre del dispositivo a montar,
/media/USB/ indica la ruta en el sistema donde será montado. Otro comando es free -h que
permite obtener información rápida y clara acerca del uso de la memoria RAM del sistema,
tanto la real como la de área de intercambio “swap” (Figura 52).

Figura 51. Comando mount. Figura 52. Comando free.

El último comando de este grupo es fdisk que permite visualizar la tabla de particiones del
sistema, por ejemplo al ejecutar $ sudo fdisk -l vemos las distintas particiones del disco
asignadas como: /dev/sda# la partición de arranque o Boot, la posición de inicio y fin de la
partición el tamaño, el ID, el tipo de partición, etc. (Figura 53).

Figura 53. Comando fdisk.


Compresión y descompresión de archivos: gzip, bzip2, zip, rar, tar.
Un par de comandos que permiten comprimir y descomprimir archivos son: gzip y bzip2
que son muy similares entre sí, siendo bzip2 el de mejor tasa compresión mientras que gzip es
más veloz. Por ejemplo el comando para comprimir sería: $ gzip -v nombre-archivo (donde -v
activa la visualización de los detalles del proceso), y el de descompresión sería: $ gzip -dv
nombre-archivo (donde -dv indica descompresión activando la visualización de los detalles del
proceso). El resultado de la compresión por defecto es un archivo .gz (Figura 54).
Para el caso del comando bzip2 la sintaxis es exactamente la misma sólo reemplazando el
comando gzip por bzip2; y generando archivos .bz2 (Figura 55).

Figura 54. Comando gzip. Figura 55. Comando bzip2.

Otros 2 comandos más potentes son zip y rar siendo el primero más rápido, pero el segundo
con mejor tasa de compresión aunque es software propietario y de pago; un ejemplo de
compresión de un directorio con todo su contenido utilizando zip sería: $ zip -r documents.zip
Documents/ (Figura 56), en donde -r indica que debe comprimir recursivamente el contenido
del directorio, documents.zip es el nombre del archivo a crear y Documents/ es el directorio a
comprimir. Para descomprimir se usa el comando unzip documents.zip (Figura 56).
Para comprimir con rar se usaría: $ rar a archivos.rar arhivo1 archivo4 (Figura 57), donde a
indica agregar, archivos.rar es el nombre del archivo a crear y archivo1 archivo4 son los
archivos específicos que serán comprimidos. Para descomprimir se usa rar x archivos.rar
(Figura 57).

Figura 56. Comando zip. Figura 57. Comando rar.

El último comando es este grupo es tar y es uno de los más usados en el mundo *nix, con una
gran potencia y versatilidad a pesar de ser uno de los más antiguos también. Un ejemplo de
compresión de archivos con este comando sería: $ tar -cvzf archivo1 archivo2 archivo3 lo
que da como resultado un archivo *.tgz (Figura 58), en este comando los parámetros -cvzf
significan en su orden: crear, ver detalles, formato gzip, y archivo. Para descomprimir el
comando es: $ tar -xvzf archivos.tgz en donde -xvzf significan: extraer, ver detalles, formato
gzip, y archivo.

Figura 58. Comando tar.


Cuadro comparativo de escritorios para GNU/Linux:

MATE - GNOME KDE Plasma XFCE

Es un escritorio para sistemas Este es uno de los escritorios Este escritorio es el más
basados en *nix, que se creó más conocidos y utilizados liviano y rápido de los tres,
con la finalidad de ser por una inmensa mayoría de cuenta con un buen soporte y
intuitivo, fácil de usar, y con usuarios de GNU/Linux un gran grupo de
muchas de los elementos debido a que está fuertemente colaboradores; está diseñado
clásicos de GNOME 2. enfocado usabilidad y estética para ser ejecutado sin
Actualmente es uno de los además de contar excelente problemas en máquinas más
escritorios mejor soportados, soporte y ser un proyecto en “viejas”, con menos
con un gran balance entre constante crecimiento y características de rendimiento
estética, eficiencia y desarrollo. Sin embargo es y hardware menos potente;
usabilidad. Aunque como uno de los más pesados por ello es tal vez uno de los
todos los escritorios *nix, es escritorios para sistemas *nix menos famosos y utilizados,
de código abierto y totalmente (Figura 60). sin embargo lo compensa con
personalizable (Figura 59). flexibilidad y eficiencia
suficiente para poner en
funcionamiento máquinas que
de otro modo serían
descartadas (Figura 61).

Figura 59. Escritorio MATE. Figura 60. Escritorio KDE Plasma. Figura 61. Escritorio XFCE.
Capítulo 4: Tabla de diferencias entre sistemas de archivos y directorios

Sistema de
Cómo Funciona Características Diferenciadoras
Archivos

Usa un sistema de almacenamiento Soporta manejo de links


por mapeo de bloques y usa simbólicos (Linux), archivos de
jerarquía multinivel para la nombres largos, tamaños de
asignación de archivos en especial archivos y volúmenes superiores a
Ext2 los de gran tamaño, esto lo hace 2 TB. Es de acceso muy rápido en
mediante un inodo que referencia a archivos relativamente pequeños.
otros inodos que a su vez
referencian a la información del
archivo almacenado.

Usa un sistema de bitácora Es sucesor de EXT2, pero además


(journaling) que opera de tres utiliza estructuras de redundancia
formas: de información y sistema de
riesgo bajo: escribe dos veces los metadatos fijo en ubicaciones
metadatos, tanto en el contenido del conocidas mejorando la velocidad
archivo como en un archivo de recuperación de información.
bitácora. (más lento). También permite reparar daños en
Ext3 riesgo medio: escribe metadatos los archivos cuando se presenta
primero en el archivo bitácora y algún problema con el sistema o la
sólo escribe en el archivo después máquina.
de que la bitácora esté grabada.
(velocidad media).
riesgo alto: intenta escribir los
metadatos pero no asegura el éxito
del proceso. (más rápido).

Usa un sistema de almacenamiento Soporta preasignación y asignación


extendido por lo que es capaz de retardada de los archivos, las
almacenar todo el contenido del bitácoras manejan un sistema de
archivo en varios sectores contiguos suma de comprobación brindando
entre sí, gracias a su capacidad de confiabilidad, y tiene un asignador
preasignación de tamaño, de multibloques, lo que ofrece una
Ext4
facilitando su rápido acceso luego. velocidad considerable al sistema
Gracias a su suma de comprobación de chequeo de archivos. El sistema
y capacidad de asignación retardada soporta archivos mayores a 16TB y
puede hacer frente a problemas tiene capacidad hasta de 1 EB.
relacionados con la pérdida de
información.
Utiliza el sistema extends y el Sistema de archivos x64, soporta
journaling basados en EXT4 además sistema de archivos tipo
de barreras de escritura las cuales journaling; diseñado para trabajar
garantizan que la secuencia de en paralelo y escalar basado en la
escritura de archivos se realiza en cantidad de hilos entrada/salida del
un orden particular para asegurar sistema; tiene sistema de grupos de
confiabilidad en la persistencia de asignación que son subdivisiones
datos; también maneja estructuras de los volúmenes físicos; usa la
tipo B+trees que son básicamente característica extendida de EXT4
árboles con una raíz y un gran de forma dinámica; tamaños de
Xfs Reiserfs ifs
número de hijos por nodo, así como bloques variables, archivos
un sistema de registro síncrono y/o dispersos e instantáneas. Las
asíncrono para hacer seguimiento de estructuras de asignación de
actualizaciones a los archivos; tiene archivos son tipo B+Tree, con
también un sistema para reservar los máximo 8 EB en tamaño de
anchos de banda del sistema y un archivo y/o volumen, y número
sistema de cálculo dinámico de su máximo de archivos 264; tiene
rendimiento lo que le permite también una API para migración
garantizar la tasa de entrada/salida de datos.
del sistema.

Usa un sistema de archivos basado Soporta muchos de las


en copia sobre escritura pero sin características ya mencionadas
duplicar información sino que además de asignación dinámica de
comparte entre la diversas copias las Inodos, bandas RAID, bloqueo de
partes de la información que son dispositivos, depuración de datos,
comunes y sólo crea nuevas copias copias espejo en otros dispositivos,
para información que sea diferente, manejo de instantáneas (de
Btrfs
haciéndolo más eficiente sin perder compresión, grabables y de sólo
confiabilidad; este sistema reutiliza lectura), así como copia de
todas las herramientas exitosamente seguridad incremental,
probadas por otros sistemas más deduplicación fuera de banda,
antiguos como EXT4 o XFS: es manejo de subvolumenes de
decir extends, B-trees, instantáneas, montaje separado, y balanceo en
sumas de seguridad, etc. línea.

Al estar físicamente en el disco, la Espacio lógico completamente


velocidad de acceso a swap es independiente en el disco que se
mucho menor a lo que brinda la utiliza como memoria RAM virtual
RAM física, por lo cual suele usarse con la finalidad de apoyar y
Swap
sólo para “respaldar”; por lo general aumentar la capacidad de la RAM
se trasladan a la swap los procesos física de la máquina. No necesita
poco activos del sistema, para así formato de sistema de archivos.
liberar espacio en la RAM física.
Capítulo 5: Estructura de directorios GNU/Linux

Directorio /
Función principal Subdirectorios
Carpeta

Todo el sistema operativo está en está


ruta.

Directorio principal del sistema


/ operativo, contiene todos los demás
elementos del sistema.

Figura 62. directorio /

Contiene archivos ejecutables del


sistema, específicamente los que
/bin Normalmente no tiene.
son utilizados por los usuarios y sus
programas.

Contiene los archivos de arranque


del sistema: kernel linux, archivos
/boot
de configuración, y el directorio
grub.

Figura 63. directorio /boot

Enlace simbólico a la ruta


/cdrom Normalmente no tiene.
/media/cdrom.

Contiene todos los drivers y


/dev dispositivos de la máquina
reconocidos por el sistema.

Figura 64. directorio /dev


Contiene casi todos los archivos de
/etc configuración, así como los
servicios del sistema operativo.

Figura 65. directorio /etc

Contiene los archivos personales de


/home
los usuarios finales del sistema.

Figura 66. directorio /home

Contiene las librerías o bibliotecas


de los programas instalados en el
sistema; son rutinas o pequeños
/lib
programas usados por otros
programas en el S.O. (sistema
operativo).

Figura 67. directorio /lib

Contiene archivos perdidos luego


/lost+found de recuperar el sistema de algún Normalmente no tiene.
problema.

Contiene las rutas de montaje de


/media dispositivos extraíbles como CD, Normalmente no tiene.
DVD o USB

Contiene las rutas de montaje de


/mnt unidades que necesitemos montar Normalmente no tiene.
manualmente.

Su uso es opcional; contiene


complementos de programas Normalmente no tiene.
instalados por el usuario;
/opt
usualmente es usado por
instalaciones fuera de los Figura 68. directorio /opt
repositorios como .deb.
Contiene archivos virtuales y/o
temporales que corresponden a los
/proc
procesos en ejecución por el
sistema en un momento dado.
Figura 69. directorio /proc

Es el directorio particular del


/root Normalmente no tiene.
superusuario root del sistema.

Contiene los archivos ejecutables


del sistema, específicamente los que
/sbin Normalmente no tiene.
son fundamentales para el
funcionamiento del sistema.

Contiene los archivos de


configuración relacionados con la
/etc/selinux aplicación selinux, el cual es un
módulo de seguridad desarrollado
por la NSA para el kernel Linux Figura 70. directorio /etc/selinux

Directorio de servicio, usualmente


contiene datos que serán servidos
/srv Normalmente no tiene.
por el sistema mediante protocolos
de red. (ftp, sftp, www, rsync, etc.)

Normalmente no tiene.
Contiene archivos temporales del
sistema normalmente utilizados por
/tmp
el usuario como parte de algún
proceso mayor.
Figura 71. directorio /tmp

Contiene una gran listado de


subdirectorios, y es usualmente
donde se instalan las aplicaciones
de los usuarios del sistema; siempre
/usr
que se realizan instalaciones desde
los repositorios oficiales, los
programas y sus dependencias se
instalan en este directorio. Figura 72. directorio /usr
Contiene archivos que se definen
como de log del sistema y que están
/var siendo reescritos todo el tiempo
debido a todos los procesos que va
ejecutando en el S.O.
Figura 73. directorio /var

Capítulo 6: Cuotas de disco en GNU/Linux

Detalles iniciales:
Cuando una máquina es usada por muchos usuarios finales, ya sea una PC de escritorio o
un servidor, el uso indiscriminado del espacio del disco suele convertirse en un problema
importante, ya que suele alcanzarse el límite del espacio de todo el disco con gran facilidad y sin
darnos cuenta; para hacer frente a este tipo de problemas GNU/Linux cuenta con un sistema de
administración de espacio de disco llamado quota el cual permite limitar la cantidad de espacio
que puede utilizar un usuario específico o un grupo de usuarios específicos.

Para este ejemplo vamos a configurar un límite suave de 5GB y uno duro de 6GB para el usuario
cesarespitia en el punto de montaje /home.

Instalación y configuración de “quota”:


Lo primero que debemos hacer para utilizar este sistema de administración es instalarlo,
para lo cual utilizamos el comando: $ sudo apt-get install quota (Figura 74); en seguida vamos
a configurar en el punto de montaje y sistema de archivos los parámetros para indicarle al
sistema que debe usar quota en el punto de montaje deseado; ejecutamos: $ sudo nano /etc/fstab
y agregamos en la línea del punto de montaje /home las opciones: usrquota,grpquota quedando
configuradas tres opciones junto a defaults que es la opción que viene por defecto (Figura 75).

Figura 74. Instalación de quota Figura 75. Configuración /etc/fstab

Luego debemos crear los archivos quota que serán utilizados por el sistema, para guardar las
configuraciones de restricción, tanto de usuarios como de grupos de usuarios, por lo tanto son
necesarios 2 archivos; ejecutamos el comando: $ sudo touch /home/aquota.user
/home/aquota.group con el cual creamos los archivos: aquota.user y aquota.group, y luego
ejecutamos: $ sudo chmod 600 /home/aquota.* para configurar los permisos de lectura y
escritura del propietario de los 2 archivos, el cual es root (Figura 76); una vez hecho lo anterior
ya tenemos configurado en nuestro sistema con quota así que reiniciamos la máquina para que
tome los cambios y una vez inicia ejecutamos el comando de comprobación: $ sudo cat
/etc/mtab el cual contiene toda la tabla de los sistemas de archivos montados en el sistema;
aquí la idea es ubicar el punto de montaje /home y asegurarnos que dentro de las opciones con
las que está trabajando estén: usrquota,grpquota (Figura 77).

Figura 76. aquota.user y aquota.group Figura 77. Verificación /etc/mtab

Con lo anterior ya estamos seguros de que quota está instalado y configurado; ahora debemos
verificar que la app quota puede reconocer las configuraciones realizadas en el sistema de
archivos, así que ejecutamos: $ sudo quotacheck -vguma v=detallado, g=grupos,
u=usuarios, m=no volver a montar la partición, a=todos los sistemas de archivos con lo que
le decimos a quota que verifique la configuración y después procedemos a activar quota
ejecutado: $ sudo quotaon -avug a=todos, v=detallado, u=usuarios, g=grupos (Figura 78).
En este punto sólo nos falta especificar los límites de espacio que tendrá cada usuario y grupo
de usuarios para lo cual tenemos 2 opciones, el comando setquota que recibe todos los
parámetros directamente en la terminal, o edquota que nos permite editar un archivo para hacer
todas las configuraciones; para este caso usaremos el comando: $ sudo edquota cesarespitia,
en donde le especificamos el nombre del usuario que vamos a configurar; una vez estamos en
el archivo veremos en la primera línea el nombre y ID del usuario que estamos configurando, y
luego en columnas la información del mismo, que para este ejemplo son: sistema de archivos
= /dev/sda7, bloques del disco = 1868, límite suave (este puede ser sobrepasado pero pondrá
un aviso de advertencia) = 5M, límite duro (este no puede ser sobrepasado)= 6M, cantidad de
inodos = 176, límite suave de inodos = 0, límite duro de inodos = 0. (Figura 79).

Figura 78. quotacheck y quotaon Figura 79. edquota


Luego de esto ya hecho el bloqueo de uso del disco para el usuario cesarespitia, para
verificarlo podemos ejecutar el comando: $ sudo quota cesarespitia que nos dejará ver en
pantalla exactamente la configuración que hicimos en el archivo con el comando edquota; o
podemos ejecutar: $ sudo repquota -a que nos mostrará un reporte de todos los usuarios del
sistema con sus estadísticas como: espacio usado, límite suave, límite duro, duración del
bloqueo (días). Y la misma información para los inodos (Figura 80). La prueba final “de
fuego” la obtenemos al ejecutar el comando: $ wget https://wordpress.org/latest.zip en la
que observamos que el tamaño del archivo a descargar es de 8.9 MB el cual supera los 6 MB
que configuramos como límite duro de modo que nos indica: cuota de disco excedida y no
permite la descarga (Figura 81).

Figura 80. Comando quota y repquota Figura 81. Mensaje quota excedida.

Capítulo 7: Modificación del tamaño de volúmenes lógicos GNU/Linux

Detalles iniciales:
Debido a que la máquina originalmente se creó con sólo 2 particiones, la raíz / y el home
/home se tuvo que realizar una nueva instalación para crearla con las 3 particiones requeridas,
raíz /, /home y /var. Los tamaños iniciales de cada partición fueron: 7.8 GB para la raíz, 1.9 GB
para swap, 3.7 GB para /home, 3.7 GB para /var y 3.2 GB se dejaron sin asignar.

Gestionando particiones: fdisk, e2fsck, resize2fs.


El comando que ejecutamos para construir la tabla de particiones es: $ sudo fdisk
/dev/sda (Figura 82), esto debido a que el sistema de particiones de los disco siempre queda en la
ruta /dev, y la asignación que usa por defecto para los discos duros es sda; con este comando
ingresamos al CLI (Command Line Interface) de fdisk y allí podremos gestionar todas las
particiones del disco /dev/sda mediante comandos que ejecutamos al presionar una sola tecla, por
ejemplo la tecla para ver la ayuda en el CLI es m (Figura 83). Con el comando p visualizamos la
tabla de particiones actual, donde nos muestra la existencia de 5 particiones que van desde
/dev/sda1 hasta /dev/sda6, nos muestra también cuáles particiones son de arranque boot, el
sector de arranque y finalización, el tamaño de sectores, el tamaño en GB, el ID y el tipo de cada
partición. El comando F informa sobre el espacio no particionado (Figura 82).
Figura 82. Comando fdisk /dev/sda. Figura 83. Comandos de fdisk.

Según vemos en la tabla de particiones, hay 5 particiones y un área de espacio libre. Desde la
partición /dev/sda1 a la /dev/sda3 son las particiones “físicas”, y las /dev/sda5 y /dev/sda6 son
lógicas. Teniendo esto en mente, y para poder incrementar el tamaño de las particiones
dev/sda5 y /dev/sda6 que son /home y /var respectivamente; primero debemos particionar el
espacio libre, es decir agregarlo a la partición /dev/sda3 que es la partición extendida que
contiene las particiones lógicas /dev/sda5 y /dev/sda6. Para lograrlo debemos “borrar” estas 3
particiones, la extendida y sus 2 lógicas; lo haremos con el comando d que nos permitirá elegir
qué número partición borrar (Figura 84), debemos borrarlas en orden descendente para que la
extendida sea la última en ser eliminada y luego procedemos a crear una nueva partición,
comando n, que sea extendida, comando e, y que tendrá el tamaño de todo el espacio libre
disponible con lo cual, ahora la partición extendida /dev/sda3 es de 10.7 GB, frente a los 7.5
GB que tenia al principio. Continuamos creando las particiones lógicas y les asignamos el
tamaño a cada una: 5.4 GB para /dev/sda5 y 5.3 GB para /dev/sda6 que serán /home y /var.
Para terminar con la tabla de particiones, verificamos que los nuevos tamaños de las
particiones son correctos, comando p y grabamos los cambios, comando w (Figura 85).

Figura 84. Comandos fdisk: p,d,F,n,e Figura 85. Comandos fdisk: p,w

Al grabar los cambios el sistema nos dice que seguirá usando la vieja tabla de particiones hasta
que se reinicie el sistema. Así que procedemos a reiniciarlo pero está vez vamos a hacer el boot
desde LiveCD de instalación de Ubuntu, debido a que debemos desmontar las nuevas
particiones para chequearlas y redimensionarlas antes de que el sistema pueda usarlas y a
menudo es bastante complicado desmontar una partición que está en uso. Los siguientes
comandos que ejecutamos como superusuario son: # e2fsck -fy /dev/sda5 y # e2fsck -fy
/dev/sda5 los cuales realizarán una verificación y corrección de las particiones especificadas, y
los parámetros del comando son 2 (f=forzar la verificación de todos los archivos, y=responder
YES a todas las correcciones que se sugieran). Este comando puede llegar a tomar bastante
tiempo dependiendo de la cantidad de inodos, bloques, tamaños, estructuras y conectividades
de directorios y demás inconsistencias que se registren, (Figura 86), como recomendación
adicional, e2fsck debe ser ejecutado sobre particiones que no estén montadas. Una vez que se
completa la ejecución de e2fsck, se puede proceder a redimensionar la partición para que el
sistema pueda reconocerla, para ello ejecutamos: # resize2fs /dev/sda5 y # resize2fs
/dev/sda6; este comando normalmente demora mucho menos que el anterior en finalizar su
ejecución y al final nos indica que el sistema de archivos nuevo ya está listo para ser usado por
el sistema (Figura 87).

Figura 86. Comando e2fsck /dev/sda# Figura 87. Comando resize2fs /dev/sda#

Luego reiniciamos el sistema pero está vez lo arrancamos, booting, desde el disco duro y si no
hay problemas todo funcionara correctamente con las nuevas particiones; pero en mi caso se
presentó un problema adicional que estaba relacionado con el UUID de la partición /var; para
determinar el problema fue necesario ingresar en una terminal diferente a la TTY8 que es
donde está el ambiente gráfico del sistema; ingrese a la TTY1 con el usuario root y verifique
cuales particiones estaban montadas en el sistema (Figura 88), identificando que estaban la raíz
/ y /home pero no /var, procedí a revisar el detalle de la información relacionada con las
particiones existentes en el sistema ejecutando: # blkid y compare está información con lo que
aparecía en /etc/fstab (Figura 89), que es el archivo utilizado por el sistema operativo para
identificar las particiones de trabajo.
Figura 89. Comandos blkid, cat /etc/fstab
Figura 88. Comando cat /proc/mounts

Una vez identificado el problema que era que el UUID de /var era incorrecto, procedí a
corregirlo en el archivo /etc/fstab (Figura 90) y luego reinicie la máquina una última vez.
Finalmente el sistema arrancó sin problemas y al verificar los tamaños de las particiones con #
fdisk -l aparecieron los nuevos tamaños para las particiones /home y /var correctamente.

Figura 90. Comando nano /etc/fstab


Figura 91. Verificación final de particiones
Conclusiones

● Se aprende a realizar la instalación del programa VirtualBox con sus plugins y software
adicional, utilizando únicamente la terminal del sistema Linux Mint y los comandos apt-
get para gestionar los paquetes y dependencias necesarias.
● Se comprende la importancia de entender y elegir correctamente la tabla de particiones a
la hora de instalar GNU/Linux, teniendo muy en cuenta las posibles necesidades de
gestión y administración que se pueden presentar a futuro.
● Se utilizan y exploran comandos de gran utilidad a la hora de administrar el sistema
operativo GNU/Linux, y se entiende la necesidad de comprenderlos con mayor
profundidad.
● Se exploran y conocen 3 de los escritorios para Ubuntu más usados actualmente: MATE,
KDE y XFCE. Y se evidencian algunas de sus cualidades y defectos.
● Se identifican con un poco de mayor claridad los directorios principales en la estructura
general del sistema GNU/Linux, así como su utilidad y propósito.
● Se gestiona y limita el espacio de disco que un usuario o grupo de usuarios puede utilizar
y se comprende la importancia de administrar las cuotas del disco en favor de optimizar
el desempeño del sistema.
● Se reasignan tamaños para algunas de las particiones del sistema, y se enfrentan
situaciones problema que se presentan cuando no se realiza un adecuado particionado
inicial de GNU/Linux.
Lista de referencias

Torres, E. F., & Pizarro, G. A. M. (2014). Linux para usuarios. Retrieved from
http://bibliotecavirtual.unad.edu.co:2460

Innotek GmbH, Oracle Corporation (2018). VirtualBox, Download VirtualBox for Linux Host.
URL https://www.virtualbox.org/wiki/Linux_Downloads

Oracle VM VirtualBox (2018). User Manual, 3. Configuring virtual machines, 3.11.1 USB
support. URL https://www.virtualbox.org/manual/ch03.html#settings-usb

Free Software Foundation (2017). GNU Wget: Introduction to GNU Wget. URL
https://www.gnu.org/software/wget/

Wolfman Leader (2015). Install Ubuntu (Mate) using “Something else” method. URL
https://ubuntu-mate.org/

Ceppi Marco (2017). Ask Ubuntu, I have 16GB RAM. Do I need 32GB swap?. URL
https://askubuntu.com/questions/49109/i-have-16gb-ram-do-i-need-32gb-swap

Kubuntu desktop guide (2016). Fundamentos de Linux, Directorios y sistemas de


archivos. URL https://help.ubuntu.com/kubuntu/desktopguide/es/directories-file-
systems.html

NixCraft (2018). Linux and Unix tutorials for new and seasoned sysadmin. URL
https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/

Wong William (2017). Electronic Design, What’s the Difference Between Linux EXT,
XFS, and BTRFS Filesystems?. URL http://www.electronicdesign.com/industrial/what-s-
difference-between-linux-ext-xfs-and-btrfs-file-systems

Opensource.com Both David (2017). An introduction to Linux's EXT4 filesystem. URL


https://opensource.com/article/17/5/introduction-ext4-filesystem

The Geek Stuff, Natarajan Ramesh (2010). 5 Steps to Setup User and Group Disk Quota
on UNIX / Linux. URL https://www.thegeekstuff.com/2010/07/disk-quota/

ArchLinux (2018). Fstab. URL https://wiki.archlinux.org/index.php/Fstab

GeekPeek.net (2013). Resize Partition and Filesystem with fdisk & resize2fs. URL
https://geekpeek.net/resize-filesystem-fdisk-resize2fs/