Algoritmos y Estructuras de Datos Compiladores e Intérpretes Herramientas Lenguaje de programación
!Prog C/C++
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Redes y Computación Distribuida Sistemas Operativos

Instalación

[date: 31-12-2024] [last modification: 14-01-2025]
[words: 1833] [reading time: 9min] [size: 22361 bytes]

Post sobre la instalación de Linux, esquemas de particionado del disco y cómo obtener información del hardware para comprobar que la instalación fue correcta.

Tipos de instalación

Dependiendo de lo que se vaya a realizar con el sistema operativo, suelen existir diferentes tipos de instalaciones.

Tipos de instalaciones
EscritorioOfimática, navegación por Internet…
Workstation

Sistema de alto rendimiento, generalmente orientado a una tarea específica.

  • Dedicada al cálculo (p.e. Aplicaciones científicas)
  • Estaciones gráficas (p.e. Diseño 3D)
Servidores

Ofrecen servicios a otras máquinas.

  • Servicios de archivos ([FTP], NFS, Samba), de directorio (LDAP), bases de datos (MySQL, PostgreSQL), …
  • Servicios de aplicaciones: telnet, SSH
  • Servicios de red:
    • [DHCP], [DNS], [NAT], proxies
    • Firewalls
    • [Correo electrónico]
    • Web (p.e. Apache)

