Capítulo 9. Trucos del sistema

Tabla de contenidos

9.1. The console tips
9.1.1. Registro correcto de las actividades del intérprete de órdenes
9.1.2. El programa screen
9.1.3. Navigating around directories
9.1.4. Readline wrapper
9.1.5. Escaneando el árbol del código fuente
9.2. Personalición de vim
9.2.1. Personalizando vim con características internas
9.2.2. Personalizando vim con paquetes externos
9.3. Registro de datos y presentación
9.3.1. El demonio de registro
9.3.2. Analizador de registros
9.3.3. Personalizar la visualización de información en formato texto
9.3.4. Personalización de la visualización de la fecha y hora
9.3.5. Intérprete de órdenes en color
9.3.6. Órdenes coloreadas
9.3.7. Grabación de las actividades del editor con repeticiones complejas
9.3.8. Captura una imagen gráfica en un aplicación X
9.3.9. Guardando cambios en los archivos de configuración
9.4. Monitoreando, controlando e iniciando lo que hacer los programas
9.4.1. Temporización de un proceso
9.4.2. La prioridad de planificación
9.4.3. La orden ps
9.4.4. La orden top
9.4.5. Relación de los archivos abiertos por un proceso
9.4.6. Trazando la actividad de un programa
9.4.7. Identificación de procesos utlizando archivos o conexiones (sockets)
9.4.8. Repetición de una orden a intervalos constantes
9.4.9. Repetición de una orden sobre archivos
9.4.10. Iniciar un programa desde el interfaz gráfico de usuario
9.4.11. Personalizando el inicio de un programa
9.4.12. Matando un proceso
9.4.13. Planificación una vez de las tareas
9.4.14. Planificación regular de tareas
9.4.15. Tecla Alt-SysRq
9.5. Trucos para el mantenimiento del sistema
9.5.1. ¿Quién está en el sistema?
9.5.2. Avisos para todos
9.5.3. Identificación del hardware
9.5.4. Configuración del hardware
9.5.5. Hora del sistema y del hardware
9.5.6. La configuración del terminal
9.5.7. La infraestructura de sonido
9.5.8. Deshabilitar el salvapantallas
9.5.9. Deshabilitando los pitidos
9.5.10. Utilización de memoria
9.5.11. Sistema de seguridad y de comprobación de la integridad
9.6. Trucos del almacenamiento de datos
9.6.1. Uso de espacio de disco
9.6.2. Configuración del particionado de disco
9.6.3. Acceso al particionado utilizando UUID
9.6.4. LVM2
9.6.5. Configuración del sistema de archivos
9.6.6. Comprobación de la integridad y creación del sistema de archivos
9.6.7. Optimización de los sistemas de archivos a través de las opciones de montaje
9.6.8. Optimización del sistema de archivo a través del superbloque
9.6.9. Optimización del disco duro
9.6.10. Optimización de un disco de estado sólido (SSD)
9.6.11. Utilice SMART para predecir fallos en su disco duro
9.6.12. Determine el directorio de almacenamiento temporal por medio de $TMPDIR
9.6.13. Expansión del espacio de almacenamiento utilizable mediante LVM
9.6.14. Expansión del espacio de almacenamiento útil mendiante el montaje de otra partición
9.6.15. Expansión del espacio de almacenamient por el enlace mediante el montaje en otro directorio
9.6.16. Expansion of usable storage space by overlay-mounting another directory
9.6.17. Expansión del espacio de almacenamiento útil utilizando un enlace simbólico
9.7. La imagen de disco
9.7.1. Creando un archivo de imagen de disco
9.7.2. Escribiendo directamente en el disco
9.7.3. Montaje del archivo de la imagen del disco
9.7.4. Limpiando un archivo de imagen de disco
9.7.5. Haciendo un archivo de imagen de disco vacio
9.7.6. Haciendo un archivo de imagen ISO9660
9.7.7. Escritura directa al CD/DVD-R/RW
9.7.8. Montando un archivo imagen ISO9660
9.8. Datos binarios
9.8.1. Viendo y editando datos binarios
9.8.2. Manipular archivos sin el montaje de discos
9.8.3. Redundancia de datos
9.8.4. Recuperación de datos de archivos y análisis forense
9.8.5. División de un archivo grande en archivos de tamaño menor
9.8.6. Limpieza del contenido de los archivos
9.8.7. Archivos «vacíos»
9.8.8. Borrando completo de un disco duro
9.8.9. Borrar áreas de disco duro no utilizadas
9.8.10. Recuperando archivos borrados pero todavía abiertos
9.8.11. Buscando todos los enlaces duros
9.8.12. Consumo invisible de espacio de disco
9.9. Trucos para cifrar información
9.9.1. Cifrado de discos externos con dm-crypt/LUKS
9.9.2. Montaje de disco cifrado con dm-crypt/LUCKS
9.10. El núcleo
9.10.1. Parametros del núcleo
9.10.2. Cabeceras del núcleo
9.10.3. Compilar el núcleo y los módulos asociados
9.10.4. Compilando el código fuente del núcleo: recomendaciones del Equipo Debian del Núcleo
9.10.5. Controladores y firware del hardware
9.11. Sistemas virtualizados
9.11.1. Virtualization and emulation tools
9.11.2. Flujo de trabajo de la virtualización
9.11.3. Montando el archivo de imagen de disco virtual
9.11.4. Sistemas chroot
9.11.5. Varios sistemas de escritorio

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

