Tema 102: Instalación de Linux y gestión de paquetes
Last updated
Last updated
Importancia
2
Descripción
Los candidatos deberán ser capaces de diseñar un esquema de particionado de disco para un sistema Linux.
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.
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
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
.
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.
/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.
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 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:
/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.
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.
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:
<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
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:
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
Importancia
2
Descripción
El candidato debe ser capaz de seleccionar, instalar y configurar un gestor de arranque.
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.
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:
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.
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:
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.
Esto carga y pasa el control a una imagen “núcleo” instalada entre el MBR y la primera partición.
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.
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:
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:
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:
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.
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:
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 (splas
h).
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.
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
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.
En el ejemplo anterior, las cosas son fáciles. Solo hay un disco (hd0)
con solo una partición: (hd0, msdos1)
.
Para arrancar Linux, necesitamos un kernel y un disco RAM inicial (initrd). Veamos el contenido:
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:
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.
Cargamos el disco RAM inicial con initrd
, seguido de la ruta completa al archivo initrd.img
:
Por último, iniciamos el sistema con boot.
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:
Ahora, cargamos los módulos necesarios; normal
y linux
con el comando insmod
:
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.
Identificar librerías compartidas.
Identificar las ubicaciones típicas de las librerías del sistema.
Cargar librerías compartidas.
Importancia
3
Descripción
El candidato debe ser capaz de llevar a cabo la gestión de paquetes usando las herramientas de Debian.
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.
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.
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:
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:
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:
Vamos con los comandos más concretos:
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í:
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.
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.
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.
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.
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 ).
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.
Timeline sobre distros: