🖇️
Apuntes LPIC-1
  • General
  • Ejercicios de utilidades
  • 1️Examen 101
    • Tema 101: Arquitectura del Sistema
    • Tema 102: Instalación de Linux y gestión de paquetes
    • Tema 103: Comandos GNU y Unix
      • 103.1 - Trabajar desde la línea de comandos
      • 103.2 - Procesar secuencias de texto usando filtros
        • Listado de texto plano
        • Ejercicios 103.2
      • 103.3 - Administración básica de archivos
      • 103.4 - Uso de secuencias de texto, tuberías y redireccionamientos
      • 103.5 - Crear, supervisar y matar procesos
        • 🚧Ejercicios 103.5
      • 103.6 Modificar la prioridad de ejecución de los procesos
      • 103.7 - Realizar búsquedas en archivos de texto usando expresiones regulares
      • 103.8 - Edición básica de archivos
    • Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
    • Test prueba
  • 2️Examen 102
    • Tema 105: Shells y scripts
    • Tema 106: Interfaces de usuario y escritorios
    • Tema 107: Tareas administrativas
    • Tema 108: Servicios esenciales del sistema
    • Tema 109: Fundamentos de redes
    • Tema 110: Seguridad
Powered by GitBook
On this page
  • Objetivos del tema 102
  • 102.1 Diseño del esquema de particionado del disco duro duro
  • Puntos de Montaje
  • Manteniendo las cosas separadas
  • Particion de arranque (/boot)
  • La partición del sistema EFI (ESP)
  • La Partición /home
  • Información Variable (/var)
  • Partición de Intercambio (Swap)
  • LVM (Logical Volume Management)
  • 102.2 Instalar un gestor de arranque
  • MBR y GRUB
  • GRUB2
  • Interactuando con GRUB2
  • 102.3 Gestión de librerías compartidas
  • Contenidos
  • 102.4 Gestión de paquetes Debian
  • Contenidos
  • dpkg - Herramienta de paquetería en Debian
  • apt - Herramienta de Paquetería Avanzada
  • 102.5 Gestión de paquetes RPM y YUM
  • Contenidos
  • 102.6 Linux como sistema virtualizado
  • Contenidos
  1. Examen 101

Tema 102: Instalación de Linux y gestión de paquetes

PreviousTema 101: Arquitectura del SistemaNextTema 103: Comandos GNU y Unix

Last updated 8 months ago

Objetivos del tema 102

102.1 Diseño del esquema de particionado del disco duro duro

Importancia

2

Descripción

Los candidatos deberán ser capaces de diseñar un esquema de particionado de disco para un sistema Linux.

Áreas de conocimiento clave:

  • Asignar sistemas de archivos y espacio de intercambio a particiones o discos separados.

  • Adaptar el diseño al uso previsto del sistema.

  • Asegurar de que la partición /boot cumple los requisitos de la arquitectura de hardware para el arranque.

  • Conocimiento de las características básicas de LVM.

Contenidos

Para empezar a entender las siguientes lecciones debemos entender los siguientes conceptos:

  • Disks -> como disco se entiende un contenedor físico de datos (ya que solo los HDDs llevan ya discos incorporados)

  • Partitions -> Antes de que un disco pueda ser usado por un PC, necesita ser particionado. Una partición es un subconjunto lógico del disco físico, como un contenedor lógico. Particionar es una forma de "compartimentar" la información almacenada en el disco, separando, por ejemplo, los datos del sistema operativo de los datos del usuario. Cada disco necesita al menos una partición, pero puede tener varias particiones si es necesario, y la información en ellas se almacena en una tabla de particiones. Esta tabla incluye información sobre el primer y último sector de la partición y su tipo, así como más detalles sobre cada partición.

  • Volumes -> Las particiones no pueden abarcar varios discos pero al usar el Logical Volume Manager (LVM) se pueden combinar varias particiones, incluso a través de discos, para formar un único volumen lógico. Los volúmenes lógicos eliminan las limitaciones de los dispositivos físicos y le permiten trabajar con "grupos" de espacio en disco que se pueden combinar o distribuir de una manera mucho más flexible que las particiones tradicionales. LVM es útil en situaciones en las que necesitaría agregar más espacio a una partición sin tener que migrar los datos a un dispositivo más grande

Puntos de Montaje

Para poder acceder a un sistema de archivos en Linux, debe estar montado. Esto significa adjuntar el file system a un punto específico en el árbol de directorios, llamado punto de montaje (mount point). Cuando esté montado, el contenido del sistema de archivos estará disponible en el punto de montaje.

Por ejemplo, imagina una partición con los datos personales de tus usuarios (sus directorios de inicio), que contiene los directorios /john, /jack y /carol. Cuando se monta en /home, el contenido de esos directorios estará disponible en /home/john, /home/jack y /home/carol. El punto de montaje debe existir antes de montar el sistema de archivos. No puede montar una partición en /mnt/userdata si este directorio no existe. Los sistemas de archivos se pueden montar en cualquier lugar que desee. Sin embargo, hay algunas buenas prácticas que deben seguirse para facilitar la administración del sistema.

Antes /mnt era el sitio donde poner los puntos de montaje pero ha sido reemplazado por /media/USER/LABEL, que ahora es el punto de montaje predeterminado para cualquier medio extraíble por el usuario (por ejemplo, discos externos, unidades flash USB, lectores de tarjetas de memoria, discos ópticos, etc.) conectados al sistema. Sin embargo, cada vez que necesite manualmente montar un sistema de archivos, es una buena práctica montarlo en /mnt.