There are some utility programs to help your console activities.


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 > cleanedfile
$ vim cleanedfile

There are alternative methods to record the shell activities:

  • Use tee (usable during the boot process in the initramfs):

    $ sh -i 2>&1 | tee typescript
  • Use gnome-terminal with the extend line buffer for scrollback.

  • Use screen with "^A H" (see Sección 9.1.2, “El programa screen”) to perform recording of console.

  • Use vim with ":terminal" to enter the terminal mode. Use "Ctrl-W N" to exit from terminal mode to normal mode. Use ":w typescript" to write the buffer to a file.

  • Use emacs with "M-x shell", "M-x eshell", or "M-x term" to enter recording console. Use "C-x C-w" to write the buffer to a file.

Screen(1) no solo permite trabajar con múltiples procesos en un único terminal, si no que también que el proceso del intérprete de órdenes remoto sobreviva a la interrupción de las conexiones. Aquí está un escenario típico de utilización de screen(1).

  1. Usted acceda a un equipo remoto.

  2. Inici screen en una única consola.

  3. Ejecute múlitples programas en la ventana de screen con ^A c («Control-A« seguido por «c«).

  4. Puede cambiar entre las múltiples ventanas de screen con ^A n («Control-A« seguido de «n«).

  5. Si repentinamente necesita dejar su terminal, pero no quiere perder su trabajo activo por la mantener la conexión.

  6. Se puede separar la sesión screen por cualquier método.

    • Desconexión forzada de su conexión de red

    • Pulse ^A d («Control-A« seguido de «d«) y cierre manualmente la conexión remota

    • Pulse ^A DD («Control-A« seguido de «DD«) para que screen separe y cierre su sesión

  7. Si inicia la sesión otra vez al mismo equipo remoto (incluso desde un terminal diferente).

  8. Inicie screen con «screen -r».

  9. Screen magicamente reconecta con todas las ventanas anteriores de screen con todos los programas activos ejecutandose.

[Sugerencia] Sugerencia

Puede guardar la entrada de la conexión con screen para la conexión de red amedida como de marcado y de paquete, ya que puede dejar el proceso activo mientras esta desconectado, y entonces recuperarlo más tarde cuando se conecte de nuevo.

En una sesión de screen, todas las entradas de teclado son enviadas a la ventana actual excepto las que son combinaciones de teclado de órdenes. Todas las combinaciones de teclas de órdenes screen se inician pulsando ^A («Control-A«) más otra tecla [más algunos parámetros]. Aquí estan algunos importantes a recordar.


Para más detalles consulte screen(1).

See tmux(1) for functionalities of the alternative command.

