Guia Linux - Conceptos Particionamiento

Table of Contents

1. Conceptos Básicos

1.1. MBR vs GPT

1.1.1. Conceptos

  • Ambos son esquemas de partición y sólo se puede elegir uno u el otro (cambiar de un esquema al otro, implíca perder datos y los SO instalados)
  • MBR es más antiguo (usa el modo BIOS) y limitado (hasta 4 particiones primarias, discos de hasta 2TB)
  • GPT es más moderno (usa el modo UEFI) y no tan limitado (128 particiones primarias, discos de más de 2 TB)

1.1.2. Estructuras

mbr-gpt-scheme.png

1.1.3. MBR (Master Boot Record)

  • Las siglas (MBR) refieren a Registro Maestro de Arranque
  • Es el primer sector del disco (el sector cero) en donde la BIOS busca si hay algún Sistema Operativo
  • Sólo trabaja en Modo BIOS Legacy
  • Solo trabaja con Sistemas Operativos de 32 bits (porque permite hasta 32 bits por c/sector de la unidad de almacenamiento)
  • Permite hasta 4 particiones primarias y reconoce discos duros de hasta 2 TB
  • NO comprueba la seguridad e integridad de los discos duros

El sector MBR, que es el primer sector del disco ocupa 512 bytes donde

  • 446bytes son para el Código de Arranque Maestro
  • 64 bytes son para la (DPT) Tabla Partición del disco
  • 2 bytes son para la firma de arranque (marca el fin del sector MBR)

La limitante de solo tener hasta 4 Particiones primarias es porque hay 64 bytes de espacio para la (DPT) Tabla de partición del disco, y sólo puede haber 4 Entradas a la Tabla de Partición cada una de 16 bytes. Estas últimas son las que guardan información de alguna Partición Primaria.

Gestionar la limitante de las 4 particiones primarias, podriamos

  1. Crear 3 particiones primarias y 1 partición extendida
  2. La partición extendida la podemos dividir en particiones lógicas para grabar archivos.
  3. En las particiones primarias podriamos instalar sistemas operativos,

1.1.4. GPT (GUID Partition Table)

  • (GPT) su traducción es Tabla de particiones GUID
  • Requiere que la placa madre (motherboard) tenga UEFI
  • Trabaja con Sistemas Opeativos de 32 bits y 64 bits (porque permite hasta 64 bits por c/sector de la unidad de almacenamiento)
  • Trabaja en Modo UEFI (se habilita en la configuración de la BIOS)
  • Permite hasta de 128 particiones por disco, y reconoce discos duros de más de 2TB
  • Se debe crear una partición EFI (de 500-600mb) que
    1. se ponen los módulos de arranque de todas las particiones
    2. permite listar todos los (SO)

Otros datos relevantes son

  • Para crear discos en la terminal de linux, se utilizan los comandos gdisk ó parted
  • Se debe habilitar el Modo UEFI en la configuración de la BIOS
  • Se asegura de la integridad de los datos del disco, mediante una suma de comprobación de redundancia cíclica CRC32
    1. Chequea la integridad de la cabecera GPT
    2. Si el CRC detecta daños en los datos => intenta recuperarlos con los respaldos de seguridad al final del disco

1.1.6. Cuanto Espacio Asignar

  • La partición de booteo (que debe ser primaria) suele asignarse /boot como punto de montaje
  • Si el disco utiliza MBR se sugiere 300mb
  • Si el disco utiliza UEFI se sugiere 600mb

1.2. Modo BIOS Legacy Vs Modo UEFI

1.2.1. Conceptos

  • Tanto BIOS Legacy como UEFI son software a bajo nivel, que inician al encender el ordenador

1.2.2. Problemas de Cambio de Modo

Podemos cambiar la forma de booteo de Modo BIOS al Modo UEFI en la configuración de la BIOS, pero esto implíca perder datos y volver reinstalar los sistemas operativos

1.2.3. BIOS Legacy (Basic Input/Output System)

  • Es un software de bajo nivel que se encuentra en un chip de la placa base del ordenador
  • Utiliza una memoria CMOS

La estructura básica de arranque sería Bios -> MBR -> (Boot Loader -> Kernel) -> Sistema Operativo