Manteniendo las cosas separadas

En Linux, hay algunos directorios que deberían mantenerse en particiones separadas. Hay muchas razones para esto, a continuación tienes algunos ejemplos:

  • Al mantener los archivos relacionados con el gestor de arranque (almacenados en /boot) en una partición de arranque, se asegura de que su sistema aún pueda arrancar en caso de un bloqueo en el sistema de archivos raíz.

  • Mantener los directorios personales del usuario (/home) en una partición separada facilita la reinstalación del sistema sin el riesgo de tocar accidentalmente los datos del usuario.

  • Mantener los datos relacionados con un servidor web o de base de datos (generalmente en /var) en una partición separada (o incluso en un disco separado) facilita la administración del sistema si necesita agregar más espacio en disco para esos casos de uso.

  • Es posible mantener el sistema de archivos raíz (/) en una unidad SSD rápida y directorios más grandes como /home y /var en discos duros más lentos que ofrecen mucho más espacio por una fracción del costo.

Particion de arranque (/boot)

La Partición de Arranque (/boot) contiene archivos utilizados por el gestor de arranque para cargar el SO. En sistemas Linux, el gestor de arranque suele ser GRUB2 o, en sistemas más antiguos, GRUB Legacy.

La partición generalmente se monta en /boot y sus archivos se almacenan en /boot/grub. Técnicamente, no se necesita una partición de arranque, ya que en la mayoría de los casos GRUB puede montar la partición raíz (/) y cargar los archivos desde un directorio separado /boot.

La partición de arranque suele ser la primera partición del disco, el BIOS original del PC de IBM definió los discos usando cilindros, cabezas y sectores (cylinders, heads y sectors (CHS)), con un máximo de 1024 cilindros, 256 cabezas y 63 sectores, lo que resulta en un tamaño de disco máximo de 528 MB (504 MB en MS-DOS) .

Esto significa que nada más allá de esta marca no sería accesible en los sistemas heredados, a menos que se usara un esquema de direccionamiento de disco diferente (como Logical Block Addressing, LBA). En resumen, para una máxima compatibilidad, la partición de arranque generalmente se encuentra al comienzo del disco y termina antes del cilindro 1024 (528 MB), asegurando que pase lo que pase, la máquina siempre podrá cargar el núcleo.

¿Por que razón separaríamos la partición /boot del resto?
  • Por temas de seguridad, si hay un fallo en el fichero raíz, podrá recuperarse desde el /boot

  • Por comodidad, podemos poner la partición de /boot en otro disco SSD para que cargue más rápido

Dado que la partición de arranque solo almacena los archivos que necesita el gestor de arranque, el disco RAM inicial y las imágenes del núcleo, puede ser bastante pequeño para los estándares actuales. Un buen tamaño es de alrededor de 300 MB.

El contenido de la partición /boot puede variar con la arquitectura del sistema o el cargador de arranque en uso, pero en un sistema basado en x86, generalmente encontrará los archivos a continuación:

La mayoría de estos se nombran con un sufijo -VERSION, donde -VERSION es la versión del núcleo de Linux correspondiente. Entonces, por ejemplo, un archivo de configuración para la versión del núcleo de Linux 4.15.0-65-generic se llamaría config-4.15.0-65- generic.

  • Archivo de configuración -> generalmente llamado config-VERSION, almacena los parámetros de configuración para el núcleo de Linux. Este archivo se genera automáticamente cuando se compila o instala un nuevo núcleo y el usuario no debe modificarlo directamente.

  • Mapa del sistema -> tabla de búsqueda que combina nombres de símbolos (como variables o funciones) con su posición correspondiente en la memoria. Esto es útil al depurar un tipo de falla del sistema conocida como kernel panic, ya que permite al usuario saber qué variable o función se estaba llamando cuando ocurrió la falla. Al igual que el archivo de configuración, el nombre suele ser System.map-VERSION (por ejemplo, System.map-4.15.0-65-generic).

  • Kernel de Linux -> es el núcleo del sistema operativo propiamente dicho. El nombre suele ser vmlinux-VERSION (por ejemplo, vmlinux-4.15.0-65-generic). También puede encontrar el nombre vmlinuz en lugar de vmlinux, la z al final significa que el archivo ha sido comprimido.

  • Disco RAM inicial -> generalmente se llama initrd.img-VERSION y contiene un sistema de archivos raíz mínimo cargado en un disco RAM, que contiene utilidades y módulos del núcleo necesarios para que el núcleo pueda montar el sistema de archivos raíz real.

  • Archivos relacionados con el cargador de arranque -> En los sistemas con GRUB instalado, estos generalmente se encuentran en /boot/grub e incluyen el archivo de configuración GRUB (/boot/grub/grub.cfg para GRUB 2 o /boot/grub/menu.lst en caso de GRUB Legacy), módulos (en /boot/grub/i386-pc), archivos de traducción (en /boot/grub/locale) y fuentes de texto (en /boot/grub/fonts).

La partición del sistema EFI (ESP)

La EFI System Partition (ESP) es utilizada por máquinas basadas en la interfaz de firmware extensible unificada (Unified Extensible Firmware Interface (UEFI)) para almacenar cargadores de arranque e imágenes del núcleo de los sistemas operativos instalados. Esta partición se crea de forma automática tanto en Windows como Linux.