In Sección 1.4.2, “Personalización de bash”, 2 tips to allow quick navigation around directories are described: $CDPATH and mc.

Si utiliza el programa de fuzzy text filter, puede hacerlo sin escribir la ruta exacta. Para fzf, incluya lo siguiente en ~/.bashrc.

FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash
if [ -f $FZF_KEYBINDINGS_PATH ]; then
  . $FZF_KEYBINDINGS_PATH
fi
FZF_COMPLETION_PATH=/usr/share/doc/fzf/examples/completion.bash
if [ -f $FZF_COMPLETION_PATH ]; then
  . $FZF_COMPLETION_PATH
fi

Por ejemplo:

  • Puedes saltar a un subdirectorio muy profundo con un mínimo esfuerzo. Primero escribe "cd **" y pulsa Tab. A continuación, se le pedirán las rutas candidatas. Si escribe cadenas de rutas parciales, por ejemplo, s/d/b foo, se reducirán las rutas candidatas. Seleccione la ruta que va a usar cd con las teclas de cursor y retorno.

  • Puede seleccionar un comando del historial de comandos de manera más eficiente con un esfuerzo mínimo. Presione Ctrl-R en el símbolo del sistema. Luego le pedirá los comandos candidatos. Escribir cadenas de comandos parciales, por ejemplo, vim d, reducirá los candidatos. Seleccione el que se utilizará con las teclas de cursor y retorno.

Después de aprender los conceptos básicos de vim(1) a través de Sección 1.4.8, “Usando vim”, lea "Siete hábitos de edición de texto efectiva (2000) "de Bram Moolenaar, para entender cómo se debe usar vim.

[Atención] Atención

No intente cambiar las combinaciones de teclas predeterminadas sin muy buenas razones.

Se puede cambiar el comportamiento de vim significativamente habilitando sus características internas a través de los comandos del modo Ex como "set ..." para establecer opciones de vim.

Estos comandos en modo Ex se pueden incluir en el archivo vimrc del usuario, en el tradicional "~/.vimrc" o en el compatible con git "~/.vim/vimrc". He aquí un ejemplo muy simple [2]:

colorscheme murphy             " from /usr/share/vim/vim??/colors/*.vim
filetype plugin indent on      " filetype aware behavior
syntax enable                  " Syntax highlight
"set spelllang=en_us            " Spell check language as en_us
"set spell                      " Enable spell check
set autoindent                 " Copy indent from current line
set smartindent                " More than autoindent (Drop/Pop after {/})
set nosmarttab                 " <Tab>-key always inserts blanks
set backspace=indent,eol,start " Back space through everything
set laststatus=2               " Always show status line
set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V

Se puede habilitar una personalización simple para habilitar modelos seguros e IDE clásico instalando el paquete vim-scripts y agregando lo siguiente al archivo vimrc del usuario.

packadd! secure-modelines
packadd! winmanager
let mapleader = ' '
" Toggle paste mode with <SPACE>p
set pastetoggle=<leader>p
" IDE-like UI for files and buffers with <space>w
nnoremap <leader>w         :WMToggle<CR>
" Use safer keys <C-?> for moving to another window
nnoremap <C-H>         <C-W>h
nnoremap <C-J>         <C-W>j
nnoremap <C-K>         <C-W>k
nnoremap <C-L>         <C-W>l

Para que las combinaciones de teclas anteriores funcionen correctamente, el programa de terminal ha de configurarse para generar "ASCII DEL" para la teclaBackspace y "Secuencia de escape" para la tecla Delete.

