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.2. Personalición de vim
9.2.1. Customizing vim with internal features
9.2.2. Customizing vim with external packages
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. Cifrado de la partición de intercambio con dm-crypt
9.9.3. 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.

If you use fuzzy text filter program, you can do without typing the exact path. For fzf, include following in ~/.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

For example:

  • You can jump to a very deep subdirectory with minimal efforts. You first type "cd **" and press Tab. Then you will be prompted with candidate paths. Typing in partial path strings, e.g., s/d/b foo, will narrow down candidate paths. You select the path to be used by cd with cursor and return keys.

  • You can select a command from the command history more efficiently with minimal efforts. You press Ctrl-R at the command prompt. Then you will be prompted with candidate commands. Typing in partial command strings, e.g., vim d, will narrow down candidates. You select the one to be used with cursor and return keys.

After you learn basics of vim(1) through Sección 1.4.8, “Using vim”, please read Bram Moolenaar's "Seven habits of effective text editing (2000)" to understand how vim should be used.

[Atención] Atención

Don't try to change the default key bindings without very good reasons.

The behavior of vim can be changed significantly by enabling its internal features through the Ex-mode commands such as "set ..." to set vim options.

These Ex-mode commands can be included in user's vimrc file, traditional "~/.vimrc" or git-friendly "~/.vim/vimrc". Here is a very simple example [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

Simple customization to enable securemodelines and classical IDE can be enabled by installing vim-scripts package and appending the following to user's vimrc file.

packadd! securemodelines
packadd! winmanager
let mapleader = ' '
" IDE-like UI to navigate files and buffers with <space>wm, <space>wf, and <space>wb .
nnoremap <leader>wm         :WMToggle<CR>
nnoremap <leader>wf         :FirstExplorerWindow<CR>
nnoremap <leader>wb         :BottomExplorerWindow<CR>

The new native Vim package system works nicely with "git" and "git submodule". One such example configuration can be found at my git repository: dot-vim. This does essentially:

  • By using "git" and "git submodule", latest external packages, such as "name", are placed into ~/.vim/pack/*/opt/name and similar.

  • By adding :packadd! name line to user's vimrc file, these packages are placed on runtimepath.

  • Vim loads these packages on runtimepath during its initialization.

  • At the end of its initialization, tags for the installed documents are updated with "helptags ALL".

For more, please start vim with "vim --startuptime vimstart.log" to check actual execution sequence and time spent for each step.

Interesting external plugin packages can be found:

It is quite confusing to see too many ways[3] to manage and load these external packages to vim. Checking the original information is the best cure.


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:901, I:999 17478 nice(1): ejecuta un programa modificando su prioridad de planificación
bsdutils V:708, I:999 394 renice(1): cambia la prioridad de planificación de un proceso en ejecución
procps V:742, I:999 1648 «/proc» utilidades del sistema de archivos: ps(1), top(1), kill(1), watch(1), …
psmisc V:433, I:831 793 «/proc» utilidades del sistema de archivos: killall(1), fuser(1), peekfd(1), pstree(1)
time V:13, I:249 129 time(1): ejecuta un programa para crear un informe de los recursos del sistema utilizados a lo largo del tiempo
sysstat V:168, I:190 1923 sar(1), iostat(1), mpstat(1), …: herramientas de optimización del sistema en Linux
isag V:0, I:4 117 Graficador Interactivo de la Actividad del Sistema para sysstat
lsof V:393, I:944 451 lsof(8): enumera la relación de archivos abiertos por un proceso en ejecución utilizando la opción «-p»
strace V:16, I:151 2367 strace(1): registro de las llamadas del sistema y señales
ltrace V:1, I:22 363 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:8, I:204 662 powertop(1): información sobre el uso de la potencia por parte del sistema
cron V:800, I:997 263 ejecuta procesos en segundo plano de acuerdo a su planificación desde el dominio cron(8)
anacron V:399, I:463 104 planficador de tareas similar a cron para los sistemas que no están activos 24 horas al dia
at V:154, I:278 161 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

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

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

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

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

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
# systemctl restart cryptdisks
 ...
# swapon -a

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

  • Controlador Softmodem

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

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-linux-* (non-free)

    • *-firmware (non-free)

    • intel-microcode (non-free)

    • amd64-microcode (non-free)

  • 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

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

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, “Linux security features” 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:7, I:9 2708 herramientas especializadas para la ejecución de paquetes binarios en «chroot«
sbuild V:1, I:4 271 herramientas para la construcción de paquetes binarios desde el código fuente de Debian
debootstrap V:5, I:62 298 sistema de arranque como sistema Debian mínimo (escrito en sh)
cdebootstrap V:0, I:2 116 sistema de arranque de un sistema Debian (escrito en C)
virt-manager V:10, I:43 2298 Gestor de Máquinas Virtuales: aplicación de escritorio para la gestión de máquinas virtuales
libvirt-clients V:46, I:64 1130 programas para la biblioteca libvirt
games-emulator I:0 26 games-emulator: Debian's emulators for games
bochs V:0, I:1 7194 Bochs: emulador de PC IA-32 PC
qemu I:31 96 QEMU: emulador rápido de un procesador genérico
qemu-system I:21 97 QEMU: binarios para la emulación de un sistema completo
qemu-user V:0, I:11 89683 QEMU: binarios para la emulación en modo usuario
qemu-utils V:11, I:108 6077 QEMU: utilidades
qemu-kvm V:8, I:55 107 KVM: virtualización completa de harsware x86 con la virtualización asistida por hardware
virtualbox V:11, I:14 107018 VirtualBox: solución de virtualización x86 en i386 y amd64
xen-tools V:0, I:4 727 herramientas para la gestión de debian del servidor virtual XEN
wine V:16, I:76 191 Wine: Implementación de la API Windows (suite estándar)
dosbox V:2, I:18 2702 DOSBox: emulador x86 con gráficos Tandy/Herc/CGA/EGA/VGA/SVGA , sonido y DOS
dosemu V:0, I:2 4891 DOSEMU: el Emulador de Linux de DOS
lxc V:11, I:14 18971 Contenedores Linux herramientas del espacio de usuario
python3-venv V:2, I:50 6 venv for creating virtual python environments (system library)
python3-virtualenv V:9, I:64 410 virtualenv for creating isolated virtual python environments
python3-pipx I:0 NOT_FOUND 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 under script(1) 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, KVM, or VirtualBox 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. The configuration of these tools are relatively straight forward.

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

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.



[2] More elaborate customization examples: "Vim Galore", "sensible.vim", "#vim Recommendations" ...

[3] vim-pathogen was popular.