Si el disco fue formateado bajo el esquema de partición MBR, la ID de la partición es 0xEF. En las máquinas que ejecutan Microsoft Windows, esta partición suele ser la primera en el disco, aunque esto no es obligatorio. El sistema operativo crea (o completa) el ESP después de la instalación, y en un sistema Linux se monta en /boot/efi.

Con fdisk se puede ver las particiones y volúmenes como el siguiente:

La Partición /home

Cada usuario en el sistema tiene un directorio de inicio para almacenar archivos personales y preferencias, por lo general, el directorio de inicio es el mismo que el nombre de usuario, por lo que el usuario John tendría su directorio en /home/john. Sin embargo, hay excepciones como el directorio de inicio para el usuario raíz, que es /root y algunos servicios del sistema pueden tener usuarios asociados con directorios de inicio en otros lugares.

  • No existe una regla para determinar el tamaño de una partición para el directorio /home (la partición de inicio). Debe tener en cuenta la cantidad de usuarios en el sistema y cómo se utilizará. Un usuario que solo navega por la web y procesa textos requerirá menos espacio que uno que trabaje con la edición de video, por ejemplo.

Información Variable (/var)

Este directorio contiene “datos variables”, o archivos y directorios en los que el sistema debe poder escribir durante la operación. Esto incluye registros del sistema (en /var/log), archivos temporales (/var/tmp) y datos de aplicaciones en caché (en /var/cache).

Normalmente /var está en / pero esto (en el peor de los casos) puede desencadenar en un estado de emergencia del núcleo del sistema operativo (Kernel Panic) y corrupción del sistema de archivos, causando una situación de la que es difícil recuperarse. Pero si /var se mantiene en una partición separada, el sistema de archivos raíz no se verá afectado.

  • Al igual que en /home, no existe una regla universal para determinar el tamaño de una partición para /var, ya que variará con la forma en que se utiliza el sistema. En un sistema doméstico, puede tomar solo unos pocos gigabytes. Pero en una base de datos o servidor web se puede necesitar mucho más espacio.

Partición de Intercambio (Swap)

La partición de intercambio se utiliza para intercambiar páginas de memoria de RAM a disco según sea necesario. Esta partición debe ser de un tipo específico y configurarse con una utilidad adecuada llamada mkswap antes de poder usarse.

La partición de intercambio no se puede montar como las demás, lo que significa que no puede acceder a ella como un directorio normal y echar un vistazo a su contenido.

Un sistema puede tener múltiples particiones de intercambio (aunque esto es poco común) y Linux también admite el uso de archivos de intercambio en lugar de particiones, lo que puede ser útil para aumentar rápidamente el espacio de intercambio cuando sea necesario.

El tamaño de la partición de intercambio es un tema polémico, en la documentación para Red Hat Enterprise Linux 7, Red Hat recomienda lo siguiente:

Cantidad de RAM
Tamaño recomendado
Tamaño recomendado con hibernación

<2 GB

2x cantidad de RAM

3x cantidad de RAM

2-8 GB

mismo tamaño de RAM

2x cantidad de RAM

8-64 GB

Al menos 4 GB

1'5x cantidad de RAM

>64 GB

Al menos 4 GB

No recomendado

Por supuesto, la cantidad de intercambio puede depender de la carga de trabajo. Si la máquina está ejecutando un servicio crítico, como una base de datos, un servidor web o SAP, es aconsejable consultar la documentación de estos servicios (o el proveedor de software) para obtener una recomendación. El uso de ficheros swap es especialmente recomendado en servicios donde se requiere de conexiones rápidas o acceso rápido, por ejemplo, para servidor gaming o streaming en los cuales

LVM (Logical Volume Management)

Una de las desventajas del sistema de particiones comentado es que el administrador del sistema tiene que decidir de antemano cómo se distribuirá el espacio disponible en un dispositivo de almacenamiento lo cual puede presentar algunos desafíos más adelante, por ejemplo, si una partición requiere más espacio de lo planeado originalmente; por supuesto, las particiones pueden redimensionarse, pero esto puede no ser posible si, por ejemplo, no hay espacio libre en el disco.

Logical Volume Management (LVM) es una forma de virtualización de almacenamiento que ofrece a los administradores de sistemas un enfoque más flexible para administrar el espacio en disco que la partición tradicional. El objetivo de LVM es facilitar la gestión de las necesidades de almacenamiento de sus usuarios finales. Es recomendable para su uso en sistemas RAID y en espejo, sistemas de discos de backup, realización de snapshots del sistema, etc.

De nuevo, debemos aprender algunos conceptos:

Concepto
Descripción

Physical volume (PV)

Unidad básica, dispositivo de bloque en su sistema como una partición de disco o un arreglo RAID.

Volume group (VG)

agrupaciones de PV que abstraen los dispositivos subyacentes y se ven como un único dispositivo lógico, con la capacidad de almacenamiento combinada de los componentes del PV.

Physical (PE) and Logical Extents (LE)

Cada volumen en un grupo de volúmenes se subdivide en partes de tamaño fijo llamadas extents En general, cada extensión lógica se asigna a una extensión física, pero esto puede cambiar si se utilizan características como la duplicación de disco.

Logical volumes (LV)

Los grupos de volúmenes se pueden subdividir en volúmenes lógicos (LV), que funcionan de forma similar a las particiones pero con más flexibilidad.