El proceso de arranque de la BIOS más en detalle sería

  1. Se enciende, se carga el BIOS
  2. Identifica el dispositivo de arranque (en la configuración de la placa madre se puede cambiar)
  3. Detecta el código almacenado en el sector MBR (el código maestro de arranque)
  4. El MBR carga el código de sector de arranque de la partición activa (se puede activar en la terminal con fdisk ó con un gestor de particiones)
  5. El sector de arranque carga y ejecuta el cargador de arranque (boot loader)

1.2.4. UEFI (Unified Extensible Firmware Interface)

  • Las siglas (UEFI) significan Interfaz de Firmware Extensible Unificada
  • Es un software intermedio entre el firmware y el sistema operativo
  • Reemplaza al antiguo Modo BIOS Legacy
  • Tiene un tiempo de arranque más rápido comparado con el Modo BIOS Legacy
  • Permite recuperación de datos dañados (los respaldos están en los ultimos sectores del disco gpt)
  • Aporta más seguridad, protege el proceso previo al arranque del SO
  • Tienen interfaz gráfica más moderna y soporte para mouse
  • Utiliza una memoria flash

    La estructura básica de arranque sería UEFI -> EFI+Boot+Loader -> Kernel -> Sistema Operativo

    El proceso de arranque de la UEFI más en detalle sería

    1. El gestor de arranque en la UEFI chequea la configuración de arranque
    2. El gestor de arranque se carga en la Memoria, y ejecuta el (loader) cargador del Sistema operativo ó su kernel

1.3. [TODO] Tabla de Particiones

1.3.1. Conceptos

Contiene información sobre las particiones

  • Formato (Ej. NTFS, ext2, ext3, FAT32,…)
  • Tamaño
  • Ubicación del Sector
  • Si es arrancable o no

1.4. [TODO] Firma de unidad arrancable

1.4.1. Conceptos

  • Indica la posición del volumen de arranque

1.5. [DOING] Gestores de Arranque

1.5.1. Conceptos

  • Permiten elegir el sistema operativo a iniciar

1.5.2. GRUB

1.5.3. LILO

1.6. Particiones

1.6.1. Conceptos

  • Las particiones son discos duros virtuales/lógicos que se crean en un disco físico

1.6.2. Partición Primaria

  • Se pueden poner sector de arranque para bootear un SO
  • Se pueden grabar datos

1.6.3. Partición Extendida

  • Sólo son necesarias en discos con MBR
  • Cosas que NO se pueden hacer en una partición extendida
    • NO se puede instalar Sistemas Operativos
    • NO se puede grabar ficheros
    • NO se puede poner un sector de arranque
  • Se pueden partir en particiones lógicas

1.6.4. Unidades Lógicas

  • Solo se pueden grabar datos

1.7. [TODO] Sistemas de Archivos - FileSystems

1.7.1. Conceptos

  • Para linux tenemos ext2,ext3,ex4

1.7.2. Linux

  • ext2,ext3,ext4 para datos
  • swap para la zona swap,

1.7.3. Windows

  • FAT32 para los datos

2. [DOING] Particionamiento

2.1. Listar/Crear/Eliminar partición

2.1.1. Conceptos

Posibles herramientas para particionar via terminal son

  1. fdisk
  2. parted

2.1.2. Comando fdisk

  • Para listar/crear/borrar particiones seleccionamos las letras de las operaciones una vez dentro
  • Los cambios persisten en memoria como lectura hasta que decidamos persistirlos en disco
  • Para guardar los cambios elegimos la operación write con w
# gestionamos el disco a particionar
# (dev=device, sda=primer disco detectado)
fdisk /dev/sda

Algunas operaciones que podemos encontrar son

operación Descripcion
n Crear una partición (opción p para primaria y e para extendida)
w Escribir/Guardar los cambios
m Listar menú de operaciones (actúa como un –help)
p Listar particiones primarias
d Eliminar una partición seleccionada
  Listar los tipos de particiones (Ej. SWAP, Ext2,Ext3,Ext4,…)
t Cambiar el tipo de una partición
o Crear tabla de partición DOS

2.1.3. Comando parted

Para gestionar las particiones iniciamos con el comando parted /dev/sda (cambiamos "sda" por el dispositivo que queramos)

Algunas operaciones que podemos encontrar son

operación Descripcion
mkpart Crear una partición

2.1.4. Listar particiones

# con permisos root - tool parted
sudo parted /dev/sda print
# con permisos root - tool fdisk
sudo fdisk --list /dev/sda

# sin permisos root
lsblk -S

2.2. Tipo de Partición