El nuevo sistema de paquetes nativo de Vim funciona bien con "git" y "git submodule". Puede encontrar un ejemplo de configuración en my git repository: dot-vim. Esto hace esencialmente:

  • Al usar "git" y "git submodule", los últimos paquetes externos, como "name", se sitúan en ~/.vim/pack/*/opt/name y similares.

  • Agregando la línea :packadd! name al archivo vimrc del usuario, estos paquetes se colocan en runtimepath.

  • Vim carga estos paquetes en runtimepath durante su inicialización.

  • Al final de su inicialización, se actualizan las etiquetas de los documentos instalados con "helptags ALL".

Para más información, inicie vim con "vim --startuptime vimstart.log" para comprobar la secuencia de ejecución real y el tiempo usado en cada paso.

Se pueden encontrar interesantes paquetes de complementos externos:

Es bastante confuso ver demasiadas formas [3] de administrar y cargar estos paquetes externos en vim. Verificar la información original es la mejor cura.


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.

The default display format of time and date by the "ls -l" command depends on the locale (see Sección 1.2.6, “Marcas de tiempo” for value). The "$LANG" variable is referred first and it can be overridden by the "$LC_TIME" or "$LC_ALL" exported environment variables.

The actual default display format for each locale depends on the version of the standard C library (the libc6 package) used. I.e., different releases of Debian had different defaults. For iso-formats, see ISO 8601.

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

You can eliminate typing long option on commandline using command alias (see Sección 1.5.9, “Alias de órdenes”):

alias ls='ls --time-style=+%d.%m.%y %H:%M'

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.8. Relación de las herramientas de monitorización y control de las actividades de los programas

paquete popularidad tamaño descripción
coreutils V:908, I:999 18062 nice(1): ejecuta un programa modificando su prioridad de planificación
bsdutils V:610, I:999 355 renice(1): cambia la prioridad de planificación de un proceso en ejecución
procps V:753, I:999 2091 «/proc» utilidades del sistema de archivos: ps(1), top(1), kill(1), watch(1), …
psmisc V:426, I:798 909 «/proc» utilidades del sistema de archivos: killall(1), fuser(1), peekfd(1), pstree(1)
time V:10, I:181 129 time(1): ejecuta un programa para crear un informe de los recursos del sistema utilizados a lo largo del tiempo
sysstat V:162, I:185 1785 sar(1), iostat(1), mpstat(1), …: herramientas de optimización del sistema en Linux
isag V:0, I:3 106 Graficador Interactivo de la Actividad del Sistema para sysstat
lsof V:393, I:942 482 lsof(8): enumera la relación de archivos abiertos por un proceso en ejecución utilizando la opción «-p»
strace V:14, I:135 2839 strace(1): registro de las llamadas del sistema y señales
ltrace V:0, I:18 338 ltrace(1): registro a las bibliotecas invocadas
xtrace V:0, I:0 353 xtrace(1): registra las comunicaciones entre el cliente y el servidor en X11
powertop V:10, I:197 650 powertop(1): información sobre el uso de la potencia por parte del sistema
cron V:853, I:996 220 ejecuta procesos en segundo plano de acuerdo a su planificación desde el dominio cron(8)
anacron V:374, I:455 91 planficador de tareas similar a cron para los sistemas que no están activos 24 horas al dia
at V:126, I:205 159 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 command "$x" ; fi; done
  • Combinación de find(1) y xargs(1):

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

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

find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && 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»”.

For the graphical user interface (GUI) compliant to the freedesktop.org standards, the *.desktop files in the /usr/share/applications/ directory provide necessary attributes for the GUI menu display of each program. Each package which is compliant to Freedesktop.org's xdg menu system installs its menu data provided by "*.desktop" under "/usr/share/applications/". Modern desktop environments which are compliant to Freedesktop.org standard use these data to generate their menu using the xdg-utils package. See "/usr/share/doc/xdg-utils/README".

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

In order to run a console application such as mutt under GUI as your preferred application, you should create an GUI application as following and set "/usr/local/bin/mutt-term" as your preferred application to be started as described.

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

GUI application can be executed easily under specific environment variables if the program for "Exec" in its corresponding *.desktop file doesn't specify the full execution path. You can enable non-English keyboard input to kitty using an input method framework ibus or fcitx5 by installing required input method packages and creating a shell script "/usr/local/bin/kitty" as follows.

# cat /usr/local/bin/kitty <<EOF
#!/bin/sh
GLFW_IM_MODULE=ibus exec /usr/bin/kitty "\$@"
EOF
# chmod 755 /usr/local/bin/kitty

This kitty script can alternatively be stored in "~/bin/" or "~/.local/bin/" directories as long as they are defined earlier than "/usr/bin/" in "$PATH".

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).

# use /bin/sh to run commands, no matter what /etc/passwd says
SHELL=/bin/sh
# mail any output to paul, no matter whose crontab this is
MAILTO=paul
# Min Hour DayOfMonth Month DayOfWeek command (Day... are OR'ed)
# run at 00:05, every day
5  0  *  * *   $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 14:15 on the first of every month -- output mailed to paul
15 14 1  * *   $HOME/bin/monthly
# run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc:
0 22 *   * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%.%%
23 */2 1 2 *   echo "run 23 minutes after 0am, 2am, 4am ..., on Feb 1"
5  4 *   * sun echo "run at 04:05 every Sunday"
# run at 03:40 on the first Monday of each month
40 3 1-7 * *   [ "$(date +%a)" == "Mon" ] && command -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».

