Capítulo 9. Trucos del sistema

Tabla de contenidos

9.1. El programa screen
9.1.1. Escenario de uso de screen(1)
9.1.2. Atajos de teclado para la orden screen
9.2. Registro de datos y presentación
9.2.1. El demonio de registro
9.2.2. Analizador de registros
9.2.3. Registro correcto de las actividades del intérprete de órdenes
9.2.4. Personalizar la visualización de información en formato texto
9.2.5. Personalización de la visualización de la fecha y hora
9.2.6. Intérprete de órdenes en color
9.2.7. Órdenes coloreadas
9.2.8. Grabación de las actividades del editor con repeticiones complejas
9.2.9. Captura una imagen gráfica en un aplicación X
9.2.10. Guardando cambios en los archivos de configuración
9.3. Monitoreando, controlando e iniciando lo que hacer los programas
9.3.1. Temporización de un proceso
9.3.2. La prioridad de planificación
9.3.3. La orden ps
9.3.4. La orden top
9.3.5. Relación de los archivos abiertos por un proceso
9.3.6. Trazando la actividad de un programa
9.3.7. Identificación de procesos utlizando archivos o conexiones (sockets)
9.3.8. Repetición de una orden a intervalos constantes
9.3.9. Repetición de una orden sobre archivos
9.3.10. Iniciar un programa desde el interfaz gráfico de usuario
9.3.11. Personalizando el inicio de un programa
9.3.12. Matando un proceso
9.3.13. Planificación una vez de las tareas
9.3.14. Planificación regular de tareas
9.3.15. Tecla Alt-SysRq
9.4. Trucos para el mantenimiento del sistema
9.4.1. ¿Quién está en el sistema?
9.4.2. Avisos para todos
9.4.3. Identificación del hardware
9.4.4. Configuración del hardware
9.4.5. Hora del sistema y del hardware
9.4.6. La configuración del terminal
9.4.7. La infraestructura de sonido
9.4.8. Deshabilitar el salvapantallas
9.4.9. Deshabilitando los pitidos
9.4.10. Utilización de memoria
9.4.11. Sistema de seguridad y de comprobación de la integridad
9.5. Trucos del almacenamiento de datos
9.5.1. Uso de espacio de disco
9.5.2. Configuración del particionado de disco
9.5.3. Acceso al particionado utilizando UUID
9.5.4. LVM2
9.5.5. Configuración del sistema de archivos
9.5.6. Comprobación de la integridad y creación del sistema de archivos
9.5.7. Optimización de los sistemas de archivos a través de las opciones de montaje
9.5.8. Optimización del sistema de archivo a través del superbloque
9.5.9. Optimización del disco duro
9.5.10. Optimización de un disco de estado sólido (SSD)
9.5.11. Utilice SMART para predecir fallos en su disco duro
9.5.12. Determine el directorio de almacenamiento temporal por medio de $TMPDIR
9.5.13. Expansión del espacio de almacenamiento utilizable mediante LVM
9.5.14. Expansión del espacio de almacenamiento útil mendiante el montaje de otra partición
9.5.15. Expansión del espacio de almacenamient por el enlace mediante el montaje en otro directorio
9.5.16. Expansion of usable storage space by overlay-mounting another directory
9.5.17. Expansión del espacio de almacenamiento útil utilizando un enlace simbólico
9.6. La imagen de disco
9.6.1. Creando un archivo de imagen de disco
9.6.2. Escribiendo directamente en el disco
9.6.3. Montaje del archivo de la imagen del disco
9.6.4. Limpiando un archivo de imagen de disco
9.6.5. Haciendo un archivo de imagen de disco vacio
9.6.6. Haciendo un archivo de imagen ISO9660
9.6.7. Escritura directa al CD/DVD-R/RW
9.6.8. Montando un archivo imagen ISO9660
9.7. Datos binarios
9.7.1. Viendo y editando datos binarios
9.7.2. Manipular archivos sin el montaje de discos
9.7.3. Redundancia de datos
9.7.4. Recuperación de datos de archivos y análisis forense
9.7.5. División de un archivo grande en archivos de tamaño menor
9.7.6. Limpieza del contenido de los archivos
9.7.7. Archivos «vacíos»
9.7.8. Borrando completo de un disco duro
9.7.9. Borrar áreas de disco duro no utilizadas
9.7.10. Recuperando archivos borrados pero todavía abiertos
9.7.11. Buscando todos los enlaces duros
9.7.12. Consumo invisible de espacio de disco
9.8. Trucos para cifrar información
9.8.1. Cifrado de discos externos con dm-crypt/LUKS
9.8.2. Cifrado de la partición de intercambio con dm-crypt
9.8.3. Montaje de disco cifrado con dm-crypt/LUCKS
9.8.4. Archivos cifrados automáticamente mediante eCryptfs
9.8.5. Montaje automático con eCryptfs
9.9. El núcleo
9.9.1. Núcleo Linux 2.6/3.x
9.9.2. Parametros del núcleo
9.9.3. Cabeceras del núcleo
9.9.4. Compilar el núcleo y los módulos asociados
9.9.5. Compilando el código fuente del núcleo: recomendaciones del Equipo Debian del Núcleo
9.9.6. Controladores y firware del hardware
9.10. Sistemas virtualizados
9.10.1. Herramientas de virtualización
9.10.2. Flujo de trabajo de la virtualización
9.10.3. Montando el archivo de imagen de disco virtual
9.10.4. Sistemas chroot
9.10.5. Varios sistemas de escritorio

Aquí, describo los trucos fundamentales para configurar y gestionar sistemas, principalmente desde la consola.

Screen(1) es una herramienta muy útil para el acceso remoto a sitio con conexiones no confiables o intermitentes ya que permite conexiones con redes cuya conectividad es intermitente.


La utilización para el registro de la actividad del intérprete de órdenes, sin más, de script(1) (see Sección 1.4.9, “Grabación de las actividades del intérprete de órdenes”) produce un archivo con caracteres de control. Esto se puede evitar con la utilización de col(1) como se muestra.

$ script
Script started, file is typescript

Haga lo que quiera ... y pulse Ctrl-D para finalizar script.

$ col -bx <typescript >archivo_filtrado
$ vim cleanedfile

Si no utiliza script (por ejemplo, durante el proceso de arranque en initramfs), puede utilizar lo siguiente.

$ sh -i 2>&1 | tee typescript
[Sugerencia] Sugerencia

Algunos emuladores de terminales x como gnome-terminal tienen la capacidad de regsitro de la actividad. Puede que quiera extender el buffer de la línea para mejorar la capacidad de ir hacia atrás.

[Sugerencia] Sugerencia

Puede utilizar screen(1) con «^A H» (consulte Sección 9.1.2, “Atajos de teclado para la orden screen”) para personalizar como se guarda la información de la consola.

[Sugerencia] Sugerencia

Puede usar emacs(1) con «M-x shell», «M-x shell», o «M-x term» para personalizar el registro de la consola. Más tarde puede utilizar «C-x C-w» para guardar el buffer a un archivo.

Aunque las herramientas de paginación como more(1) y less(1) (consulte Sección 1.4.5, “El paginador”) y herramientas personalizadas para marcar y dar formato (see Sección 11.1.8, “Resaltando y dándole formato a información en texto plano”) pueden visualizar la información en formato texto de la forma correcta, los editores de propósito general (consulte Sección 1.4.6, “El editor de texto”) son más versátiles y personalizables.