2.2.1. Conceptos

  • El comando mkfs significa make filesystem
  • El formato swap se refiere al área de swap (memoria en disco)

2.2.2. Comando mkfs (make file system)

  • Crea un file system en una partición (debe estar montada, es decir tener asociado un punto de montaje)
Parámetro Descripción
Q Quick, para formatear rápido
L Label, para asignarle una etiqueta al volumen
# Formateamos el disco sda1
# - le asignamos el tipo "ext3" (para linux)
# - le decimos que se haga "rápido" (parámetro Q)
# - le asignamos la etiqueta "manjarito" (parámetro L)
sudo mkfs.ext3 -QL manjarito /dev/sda1

2.3. Montar/Desmontar Partición

2.3.1. Punto de Montaje (Mountpoint)

  • Ruta donde vamos a montar una partición (Ej. /mnt/boot, /mnt/usb)
  • Si queremos utilizar una partición como gestor de archivos => debemos asociarle un punto de montaje

2.3.2. Comando mount

  • Si queremos utilizar una partición como gestor de archivos => debemos asociarle un punto de montaje

Algunos parámetros que podemos pasarle a mount son

Parámetro Descripción
-t tipoParticion Especificar el tipo de partición a montar
-o ro Cambia los permisos de acceso a sólo lectura "read only"

2.3.3. Comando umount

  • Si queremos formatear una partición => debemos desmontarla

2.3.4. Ejemplo 1 - Basico

# -> Montamos un dispositivo usb, llamado "sdb2"
# -> Especificamos el formato NTFS
# -> Punto de montaje será la ruta "/mnt/usb1"
sudo mount -t ntfs /dev/sdb2 /mnt/usb1

# -> Desmontamos el dispositivo
# -> Previo a desmontar, debemos cerrar los archivos que tengamos abiertos de este dispositivo
sudo umount /mnt/usb1

# -> Montamos un disco duro como dispositivo, llamado "sda2"
# -> Especificamos el formato NTFS
# -> Punto de montaje será la ruta "/mnt/storage"
sudo mount -t ntfs /dev/sda2 /mnt/storage

# -> Montamos un disco duro como dispositivo, llamado "sda5"
# -> Tiene previamente instalado Windows10
# -> Especificamos el formato FAT32
# -> Punto de montaje será la ruta "/mnt/win10"
sudo mount -t fat32 /dev/sda5 /mnt/win10

# -> Montamos un disco duro como dispositivo, llamado "sda6"
# -> Tiene previamente instalado Debian
# -> Especificamos el formato ext4 (requisito para distribuciones Linux)
# -> Punto de montaje será la ruta "/mnt/debian"
sudo mount -t ext4 /dev/sda6 /mnt/debian

2.3.5. Ejemplo 2 - Asignando usuario y permisos

Los parametros del comando mount

Parámetro Descripción
uid Le pasamos nuestro usuario, que nos lo devuelve id -u
dmask  
fmask  
# nos devuelve el id del usuario con el que iniciamos la sesion actual de la terminal
id -u

# solo cambiamos el 1001 por lo que nos devuelve id -u
sudo mount -o rw,user,uid=1001,dmask=007,fmask=117 /dev/sda10 /mnt/mystorage

#sudo mount -t ntfs -o ro /dev/sda10 /mnt/mystorage

2.4. Asignar permisos

Creamos una partición primaria del tipo NTFS y le asignamos los permisos al usuario Con el comando id -u -n obtenemos el nombre de usuario, mientras que con chown le damos acceso a un usuario especifico a un directorio/archivo

# para saber el nombre de usuario
id -u -n

# para asignarle los permisos de ese usuario
sudo chown nombreUsuario /storage/

2.5. Partición para Windows-Linux

Si la partición va interactuar entre Windows y Linux, se recomienda que sea NTFS. Si sólo va a ser entre distribuciones Linux, se recomienda Ext4

A good practice for some static mounted storage system like you are doing is to add a permanent mount point to /etc/fstab. There are several ways to do it, but I just wanted you to be aware.

2.6. Anclar un directorio al Gestor de archivos

El File manager por defecto de Ubuntu es Nautilus

# luego de ingresar a la ruta, presionar Control+D
cd /mnt/mystorage

3. [DOING] Comandos para FileSystems

3.1. Comando df (file system disk space usage)