Systemd has low level capability to schedule programs to run without cron daemon. For example, /lib/systemd/system/apt-daily.timer and /lib/systemd/system/apt-daily.service set up daily apt download activities. See systemd.timer(5) .

Pressing Alt-SysRq (PrtScr) followed by one keys does the magic of rescuing control of the system.


See more on Linux kernel user’s and administrator’s guide » Linux Magic System Request Key Hacks

[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.

The current (2021) Debian amd64 Linux kernel has /proc/sys/kernel/sysrq=438=0b110110110:

  • 2 = 0x2 - enable control of console logging level (ON)

  • 4 = 0x4 - enable control of keyboard (SAK, unraw) (ON)

  • 8 = 0x8 - enable debugging dumps of processes etc. (OFF)

  • 16 = 0x10 - enable sync command (ON)

  • 32 = 0x20 - enable remount read-only (ON)

  • 64 = 0x40 - enable signaling of processes (term, kill, oom-kill) (OFF)

  • 128 = 0x80 - allow reboot/poweroff (ON)

  • 256 = 0x100 - allow nicing of all RT tasks (ON)

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).

If the hardware time is set to UTC, change the setting to "UTC=yes" in the "/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).

Application softwares may be configured not only to access sound devices directly but also to access them via some standardized sound server system. Currently, PulseAudio, JACK, and PipeWire are used as sound server system. See Debian wiki page on Sound for the latest situation.

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.