[Sugerencia] Sugerencia

En vim(1) y su modo de paginación conocido como view(1), «:set hls» permite la búsqueda de textos resaltados.

El formato de visualización del tiempo y la fecha de la orden «ls -l» depende de la configuración regional (consulte sus valores en Sección 1.2.6, “Marcas de tiempo”). La variable «$LANG» se tiene en cuenta primero y puede ser sobreescrita por el valor de la variable «$LC_TIME».

El formato de visualización por defecto real para cada configuración regional depende de la versión de la biblioteca estándar C (el paquete utilizado libc6). Esto es, diferentes distribuciones de Debian tienen diferentes valores por defecto.

Si de verdad quiere personalizar el formato de visualización de la hora y la fecha independientemente de la configuración regional, debería asignar el valor de estilo de tiempo por el parámetro «--time-style» o por el valor de «$TIME_STYLE» (consulte ls(1), date(1), «info coreutils 'ls invocation'»).


[Sugerencia] Sugerencia

Puede evitar escribir largas opciones en las líneas de órdenes utilizando alias de órdenes , p. ej. «alias ls='ls --time-style=+%d.%m.%y\ %H:%M'» (consulte Sección 1.5.9, “Alias de órdenes”).

[Sugerencia] Sugerencia

ISO 8601 se sigue los siguientes formatos iso.

En los terminales más modernos se pueden utilizar colores utilizando secuencias de escape ANSI (consulte «/usr/share/doc/xterm/ctlseqs.txt.gz»).

Por ejemplo, intente lo siguiente