3.1.1. Conceptos

  • NO necesita del comando sudo
  • El filesystem debe estar montado para utilizar el comando en él
  • Muestra estadísticas de cada filesystem (ruta de punto de montaje, el tamaño utilizado/disponible, ..)
  • Si no especificamos el punto de montaje, lista todos los file system montados
  • Seguido al comando podemos especificar el punto de montaje
  • Seguido al comando podemos poner una ruta, y dará información del fs donde está incluida
Parámetro Descripción
h Muestra la información en un formato humanizado (más entendible)
T Muestra el tipo de filesystem (Ej. NTFS, FAT32, ext3, ext4, …)

3.1.2. Ejemplo (1)

# -> listamos todos los filesystem
#
# -> parámetro h: en un formato más humanizado
# -> parámeto T: agrega la columna del tipo de filesystem
df -hT

# -> especificamos el punto de montaje
df -hT /dev/sda10
# posible respuesta
S.ficheros     Tipo Tamaño Usados  Disp Uso% Montado en
/dev/sda10     ext4    88G    81G  2,8G  97% /

3.2. Comando du (estimate file space usage)

3.2.1. Conceptos

  • Muestra estadísticas de uno o varios archivos/directorios (tamaño, nombre)
  • NO necesita del comando sudo
Parámetro Descripción
h Muestra la información en un formato humanizado (más entendible)
c Agrega el tamaño total de todos los archivos/directorios
s Da un resumen de cada directorio, caso contrario será recursivo

3.2.2. Ejemplo (1)

# -> El asterisco actúa como comodín, representa todos los archivos/sub-directorios de la ruta
# ->
# -> parámetro "h": muestra los datos en un formato humanizado (más entendible)
# -> parámetro "c": muestra el tamaño total de todos los archivos
# -> parámetro "s": da un resumen de cada directorio, sin listar cada archivo/subdirectorio
du -hcs /tmp/pepe/*

# -> Obtenemos información de todos los archivos/sub-directorios de la ruta en la que estemos
du -hcs ./*

3.2.3. Ejemplo (2)

# No es necesario poner el ~./~ antes del asterisco, funciona igual.
# Lo agregamos con fines practicos, para entender que lo hacemos en la ruta donde estamos parados.

[jelou@jelou-pc Descargas]$ du -hcs ./*
4,0K    ./agenda.txt
4,0K    ./almendras
0       ./chau
0       ./hola
0       ./pedro
0       ./productos
8,0K    total

[jelou@jelou-pc Descargas]$ du ./*
4       ./agenda.txt
4       ./almendras
0       ./chau
0       ./hola
0       ./pedro
0       ./productos/farmacia/siempre
0       ./productos/farmacia
0       ./productos

4. [DOING] Información de particiones y dispositivos

4.1. Comando lsblk (list block devices)

  • Muestra un listado de los dispositivos en formato de árbol
  • Si queremos información resumida ejecutamos lsblk -S
# ejecutamos el comando
lsblk
# el resultado es el siguiente
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0 465,8G  0 disk
├─sda1    8:1    0  1000M  0 part
├─sda2    8:2    0   260M  0 part /boot/efi
├─sda3    8:3    0  1000M  0 part
├─sda4    8:4    0   128M  0 part
├─sda5    8:5    0 247,9G  0 part
├─sda6    8:6    0   452M  0 part
├─sda7    8:7    0    25G  0 part
├─sda8    8:8    0    12G  0 part
├─sda9    8:9    0   5,9G  0 part [SWAP]
├─sda10   8:10   0  89,8G  0 part /
└─sda11   8:11   0  53,2G  0 part
sr0      11:0    1  1024M  0 rom

4.2. Comando hdparm

  • Requiere del comando sudo
  • Parte de la información que imprime es
    1. Modelo de disco
    2. Número de serie
    3. Firmware
    4. Configuración (cilindros, cabeceras, sectores, …)
    5. Características (host protected area, write cache, …)
    6. Seguridad
# - el parámetro "I" solicita información de las especificaciones de hardware del disco duro
# - con la ruta "/dev/sda" indicamos que dispositivo, en este caso el disco *sda*
# pd: acortamos la cant. de información
[jelou@jelou-pc ~]$ sudo hdparm -I /dev/sda | less
ATA device, with non-removable media
Model Number:       HGST HTF525050A7E320
Serial Number:      TFA55A3R29JH7J
Firmware Revision:  GC2Z2D91

# también podemos evaluar el rendimiento
[jelou@jelou-pc ~]$ sudo hdparm -tT /dev/sda
Timing cached reads:   10408 MB in  1.99 seconds = 5220.06 MB/sec
Timing buffered disk reads: 222 MB in  3.02 seconds =  73.47 MB/sec

[jelou@jelou-pc ~]$ sudo hdparm -tT /dev/sda
Timing cached reads:   10776 MB in  1.99 seconds = 5405.44 MB/sec
Timing buffered disk reads: 288 MB in  3.01 seconds =  95.65 MB/sec

4.3. Comando blkid

  • NO necesita del comando sudo
  • Podemos especificar la partición (Ej. blkid /dev/sda1) caso contrario muestra sobre todas las particiones
  • La información por defecto que imprime es
    1. UUID (son los identificadores universales únicos que identifican a las particiones)
    2. Nombre del dispositivo (sda1, sda2, sdb1, sdb2, …)
    3. Etiqueta (Windows8OS, Windows10, Manjaro, Debian, …)
    4. Tipo de partición (ntfs, vfat, ext3, ext4, swap, …)
    5. Tamaño del bloque
# podemos consultar por todas las particiones
[jelou@jelou-pc ~]$ blkid
/dev/sda1: LABEL="Windows8_OS" BLOCK_SIZE="512" UUID="160252C68156AA3F" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="1d5cf7f1-411c-4784-ba21-f4aa45dd646e"
/dev/sda2: LABEL="RAM" UUID="37c62451-7261-2c90-ac93-26f8108ff43a" TYPE="swap" PARTUUID="11bee604-5954-45b2-a235-ab2862b22f35"
/dev/sda3: LABEL="Storage" UUID="212b83f5-3e5g-417c-a21d-35cd7gfa6245" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="c21e230f-30db-401c-a211-33f2b2fg9bf2"
/dev/sda4: LABEL="Manjarito" UUID="282f2b60-36ad-162c-c191-e2c2cb17c786" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a522ed53-3b6b-4b3e-127a-e52d40dfb5fb"

# si preguntamos por una partición específica
[jelou@jelou-pc ~]$ blkid /dev/sda1
/dev/sda1: LABEL="Windows8_OS" BLOCK_SIZE="512" UUID="160252C68156AA3F" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="1d5cf7f1-411c-4784-ba21-f4aa45dd646e"

5. Bootear Multiples Sistemas Operativos

5.1. Conceptos

Si tenes un sistema operativo por defecto por ejemplo Windows, y lo queres mantener podemos recurrir a como dicen "bootear" varios sistemas operativos, en este caso seria varias distribuciones de linux.

Por lo general se suele crear un GRUB el que se ira modificando

I install Ubuntu GNOME (mount point: / ) into /dev/sda5. I remember to give mount points to /work (ext4) and /storage (NTFS) like mentioned in the 2.3 section of this article. Be careful not to mark them as to be formatted. The Swap partition gets automatically recognized, no need to worry about that.

I install Manjaro XFCE to /dev/sda6 partition. And once again, I remember to give mount points to /work (ext4) and /storage (NTFS) and to NOT format them.

I install Kubuntu ( / ) to /dev/sda8. Mount points also to /work (ext4) and /storage (NTFS), again. And, the Swap partition gets automatically recognized, again. And finally, after installation is successfully finished, one last time to install the

Refind boot manager in Terminal in Xubuntu: sudo dpkg -i ~/Downloads/refind0.10.4-1amd64.deb

Observación: Por el momento sólo recomendamos ver las referencias Web que adjuntamos

5.2. Conocer versión del GRUB

# saber la version de grub
grub-install -v

6. File Manager

6.1. Conceptos

Si aún no estás familiarizado a usar por completo la terminal para la gestión de archivos, te sugerimos instalar un programa con interfaz gráfica (GUI) que facilita dicha tarea.

6.2. Instalación

sudo apt-get install thunar

7. Glosario

7.1. Rutas

  • dev: se refieren a device IO (dispositivo de entrada/salida)
  • mnt: se refiere "mountpoint" (punto de montaje) donde se montan particiones)

7.2. Comandos

  • mkfs: significa "make filesystem" crear el "sistema de ficheros"

7.3. Otros

  • sda/sdb: hacen referencia a los dispositivos de almacenamiento masivo (disco duro)
    1. sda: al primer disco detectado
    2. sdb: al segundo disco detectado

Author: jelou

Created: 2021-09-13 lun 13:24

Validate