[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.


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.

You may need to umount(8) some devices manually from the command line before operating on them if they are automatically mounted by the GUI desktop system.

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.

Older PCs use the classic Master Boot Record (MBR) scheme to hold disk partitioning data in the first sector, i.e., LBA sector 0 (512 bytes).

Recent PCs with Unified Extensible Firmware Interface (UEFI), including Intel-based Macs, use GUID Partition Table (GPT) scheme to hold disk partitioning data not in the first sector.

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.8.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.

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.

Btrfs status can be found at Debian wiki on btrfs and kernel.org wiki on btrfs. It is expected to be the next default filesystem after the ext4 filesystem.

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

Solid state drive (SSD) is auto detected now.

Reduce unnecessary disk accesses to prevent disk wear out by mounting "tmpfs" on volatile data path in /etc/fstab.

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».

    • restart the smartd(8) daemon by "sudo systemctl restart smartmontools".

[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=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work

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.6.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
Loop device is /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 # verify kernel capability
max_part:Maximum number of partitions per loop device
max_loop:Maximum number of loop devices
# losetup -a # verify nothing using the loop device
# rmmod loop
# modprobe loop max_part=16

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

# losetup -v -f disk.img
Loop device is /dev/loop0
# fdisk -l /dev/loop0

Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 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

Instead of using dd(1), specialized fallocate(8) may be used here.

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
Loop device is /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.7.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 source_directory

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 source_directory

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.6.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 facilitates automatic data encryption via native Linux kernel modules with minimal user efforts using device-mapper.


[Atención] Atención

Data encryption costs CPU time etc. Encrypted data becomes inaccessible if its password is lost. Please weigh its benefits and costs.

[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.

# fdisk /dev/sdx
... "n" "p" "1" "return" "return" "w"
# cryptsetup luksFormat /dev/sdx1
...
# cryptsetup open /dev/sdx1 secret
...
# ls -l /dev/mapper/
total 0
crw-rw---- 1 root root  10, 60 2021-10-04 18:44 control
lrwxrwxrwx 1 root root       7 2021-10-04 23:55 secret -> ../dm-0
# mkfs.vfat /dev/mapper/secret
...
# cryptsetup close secret

Then, it can be mounted just like normal one on to "/media/username/disk_label", except for asking password (see Sección 10.1.7, “Dispositivos de almacenamiento extraibles”) under modern desktop environment using the udisks2 package. The difference is that every data written to it is encrypted. The password entry may be automated using keyring (see Sección 10.3.6, “Password keyring”).

You may alternatively format media in different filesystem, e.g., ext4 with "mkfs.ext4 /dev/mapper/sdx1". If btrfs is used instead, the udisks2-btrfs package needs to be installed. For these filesystems, the file ownership and permissions may need to be configured.

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

If you are reading this documentation, you probably don't need to compile Linux kernel by yourself.

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.

module-assistant(8) (or its short form m-a) helps users to build and install module package(s) easily for one or more custom kernels.

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.

The hardware driver is the code running on the main CPUs of the target system. Most hardware drivers are available as free software now and are included in the normal Debian kernel packages in the main area.

  • 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.)

The firmware is the code or data loaded on the device attach to the target system (e.g., CPU microcode, rendering code running on GPU, or FPGA / CPLD data, …). Some firmware packages are available as free software but many firmware packages are not available as free software since they contain sourceless binary data. Installing these firmware data is essential for the device to function as expected.

  • The firmware data packages containing data loaded to the volatile memory on the target device.

    • firmware-linux-free (main)

    • firmware-linux-nonfree (non-free-firmware)

    • firmware-linux-* (non-free-firmware)

    • *-firmware (non-free-firmware)

    • intel-microcode (non-free-firmware)

    • amd64-microcode (non-free-firmware)

  • The firmware update program packages which update data on the non-volatile memory on the target device.

    • fwupd (main): Firmware update daemon which downloads firmware data from Linux Vendor Firmware Service.

    • gnome-firmware (main): GTK front end for fwupd

    • plasma-discover-backend-fwupd (main): Qt front end for fwupd

Please note that access to non-free-firmware packages are provided by the official installation media to offer functional installation experience to the user since Debian 12 Bookworm. The non-free-firmware area is described in Sección 2.1.4, “Fundamentos del archivo de Debian”.

Please also note that the firmware data downloaded by fwupd from Linux Vendor Firmware Service and loaded to the running Linux kernel may be non-free.

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

There are several virtualization and emulation tool platforms.

  • Complete hardware emulation packages such as ones installed by the games-emulator metapackage

  • Mostly CPU level emulation with some I/O device emulations such as QEMU

  • Mostly CPU level virtualization with some I/O device emulations such as Kernel-based Virtual Machine (KVM)

  • OS level container virtualization with the kernel level support such as LXC (Linux Containers), Docker, ...

  • OS level filesystem access virtualization with the system library call override on the file path such as chroot

  • OS level filesystem access virtualization with the system library call override on the file ownership such as fakeroot

  • OS API emulation such as Wine

  • Interpreter level virtualization with its executable selection and run-time library overrides such as virtualenv and venv for Python

The container virtualization uses Sección 4.7.4, “Características de seguridad de Linux” and it is the backend technology of Sección 7.6, “Sandbox”.

Here are some packages to help you to setup the virtualized system.

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

paquete popularidad tamaño descripción
schroot V:6, I:8 2508 herramientas especializadas para la ejecución de paquetes binarios en «chroot«
sbuild V:1, I:4 242 herramientas para la construcción de paquetes binarios desde el código fuente de Debian
debootstrap V:5, I:59 279 sistema de arranque como sistema Debian mínimo (escrito en sh)
cdebootstrap V:0, I:2 111 sistema de arranque de un sistema Debian (escrito en C)
virt-manager V:11, I:42 2296 Gestor de Máquinas Virtuales: aplicación de escritorio para la gestión de máquinas virtuales
libvirt-clients V:43, I:62 1311 programas para la biblioteca libvirt
games-emulator I:0 26 games-emulator: Debian's emulators for games
bochs V:0, I:1 6956 Bochs: emulador de PC IA-32 PC
qemu I:25 97 QEMU: emulador rápido de un procesador genérico
qemu-system I:21 59 QEMU: binarios para la emulación de un sistema completo
qemu-user V:1, I:8 100502 QEMU: binarios para la emulación en modo usuario
qemu-utils V:12, I:107 6875 QEMU: utilidades
qemu-kvm V:2, I:19 107 KVM: virtualización completa de harsware x86 con la virtualización asistida por hardware
virtualbox V:9, I:11 126370 VirtualBox: solución de virtualización x86 en i386 y amd64
xen-tools V:0, I:3 727 herramientas para la gestión de debian del servidor virtual XEN
wine V:13, I:64 134 Wine: Implementación de la API Windows (suite estándar)
dosbox V:2, I:16 2671 DOSBox: emulador x86 con gráficos Tandy/Herc/CGA/EGA/VGA/SVGA , sonido y DOS
lxc V:9, I:13 25643 Contenedores Linux herramientas del espacio de usuario
python3-venv I:60 6 venv for creating virtual python environments (system library)
python3-virtualenv V:9, I:53 406 virtualenv for creating isolated virtual python environments
pipx V:0, I:1 887 pipx for installing python applications in isolated environments

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

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.7, “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.7.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).

If you wish to try a new Debian environment from a terminal console, I recommend you to use chroot. This enables you to run console applications of Debian unstable and testing without usual risks associated and without rebooting. chroot(8) is the most basic way.

[Atención] Atención

Examples below assumes both parent system and chroot system share the same amd64 CPU architecture.

Although you can manually create a chroot(8) environment using debootstrap(1). But this requires non-trivial efforts.

The sbuild package to build Debian packages from source uses the chroot environment managed by the schroot package. It comes with helper script sbuild-createchroot(1). Let's learn how it works by running it as follows.

$ sudo mkdir -p /srv/chroot
$ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian
 ...

You see how debootstrap(8) populates system data for unstable environment under "/srv/chroot/unstable-amd64-sbuild" for a minimal build system.

You can login to this environment using schroot(1).

$ sudo schroot -v -c chroot:unstable-amd64-sbuild

You see how a system shell running under unstable environment is created.

[Nota] Nota

The "/usr/sbin/policy-rc.d" file which always exits with 101 prevents daemon programs to be started automatically on the Debian system. See "/usr/share/doc/sysv-rc/README.policy-rc.d.gz".

[Nota] Nota

Some programs under chroot may require access to more files from the parent system to function than sbuild-createchroot provides as above. For example, "/sys", "/etc/passwd", "/etc/group", "/var/run/utmp", "/var/log/wtmp", etc. may need to be bind-mounted or copied.

[Sugerencia] Sugerencia

The sbuild package helps to construct a chroot system and builds a package inside the chroot using schroot as its backend. It is an ideal system to check build-dependencies. See more on sbuild at Debian wiki and sbuild configuration example in "Guide for Debian Maintainers".

If you wish to try a new GUI Desktop environment of any OS, I recommend you to use QEMU or KVM on a Debian stable system to run multiple desktop systems safely using virtualization. These enable you to run any desktop applications including ones of Debian unstable and testing without usual risks associated with them and without rebooting.

Since pure QEMU is very slow, it is recommended to accelerate it with KVM when the host system supports it.

Virtual Machine Manager also known as virt-manager is a convenient GUI tool for managing KVM virtual machines via libvirt.

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
...
[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.

See more tips at Debian wiki: SystemVirtualization.



[2] Ejemplos de personalización más elaborados: "Vim Galore", "sensible.vim", "#vim Recommendations" ...

[3] vim-pathogen fue popular.