$ RED=$(printf «\x1b[31m«)
$ NORMAL=$(printf «\x1b[0m«)
$ REVERSE=$(printf «\x1b[7m«)
$ echo «${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}«

Puede guardar las actividades del editor con repeticones complejas.

Para Vim, como sigue.

  • «qa»: comienza a grabar los caracteres escritos en un registro llamado «a».

  • … actividades del editor

  • «q»: finaliza la grabación de los caracteres escritos.

  • «@a»: ejecuta el contenido del registro «a».

Para Emacs, como sigue.

  • «C-x (»: comienza a definir una macro de teclado.

  • … actividades del editor

  • «C-x )»: termina definir una macro de teclado.

  • «C-x e»: ejecuta una macro de teclado.

Las actividades de los programas pueden ser monitoreados y controlados utilizando herramientas especializadas.

Tabla 9.7. Relación de las herramientas de monitorización y control de las actividades de los programas

paquete popularidad tamaño descripción
coreutils V:888, I:999 15719 nice(1): ejecuta un programa modificando su prioridad de planificación
bsdutils V:866, I:999 293 renice(1): cambia la prioridad de planificación de un proceso en ejecución
procps V:793, I:999 729 «/proc» utilidades del sistema de archivos: ps(1), top(1), kill(1), watch(1), …
psmisc V:473, I:895 637 «/proc» utilidades del sistema de archivos: killall(1), fuser(1), peekfd(1), pstree(1)
time V:22, I:428 82 time(1): ejecuta un programa para crear un informe de los recursos del sistema utilizados a lo largo del tiempo
sysstat V:144, I:165 1684 sar(1), iostat(1), mpstat(1), …: herramientas de optimización del sistema en Linux
isag V:0, I:4 111 Graficador Interactivo de la Actividad del Sistema para sysstat
lsof V:464, I:946 454 lsof(8): enumera la relación de archivos abiertos por un proceso en ejecución utilizando la opción «-p»
strace V:19, I:159 2051 strace(1): registro de las llamadas del sistema y señales
ltrace V:1, I:21 363 ltrace(1): registro a las bibliotecas invocadas
xtrace V:0, I:0 352 xtrace(1): registra las comunicaciones entre el cliente y el servidor en X11
powertop V:6, I:231 604 powertop(1): información sobre el uso de la potencia por parte del sistema
cron V:878, I:997 263 ejecuta procesos en segundo plano de acuerdo a su planificación desde el dominio cron(8)
anacron V:447, I:521 99 planficador de tareas similar a cron para los sistemas que no están activos 24 horas al dia
at V:260, I:453 157 at(1) or batch(1): ejecuta un trabajo at en un momento determinado o por debajo de cierto nivel de carga

[Sugerencia] Sugerencia

El paquete procps provee lo fundamental para la monitorización, control e inicio de las actividades de los programas. Usted podría aprender acerca de todo ello.

Existen varias formas de repetir una orden sobre los archivos que cumplan una condición, p. ej, encajan en un patrón «*.ext».

for x in *.ext; do if [ -f «$x«]; then orden «$x« ; fi; done
  • Combinación de find(1) y xargs(1):

find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 orden
  • find(1) con la opción «-exec» y una orden:

find . -type f -maxdepth 1 -name '*.ext' -exec orden '{}' \;
  • find(1) con la opción «-exec» con un archivo de órdenes pequeño:

find . -type f -maxdepth 1 -name '*.ext' -exec sh -c «orden '{}' && echo 'successful'« \;

Los ejemplos anteriores están escritos para asegurar el correcto tratamiento de los nombres de archivos que contienen caracteres raros como los espacios. Para usos avanzados de find(1) consulte Sección 10.1.5, “Formas de selección de archivos”.

Para el interfaz de órdenes en línea (CLI), el programa ejecutado será el primero que encaja el nombre en el directorio especificdo por la variable de entorno $PATH. Consulte Sección 1.5.3, “La variable «$PATH»”.

Para el interfaz gráfico de usuario (GUI) que cumple con el estándar de freedesktop.org, los archivos *.desktop en el directorio /usr/share/applications/ proporciona los atributos necesarios para la visualización de cada programa en el menú del interfaz gráfico de usuario. Consulte Sección 7.2.2, “Menú de Freedesktop.org”.

Por ejemplo, el archivo chromium.desktop define los atributos para el «Navegador Web Chromium« como «Name« para el nombre del programa, «Exec« para la ruta de ejecución del programa y parámetros, «Icon« para el icono utilizado, etc. (consulte la Especificación de Entradas del Escritorio (Desktop Entry Specification)) como sigue:

[Desktop Entry]
Version=1.0
Name=Chromium Web Browser
GenericName=Web Browser
Comment=Access the Internet
Comment[fr]=Explorer le Web
Exec=/usr/bin/chromium %U
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=chromium
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=Chromium
StartupNotify=true

Esta es una descripción muy simplificadao. Los archivos *.desktop son revisados como sigue.

El entorno de escritorio asigna las variables del entorno $XDG_DATA_HOME and $XDG_DATA_DIR. Por ejemplo, en GNOME 3:

  • $XDG_DATA_HOME esta sin asignar. (El valor por defecto que se utiliza es $HOME/.local/share.)

  • $XDG_DATA_DIRS se le asigna el valor /usr/share/gnome:/usr/local/share/:/usr/share/.

Así los directorios base (consulte XDG Base Directory Specification) y los directorios de aplicaciones quedan como sigue.

  • $HOME/.local/share/$HOME/.local/share/applications/

  • /usr/share/gnome//usr/share/gnome/applications/

  • /usr/local/share//usr/local/share/applications/

  • /usr/share//usr/share/applications/

Los archivos *.desktop se comprueban en estos directorios de aplicaciones siguiendo este orden.

[Sugerencia] Sugerencia

Se puede crear una entrada personalizada al menú del interfaz gráfico de usuario (GUI) añadiendo un archivo *.desktop al directorio $HOME/.local/share/applications/.

[Sugerencia] Sugerencia

Igualmente, si se crea un archivo *.desktop en el directorio autostart por debajo de estos directorios base, el programa que se especifique en el archivo *.desktop se ejecuta automáticamente cuando el entorno de escritorio se inicia. Consulte Especificación de Inicio Automático de Aplicaciones de Escritorio.

[Sugerencia] Sugerencia

De igual manera, si un archivo *.desktop se crea en el directorio $HOME/Desktop y se ha configurado el entorno de escritorio con la funcionalidad del lanzador del icono, el programa especificado en el se ejecutará cuando se pulse sobre el icono. Tenga en cuenta que el nombre real del directorio $HOME/Desktop depende de la configuración regional. Consulte xdg-user-dirs-update(1).

Algunos programas inician otros programa de forma automática. Aquí estan los puntos a compribar para la personalización de este proceso.

[Sugerencia] Sugerencia

update-mime(8) actualiza el archivo «/etc/mailcap» utilizando el archivo «/etc/mailcap.order» (consulte mailcap.order(5)).

[Sugerencia] Sugerencia

El paquete debianutils aporta sensible-browser(1), sensible-editor(1) y sensible-pager(1) que elige de forma sensata el editor, paginador y navegador web que se lanzará, respectivamente. Le recomiendo leer estos archivos de órdenes.

[Sugerencia] Sugerencia

Con el fin de ejecutar una aplicación de consola como mutt como la preferida en X, podría crear una aplicación X de la forma siguiente y asignar «/usr/local/bin/mutt-term» como su aplicación preferida al inicio como se describe.

# cat /usr/local/bin/mutt-term <<EOF
#!/bin/sh
gnome-terminal -e «mutt \$@«
EOF
chmod 755 /usr/local/bin/mutt-term

Utilice cron(8) para planificar las tareas de forma regular. Consulte crontab(1) y crontab(5).

Puede planificar la ejecución de procesos como un usuario normal, p. ej. foo creando un archivo crontab(5) como «/var/spool/cron/crontabs/foo» con la orden «crontab -e».

Aquí esta un ejemplo de un archivo crontab(5).

# utilice /bin/sh para ejecutar órdenes ,sin importar lo que diga /etc/passwd
SHELL=/bin/sh
# enviar la salida por correo a paul, sin importar a quién pertenece el crontab
MAILTO=paul
# Min Hora DiaDelMes Mes DiaDeLaSemana orden (Dia... es ordenado)
# se ejecuta a las 00:05, cada dia
5 0  *  * *   $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# se ejecuta a las 14:15 el primer día de cada mes -- salida se envía por correo a paul
15 14 1  * *   $HOME/bin/monthly
# ejecuta a las 22:00 en días entre semana(1-5), avisando a  Joe. % para nueva línea, el último % para copiar en el correo:
0 22 *   * 1-5 mail -s «It's 10pm« joe%Joe,%%WDonde están los niños?%.%%
23 */2 1 2 *   echo «Se ejecuta en el minuto 23 en las horas pares el 1 de Febrero«
5  4 *   * sun echo «ejecuta a las 04:05 cada domingo«
# se ejecuta a las 03:40 el primer Lunes de cada mes
40 3 1-7 * *   [ «$(date +%a)« == «Mon« ] && orden -args
[Sugerencia] Sugerencia

En los sistemas que no están en funcionamiento ininterrumpido, instale el paquete anacron para planificar órdenes periódicas en los intervales deseados tan pronto como el equipo activo lo permita. Consulte anacron(8) y anacrontab(5).

[Sugerencia] Sugerencia

Para los archivos de órdenes de mantenimiento del sistema, puede ejecutarlos de forma periódica desde la cuenta de superusuario ubicando esos archivos de órdenes en «/etc/cron.hourly/», «/etc/cron.daily/», «/etc/cron.weekly/», o «/etc/cron.monthly/». La temporización de la ejecución de los archivos de órdenes puede personalizarse mediante «/etc/crontab» y «/etc/anacrontab».

La cobertura del riesgo frente al mal funcionamiento del sistema se aporta por la opción de compilación del núcleoon «Magic SysRq key« (tecla SAK key) el cual está por defecto en el núcleo que proporciona Debian. Pulsando Alt-SysRq seguido por una de las siguientes teclas rescata mágicamente el control del sistema.


[Sugerencia] Sugerencia

Lee las páginas de manual de signal(7), kill(1) y sync(1) para entender la descripción anterior.

La combinación de «Alt-SysRq s«, «Alt-SysRq u«,y «Alt-SysRq r« es bueno para salir de una situación desagradable y recuperar acceso a un teclado utilizable sin para el sistema.

Consulte «/usr/share/doc/linux-doc-3.*/Documentation/sysrq.txt.gz».

[Atención] Atención

La funcionalidad Alt-SysRq puede considerarse un riesgo de seguridad al permitir acceso a los usuarios a funciones de superusuarios. Ubicando «echo 0 >/proc/sys/kernel/sysrq» en «/etc/rc.local» o «kernel.sysrq = 0» en «/etc/sysctl.conf» desactiva la funcionalidad de Alt-SysRq.

[Sugerencia] Sugerencia

Desde terminales SSH etc., puede utilizar la funcionalidad Alt-SysRq resribiendo «/proc/sysrq-trigger». Por ejemplo, «echo s > /proc/sysrq-trigger; echo u > /proc/sysrq-trigger» desde el cursor del intérprete de órdenes del superusuario sincroniza y monta todos los sistemas de archivos.

Aunque la mayor parte de la configuración del hardware en los sistemas de escritorio con interfaz gráfico de usuario como GNOME y KDE se puede realizar mediante herramientas de configuración con interfaz gráfico de usuario, es una buena idea conocer algunos métodos básicos para su configuración.


Aquí, ACPI es un marco más nuevo para el sistema de gestión de fuerza que APM.

[Sugerencia] Sugerencia

La frecuencia de funcionamiento de la CPU de los sistemas modernos esta gestionada por módulos en el núcleo como acpi_cpufreq.

Lo siguiente asigna al sistema y hardware la hora y fecha a MM/DD hh:mm CCYY.

# date MMDDhhmmCCYY
# hwclock --utc --systohc
# hwclock --show

La hora habitualmente se visualiza en la hora local en el sistema Debian pero el hardware y el sistema usa generalmente la hora en UTC(GMT).

Si la hora del hardware (BIOS) esta asiganda en UTC, cambie la configuración a «UTC=yes» en «/etc/default/rcS».

Lo siguiente reconfigura la zona horaria utilizada por el sistema Debian.

# dpkg-reconfigure tzdata

Si desea actualizar el tiempo del sistema a través de la red, piense en utilizar el servicio NTP con paquetes como ntp, ntpdate y chrony.

[Sugerencia] Sugerencia

En systemd para la sincronización de la hora a través de la red utilice systemd-timesyncd. Consulte systemd-timesyncd(8).

Consulte lo siguiente.

[Sugerencia] Sugerencia

ntptrace(8) del paquete ntp puede trazar una cadena de vuelta de los servidores NTP a la fuente primigenia.

La Arquitectura Avanzada de Sonido para Linux (Advanced Linux Sound Architecture, ALSA) proporciona los controladores de dispositivos de tarjetas de sonido en el actual Linux. ALSA tiene un modo de emulación para ser compatible con el anterior Open Sound System (OSS).

[Sugerencia] Sugerencia

Para comprobar el altavoz (speaker) utilice «cat /dev/urandom > /dev/audio» o speaker-test(1) (^C para finalizar).

[Sugerencia] Sugerencia

Si no obtiene sonido, su altavoz puede estar conectado a una salida en silencio. Alsamixer(1) en el paquete alsa-utils le será útil para la configuración del volumen y el silencio.

E software de aplicación puede ser configurado no solo para acceder directamente a los dispositivos de sonido si no también para acceder a estos a través de un sistema servidor de sonido.


Generalmente existe un motot de sonido común para los entorno de escritorio más populares. Cada motor de sonido utilizado por la aplicación puede elegir conectarse a diferentes servidores de sonido.

Un mantenimiento inadecuado de su sistema puede exponerlo a ser atacado desde el exterior.

Para la seguridad y las comprobaciones de intergridad, debe comenzar con lo que se muestra.


Aquí esta un archivo de órdenes para comprobar el permiso de escritura incorrecto para todos.

# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
[Atención] Atención

Ya que el paquete debsums utliza la comprobación mediante MD5 almacenados en local, no debe usarse como una herramienta de auditoria del sistema para ataques maliciosos.

El arranque de su sistema Linux con «live CDs« o CDs de instalación de debian en modo rescate hace que sea fácil reconfigurar la información de almacenamiento en su dispositivo de arranque.

Para la configuración de la partición del disco , a pesar de que fdisk(8) fue considerado en el pasado el estándar, parted(8) merece nuestra atención. Las expresiones «datos del particionado del disco«, «tabla de partición«, «mapa de particiones« y «marcado del disco« son todas ellas sinónimos.

La mayor parte de los PCs utilizan el esquema clásico Registro de Arranque Primario (Master Boot Record, MBR) para guardar los datos del particionado del disco en el primer sector, a saber, LBA sector 0 (512 bytes).

[Nota] Nota

Algunos PCs nuevos con Interfaz Firmware Extensible (Extensible Firmware Interface, EFI), includios los Macs basados en Intel, utilizan el esquema Tabla de Particiones GUID(GPT) para mantener la informaciñon del particionado del disco en otro sector diferente del primero.

Aunque fdisk(8) fue la herramienta estándar para el particionado del disco, ha sido sustituida por parted(8).


[Atención] Atención

Aunque parted(8) afirma que crea y también modifica el tamaño de los sistemas de archivos, es más seguro realizar estas tareas con herramientas especializadas de mantenimiento como mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), mkfs.ext4(8), …) y resize2fs(8).

[Nota] Nota

Para realizar el cambio entre GPT y MBR, necesita eliminar el contenido de unos cuantos bloques ubicados al principio (consulte Sección 9.7.6, “Limpieza del contenido de los archivos”) y utilice «parted /dev/sdx mklabel gpt» o «parted /dev/sdx mklabel msdos» para asignarlo. Tenga en cuenta que «msdos» se utiliza para MBR.

A pesar de que la reconfiguración de su partición u orden de activación de los medios de almacenamiento no permanentes sus particiones pueden tener diferentes nombres, puede acceder a ellos de forma consistente. Esto es de ayuda, incluso, varios discos y su BIOS no le asigna nombres consistentes.

[Sugerencia] Sugerencia

Puede determinar el UUID de un dispositivo especial de bloque con blkid(8).

[Sugerencia] Sugerencia

Los nodos de los dispositivos como de los medios de almacenamiento no permanentes pueden hacerse estáticos con la utilización de las reglas udev, si es necesario. Consulte Sección 3.3, “El sistema udev”.

LVM2 es un gestor de volumenes lógicos del núcleo de Linux. Con LVM2 las particiones de disco se pueden crear en volumenes lógicos en vez de discos duros físicos.

LVM necesita lo siguiente.

  • soporte de device-mapper en el núcleo Linux (por defecto en los núcleos de Debian)

  • el soporte de la biblioteca device-mapper en el espacio de usuario (paquete libdevmaper*)

  • herramientas LVM2 del espacio de usuario (paquete lvm2)

Por favor, para comenzar a aprender LVM2 lea las siguiente páginas de manual.

  • lvm(8): Fundamentos del mecanismo LVM2 (relación de todas las órdenes LVM2)

  • lvm.conf(5): archivo de configuración de LVM2

  • lvs(8): crea un informe sobre los volúmenes lógicos

  • vgs(8): crea un informe sobre los grupos de volúmentes

  • pvs(8): crea un informe sobre los volúmenes físicos

Para el sistema de archivos ext4, el paquete e2fsprogs aporta lo siguiente.

  • mkfs.ext4(8) para crear un nuevo de sistema de archivos ext4

  • fsck.ext4(8) para comprobar y reparar un sistema de archivos ext4 preexistente

  • tune2fs(8) para configurar el superbloque de ext4 filesystem

  • debugfs(8) para depurar en modo interactivo el sistema de archivos ext4. (Existe la orden undel para recuperar los archivos borrados.)

Las órdenes mkfs(8) y fsck(8) esta en el paquete e2fsprogs como interfaz de varios programas especificos del sistema de archivos (mkfs.fstype y fsck.fstype). Para el sistema de archivos ext4 existen mkfs.ext4(8) y fsck.ext4(8) (esta enlazado a mke2fs(8) y e2fsck(8)).

Las siguientes órdenes están disponibles para cada sistema de archivos que soporta Linux.


[Sugerencia] Sugerencia

Ext4 es el sistema de archivos por defecto para el sistema Linux y es muy recomendable su uso a menos que tenga una razón concreta para no hacerlo.

[Sugerencia] Sugerencia

El sistema de archivos Btrfs filesystem esta disponible desde el núcleo de Linux 3.2 (Debian wheezy). Se espera que sea el próximo sistema de archivos por defecto después del sistema de archivos ext4.

[Aviso] Aviso

No debería utilizar el sistema de archivos Btrfs para sus datos críticos hasta que fsck(8) no tenga las funcionalidad de espacio de nñucleo vivo y soporte del gestor de arranque.

[Sugerencia] Sugerencia

Algunas herramientas permiten el acceso al sistema de archivos sin soporte del núcleo de Linux (consulte Sección 9.7.2, “Manipular archivos sin el montaje de discos”).

La configuración estática básica del sistema de archivos se realizan en «/etc/fstab». Por ejemplo,

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 noatime,errors=remount-ro 0 1
UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
[Sugerencia] Sugerencia

UUID (consulte Sección 9.5.3, “Acceso al particionado utilizando UUID”) puede utilizarse para identificar los dispositovos de bloque en lugar de los nombres de los dispositivos de bloque como «/dev/sda1», «/dev/sda2», …

La personalización y la caracterización del sistema de archivos se puede optimizar a través de la utilización de las opciones de montaje (consulte fstab(5) y mount(8)). Los más relevantes son los siguientes.

  • La opción «defaults» conlleva las siguientes opciones: «rw,suid,dev,exec,auto,nouser,async». (Uso general)

  • La opción «noatime» o «relatime» es muy efectiva para mejorar los accesos de lectura. (Uso general)

  • La opción «user» permite un usuario normal el montaje de sistemas de archivos. Esta opción conlleva la combinación de opciones «noexec,nosuid,nodev» . (Utlizado generalmente en CDs o dispositivos de almacenamiento USB)

  • La combinación de opciones «noexec,nodev,nosuid» se utiliza para la mejora de la seguridad. ( Uso general)

  • La opción «noauto» solo permite el montaje de forma explícita. (Uso general)

  • La opción «data=journal» de ext3fs puede mejorar la integridad de la información ante caidas de fuerza y pierde algo de velocidad de escritura.

[Sugerencia] Sugerencia

Necesita aportar parámetros de arranque al núcleo (consulte Sección 3.1.2, “Fase 2: el cargador de arranque”),p. ej. «rootflags=data=journal» para desplegar el modo de registro de operaciones (journaling) no estándar para el sistema de archivos raíz. En lenny, el modo de registro de operaciones por defecto es «rootflags=data=ordered». Para squeeze es «rootflags=data=writeback».

El desempeño y el desgaste de un disco de estado sólido (SSD) puede optimizarse de la siguiente manera.

  • Utilice el núcleo de Linux más reciente. (>= 3.2)

  • Reduzca las escrituras al disco para accesos de lectura.

    • Asigne la opción «noatime» o «relatime» en el montaje de /etc/fstab.

  • Active la orden TRIM.

    • Asigne la opción de montaje «discard» en /etc/fstab para los sistemas de archivos ext4 , partición de intercambio, Btrfs, etc. Consulte fstab(5).

    • Asigne la opción «discard» en /etc/lvm/lvm.conf para LVM. Consulte lvm.conf(5).

    • Asigne la opción «discard» en /etc/crypttab para dm-crypt. Consulte crypttab(5).

  • Active el esquema de asignación de espacio de disco optimizado SSD,

    • Asigne la opción de montaje «ssd» en /etc/fstab para btrfs.

  • Haga que el sistema sincronice los datos cada 10 minutos al disco si utiliza un portátil.

    • Asigne la opcińo de montaje «commit=600» en /etc/fstab. Consulte fstab(5).

    • Active pm-utils a modo-portátil incluso si está conectado a la corriente. Consulte Debian BTS #659260.

[Aviso] Aviso

Cambiar la cadencia de la sincronización de datos del valor por defecto de 5 segundos a 10 miuntos hace que sus datos sean vulnerables a fallos de corriente.

Puede monitorear y registrar el cumplimiento de su disco duro con SMART con el demonio smartd(8).

  1. Active la funcionalidad SMART en la BIOS.

  2. Instale el paquete smartmontools.

  3. Identifique los dispositivos que son discos duros enumerándolos con df(1).

    • Asumamos que el dispositivo de disco duro a controlar es «/dev/hda».

  4. Compruebe la salida de «smartctl -a /dev/hda» para verificar que la funcionalidad SMART está activada realmente.

    • Si no es así, activelo con «smartctl -s on -a /dev/hda».

  5. Active el demonio smartd(8) ejecutando lo siguiente.

    • descomente «start_smartd=yes» en el archivo «/etc/default/smartmontools».

    • reinicie el demonio smartd(8) mediante «sudo /etc/init.d/smartmontools restart».

[Sugerencia] Sugerencia

El demonio smartd(8) daemon se puede personalizar mediante el archivo /etc/smartd.conf que incluye el modo de notificación de las alertas.

Las particiones creadas mediante el Gertor de Volumenes Lógicos (Logical Volume Manager, LVM) (funcionalidad de Linux) en el momento de la instalación, pueden ser redimensionadas de forma sencilla mediante la concatenación o la extensión de estas sobre varios dispositivos de almacenamiento sin necesitar otras reconfiguraciones del sistema.

If you have usable space in another partition (e.g., "/path/to/empty" and "/path/to/work"), you can create a directory in it and stack that on to an old directory (e.g., "/path/to/old") where you need space using the OverlayFS for Linux kernel 3.18 or newer (Debian Stretch 9.0 or newer).

$ sudo mount -t overlay overlay \
  -olowerdir=/ruta/al/directorio_antiguo,upperdir=/ruta/al/directorio_vacio,workdir=/ruta/al/directorio_de_trabajo

Aquí, «/ruta/al/directorio_vacio» y «/ruta/al/directorio_de_trabajo» deben ser una partición con permisos de lectura y escritura para escribir en «/ruta/al/directorio_antiguo».

Aquí hablaremos de la manipulación de imágenes de disco.

El archivo de imagen de disco «disk.img», de un dispositivo desmontado, p. ej. el segundo disco SCSI o serial ATA «/dev/sdb», puede hacerse utilizando cp(1) o dd(1) como se muestra.

# cp /dev/sdb disk.img
# dd if=/dev/sdb of=disk.img

La imagen de disco de un PC tradicional Registro de Arranque Maestro(MBR) (consulte Sección 9.5.2, “Configuración del particionado de disco”) el cual está en el primer sector del disco primario IDE puede hacerse mediante dd(1) lo siguiente.

# dd if=/dev/hda of=mbr.img bs=512 count=1
# dd if=/dev/hda of=mbr-nopart.img bs=446 count=1
# dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66
  • «mbr.img»: MBR con la tabla de particiones

  • «mbr-nopart.img»: MBR sin la tabla de particiones

  • «mbr-part.img»: Unicamente la tabla de particiones MBR

Si su disco de arranque es SCSI o serial ATA, cambie «/dev/hda» por «/dev/sda».

Si ha hecho una imagen del disco de la partición del disco original, cambie «/dev/hda» por «/dev/hda1» etc.

La imagen del disco «partition.img» que contiene la imagen de una única partición puede ser montada y desmontada utilizandolo como dispositivo «loop« como se muestra.

# losetup -v -f partition.img
Dispositivo «loop« es /dev/loop0
# mkdir -p /mnt/loop0
# mount -t auto /dev/loop0 /mnt/loop0
...hack...hack...hack
# umount /dev/loop0
# losetup -d /dev/loop0

Este se puede simplificar como se muestra.

# mkdir -p /mnt/loop0
# mount -t auto -o loop partition.img /mnt/loop0
...hack...hack...hack
# umount partition.img

Cada partición de una imagen de disco «disk.img» que contiene varias particiones pueden ser montadas utilizando los dispositivos «loop«. Ya que el dispositivo «loop« no gestiona particiones por omisión, necesitamos iniciarlo como se muestra.

# modinfo -p loop # comprueba la funcionalidad del núcleo
max_part: número máximo de particiones por dispositivo «loop«
max_loop: número máximo de dispositivos «loop«
# losetup -a # comprueba que nadie utiliza el dispositivo «loop«
# rmmod loop
# modprobe loop max_part=16

Ahora, el dispositivo «loop« puede gestionar hasta 16 particiones.

# losetup -v -f disk.img
Dispositivo «loop« es /dev/loop0
# fdisk -l /dev/loop0

Disco /dev/loop0: 5368 MB, 5368709120 bytes
255 cabezas, 63 sectores/pista, 652 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x452b6464

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1               1         600     4819468+  83  Linux
/dev/loop0p2             601         652      417690   83  Linux
# mkdir -p /mnt/loop0p1
# mount -t ext4 /dev/loop0p1 /mnt/loop0p1
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/loop0p2 /mnt/loop0p2
...hack...hack...hack
# umount /dev/loop0p1
# umount /dev/loop0p2
# losetup -d /dev/loop0

De forma, los mismos efectos pueden conseguirse utilizando el mapeo de dispositivos de los dispositivos creados por kpartx(8) del paquete kpartx como se muestra.

# kpartx -a -v disk.img
...
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2
...
...hack...hack...hack
# umount /dev/mapper/loop0p2
...
# kpartx -d /mnt/loop0
[Nota] Nota

Puede montar una única partición como imagen del disco con dispositivos «loop« utilizando el desplazamiento para evitar el MBR etc., también. Pero es más propenso a errores.

La imagen de disco vacio «disk.img» el cual puede crecer hasta 5GiB, pude hacerse mediante dd(1) como se muestra.

$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G

Puede crear un sistema de archivos ext4 en la imagen de disco «disk.img» utilizando el dispositivo «loop« como se muestra.

# losetup -f -v disk.img
El dispositivo «loop« es /dev/loop1
# mkfs.ext4 /dev/loop1
...hack...hack...hack
# losetup -d /dev/loop1
$ du  --apparent-size -h disk.img
5.0G  disk.img
$ du -h disk.img
83M disk.img

Para «disk.img», su tamaño de archivo es 5.0 GiB y su utilización real de disco es de sólo 83MiB. Esta discrepancia es posible ya que ext4 se puede representar mediante un archivo disperso.

[Sugerencia] Sugerencia

La utilización real de discos que utiliza un archivo disperso crece con los datos que son escritos en el.

Utilizando la misma operación en dispositivos creados por el dispositivo «loop« o el dispositivo mapeador de dispositivos como Sección 9.6.3, “Montaje del archivo de la imagen del disco”, puede particionar esta imagen de disco «disk.img» utilizando parted(8) o fdisk(8) y puede crear el archivo de sistemas en el utilizando mkfs.ext4(8), mkswap(8), etc.

El archivo de imagen ISO9660, «cd.iso», utilizando como origen el árbol de directorios de «directorio_origen» se puede hacer utilizando genisoimage(1) aportado por cdrkit como se muestra.

#  genisoimage -r -J -T -V volume_id -o cd.iso directorio_origen

De igual manera, el archivo imagen ISO9660 arrancable, «cdboot.iso», se puede realizar desde el instalador debian como el árbol de directorios del «directorio_origen» como se muestra.

#  genisoimage -r -o cdboot.iso -V volume_id \
   -b isolinux/isolinux.bin -c isolinux/boot.cat \
   -no-emul-boot -boot-load-size 4 -boot-info-table directorio_origen

Aquí el cargador de arranque Isolinux (consulte Sección 3.1.2, “Fase 2: el cargador de arranque”) se utiliza para el arranque.

Puede calcular el valor md5sum y hace la imagen ISO9660 directamente desde el dispositivo CD-ROM como se muestra.

$ isoinfo -d -i /dev/cdrom
CD-ROM is in ISO 9660 format
...
Logical block size is: 2048
Volume size is: 23150592
...
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso
[Aviso] Aviso

Debe evitar cuidadosamente el sistema de archivos ISO9660 debido al problema de lectura adelantada de Linux para obtener el resultado correcto.

Aquí discutiremos la manipulación directa de datos binarios en medios de almacenamiento.

Existen herramientas para la recuperación de archivos y análisis forense.


[Sugerencia] Sugerencia

Puede recuperar archivos borrados en sistemas de archivos ext2 utilizando la relación_de_inodos_borrados y la orden undel de debugfs(8) en el paquete e2fsprogs.

Con acceso físico a su PC, cualquiera puede acceder como superusuario y acceder a todos los archivos en él (consulte Sección 4.7.4, “Asegurando la contraseña de root”). Esto significa que el sistema de acceso por contraseña puede no securizar sus datos delicados y privados contra posibles ladrones de su PC. Para hacerlo debe desplegar alguna tecnología de cifrado de información. Aunque GNU privacy guard (consulte Sección 10.3, “Infraestructura de seguridad de la información”) puede cifrar archivos , necesita de los esfuerzos del usuario.

dm-crypt y eCryptfs ayudan al cifrado automático de la información de forma nativa por medio de módulos del núcleo Linux con el mínimo esfuezo por parte del usuario.


Dm-crypt es un sistema de archivos criptográfico utilizando mapeo de dispositivos. El mapeo de dispositivos relaciona un dispositivo de bloques a otro.

eCryptfs es otro sistema de archivos criptográfico que utiliza el sistema de archivos apilado. Los sistemas de archivos apilados se apilan a si mismos en lo alto de un directorio existente del sistema de archivos que esta montado.

[Atención] Atención

El cifrado de información requiere tiempo de CPU etc. Por favor evalue costes y beneficios.

[Nota] Nota

El sistema Debian entero puede instalarse en el disco cifrado por el instalador debian (lenny o más nuevo) utilizando dm-crypt/LUKS y initramfs.

[Sugerencia] Sugerencia

Consulte Sección 10.3, “Infraestructura de seguridad de la información” para la utilización del cifrado del espacio de usuario: GNU Privacy Guard.

Puede cifrar el contenido de los dispositivos masivos extraibles, p. ej. memoria USB en «/dev/sdx», utilizando dm-crypt/LUKS. Simplemente formateelo como se muestra.

# badblocks -c 1024 -s -w -t random -v /dev/sdx
# fdisk /dev/sdx
... «n« «p« «1« «return« «return« «w«
# cryptsetup luksFormat /dev/sdx1
...
# cryptsetup open --type luks /dev/sdx1 sdx1
...
# ls -l /dev/mapper/
total 0
crw-rw---- 1 root root  10, 60 2008-10-04 18:44 control
brw-rw---- 1 root disk 254,  0 2008-10-04 23:55 sdx1
# mkfs.vfat /dev/mapper/sdx1
...
# cryptsetup luksClose sdx1

Entonces, se puede montar de forma habitual en «/media/<etiqueta_del_disco>», excepto por la pregunta de la contraseña (consulte Sección 10.1.7, “Dispositivos de almacenamiento extraibles”) en el entorno de escritorio moderno, como GNOME utilizando gnome-mount(1). La diferencia es que cada dato escrito en él está cifrado. Alternativamente puede formatear el medio en un sistema de archivo diferente, p. ej. ext4 con «mkfs.ext4 /dev/mapper/sdx1».

[Nota] Nota

Si de verdad es un paranoico de la seguridad, puede necesitar sobreescribirlos varias veces (con la orden «badblocks» del ejemplo anterior). Esta operación necesita mucho tiempo.

Asumamos que su «/etc/fstab» original contiene lo que se muestra.

/dev/sda7 swap sw 0 0

Puede activar el cifrado de la partición de intercambio utilizando dm-crypt según se muestra.

# aptitude install cryptsetup
# swapoff -a
# echo «cswap /dev/sda7 /dev/urandom swap« >> /etc/crypttab
# perl -i -p -e «s/\/dev\/sda7/\/dev\/mapper\/cswap/« /etc/fstab
# /etc/init.d/cryptdisks restart
 ...
# swapon -a

Puede cifrar los archivos escritos en «~/Private/» automaticamente utilizando eCryptfs y el paquete ecryptfs-utils.

  • Ejecute ecryptfs-setup-private(1) y configure «~/Private/» siguiendo las instrucciones.

  • Active «~/Private/» ejecutando ecryptfs-mount-private(1).

  • Mueva los archivos con información sensible a «~/Private/» y cree los enlaces simbólicos que necesite.

    • Candidatos: «~/.fetchmailrc», «~/.ssh/identity», «~/.ssh/id_rsa», «~/.ssh/id_dsa» y otros archivos con permisos «go-rwx»

  • Mueva los directorios sensibles al subdirectorio en «~/Private/» y cree los enlaces simbólicos que necesite.

    • Candidatos: «~/.gnupg» y otros directorios con «go-rwx»

  • Para una operativa más fácil del escritorio cree el enlace simbólico desde «~/Desktop/Private/» a «~/Private/».

  • Deshabilite «~/Private/» ejecutando ecryptfs-umount-private(1).

  • Active«~/Private/» utilizando «ecryptfs-mount-private» cunado necesite los datos encriptados.

[Sugerencia] Sugerencia

Debido a que eCryptfs cifra unicamente los archivos sensibles, el coste para el sistema es mucho menor que utilizar dm-crypt sobre el dispositivo que contiene el árbol de directorios entero o «/home». No necesita un esfuerzo para la ubicación del almacenamiento en disco pero tampoco mantiene la confidencialidad de la metainformación de todo el sistema de archivos.

Su utiliza una contraseña de paso para utilizar las claves de cifrado, puede automatizar el montaje de eCryptfs por medio de PAM (Pluggable Authentication Modules).

Inserte la siguiente línea justo antes de «pam_permit.so» en «/etc/pam.d/common-auth».

auth required pam_ecryptfs.so unwrap

Inserte la siguiente línea en la última línea de «/etc/pam.d/common-session».

session optional pam_ecryptfs.so unwrap

Inserte la siguiente línea en la primera línea activa en «/etc/pam.d/common-password».

password required pam_ecryptfs.so

Lo cual es bastante conveniente.

[Aviso] Aviso

Los errores de configuración de PAM puede bloquear el acceso a su propio sistema. Consulte Capítulo 4, Acreditación.

[Atención] Atención

Su utiliza su contraseña de acceso para acceder a las claves de cifrado, sus datos cifrados son tan seguras como su contraseña de acceso de usuario (consulte Sección 4.3, “Buenas contraseñas”). Al menos que sea cuidados al elegir una contraseña fuerte, sus datos estarán en riesgo cuando alguien ejecute algún software para reventar su contraseña trás robar su portátil (consulte Sección 4.7.4, “Asegurando la contraseña de root”).

Debian distribuye el núcleo de Linux modularizado en paquetes para soportar las arquitecturas.

Existen unas cuantas funcionalidades importantes en los núcleos de Linux 2.6/3.x comparado con la versión 2.4.

El salto de versión entre Linux 2.6.39 a Linux 3.0 no es como consecuencia de cambios tecnológicos importantes sino por su 20 aniversario.

Muchas funcionalidades de Linux son configurables por medio de parámetros del núcleo como se muestra.

Consulte «kernel-parameters.txt(.gz)» y otros documentos relacionados en la documentación del núcleo de Linux («/usr/share/doc/linux-doc-3.*/Documentation/filesystems/*») que están en los paquetes linux-doc-3.*.

Debian tiene su propio método para compilar el núcleo y los módulos asociados.


Si utiliza initrd in Sección 3.1.2, “Fase 2: el cargador de arranque”, asegurese de leer la documentación asociada en initramfs-tools(8), update-initramfs(8), mkinitramfs(8) y initramfs.conf(5).

[Aviso] Aviso

No cree enlaces simbólicos en el árbol de directorios del código fuente (p. ej. «/usr/src/linux*») de «/usr/include/linux» y «/usr/include/asm» cuando compile código fuente del núcleo de Linux. (Algunos documentos sin actualizar lo sugieren.)

[Nota] Nota

Cuando compile el núcleo de Linux en el sistema Debian estable, la utilización las últimas herramientas retroportadas de Debian «inestable» pueden ser necesarias.

[Nota] Nota

El soporte del núcelo a módulos dinámicos (dynamic kernel module support, DKMS) es un marco nuevo de distribución independiente diseñado para permitir la actualización de módulos sueltos sin cambiar el núcleo completo. Esto es utilizado para mantener módulos externos. Esto también facilita la reconstrucción de módulos cuando actualice su núcleo.

El controlador de hardware es el código que se ejecuta en el sistema correspondiente. La mayor parte de los controladores de hardware están disponibles como software libre actualmente se incluyen en los paquetes normales del núcleo de Debian en el área main.

  • controlador de GPU

    • Controlador de Intel GPU (main)

    • Controladores AMD/ATI GPU (main)

    • Controlador NVIDIA GPU (main para el controlador nouveau y non-free para los controladores binarios aportador por el vendedor.)

  • Controlador Softmodem

    • paquetes martian-modem y sl-modem-dkms (non-free)

El firmware es el código o datos ubicados en e propio dispositivo (p. ej. CPU microcode, código ejecutable para el «rendering« en GPU, o FPGA / datos CPLD , …). Algunso paquetes con firmware están disponibles como software libre pero no la mayoría ya que contienen información binaria sin su código fuente.

  • firmware-linux-free (main)

  • firmware-linux-nonfree (non-free)

  • firmware-linux-* (non-free)

  • *-firmware (non-free)

  • intel-microcode (non-free)

  • amd64-microcode (non-free)

Tenga en cuenta que los paquetes de non-free y contrib no son parte del sistema Debian. El acceso a la configuración que permite la activación y desactivación de las áreas non-free y contrib está explicado en Sección 2.1.4, “Fundamentos del archivo de Debian”. Debería ser consciente de las consecuencias negativas que conlleva la utilización de paquetes de non-free y contrib según se explica en Sección 2.1.5, “Debian es 100% software libre”.

La utilización de sistemas virtualizados nos permite la ejecución de varias instancias del sistema a la vez sobre un único hardware.

Existen varios sistemas de virtualización y de emulación con sus paquetes correspondientes en Debian más allá del sencillo chroot. Algunos paquetes además, le ayudarán a configurar estos sistemas.

Tabla 9.26. Relación de herramientas de virtualización

paquete popularidad tamaño descripción
schroot V:7, I:10 2728 herramientas especializadas para la ejecución de paquetes binarios en «chroot«
sbuild V:1, I:4 298 herramientas para la construcción de paquetes binarios desde el código fuente de Debian
pbuilder V:1, I:16 966 contructor de paquetes personales Debian
debootstrap V:6, I:63 283 sistema de arranque como sistema Debian mínimo (escrito en sh)
cdebootstrap V:0, I:3 116 sistema de arranque de un sistema Debian (escrito en C)
virt-manager V:9, I:34 6770 Gestor de Máquinas Virtuales: aplicación de escritorio para la gestión de máquinas virtuales
libvirt-clients V:30, I:51 2139 programas para la biblioteca libvirt
bochs V:0, I:1 6706 Bochs: emulador de PC IA-32 PC
qemu I:35 95 QEMU: emulador rápido de un procesador genérico
qemu-system I:32 96 QEMU: binarios para la emulación de un sistema completo
qemu-user V:2, I:30 84481 QEMU: binarios para la emulación en modo usuario
qemu-utils V:9, I:97 5536 QEMU: utilidades
qemu-kvm V:16, I:70 105 KVM: virtualización completa de harsware x86 con la virtualización asistida por hardware
virtualbox V:33, I:41 127956 VirtualBox: solución de virtualización x86 en i386 y amd64
xen-tools V:0, I:5 704 herramientas para la gestión de debian del servidor virtual XEN
wine V:21, I:95 189 Wine: Implementación de la API Windows (suite estándar)
dosbox V:2, I:19 2778 DOSBox: emulador x86 con gráficos Tandy/Herc/CGA/EGA/VGA/SVGA , sonido y DOS
dosemu V:0, I:3 4891 DOSEMU: el Emulador de Linux de DOS
vzctl V:1, I:2 1112 OpenVZ solución de virtualización de servidor - herramientas de control
vzquota V:1, I:2 236 OpenVZ Solución para la virtualización de servidores - Herramientas de cuota
lxc V:9, I:14 2412 Contenedores Linux herramientas del espacio de usuario

Consulte el artículo de Wikipedia Comparison of platform virtual machines para obtener detalles de la comparación entre diferentes plataformas y soluciones de virtualización.

[Nota] Nota

Algunas funcionalidades que comentaremos aquí están únicamente disponibles en squeeze o en distribuciones posteriores.

[Nota] Nota

El núcleo de Debian por defecto soporta KVM desde lenny.

El flujo de trabajo de la virtualización conlleva varios pasos.

Para un archivo de imágen de disco crudo, consulte Sección 9.6, “La imagen de disco”.

Para otros archivos de imágenes de disco virtuales, puede utilizar qemu-nbd(8) para exportarlos utilizando el protocolo de dispositivos de bloque de red y montarlos utilizando el módulo del núcleo nbd.

qemu-nbd(8) soporta los formatos de disco soportados por QEMU: QEMU que soporta los siguientes formato de disco: crudo, qcow2, qcow, vmdk, vdi, bochs, cow (copia al escribir en modo usuario de Linux), parallels, dmg, cloop, vpc, vvfat (virtual VFAT) y «host_device«.

Los dispositivos de bloque de red pueden soportar particiones de la misma manera que los dispositivos «loop« (consulte Sección 9.6.3, “Montaje del archivo de la imagen del disco”). Puede montar la primera partición de «disk.img» como se muestra.

# modprobe nbd max_part=16
# qemu-nbd -v -c /dev/nbd0 disk.img
...
# mkdir /mnt/part1
# mount /dev/nbd0p1 /mnt/part1
[Sugerencia] Sugerencia

Puede exportar únicamente la primera partición de «disk.img» utilizando la opción «-P 1» de qemu-nbd(8).

Chroot(8) ofrece la manera más básica de ejecutar diferentes instancias de un entorno GNU/Linux en un solo sistema de forma simultanea sin reiniciar.

[Atención] Atención

En los ejemplos siguientes se asume que tanto el sistema padre como el sistema chroot comparten la misma arquitectura CPU.

Puede aprender como crear , configurar y utilizar chroot(8) ejecutando el programa pbuilder(8) en script(1) como se muestra.

$ sudo mkdir /sid-root
$ sudo pbuilder --create --no-targz --debug --buildplace /sid-root

Puede ver como debootstrap(8) o cdebootstrap(1) completa la información del sistema con un entorno sid en «/sid-root».

[Sugerencia] Sugerencia

Tanto debootstrap(8) como cdebootstrap(1) se utilizan para instalar Debian por parte del Instalador Debian. Estos también puede ser utilizado para instalar Debian en un sistema sin utilizar el disco de instalación de Debian en lugar de otra distribución GNU/Linux.

$ sudo pbuilder --login --no-targz  --debug --buildplace /sid-root

Puede ver como un intérprete de órdenes del sistema en entornos sid se crean como se muestra.

  1. Copia la configuración local («/etc/hosts», «/etc/hostname», «/etc/resolv.conf»)

  2. Monte el sistema de archivos «/proc»

  3. Monte el sistema de archivox «/dev/pts»

  4. Cree «/usr/sbin/policy-rc.d» el cual siempre finaliza con 101

  5. Ejecute «chroot /sid-root bin/bash -c 'exec -a -bash bin/bash'»

[Nota] Nota

Algunos programas para operar en entornos chroot oueden necesitar acceso a más ficheros del sistema huésped de los que ofrece pbuilder. Por ejemplo, «/sys», «/etc/passwd», «/etc/group», «/var/run/utmp», «/var/log/wtmp», etc. pueden requerir ser enlace de montaje o ser copiados.

[Nota] Nota

El archivo «/usr/sbin/policy-rc.d» impide que los programas que son demonios comiencen de forma automática en el sistema Debian. Consulte «/usr/share/doc/sysv-rc/README.policy-rc.d.gz».

[Sugerencia] Sugerencia

El fin original del paquete de chroot especializado, pbuilder es la construcción de un sistema chroot y contruir paquetes dentro de chroot. Es un sistema ideal para comprobar que las dependencias de un paquete en contrucción son correctas y para asegurarse de que no existan dependencias inecesarias o incorrectas en el paquete que se está construyendo.

[Sugerencia] Sugerencia

El paquete similar schroot puede darle una idea de la ejecucuón de un sistema chroot i386 en un sistema huésped amd64.

Le recomiendo que utilice QEMU o VirtualBox en un sistema Debian estable para ejecutar varios sistemas de escritorio de forma segura por medio de la virtualización. Esto le permite ejecutar aplicaciones de escritorio de «inestable» y «en pruebas» sin los riesgos habituales asociados a ello.

Ya que un QEMU puro es muy lento, se recomiendo acelerarlo mediante KVM cuando el sistema del equipo lo permita.

La imágen de disco virtual «virtdisk.qcow2» que contiene una imágen del sistema Debian para QEMU se puede crear utilizando el instalador debian: en pequeños CDs como se muestra.

$ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso
$ qemu-img create -f qcow2 virtdisk.qcow2 5G
$ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256
...

Para más consejos consulte Debian wiki: QEMU.

VirtualBox se proporciona con herramientas de interfaz gráfico de usuario Qt y es bastante intuitivo. Su GUI y herramietnas en línea de órdenes se explican en e Manual de Usuario de VirtualBox y el Manual de Usuario de VirtualBox (PDF).

[Sugerencia] Sugerencia

Ejecutar otra distribución GNU/Linux como Ubuntu y Fedora de forma virtualizada es un gran manera de aprender formas de configuración. También se pueden ejecutar correctamente SS.OO. propietarios virtualializado sobre GNU/Linux.