[FTP]: {< ref “redes/aplicacion/#ftp” >}} [DNS]: {< ref “redes/aplicacion/#dns” >}} [NAT]: {< ref “redes/red/#nat” >}} [DHCP]: {< ref “redes/red/#protocolo-dhcp” >}} [Correo electrónico]: {< ref “redes/aplicacion/#protocolos-de-correo-electrónico” >}}

Proceso de instalación

  1. Descargar el archivo .iso de la distribución que se vaya a usar
  2. Flashearlo en un USB para hacerlo booleable
  3. Arrancar el ordenador desde el USB (se cambia en el menú de la BIOS/UEFI)
  4. Seguir los pasos del instalador (excepto si usas Arch, en ese caso, te toca seguir la wiki).

Normalmente, en esos pasos hay que configurar:

Particionado del disco

Dependiendo del tipo de sistema que se desee, se pueden utilizar distintos tipos de particionados.

Nota
Para más información sobre cómo se implementan las particiones, consulte este otro post.
Importante
Los directorios esenciales para arrancar son /etc, /usr y /boot. Salvo esta última, deben estar disponibles en la misma partición que / o incluidas en initramfs.
Escritorio
3 particiones
  • swap: se corresponde con la partición de la zona de intercambio. El tamaño de esta partición dependerá del tamaño de la memoria principal y el tipo de aplicaciones que se quieran ejecutar. De forma general, antes se recomendaba al menos el doble que RAM, pero actualmente con memorias superiores al GiB, 4 GiB es un buen valor por defecto. Si se va a usar para hibernar, mejor que sea del mismo tamaño que la RAM.
  • /home: cuentas de usuario, para poder realizar backups.
  • /: resto del disco.
Servidor
6 particiones

Las mismas 3 de antes:

  • swap
  • /home
  • /

Y también particiones separadas para:

  • /usr: montado como solo lectura después de la instalación para evitar que los usuarios introduzcan virus.
  • Tener /var y /tmp aparte evita que estos directorios resten espacio para el resto del disco.

Otras particiones importantes son:

Sistemas de archivos

Dentro de las particiones primarias creadas es posible almacenar sistemas de archivos. Estas pueden tener diversos formatos, lo que implica una organización diferente dentro la misma.

Sistema de archivos

Un sistema de archivos es una forma de implementar la abstracción de un archivo. Define cómo se almacenan, se organizan, sus metadatos, etc. Están íntimamente ligados con el propio Sistema Operativo.

Para más información sobre algunas posibles implementaciones, consulta el post de archivos.

Sistema de archivos transaccional

Se trata de un sistema de archivos que implementa los conceptos de las transacciones atómicas típicas de un sistema de base de datos. Este concepto también se conoce como Journaling File System.

Las operaciones aplicadas mantienen la consistencia de los datos a través de transacciones: o se realizan todas las operaciones, o no se realiza ninguna (en caso de error).

Para ello, se suelen anotar las operaciones realizadas en un log para poder deshacerlas.

Volumen
Cualquier dispositivo de bloque (pseudo-archivo: disco, partición, LUKS, volumen LVM, RAID) que contiene un sistema de archivos que se pueden montar se le llama volumen.

A continuación, se detallan algunas características de los sistemas de archivos más utilizados.

ext4

Fourth EXTended file system es el sistema estándar de Linux.

  • Es transaccional
  • Utiliza inodes para reducir la fragmentación.
  • Puede trabajar con discos de gran tamaño: 1 EiB
  • Los archivos pueden ser también muy grandes: 16 TiB
  • Las opciones pueden configurarse con tune2fs

Versiones anteriores como ext2 y ext3 todavía se pueden usar.

btrfs

El sistema de archivos B-tree es el posible sucesor de ext4. Presenta características avanzadas para mejorar el rendimiento, la gestión y seguridad de los datos.

  • Incluye funciones para el controlador de RAID (Redundant Array of Independent Disks) y del gestor de volúmenes LVM. Por tanto, soporta de forma nativa sistemas de ficheros multidispositivo y subvolúmenes.
  • Uso de copy-on-write: si varios recursos son iguales, se devuelve un puntero al único recurso. Cuando se modifica uno de ellos, es entonces cuando se crea el nuevo recurso.
  • Permite snapshots
  • Protege la información mediante checksums
  • Soporta compresión y empaquetado eficiente de archivos pequeños
  • Implementa optimizaciones para discos SSD

Actualmente son la mejor opción para los servidores.

Otros sistemas transaccionales portados de otros sistemas Unix pueden ser JFS y XFS (IBM y GSI Iris respectivamente).

Y algunos sistemas de archivos que el sistema operativo Windows utiliza son los siguientes:

NTFS y exFAT
Usados por Windows en ordenadores domésticos y unidades extraíbles. Linux también los soporta.
reFS
Usado por Windows en entornos empresariales. No soportado por Linux.

Herramientas

Manipulación de particiones
fdisk
Fixed Disk
Permite crear y modificar particiones con unos menús interactivos. Con la opción -l lista las particiones.
parted

Programa GNU que también permite crear, destruir, cambiar el tamaño, chequear y copiar particiones.

Sistemas de archivos
mkfs.tipo
Make File System

Crea los sistemas de archivos dentro de un disco lógico. tipo es el nombre del formato del sistema de archivos:

mkfs.ext4 /dev/sda4

Lo mismo para:

  • msdos
  • ntfs
  • btrfs
  • jfs
  • xfs
  • vfat
mkswap
Make Swap
Formatea un disco lógico para crear una zona de intercambio.
fsck.tipo
File System Check

Chequea y reparar sistemas de archivos (fsck.ext4)

Otras utilidades
du
Disk Usage

Muestra el uso de disco de archivos y directorios.

du -hs directorio muestra el tamaño del directorio en múltiplos de byte. No muestra el tamaño de todos los archivos que contiene, solo el total.

df
Disk Free

Muestra el espacio de disco usado y disponible en todos los sistemas de archivos montados. -h es como siempre, representar los bytes con múltiplos.

Comandos relacionados
tune2fsPermite cambiar algunos parámetros de los sistemas de archivos ext.
dumpe2fsMuestra información sobre un sistema archivos ext.

Monturas

Enlaza una dirección (path) con un sistema de archivos.

mount /dev/... ruta         # Monta la partición en directorio
mount --mkdir /dev/... ruta # Para crear directorio si no existe
mount -a                    # Monta los fs especificados en /etc/fstab
mount -o op1,op2... ruta    # Permite remontar con otras opciones
umount ruta                 # Desmonta el fs del directorio

Se definen las monturas a utilizar en el arranque en el archivo /etc/fstab:

# Partition Mount Point  Format  Options  Dump  Pass
/dev/sdb2   none         swap    sw       0     0
/dev/sdb3   /            ext4    sw       0     0

Opciones de montado :

defaults usa las opciones por defecto: ro, auto, nouser.

File-systems específicos pueden tener opciones especiales para ellos. En el archivo /etc/mtab se muestran las particiones de están montadas en el momento (ver tabla de particiones).

Zona de intercambio

Para activar una zona de intercambio (equivalente a montarla), se usa el comando:

swapon /dev/sda4

swapon -s lista todas las zonas de intercambio.

UUID

Los dispositivos se pueden identificar por su dispositivo (/dev/sda, /dev/nvme0n1p6), pero esa nomenclatura depende de cómo estén colocados en el hardware y pueden cambiar entre reinicios.

La otra forma es usar el Universal Unique Identifier del dispositivo. Se determina a partir de elementos hardware, etiquetas, el sistemas de archivos, etc. Se trata de un número muy grande, por tanto es poco probable que hayan colisiones.

Se puede usar el comando blkid (Block ID) para obtener el UUID de un dispositivo.

En el archivo /etc/fstab también se pueden utilizar como UUID=XXXX en lugar de /dev/...; pero muchos otros comandos también hacen uso de UUIDs.

GRUB

Hay que instalar al menos un gestor de arranque, de lo contrario no se podrá iniciar el sistema. Si tenemos varios SO, basta con instalar un único gestor de arranque. Mostrará un menú con todos los SO disponibles y carga el kernel elegido por el usuario.

GRUB (Grand Unified Booloader) es el programa más utilizado.

Información sobre el hardware

Disponemos de los siguientes comandos y archivos para obtener la información sobre el hardware:

Información leída del Hardware
dmidecode
DMI Decode

Vuelca la información DMI (Desktop Management Interface) de la BIOS. Esta es una tabla que contiene una descripción de los componentes hardware en un formato legible por humanos. Incluye:

  • Placa base
  • Módulos de RAM
  • CPU
  • Discos
  • Tarjetas insertadas
Información obtenida por el Sistema Operativo
lshw
(List Hardware)
Muestra toda la información obtenida por el Sistema Operativo. Utiliza los archivos especiales de /proc y /sys.
lscpu
(List CPU)
Muestra información sobre la CPU: núcleos, memoria caché, arquitectura…
nproc
(Number of Processors)
Muestra el número de núcleos disponibles.
lspci
(List PCI)
Lista tarjetas pinchadas en la placa.
lsusb
(List USB)

Lista dispositivos conectados por USB. Incluye coordenadas del bus e ID del dispositivo.

Información sobre los discos
fdisk -lLista todas las particiones. Al especificar -l lista todos los discos.
df -h

Lista todas particiones montadas. -h es para especificar el tamaño en múltiplos y no solo en bytes.

Información sobre la memoria
free -h

Muestra la memoria principal total, disponible y libre, tanto RAM como swap.

Versión de Linux
uname -aMuestra la versión del kernel de Linux (-a es de all).
lsb_release -a

Muestra información sobre la distribución y su versión.

Módulos del kernel
lsmodMuestra los módulos cargados.
modprobeInstala un módulo nuevo en el kernel (iniciarlo).
rmmodElimina un módulo del kernel (pararlo).

Otras formas de obtener información sobre el hardware son consultar los directorios [/proc] y [/sys]. De hecho, la mayoría de los comandos anteriores, simplemente consultan estos archivos.

[DHCP]: {< ref “redes/red/#protocolo-dhcp” >}} [/proc]: https://magnoblog.netlify.app/linux/estructura-directorios/#proc [/sys]: https://magnoblog.netlify.app/linux/estructura-directorios/#sys

Anterior: Shell, Bash y Bashrc Volver a Linux Siguiente: Estructura de directorios