El tamaño de un volumen lógico, está definido por el tamaño de las extensiones físicas (4 MB por defecto) multiplicado por el número de extensiones en el volumen. A partir de esto, es fácil comprender que para aumentar un Volumen lógico, por ejemplo, todo lo que el administrador del sistema tiene que hacer es agregar más extensiones del grupo disponible en el Grupo de volúmenes. Del mismo modo, se pueden eliminar extensiones para reducir el LV.

Después de crear un volumen lógico, el sistema operativo lo ve como un dispositivo de bloque normal. Se creará un dispositivo en /dev, nombrado como /dev/VGNAME/LVNAME, donde VGNAME es el nombre del grupo de volúmenes y LVNAME es el nombre del volumen lógico. Estos dispositivos pueden formatearse con el sistema de archivos deseado utilizando utilidades estándares (como mkfs.ext4, por ejemplo) y montarse usando los métodos habituales, ya sea manualmente con el comando mount o automáticamente agregándolos al archivo /etc/fstab

102.2 Instalar un gestor de arranque

Importancia

2

Descripción

El candidato debe ser capaz de seleccionar, instalar y configurar un gestor de arranque.

Áreas de conocimiento clave:

  • Proporcionar ubicaciones alternativas para el gestor de arranque así como opciones de arranque de respaldo.

  • Instalar y configurar un gestor de arranque como GRUB Legacy.

  • Realizar cambios básicos de configuración para GRUB 2.

  • Interactuar con el gestor de arranque.

Contenidos

GRUB (Grand Unified Bootloader) es el gestor de arranque utilizado en la mayoría de las distribuciones de Linux. La selección del núcleo en el arranque se realiza a través de una interfaz controlada por teclado, y hay una interfaz de línea de comandos para editar las opciones y parámetros de arranque.

La mayoría de las distribuciones de Linux instalan y configuran GRUB (en realidad, GRUB 2) automáticamente, por lo que un usuario normal no necesita pensar en eso. Sin embargo, como administrador del sistema, es vital saber cómo controlar el proceso de arranque para poder recuperar el sistema de una falla de arranque después de una actualización fallida del núcleo, por ejemplo!

Las comparaciones entre Legacy y GRUB2 son las siguientes:

GRUB Legacy
GRUB2
  • Desarrollado en 1995 como parte del proyecto GNU Hurd

  • Reemplazo alternativas como LILO

  • GRUB Legacy ya no está en desarrollo activo (la última versión fue 0.97, en 2005)

  • Reescritura completa de GRUB

  • Más limpio, seguro, robusto y potente:

  • Archivo de configuración mucho más flexible (más comandos y sentencias condicionales, similar a script),

  • Diseño modular

  • Mejor localización/internalización

  • Soporte para temas y menús gráficos de arranque.

  • Capacidad de arrancar ISOs de LiveCD desde disco duro.

  • Mejor soporte para arquitecturas que no son x86

  • Soporte universal para UUID (lo que facilita la identificación de discos y particiones).

Aprenderemos como instalar, configurar e interactuar con GRUB.

MBR y GRUB

Si recuerdas, en el esquema MBR este ocupa el primer sector de 512 bytes del disco y contiene una tabla que describe las particiones en el disco (la tabla de particiones) y también el código de arranque, llamado cargador de arranque. A partir de aquí el proceso es:

  1. El código de gestor de arranque mínimo (debido a restricciones de tamaño) se carga, ejecuta y pasa el control a un cargador de arranque secundario en el disco, generalmente ubicado en un espacio de 32 KB entre el MBR y la primera partición, que cargará los sistemas operativos.

  2. Esto carga y pasa el control a una imagen “núcleo” instalada entre el MBR y la primera partición.

  3. Desde este punto, GRUB es capaz de cargar el resto de los recursos necesarios (definiciones de menú, archivos de configuración y módulos adicionales) desde el disco.

Sin embargo, MBR tiene limitaciones en el número de particiones (originalmente un máximo de 4 particiones primarias, luego un máximo de 3 particiones primarias con 1 partición extendida subdividida en un número de particiones lógicas) y tamaños de disco máximos de 2 TB. Para superar estas limitaciones, se creó un nuevo esquema de particionamiento llamado GPT (GUID Partition Table), parte del estándar UEFI (Unified Extensible Firmware Interface). Los discos con particiones GPT se pueden usar con computadoras con el BIOS de PC tradicional o con el firmware UEFI.

En resumen:

  • En máquinas con BIOS, la segunda parte de GRUB se almacena en una partición especial de arranque del BIOS, en un disco con particiones MBR y el código de arranque para GRUB está instalado en este MBR.

GRUB2

Instalando GRUB2

GRUB 2 se puede instalar utilizando la utilidad grub-install. Si tiene un sistema que no arranca, necesitará arrancar usando un Live CD o un disco de rescate, averiguar cuál es la partición de arranque de su sistema, montarlo y luego ejecutar la utilidad en modo sudo. Vamos a ver paso por paso como realizar esto sobre un disco duro montado:

El primer disco de un sistema suele ser el boot device y es posible que necesite saber si hay una boot partition en el disco. Esto se puede hacer con la utilidad fdisk. Para enumerar todas las particiones en el primer disco de su máquina, use:

sudo fdisk -l /dev/sda

La partición de arranque se identifica con el * debajo de la columna de arranque. En el ejemplo anterior, es /dev/sda1. Ahora, vamos a crear un directorio temporal en /mnt y montar la partición en él:

mkdir /mnt/tmp
sudo mount /dev/sda1 /mnt/tmp

Luego ejecutamos grub-install, apuntándolo al dispositivo de arranque (no la partición) y al directorio donde está montada la partición de arranque. Si su sistema tiene una partición de arranque dedicada, el comando es:

grub-install --boot-directory=/mnt/tmp /dev/sda

grub-install --boot-directory=/boot /dev/sda #Esto es para instalar en un sistema que no tiene una partición de arranque, sino solo un directorio /boot en el sistema de archivos raíz

Configurando GRUB 2

El archivo de configuración predeterminado para GRUB 2 es /boot/grub/grub.cfg.

Este archivo se genera automáticamente y no se recomienda la edición manual. Para realizar cambios en la configuración de GRUB, debe editar el archivo /etc/default/grub y luego ejecutar la utilidad update-grub para generar un archivo compatible.

Hay algunas opciones en el archivo /etc/default/grub que controlan el comportamiento de GRUB2, como el kernel predeterminado para arrancar, el tiempo de espera, los parámetros adicionales de la línea de comandos, etc. Los más importantes son:

  • GRUB_DEFAULT= La entrada de menú predeterminada para arrancar. Puede ser un valor numérico (como 0, 1, etc.), el nombre de una entrada de menú (como debian) o saved, que se usa junto con GRUB_SAVEDEFAULT=, explicado a continuación. Tenga en cuenta que las entradas del menú comienzan en cero, por lo que la primera entrada del menú es 0, la segunda es 1, etc.

  • GRUB_SAVEDEFAULT= Si esta opción se establece en true y GRUB_DEFAULT= se establece en saved, entonces la opción de inicio predeterminada siempre será la última seleccionada en el menú de inicio.

  • GRUB_TIMEOUT= El tiempo de espera, en segundos, antes de que se seleccione la entrada de menú predeterminada. Si se establece en 0, el sistema iniciará la entrada predeterminada sin mostrar un menú. Si se establece en -1, el sistema esperará hasta que el usuario seleccione una opción, sin importar cuánto tiempo tarde.

  • GRUB_CMDLINE_LINUX= Esto enumera las opciones de línea de comando que se agregarán a las entradas para el kernel de Linux.

  • GRUB_CMDLINE_LINUX_DEFAULT= Por defecto, se generan dos entradas de menú para cada núcleo de Linux, una con las opciones predeterminadas y una entrada para la recuperación. Con esta opción, puede agregar parámetros adicionales que se agregarán solo a la entrada predeterminada.

  • GRUB_ENABLE_CRYPTODISK= Si se establece en y, los comandos como grub-mkconfig, update-grub y grub-install buscarán discos cifrados y agregarán los comandos necesarios para acceder a ellos durante el arranque. Esto desactiva el arranque automático (GRUB_TIMEOUT= con cualquier valor que no sea -1) porque se necesita una contraseña para descifrar los discos antes de que se pueda acceder a ellos.

Administrar entradas de menú

Cuando se ejecuta update-grub, GRUB2 buscará núcleos y sistemas operativos en la máquina y generarán las entradas de menú correspondientes en el archivo /boot/grub/grub.cfg.

Se pueden agregar nuevas entradas manualmente a los archivos de script dentro del directorio /etc/grub.d. Estos archivos deben ser ejecutables y son procesados en orden numérico por update-grub. Por lo tanto, 05_debian_theme se procesa antes que 10_linux y así sucesivamente. Las entradas de menú personalizadas generalmente se agregan al archivo 40_custom:

La sintaxis básica para una entrada de menú se muestra a continuación:

menuentry "Default OS" {
  set root=(hd0,1)
  linux /vmlinuz root=/dev/sda1 ro quiet splash
  initrd /initrd.img
}
  • Siendo que la primera línea siempre comienza con menuentry y termina con {. El texto entre comillas se mostrará como la etiqueta de entrada en el menú de arranque de GRUB 2.

  • El parámetro set root= define el disco y la partición donde se encuentra el sistema de archivos raíz para el sistema operativo. Ten en cuenta que en GRUB2 los discos están numerados desde cero, por lo que hd0 es el primer disco (sda en Linux), hd1 el segundo, y así sucesivamente. Las particiones, sin embargo, están numeradas a partir de uno. En el ejemplo anterior, el sistema de archivos raíz se encuentra en el primer disco (hd0), la primera partición (,1) o sda1.

  • La línea linux indica dónde se encuentra el núcleo del sistema operativo (en este caso, el archivo vmlinuz en la raíz del sistema de archivos). Después de eso, puede pasar los parámetros de la línea de comandos al núcleo del sistema operativo:

    • Los parámetros especificados son que la partición raíz debe montarse como solo lectura (ro), la mayoría de los mensajes de registro deben estar deshabilitados (quiet) y se debe mostrar una pantalla de bienvenida (splash).

  • La línea initrd indica dónde se encuentra el disco RAM inicial. En el ejemplo anterior, el archivo es initrd.img, ubicado en la raíz del sistema de archivos.

En lugar de especificar directamente el dispositivo y la partición, también puede hacer que GRUB2 busque un sistema de archivos con una etiqueta específica o UUID (Universally Unique Identifier).

search --set-root --label XXXXX
search --set-root --fs-uuid XXXXX

Puede encontrar el UUID de un sistema de archivos con el siguiente comando:

ls -l /dev/disk/by-uuid/

Interactuando con GRUB2

Al iniciar un sistema con GRUB2, verás un menú de opciones. Usa las teclas de flecha para seleccionar una opción y Enter para confirmar y arrancar la entrada seleccionada. Si solo ves una cuenta regresiva, pero no un menú, presiona Shift para que aparezca el menú.

Para editar una opción, selecciónala con las teclas de flecha y presiona E . Esto mostrará una ventana del editor con el contenido del menuentry asociado con esa opción, como se define en /boot/grub/grub.cfg.

Después de editar una opción, escribe y Ctrl+X o F10 para arrancar, o Esc para volver al menú.

Para ingresar al shell de GRUB2, presiona C en la pantalla del menú (o Ctrl+C ) en la ventana de edición). Verá un símbolo del sistema como este: grub>

Escribe help para ver una lista de todos los comandos disponibles, o presiona Esc para salir del shell y volver a la pantalla del menú.

Recuerda que este menú no aparecerá si GRUB_TIMEOUT está configurado en 0 en /etc/default/grub

Arranque de sistema desde la consola del GRUB 2

Puede usar el shell GRUB2 para arrancar el sistema en caso de que una configuración incorrecta en una entrada del menú haga que falle.

Lo primero a hacer es averiguar dónde está la partición de arranque con el comando ls, que le mostrará una lista de las particiones y discos que GRUB 2 ha encontrado.

grub>
ls 
#(proc) (hd0) (hd0,msdos1)

En el ejemplo anterior, las cosas son fáciles. Solo hay un disco (hd0) con solo una partición: (hd0, msdos1).

Los discos y particiones enumerados serán diferentes en su sistema. En nuestro ejemplo, la primera partición de hd0 se llama msdos1 porque el disco se particionó utilizando el esquema de partición MBR. Si se particionara usando GPT, el nombre sería gpt1.

Para arrancar Linux, necesitamos un kernel y un disco RAM inicial (initrd). Veamos el contenido:

grub>
ls (hd0,msdos1)/
#lost+found/ swapfile etc/ media/ bin/ boot/ dev/ home/ lib/ 
#lib64/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ 
#var/ initrd.img initrd.img.old vmlinuz cdrom/

Podemos ver que tenemos imágenes de kernel (vmlinuz) e initrd (initrd.img) directamente en el directorio raíz. Si no, podríamos verificar el contenido de /boot con list (hd0,msdos1)/boot/

Ahora, configuramos la partición de arranque:

grub>
set root=(hd0,msdos1) 

Cargamos el kernel de Linux con el comando linux, seguido de la ruta al kernel y la opción root= para decirle al kernel dónde se encuentra el sistema de archivos raíz para el sistema operativo.

grub>
linux /vmlinuz root=/dev/sda1 

Cargamos el disco RAM inicial con initrd, seguido de la ruta completa al archivo initrd.img:

grub>
initrd /initrd.img 

Por último, iniciamos el sistema con boot.

Arranque desde la consola de rescate

En caso de una falla de arranque, GRUB2 puede cargar un shell de rescate, una versión simplificada del shell que mencionamos anteriormente, lo reconoceremos mediante el símbolo del sistema, que se muestra como grub rescue>.

El proceso para iniciar un sistema desde esta consola es casi el mismo que se muestra anteriormente. Sin embargo, deberemos cargar algunos módulos GRUB2 para que todo funcione. Después de descubrir qué partición es la partición de arranque (con ls, como se muestra antes), usamos el comando set prefix=, seguido de la ruta completa al directorio que contiene los archivos GRUB 2. Usualmente /boot/grub. En nuestro ejemplo:

grub rescue>
set prefix=(hd0,msdos1)/boot/grub

Ahora, cargamos los módulos necesarios; normal y linux con el comando insmod:

grub rescue>
insmod normal
insmod linux

Luego, configuramos la partición de arranque con set root= como anteriormente, cargamos el kernel de Linux (con linux), el disco RAM inicial (initrd) e intentamos arrancar con boot.


Importancia

1

Descripción

El candidato debe ser capaz de determinar de qué librerías compartidas dependen los programas ejecutables e instalarlas cuando sea necesario.

Áreas de conocimiento clave:

  • Identificar librerías compartidas.

  • Identificar las ubicaciones típicas de las librerías del sistema.

  • Cargar librerías compartidas.

Contenidos

102.4 Gestión de paquetes Debian

Importancia

3

Descripción

El candidato debe ser capaz de llevar a cabo la gestión de paquetes usando las herramientas de Debian.

Áreas de conocimiento clave:

  • Instalar, actualizar y desinstalar paquetes binarios de Debian.

  • Encontrar paquetes que contengan archivos o librerías específicos (estén o no instalados).

  • Obtener información del paquete como la versión, contenido, dependencias, integridad del paquete y estado de la instalación (tanto si el paquete está instalado como si no lo está).

  • Conocimientos de apt.

Contenidos

Con el objetivo de estandarizar y facilitar una forma de distribuir los “paquetes” de software en Linux, nacieron los primeros administradores de paquetes. Uno de ellos fue el formato de paquete Debian (.deb) y su herramienta de paquetería (dpkg) u otra popular que es Advanced Package Tool (apt), que puede optimizar muchos de los aspectos de la instalación, mantenimiento y eliminación de paquetes, lo que lo hace mucho más fácil.

dpkg - Herramienta de paquetería en Debian

