Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tabla de contenido
Introducción
Objetivos
General:
Específicos:
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:
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
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 -
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
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.
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.
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.
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).
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 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.
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).
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).
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.
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).
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).
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.
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
Directorio /
Función principal Subdirectorios
Carpeta
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
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.
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).
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 80. Comando quota y repquota Figura 81. Mensaje quota excedida.
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.
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.
● 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
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
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/
GeekPeek.net (2013). Resize Partition and Filesystem with fdisk & resize2fs. URL
https://geekpeek.net/resize-filesystem-fdisk-resize2fs/