La herramienta Debian Package (dpkg) es la utilidad esencial para instalar, configurar, mantener y eliminar paquetes de software en sistemas basados en Debian. La operación más básica es instalar un paquete .deb, que se puede hacer con:

dpkg -i PACKAGENAME.deb

Las actualizaciones de paquetes se manejan de la misma manera. Antes de instalar un paquete, dpkg verificará si ya existe una versión anterior en el sistema. Si es así, el paquete se actualizará a la nueva versión. Si no, se instalará una copia nueva.

dpkg también verificará si el software requiere de dependencias y si están instaladas en su sistema y no podrá instalar el paquete si no lo están por lo que en este caso, dpkg listará qué paquetes faltan. Sin embargo, no puede resolver dependencias por sí mismo por lo que depende del usuario encontrar los paquetes .deb con las dependencias correspondientes e instalarlos.

La operación de eliminación también ejecuta una verificación de dependencias, y un paquete no se puede eliminar a menos que también se elimine cualquier otro paquete que dependa de él. Si intentas hacerlo, recibirá un mensaje de error.

Algunos de los parámetros útiles del comandos:

#Con --force forzaremos la instalación sin tener en cuenta dependendencias (no recomendado)
dpkg -i --force PACKAGENAME.deb

#Para eliminar parquetes
dpkg -r PACKAGENAME.deb

#Para purgar parquetes (eliminando archivos de configuración)
dpkg -P PACKAGENAME.deb
dpkg -P --force PACKAGENAME.deb #Borra todo a la fuerza

#Para obtener información sobre versión, arquitectura, mantenedor, dependencias y más
dpkg -I PACKAGENAME.deb

#Listar paquetes instalados
dpkg --get-selections

#Listar archivos/directorios relacionados con el paquete
dpkg -L PACKAGENAME.deb

#Averiguar que paquete posee un archivo especifico o con que paquete se ha instalado
dpkg-query -S /usr/bin/unrar-nonfree
#Esto devolverá unrar: /usr/bin/unrar-nonfree

apt - Herramienta de Paquetería Avanzada

Advanced Package Tool (apt) es un sistema de administración de paquetes, que incluye un conjunto de herramientas, que simplifica enormemente la instalación, actualización, eliminación y administración de paquetes.

APT proporciona características como capacidades de búsqueda avanzada y resolución de dependencias automática sin embargo no debe tomarse como un “sustituto” de dpkg. Puede considerarlo como una “Interfaz (front end)”, que optimiza las operaciones y llena los vacíos de la funcionalidad dpkg, como la resolución de dependencias. APT trabaja en conjunto con los repositorios de software que contienen los paquetes disponibles para instalar. Dichos repositorios pueden ser un servidor local o remoto o (menos común) incluso un disco CD-ROM.

Las distribuciones de Linux (como Debian y Ubuntu) mantienen sus propios repositorios, y los desarrolladores o grupos de usuarios pueden mantener otros repositorios para proporcionar software que no está disponible en los principales repositorios de distribución.

Existen muchas utilidades que interactúan con APT, siendo las principales:

apt-get     # Para descargar, instalar, actualizar o eliminar paquetes del sistema. 
apt-cache   # Para realizar operaciones, como búsquedas, en el índice de paquetes. 
apt-file    # Para buscar archivos dentro de los paquetes. Puede ser necesaria su instalación.

apt         # Combina las opciones más utilizadas de apt-get y apt-cache en una utilidad.

Vamos con los comandos más concretos:

#Actualización
apt-get update                 #Actualiza el índice de paquetes para recuperar información sobre paquetes nuevos y/o actualizados
apt-get upgrade                #Actualiza todos los paquetes
apt-get upgrade NOMBREPAQUETE  #Actualiza el paquete mencionado

#Instalación
apt-get install NOMBREPAQUETE     #Instalar el paquete
apt-get install -f NOMBREPAQUETE  #Intenta reparar las dependendencias "rotas"

#Desintalación
apt-get remove NOMBREPAQUETE          #Desinstalar el paquete
apt-get remove --purge NOMBREPAQUETE  #Desinstala el paquete eliminando todos los archivos de configuración
apt-get purge NOMBREPAQUETE           #Lo mismo que el anterior

#Caché
apt-get clean  #Esto eliminará el contenido de los directorios de aché de /var/cache/apt/archives y /var/cache/apt/archives/partial/

#Listar
apt-cache search NOMBREPAQUETE  #Realiza una búsqueda de paquetes y muestra aquellos que coinciden
apt-cache show PATRON           #Puede ser que nos encontremos con un patrón que no reconozcamos directamente, podemos examinar más info del paquete con este.

#apt-file
apt-file list NOMBREPAQUETE       #Lista los archivos del paquete
apt-file search ARCHIVODELPAQUETE #Búsca un archivo dentro de un paquete, al contrario que dpkg-query, este también buscara en paquetes desinstalados

Recuerda que todos estos comandos también pueden usarse solamente con apt

Lista de Fuentes

APT utiliza una lista de fuentes para saber de dónde obtener paquetes que se almacena en el archivo /etc/apt/sources.list.

Al editarlo veremos algo así:

deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse
La sintaxis es tipo de archivo, URL, distribución y uno o más componentes, donde:
  • Tipo de archivo -> Un repositorio puede contener paquetes con software listo para ejecutar (paquetes binarios, descrito como deb) o con el código fuente de este software (paquetes fuente, descrito como deb-src). El ejemplo anterior proporciona paquetes binarios. URL La URL del repostorio.

  • Distribución -> El nombre (o nombre en clave) de la distribución para la que se proporcionan los paquetes. Un repositorio puede alojar paquetes para múltiples distribuciones. En el ejemplo anterior, disco es el nombre en clave de Ubuntu 19.04 Disco Dingo.

  • Componentes -> Cada componente representa un conjunto de paquetes. Estos componentes pueden ser diferentes en diferentes distribuciones de Linux:

Por ejemplo, en Ubuntu y derivados, son:

  • main -> contiene paquetes de código abierto con soporte oficial.

  • restricted -> contiene software de código cerrado con soporte oficial, como controladores de dispositivo para tarjetas gráficas, por ejemplo.

  • universe -> contiene software de código abierto mantenido por la comunidad.

  • multiverse -> contiene software no compatible, de código cerrado o con patente gravada.

Mientras que en Debian, los componentes principales son:

  • contrib -> contiene paquetes compatibles con DFSG, pero que dependen de otros paquetes que no están en main.

  • non-free -> contiene paquetes que no son compatibles con DFSG.

  • security -> contiene actualizaciones de seguridad.

  • backports -> contiene versiones más recientes de paquetes que están en main. El ciclo de desarrollo de las versiones estables de Debian es bastante largo (alrededor de dos años), y esto asegura que los usuarios puedan obtener los paquetes más actualizados sin tener que modificar el repositorio principal main.

Si quieres añadir un repositorio, simplemente escribe la linea proporcionada por el proveedor al final de sources.list, guarda el archivo y vuelve a cargar el índice del paquete con apt-get update .


Importancia

3

Descripción

El candidato debe ser capaz de llevar a cabo la gestión de paquetes usando las herramientas RPM, YUM y Zypper.

Áreas de conocimiento clave:

  • Instalar, reinstalar, actualizar y desinstalar paquetes usando RPM, YUM y Zypper.

  • Obtener información de paquetes RPM como la versión, estado, dependencias, integridad y firmas.

  • Determinar qué archivos proporciona un paquete así como encontrar de qué paquete proviene un determinado archivo.

  • Conocimientos de dnf.

Contenidos

Para Red hat y derivados (como Fedora, CentOS y Oracle Linux)

Importancia

1

Descripción

El candidato debe entender las implicaciones que conlleva la virtualización y la computación en la nube en un sistema Linux virtualizado.

Áreas de conocimiento clave:

  • Entender el concepto general de máquina virtual y contenedor.

  • Entender elementos comunes de una máquina virtual en un entorno de nube de tipo IaaS, tales como instancia de computación, almacenamiento de bloques y redes.

  • Entender las propiedades únicas de un sistema Linux que tienen que cambiar cuando el sistema se clona o se usa como plantilla.

  • Entender cómo se usan las imágenes de sistema para desplegar máquinas virtuales, instancias de nube y contenedores.

  • Entender las extensiones de Linux que permiten la integración con un producto de virtualización

  • Conocimientos de cloud-init.

Contenidos

Filesystems -> Dentro de cada partición hay un sistema de archivos. El sistema de archivos describe la forma en que la información se almacena realmente en el disco. Esta información incluye cómo están organizados los directorios, cuál es la relación entre ellos, dónde están los datos para cada archivo, etc. Puedes encontrar más información .

Los detalles del llamado File Hierarchy Standar (FHS) se revisarán en mejor detalle en el

Esta partición está formateada en un sistema de archivos basado en FAT12, FAT16 o FAT32. En un disco particionado con una tabla de particiones GUID, tiene un identificador único global .

Veremos cómo crear y habilitar particiones de intercambio y archivos de intercambio en el .

Mientras, tienes un tutorial .

Todo lo relacionado con la parte práctica lo veremos en el .

Como ya hemos visto en el , el primer software que se ejecuta en el PC es el cargador de arranque, un código cuyo único propósito es cargar el núcleo del sistema operativo y entregarle el control.

En los sistemas con UEFI, GRUB se carga mediante el firmware desde los archivos grubia32.efi (para sistemas de 32 bits) o grubx64.efi (para sistemas de 64 bits) desde una partición llamada (EFI System Partition ).

102.3 Gestión de librerías compartidas

main -> consiste en paquetes que cumplen con las , que no dependen de software fuera de esta área para operar. Los paquetes incluidos aquí se consideran parte de la distribución Debian.

102.5 Gestión de paquetes RPM y YUM

Timeline sobre distros:

102.6 Linux como sistema virtualizado

1️
🚧
🚧
🚧
102.1 Diseño del esquema de particionado del disco duro duro
102.2 Instalar un gestor de arranque
102.3 Gestión de librerías compartidas
102.4 Gestión de paquetes Debian
102.5 Gestión de paquetes RPM y YUM
aquí
topic 104.7
C12A7328-F81F-11D2- BA4B-00A0C93EC93B
Objetivo 104.1 de LPIC-1
aquí
topic 104.3
topic 101.2
ESP
Directrices de software libre de Debian (DFSG)
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg
Esquema de conceptos
Desde la ventana de "Administración de discos" podemos ver los discos (rojo), particiones (verde) y volúmenes con el tipo de sistema de archivos.
CHS
Ejemplo de archivos que contiene /boot en un sistema Debian
Particiones y discos
Ejemplos de uso de LVM. Tres capas: física, virtual y de sistema. Fuente: Openwebinars
Ejemplo de una MV Debian
Archivos de /etc/grub.d/