Tabla de contenidos
Aquí, describo los trucos fundamentales para configurar y gestionar sistemas, principalmente desde la consola.
Existen algunas utilidades que te ayudarán en tu interacción con la consola.
Tabla 9.1. Lista de programas de apoyo a las actividades de la consola
paquete | popularidad | tamaño | descripción |
---|---|---|---|
mc
|
V:50, I:209 | 1542 | Ver Sección 1.3, “Midnight Commander (MC)” |
bsdutils
|
V:519, I:999 | 356 | script (1) comando para hacer typescript de la sesión del
terminal |
screen
|
V:71, I:230 | 1003 | Multiplexador de terminal con emulación de terminal VT100/ANSI |
tmux
|
V:43, I:146 | 1180 | alternativa al multiplexor de terminales (utiliza "Control-B" en su lugar) |
fzf
|
V:4, I:16 | 3648 | buscador de texto borroso |
fzy
|
V:0, I:0 | 54 | buscador de texto borroso |
rlwrap
|
V:1, I:15 | 330 | envoltorio de la línea de comando de la función readline |
ledit
|
V:0, I:11 | 331 | envoltorio de la línea de comando de la función readline |
rlfe
|
V:0, I:0 | 45 | envoltorio de la línea de comando de la función readline |
ripgrep
|
V:5, I:19 | 5152 | búsqueda rápida de las cadenas recursivas en el árbol del código fuente con el filtrado automático |
La utilización para el registro de la actividad del intérprete de órdenes,
sin más, de script
(1) (ver 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
Existen métodos alternativos para registrar las actividades de shell :
Utiliza tee
(solo se puede usar durante el proceso de
arranque en initramfs):
$ sh -i 2>&1 | tee typescript
Utiliza gnome-terminal
con el búfer de línea extendida
para el scrollback.
Utilice pantalla
con "^A H
" (ver Sección 9.1.2, “El programa screen”) para realizar la grabación de la consola.
Utiliza vim
con ":terminal
" para
entrar en el modo terminal. Utiliza "Ctrl-W N
" para
salir del modo terminal al modo normal. Utiliza ":w
typescript
" para escribir en el búfer de un archivo.
Usa emacs
con "Mx shell
",
"M-x eshell
" o "M-x term
" para
ingresar a la consola de grabación . Utiliza "C-x C-w
"
para escribir en el búfer de un archivo.
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).
Acceda a un equipo remoto.
Iniciar screen
en una única consola.
Ejecute múltiples programas en la ventana de screen
con
^A c
(«Control-A« seguido por «c«).
Puede cambiar entre las múltiples ventanas de screen
con
^A n
(«Control-A« seguido de «n»).
Si repentinamente necesita dejar su terminal, pero no quiere perder su trabajo activo por la mantener la conexión.
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
Si inicia la sesión otra vez al mismo equipo remoto (incluso desde un terminal diferente).
Inicie screen
con «screen -r
».
Screen
mágicamente reconecta con todas las ventanas anteriores de
screen
con todos los programas activos ejecutándose.
Sugerencia | |
---|---|
Puede guardar la entrada de la conexión con |
En una sesión de screen
, todas las entradas de teclado se
envían 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]. He aquí algunos
importantes para recordar.
Tabla 9.2. Relación de los atajos de teclado para screen
función | significado |
---|---|
^A ? |
muestra la ayuda de screen (muestra los atajos de teclado) |
^A c |
crea una nueva ventana y cambia a ella |
^A n |
ir a la siguiente ventana |
^A p |
ir a la ventana anterior |
^A 0 |
va a la ventana 0 |
^A 1 |
ir a la ventana número 1 |
^A w |
muestra una relación de las ventanas |
^A a |
envía un Ctrl-A a la ventana actual como entrada de teclado |
^A h |
escribe una copia de la ventana actual a un archivo |
^A H |
inicia/finaliza la grabación de la ventana actual a un archivo |
^A ^X |
bloquea la terminal (protegido por contraseña) |
^A d |
separa la sesión de screen de la terminal |
^A DD |
separa la sesión de screen y sal |
Para más detalles ver screen
(1).
Ver tmux
(1) para saber las funcionalidades del comando
alternativo.
En Sección 1.4.2, “Personalización de bash”, se describen 2 sugerencias para
permitir una navegación rápida por los directorios:
$CDPATH
y 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
Por ejemplo:
Puedes saltar a un subdirectorio muy profundo con un mínimo esfuerzo.
Primero escribe "cd **
" y pulsa Tab
.
A continuación, pedirá 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.
Algunos comandos, como /usr/bin/dash
, que carecen de la
capacidad de edición del historial en la línea de comandos, pueden agregar
dicha funcionalidad de forma transparente si se ejecutan bajo
rlwrap
o sus equivalentes.
$ rlwrap dash -i
Esto proporciona una plataforma conveniente para probar puntos sutiles para
dash
con un entorno amigable similar a
bash
.
El comando rg
(1) en el paquete ripgrep
ofrece una alternativa más rápida al comando grep
(1) para
escanear el árbol de código fuente en busca para situaciones típicas.
Aprovecha las modernas CPU multinúcleo y aplica automáticamente filtros
razonables para omitir algunos archivos.
Después de aprender los conceptos básicos de vim
(1) a
través de Sección 1.4.8, “Usando vim”, ver "Siete hábitos de edición de texto
efectiva (2000) "de Bram Moolenaar, para entender cómo se debe usar
vim
.
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]:
""" Generic baseline Vim and Neovim configuration (~/.vimrc) """ - For NeoVim, use "nvim -u ~/.vimrc [filename]" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let mapleader = ' ' " :h mapleader """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nocompatible " :h 'cp -- sensible (n)vim mode syntax on " :h :syn-on filetype plugin indent on " :h :filetype-overview set encoding=utf-8 " :h 'enc (default: latin1) -- sensible encoding """ current vim option value can be verified by :set encoding? set backspace=indent,eol,start " :h 'bs (default: nobs) -- sensible BS set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V set listchars=eol:¶,tab:⇄\ ,extends:↦,precedes:↤,nbsp:␣ set viminfo=!,'100,<5000,s100,h " :h 'vi -- bigger copy buffer etc. """ Pick "colorscheme" from blue darkblue default delek desert elflord evening """ habamax industry koehler lunaperche morning murphy pablo peachpuff quiet ron """ shine slate torte zellner colorscheme industry """ don't pick "colorscheme" as "default" which may kill SpellUnderline settings set scrolloff=5 " :h 'scr -- show 5 lines around cursor set laststatus=2 " :h 'ls (default 1) k """ boolean options can be unset by prefixing "no" set ignorecase " :h 'ic set smartcase " :h 'scs set autoindent " :h 'ai set smartindent " :h 'si set nowrap " :h 'wrap "set list " :h 'list (default nolist) set noerrorbells " :h 'eb set novisualbell " :h 'vb set t_vb= " :h 't_vb -- termcap visual bell set spell " :h 'spell set spelllang=en_us,cjk " :h 'spl -- english spell, ignore CJK set clipboard=unnamedplus " :h 'cb -- cut/copy/paste with other app set hidden " :h 'hid set autowrite " :h 'aw set timeoutlen=300 " :h 'tm
El mapa de teclas de vim
puede cambiarse en el fichero
vimrc del usuario. Por ejemplo:
Atención | |
---|---|
No intente cambiar las combinaciones de teclas predeterminadas sin muy buenas razones. |
""" Popular mappings (imitating LazyVim etc.) """ Window moves without using CTRL-W which is dangerous in INSERT mode nnoremap <C-H> <C-W>h nnoremap <C-J> <C-W>j nnoremap <C-K> <C-W>k silent! nnoremap <C-L> <C-W>l """ Window resize nnoremap <C-LEFT> <CMD>vertical resize -2<CR> nnoremap <C-DOWN> <CMD>resize -2<CR> nnoremap <C-UP> <CMD>resize +2<CR> nnoremap <C-RIGHT> <CMD>vertical resize +2<CR> """ Clear hlsearch with <ESC> (<C-L> is mapped as above) nnoremap <ESC> <CMD>noh<CR><ESC> inoremap <ESC> <CMD>noh<CR><ESC> """ center after jump next nnoremap n nzz nnoremap N Nzz """ fast "jk" to get out of INSERT mode (<ESC>) inoremap jk <CMD>noh<CR><ESC> """ fast "<ESC><ESC>" to get out of TERM mode (CTRL-\ CTRL-N) tnoremap <ESC><ESC> <C-\><C-N> """ fast "jk" to get out of TERM mode (CTRL-\ CTRL-N) tnoremap jk <C-\><C-N> """ previous/next trouble/quickfix item nnoremap [q <CMD>cprevious<CR> nnoremap ]q <CMD>cnext<CR> """ buffers nnoremap <S-H> <CMD>bprevious<CR> nnoremap <S-L> <CMD>bnext<CR> nnoremap [b <CMD>bprevious<CR> nnoremap ]b <CMD>bnext<CR> """ Add undo break-points inoremap , ,<C-G>u inoremap . .<C-G>u inoremap ; ;<C-G>u """ save file inoremap <C-S> <CMD>w<CR><ESC> xnoremap <C-S> <CMD>w<CR><ESC> nnoremap <C-S> <CMD>w<CR><ESC> snoremap <C-S> <CMD>w<CR><ESC> """ better indenting vnoremap < <gv vnoremap > >gv """ terminal (Somehow under Linux, <C-/> becomes <C-_> in Vim) nnoremap <C-_> <CMD>terminal<CR> "nnoremap <C-/> <CMD>terminal<CR> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if ! has('nvim') """ Toggle paste mode with <SPACE>p for Vim (no need for Nvim) set pastetoggle=<leader>p """ nvim default mappings for Vim. See :h default-mappings in nvim """ copy to EOL (no delete) like D for d noremap Y y$ """ sets a new undo point before deleting inoremap <C-U> <C-G>u<C-U> inoremap <C-W> <C-G>u<C-W> """ <C-L> is re-purposed as above """ execute the previous macro recorded with Q nnoremap Q @@ """ repeat last substitute and *KEEP* flags nnoremap & :&&<CR> """ search visual selected string for visual mode xnoremap * y/\V<C-R>"<CR> xnoremap # y?\V<C-R>"<CR> endif
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
.
También se pueden cambiar otras configuraciones en el archivo vimrc del usuario. Por ejemplo:
""" Use faster 'rg' (ripgrep package) for :grep if executable("rg") set grepprg=rg\ --vimgrep\ --smart-case set grepformat=%f:%l:%c:%m endif """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ Retain last cursor position :h '" augroup RetainLastCursorPosition autocmd! autocmd BufReadPost * \ if line("'\"") > 0 && line ("'\"") <= line("$") | \ exe "normal! g'\"" | \ endif augroup END """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ Force to use underline for spell check results augroup SpellUnderline autocmd! autocmd ColorScheme * highlight SpellBad term=Underline gui=Undercurl autocmd ColorScheme * highlight SpellCap term=Underline gui=Undercurl autocmd ColorScheme * highlight SpellLocal term=Underline gui=Undercurl autocmd ColorScheme * highlight SpellRare term=Underline gui=Undercurl augroup END """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ highlight tailing spaces except when typing as red (set after colorscheme) highlight TailingWhitespaces ctermbg=red guibg=red """ \s\+ 1 or more whitespace character: <Space> and <Tab> """ \%#\@<! Matches with zero width if the cursor position does NOT match. match TailingWhitespaces /\s\+\%#\@<!$/
Se pueden encontrar interesantes paquetes de complementos externos:
Vim - el editor de texto extendido -- El sitio web oficial de Vim y vim scripts
VimAwsome -- La lista de plugins de Vim
vim-scripts -- Paquete Debian: una colección de scripts de vim
Los paquetes del plugins en el paquete vim-scripts se pueden habilitar usando el archivo vimrc del usuario. Ej:
packadd! secure-modelines packadd! winmanager " IDE-like UI for files and buffers with <space>w nnoremap <leader>w :WMToggle<CR>
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.
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.
Tabla 9.3. Información de la inicialización de vim
entradas con el teclado | información |
---|---|
:help package |
explicación sobre el mecanismo del paquete vim |
:help runtimepath |
explicación sobre el mecanismo de runtimepath |
:version |
condiciones internas incluyen candidatos para el archivo vimrc |
:echo $VIM |
la variable de entorno "$VIM " utilizada para situar el
archivo vimrc |
:¿establecer la ruta del tiempo de ejecución? |
lista de directorios en los que se buscarán todos los archivos del soporte del tiempo de ejecución |
:echo $VIMRUNTIME |
la variable del entorno "$VIMRUNTIME " utilizada para
ubicar varios archivos del soporte de tiempo de ejecución proporcionados por
el sistema |
Muchos programas tradicionales registran tus actividades en el formato de un
archivo de texto en el directorio "/var/log/
".
logrotate
(8) se utiliza para simplificar la
administración de los archivos del registro en un sistema que genera muchos
archivos de registro.
Muchos programas nuevos registran sus actividades en formato de archivo
binario utilizando el servicio Journalsystemd-journald
(8) en el directorio "/var/log/journal
".
Puedes registrar los datos en el registro
systemd-journald
(8) desde un script de shell, usando el
comando systemd-cat
(1).
Consulte Sección 3.4, “El sistema de mensajes” y Sección 3.3, “Los mensajes del núcleo”.
Aquí están los analizadores de registro más importantes
(«~Gsecurity::log-analyzer
» en
aptitude
(8)).
Tabla 9.4. Relación de analizadores de registro del sistema
paquete | popularidad | tamaño | descripción |
---|---|---|---|
logwatch
|
V:11, I:13 | 2328 | analizador de registro con una buena salida escrito en Perl |
fail2ban
|
V:98, I:111 | 2126 | prohibición de las IPs con múltiples errores de acreditación |
analog
|
V:3, I:96 | 3739 | analizador de registro para servidores web |
awstats
|
V:6, I:10 | 6928 | analizador de registro de servidor web potente y funcional |
sarg
|
V:1, I:1 | 845 | generador de informes de análisis de squid |
pflogsumm
|
V:1, I:4 | 109 | Resumidor de entradas de registro Postfix |
fwlogwatch
|
V:0, I:0 | 481 | analizador de registros de cortafuegos |
squidview
|
V:0, I:0 | 189 | controla y analiza los archivos access.log de squid |
swatch
|
V:0, I:0 | 99 | visor de archivos de registros con combinación de expresiones regulares, hechos relevantes y reglas |
crm114
|
V:0, I:0 | 1119 | Filtro de spam y filtro mediante expresiones regulares programables (CRM114) |
icmpinfo
|
V:0, I:0 | 44 | intérprete de mensajes ICMP |
Nota | |
---|---|
CRM114 tiene un lenguaje que permite escribir borrosos filtros con la biblioteca de expresiones regulares TRE . Su uso más común es como filtro de correos no deseados pero se puede utilizar también como analizador de registros. |
Aunque las herramientas de paginación como more
(1) y
less
(1) (ver Sección 1.4.5, “El paginador”) y las
herramientas personalizadas para marcar y dar formato (ver 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 (ver Sección 1.4.6, “El editor de texto”) son más
versátiles y personalizables.
Sugerencia | |
---|---|
En |
El formato predeterminado de visualización de la hora y la fecha mediante el
comando "ls -l
" depende de la localidad (ver Sección 1.2.6, “Marcas de tiempo” para
conocer el valor). La variable "$LANG
" es la primera a
la que se hace referencia y se puede anular con las variables de entorno
exportadas "$LC_TIME
" o "$LC_ALL
".
El formato de visualización predeterminado real para cada configuración
regional depende de la versión de la biblioteca C estándar (el paquete
libc6
) utilizada. Es decir, diferentes versiones de
Debian tienen diferentes valores por defecto. Para los formatos iso, ver
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
» (ver ls
(1),
date
(1), «info coreutils 'ls
invocation'
»).
Tabla 9.5. Mostrar los ejemplos de la hora y la fecha para el comando "ls
-l
" con el time style value.
valor del estilo de la hora | configuración regional | visualización de la hora y la fecha |
---|---|---|
iso |
cualquiera | 01-19 00:15 |
long-iso |
cualquiera | 19 -01-2009 00:15 |
full-iso |
cualquiera | 19-01-2009 00:15:16.000000000 +0900 |
configuración regional |
C |
enero 19 00:15 |
configuración regional |
en_US.UTF-8 |
enero 19 00:15 |
configuración regional |
es_ES.UTF-8 |
ene 19 00:15 |
+%d.%m.%y %H:%M |
cualquiera | 19.01.09 00:15 |
+%d.%b.%y %H:%M |
C o en_US.UTF-8 |
19.Jan.09 00:15 |
+%d.%b.%y %H:%M |
es_ES.UTF-8 |
19.ene.09 00:15 |
Sugerencia | |
---|---|
Puedes eliminar escribir la opción larga en la línea de comandos usando el alias de comando (ver 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 (ver
«/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}"
Las ordenes de colores son útiles para la comprobación visual de la salida
en entornos interactivos. Yo añado lo siguiente en mi
«~/.bashrc
».
if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=always' alias ll='ls --color=always -l' alias la='ls --color=always -A' alias less='less -R' alias ls='ls --color=always' alias grep='grep --color=always' alias egrep='egrep --color=always' alias fgrep='fgrep --color=always' alias zgrep='zgrep --color=always' else alias ll='ls -l' alias la='ls -A' fi
La utilización de alias limita los efectos del color en el uso de órdenes
interactivas. Tiene ventajas sobre las variables de entorno exportadas
«export GREP_OPTIONS='--color=auto'
» ya que el color
puede verse en los programas de paginación como less
(1).
Si quiere eliminar el color cuando usa tuberías con otros programas, utilice
«--color=auto
» en su lugar en los ejemplos anteriores
«~/.bashrc
».
Sugerencia | |
---|---|
Puede deshabilitar los alias de color en un entorno interactivo llamando al
intérprete de órdenes con « |
Puede guardar las actividades del editor con repeticiones 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.
Existen varias maneras de grabar una imagen gráfica de una aplicación X,
incluida una pantalla de xterm
.
Tabla 9.6. Relación de herramientas de manipulación de imágenes
paquete | popularidad | tamaño | pantalla | orden |
---|---|---|---|---|
gnome-screenshot
|
V:18, I:173 | 1134 | Wayland | aplicación de captura de pantalla para GNOME |
flameshot
|
V:7, I:15 | 3364 | Wayland | aplicación de capturas de pantalla con esteroides |
gimp
|
V:50, I:252 | 19304 | Wayland + X | captura de pantalla en el menú GUI |
x11-apps
|
V:31, I:463 | 2460 | X | xwd (1) |
imagemagick
|
I:317 | 74 | X | import (1) |
scrot
|
V:5, I:63 | 131 | X | scrot (1) |
Existen herramientas especializadas para guardar los cambios de los archivos de configuración con la ayuda de DVCS y para hacer instantáneas del sistema en Btrfs.
Tabla 9.7. Relación de paquetes que pueden guardar el histórico de configuración
paquete | popularidad | tamaño | descripción |
---|---|---|---|
etckeeper
|
V:26, I:30 | 168 | almacenar los archivos de configuración y sus metadatos con Git (por defecto), Mercurial, o GNU Bazaar |
timeshift
|
V:5, I:10 | 3506 | utilidad de restauración del sistema usando rsync o instantáneas BTRFS |
snapper
|
V:4, I:5 | 2392 | Herramienta de gestión de instantáneas de sistemas de archivos Linux |
También puedes pensar en el enfoque de los script locales Sección 10.2.3, “Consejos para copias de seguridad”.
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:880, I:999 | 18307 | nice (1): ejecuta un programa modificando su prioridad de
planificación |
bsdutils
|
V:519, I:999 | 356 | renice (1): cambia la prioridad de planificación de un
proceso en ejecución |
procps
|
V:766, I:999 | 2389 | «/proc » utilidades del sistema de archivos:
ps (1), top (1),
kill (1), watch (1), … |
psmisc
|
V:420, I:775 | 908 | «/proc » utilidades del sistema de archivos:
killall (1), fuser (1),
peekfd (1), pstree (1) |
time
|
V:7, I:132 | 129 | time (1): ejecuta un programa para crear un informe de los
recursos del sistema utilizados a lo largo del tiempo |
sysstat
|
V:148, I:170 | 1904 | sar (1), iostat (1),
mpstat (1), …: herramientas de optimización del sistema en
Linux |
isag
|
V:0, I:3 | 109 | Graficador Interactivo de la Actividad del Sistema para sysstat |
lsof
|
V:422, I:945 | 482 | lsof (8): enumera la relación de archivos abiertos por un
proceso en ejecución utilizando la opción «-p » |
strace
|
V:12, I:119 | 2897 | strace (1): registro de las llamadas del sistema y señales |
ltrace
|
V:0, I:16 | 330 | 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:18, I:217 | 677 | powertop (1): información sobre el uso de la potencia por
parte del sistema |
cron
|
V:872, I:995 | 244 | ejecuta procesos en segundo plano de acuerdo a su planificación desde el
dominio cron (8) |
anacron
|
V:396, I:479 | 93 | planificador de tareas similar a cron para los sistemas que no están activos 24 horas al día |
at
|
V:101, I:154 | 158 | at (1) o batch (1): ejecuta un trabajo
en un momento determinado o debajo de cierto nivel de carga |
Sugerencia | |
---|---|
El paquete |
Muestra el tiempo utilizado por un proceso llamado por una orden.
# time some_command >/dev/null real 0m0.035s # time on wall clock (elapsed real time) user 0m0.000s # time in user mode sys 0m0.020s # time in kernel mode
Se usa un buen valor para determinar la prioridad de planificación de los procesos.
Tabla 9.9. Relación de buenos valores para la prioridad de planificación
buen valor | prioridad de planificación |
---|---|
19 | proceso de menor prioridad (buen) |
0 | proceso de muy alta prioridad para el usuario |
-20 | proceso de superusuario (no bueno) de muy alta prioridad |
# nice -19 top # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
Algunas veces un buen valor extremo produce más mal que bien al sistema. Utilice esta orden con cuidado.
La orden ps
(1) en un sistema Debian aportan tanto las
funcionalidades de SystemV y BSD y ayuda a identificar la actividad estática
del proceso.
Tabla 9.10. Lista de estilo de la orden ps
estilo | orden típica | funcionalidad |
---|---|---|
BSD | ps aux |
muestra %CPU %MEM |
System V | ps -efH |
visualiza PPID |
Para los procesos hijos zombies (muertos) , los puede eliminar mediante el
identificador del proceso padre que corresponde al campo
«PPID
».
La orden pstree
(1) muestra el árbol de procesos.
top
(1) en el sistema Debian es rico desde el punto de
vista funcional y ayuda a identificar que procesos actúan de forma extraña
puntualmente.
Es un programa a pantalla completa interactivo. Puede obtener ayuda pulsando la tecla «h« y salir pulsando la tecla «q«.
Puede enumerar los archivos abiertos por un proceso con el identificador de proceso (PID), p. ej. 1, con lo siguiente.
$ sudo lsof -p 1
PID=1 generalmente es del programa init
.
Puede trazar la actividad de un programa con strace
(1),
ltrace
(1), o xtrace
(1) para llamadas y
señales del sistema, llamadas a bibliotecas o comunicación entre el cliente
X11 y el servidor..
Puede seguir las invocaciones del sistema de la orden ls
como se muestra.
$ sudo strace ls
Sugerencia | |
---|---|
Usar el script strace-graph ubicado en /usr/share/doc/strace/examples/ para armar una vista de árbol agradable |
También puede identificar procesos utilizando archivos mediante
fuser
(1), p. ej. para
«/var/log/mail.log
» como se muestra.
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
Puede ver que el archivo «/var/log/mail.log
» esta abierto
en escritura por la orden rsyslogd
(8).
También puede identificar un proceso por la utilización de sus conexiones
(sockets) mediante fuser
(1), p. ej. para
«smtp/tcp
» como sigue.
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
Ahora sabe que su sistema ejecuta exim4
(8) para gestionar
las conexiones TCP del puerto SMTP (25).
watch
(1) ejecuta un programa de forma reiterada a un
intervalo constante mientras muestra la salida del programa a pantalla
completa.
$ watch w
Esto muestra quién está acreditado en el sistema y lo actualiza cada 2 segundos.
Existen varias formas de repetir una orden sobre los archivos que cumplan
una condición, p. ej, encajan en un patrón «*.ext
».
Método del bucle for del intérprete de órdenes (ver Sección 12.1.4, “Bucles del intérprete de órdenes”):
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 garantizar el manejo adecuado de
nombres de archivo graciosos, como los que contienen espacios. Véase Sección 10.1.5, “Formas de selección de archivos” para usos más avanzados de
find
(1).
Para el interfaz de órdenes en línea
(CLI), el programa ejecutado será el primero que encaja el nombre en
el directorio especificado por la variable de entorno
$PATH
. Ver Sección 1.5.3, “La variable «$PATH
»”.
Para el interfaz gráfico de usuario (GUI) que cumple con el estándar de
freedesktop.org, los archivos
*.desktop
en el directorio
/usr/share/applications/
proporcionan los atributos
necesarios para la visualización de cada programa en el menú del interfaz
gráfico de usuario. Cada paquete que cumple con el sistema de menú xdg de
Freedesktop.org instala sus datos de menú proporcionados por "*. desktop" en
"/usr/share/applications/". Los modernos entornos de escritorio que cumplen
con el estándar Freedesktop.org utilizan estos datos para generar su menú
utilizando el paquete xdg-utils. Ver "/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 simplificada. Los archivos
*.desktop
se revisan como sigue.
El entorno de escritorio asigna las variables del entorno
$XDG_DATA_HOME
y $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 (ver 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 | |
---|---|
Se puede crear una entrada personalizada al menú del interfaz gráfico de
usuario (GUI) añadiendo un archivo |
Sugerencia | |
---|---|
La línea " |
Sugerencia | |
---|---|
Igualmente, si se crea un archivo |
Sugerencia | |
---|---|
De igual manera, si un archivo |
Algunos programas inician otros programa de forma automática. Aquí están los puntos a comprobar para la personalización de este proceso.
Menú de configuración de aplicaciones:
Escritorio GNOME3: «Configuración« → «Sistema« → «Detalles« → «Aplicaciones por defecto«
Escritorio KDE: «K« → «Centro de Control« → «Componenetes KDE« → «Selección de componentes«
Navegador Iceweasel: «Editar→ «Preferencias« → «Aplicaciones«
mc
(1): «/etc/mc/mc.ext
»
Variables de entorno como «$BROWSER
»,
«$EDITOR
», «$VISUAL
» y
«$PAGER
» (ver eviron
(7))
El sistema update-alternatives
(1) para los programas como
«editor
», «view
»,
«x-www-browser
», «gnome-www-browser
»,
y «www-browser
» (ver Sección 1.4.7, “Configuración del editor de texto por defecto”)
El contenido de los archivos «~/.mailcap
» y
«/etc/mailcap
» que asocia los tiposMIME con los programas (ver
mailcap
(5))
El contenido de los archivos «~/.mime.types
» y
«/etc/mime.types
» el cual se asocia con la extensión del
nombre del archivo con los tipos MIME (ver
run-mailcap
(1))
Sugerencia | |
---|---|
|
Sugerencia | |
---|---|
El paquete |
Sugerencia | |
---|---|
Con el fin de ejecutar una aplicación de consola como
# cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF # chmod 755 /usr/local/bin/mutt-term |
Utilice kill
(1) para matar (o enviar una señal a) un
proceso mediante su identificador de proceso.
Utilice killall
(1) o pkill
(1) para
hacer lo mismo mediante otros atributos como el nombre de la orden del
proceso.
Tabla 9.11. Relación de las señales más usadas con la orden kill
valor de la señal | nombre de la señal | acción | nota |
---|---|---|---|
0 | --- | no se envía ninguna señal (ver matar (2)) |
comprobar si el proceso se está ejecutando |
1 | SIGHUP | terminar el proceso | terminal desconectado (señal bloqueada) |
2 | SIGINT | terminar el proceso | interrumpir desde el teclado (CTRL-C ) |
3 | SIGQUIT | terminar el proceso y dump core | salir desde el teclado (CTRL-\ ) |
9 | SIGKILL | terminar el proceso | Señal de apagado desbloqueable |
15 | SIGTERM | terminar el proceso | Señal de apagado bloqueable |
Ejecute al orden at
(1) para planificar una única
ejecución de un trabajo mediante lo siguiente.
$ echo 'command -args'| at 3:40 monday
Utilice cron
(8) para planificar las tareas de forma
regular. Ver 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
».
He aquí un ejemplo de un archivo crontab
(5).
# use /usr/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 | |
---|---|
En los sistemas que no están en funcionamiento ininterrumpido, instale el
paquete |
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 « |
Systemd tiene capacidad de bajo nivel para
programar programas para que se ejecuten de fondo cron
.
Por ejemplo, /lib/systemd/system/apt-daily.timer
y
/lib/systemd/system/apt-daily.service
configuran
actividades diarias de descarga de apt. Ver
systemd.timer
(5) .
Systemd puede programar el programa no sólo en timer sino también en mount. Como ejemplos ver Sección 10.2.3.3, “Copia de seguridad activada por acción del temporizador” y Sección 10.2.3.2, “Montar la copia de seguridad activada por el acto”.
Presionar Alt-SysRq (PrtScr) seguido de una tecla hace la magia de rescatar el control del sistema.
Tabla 9.12. Lista de teclas notables del comando SAK
tecla seguida de Alt-SysRq | descripción de la acción |
---|---|
k |
kill (mata) todos los procesos de la consola virtual actual (SAK) |
s |
sincroniza todos los sistemas de archivos montados para evitar la corrupción de datos |
u |
remonta todos los sistemas de archivos montados como de solo lectura (desmonta) |
r |
recupera el teclado del modo rudo después de que X falle |
Más información en Guía del administrador y del usuario del kernel de Linux » Linux Magic System Request Key Hacks
Sugerencia | |
---|---|
Desde terminales SSH etc., puede utilizar la funcionalidad Alt-SysRq
resribiendo « |
El kernel de Debian amd64 Linux actual (2021) tiene
/proc/sys/kernel/sysrq=438=0b110110110
:
2 = 0x2: habilita el control del nivel del registro de la consola (ON)
4 = 0x4 - permiti el control del teclado (SAK, unraw) (ON)
8 = 0x8 - habilita dumps de depuración de procesos etc. (OFF)
16 = 0x10 - habilita sync command (ON)
32 = 0x20 - habilita volver a montar solo lectura (ON)
64 = 0x40 - permite la señalización de procesos (term, kill, oom-kill) (OFF)
128 = 0x80 - permite reboot/poweroff (ON)
256 = 0x100 - permite el inicio de todas las tareas RT (ON)
Puede comprobar quién esta en el sistema así.
who
(1) muestra quién está acreditado.
w
(1) muestra quién esta acreditado y que está haciendo.
last
(1) muestra una lista del último usuario conectado.
lastb
(1) muestra una relación de los últimos intentos
fallidos de acceso a una sesión.
Sugerencia | |
---|---|
« |
Puede enviar mensajes a cualquiera que esté acreditado en el sistema con
wall
(1) así.
$ echo "We are shutting down in 1 hour" | wall
El punto de inicio para la identificación de los dispositivos tipo PCI (AGP, PCI-Express, CardBus, ExpressCard, etc.) es la orden
lspci
(8) (preferentemente con la opción
«-nn
»).
Otra forma en la que puede identificar el hardware es leyendo el contenido
de «/proc/bus/pci/devices
» o navegando por el árbol de
directorios que cuelga de «/sys/bus/pci
» (ver Sección 1.2.12, “procfs y sysfs”).
Tabla 9.13. Relación de las herramientas para la identificación de hardware
paquete | popularidad | tamaño | descripción |
---|---|---|---|
pciutils
|
V:249, I:991 | 213 | Utilidades de Linux para PCI: lspci (8) |
usbutils
|
V:68, I:869 | 325 | Utilidades de Linux para USB: lsusb (8) |
nvme-cli
|
V:15, I:22 | 1642 | Utilidades NVMe para Linux: nvme (1) |
pcmciautils
|
V:6, I:10 | 91 | Utilidades Linux para PCMCIA: pccardctl (8) |
scsitools
|
V:0, I:2 | 346 | colección de herramientas para la gestión de hardware SCSI:
lsscsi (8) |
procinfo
|
V:0, I:9 | 132 | información del sistema obtenida de «/proc »:
lsdev (8) |
lshw
|
V:13, I:89 | 919 | información sobre la configuración hardware: lshw (1) |
discover
|
V:40, I:958 | 98 | sistema de identificación hardware: discover (8) |
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.
Tabla 9.14. Relación de herramientas de configuración hardware
paquete | popularidad | tamaño | descripción |
---|---|---|---|
console-setup
|
V:88, I:967 | 428 | Utilidades de teclado y tipos de letra para consolas |
x11-xserver-utils
|
V:302, I:528 | 568 | Utilidades de servidor X: xset (1),
xmodmap (1) |
acpid
|
V:84, I:148 | 158 | demonio que gestiona lo que llegan del Interfaz de Potencia y Configuración Avanzada (Advanced Configuration and Power Interface, ACPI) |
acpi
|
V:9, I:136 | 47 | utilidad para visualizar información de dispositivos ACPI |
sleepd
|
V:0, I:0 | 86 | demonio que «duerme« el portátil si deja de tener actividad |
hdparm
|
V:178, I:335 | 256 | optimización de acceso al disco duro (ver Sección 9.6.9, “Optimización del disco duro”) |
smartmontools
|
V:207, I:250 | 2358 | control y monitoreo de sistemas de almacenamiento utilizando S.M.A.R.T. |
setserial
|
V:4, I:6 | 103 | colección de herramientas para la gestión del puerto serie |
memtest86+
|
V:1, I:21 | 12711 | colección de herramientas para la gestión de la memoria hardware |
scsitools
|
V:0, I:2 | 346 | colección de herramientas para la gestión de hardware SCSI |
setcd
|
V:0, I:0 | 37 | optimización de acceso a la unidad de discos compactos |
big-cursor
|
I:0 | 26 | cursores grandes del ratón para X |
Aquí, ACPI es un marco más nuevo para el sistema de gestión de fuerza que APM.
Sugerencia | |
---|---|
La frecuencia de funcionamiento de la CPU de los sistemas modernos esta
gestionada por módulos en el núcleo como |
Lo siguiente asigna al sistema y hardware la hora y fecha a MM/DD hh:mm CCYY.
# date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show
La hora habitualmente se visualiza en la hora local en el sistema Debian pero el hardware y el sistema usa generalmente la hora en UTC(GMT).
Si la hora del hardware está establecida en UTC, cambia la configuración a
"UTC=yes
" en "/etc/default/rcS
".
Lo siguiente reconfigura la zona horaria utilizada por el sistema Debian.
# dpkg-reconfigure tzdata
Si desea actualizar el tiempo del sistema a través de la red, piense en
utilizar el servicio NTP con paquetes como
ntp
, ntpdate
y
chrony
.
Sugerencia | |
---|---|
En systemd para la sincronización de la hora
a través de la red utilice |
Ver lo siguiente.
Sugerencia | |
---|---|
|
Existen diferentes componentes para configura la consola de caracteres y las
funcionalidades del sistema ncurses
(3) system features.
El archivo «/etc/terminfo/*/*
»
(terminfo
(5))
La variable de entorno «$TERM
»
(term
(7))
setterm
(1), stty
(1),
tic
(1) y toe
(1)
Si la entrada terminfo
de xterm
no
funciona con una xterm
que no es de Debian, cambie el
tipo de terminal cambiando «$TERM
» de
«xterm
» a una versión con funcionalidades limitadas como
«xterm-r6
» al autenticarse en el sistema Debian de forma
remota. Para mayor información ver
«/usr/share/doc/libncurses5/FAQ
».
«dumb
» es el mínimo común denominador para
«$TERM
».
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).
El software de aplicación se puede configurar no solo para acceder directamente a los dispositivos de sonido, sino también para acceder a ellos a través de algún sistema de servidor de sonido estandarizado. Actualmente, PulseAudio, JACK y PipeWire se utilizan como sistema de servidor de sonido. Ver la Página Wiki de Debian sobre sonido para estar actualizado.
Generalmente existe un motor 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 | |
---|---|
Para comprobar el altavoz (speaker) utilice « |
Sugerencia | |
---|---|
Si no obtiene sonido, su altavoz puede estar conectado a una salida en
silencio. |
Tabla 9.15. Relación de paquetes de sonido
Para deshabilitar el salvapantallas, utilice las siguientes órdenes.
Tabla 9.16. Relación de las órdenes para deshabilitar el salvapantallas
entorno | orden |
---|---|
La consola de Linux | setterm -powersave off |
Las Ventanas X (deshabilitando el salvapantallas) | xset s off |
Las Ventanas X (deshabilitando dpms) | xset -dpms |
Las Ventanas X (configuración por GUI del salvapantallas) | xscreensaver-command -prefs |
Siempre puede desenchufar el altavoz del PC para deshabilitar los
pitidos. Eliminando el módulo del núcleo pcspkr
realiza
ese trabajo por usted.
Lo siguiente impide que el programa readline
(3) utilizado
por bash
(1) pite cuando encuentre un carácter de alerta
(ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
Existen dos recursos disponibles para determinar el uso de la memoria.
El mensaje de arranque del núcleo en «/var/log/dmesg
»
contiene el tamaño exacto de memoria disponible.
free
(1) y top
(1) visualiza la
información de los recursos de memoria en el sistema en ejecución.
Aquí hay un ejemplo.
# grep '\] Memory' /var/log/dmesg [ 0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init) $ free -k total used free shared buffers cached Mem: 997184 976928 20256 0 129592 171932 -/+ buffers/cache: 675404 321780 Swap: 4545576 4 4545572
Te puede sorprender que «dmesg diga que existen 990 MB libres y free -k dice que solo hay 320 MB libres. Más de 600 MB de diferencia …».
No se preocupe por el gran tamaño de memoria «utilizada
»
y el pequeño tamaño de memoria «libre
» en la línea
«Mem:
», pero lea lo que hay debajo (675404 y 321780 en el
ejemplo anterior) y relájese.
Para mi MacBook con 1GB=1048576k DRAM (el sistema de vídeo usa algo de esto), tengo lo siguiente.
Tabla 9.17. Relación de informes de tamaño de la memoria
informe | tamaño |
---|---|
Tamaño total en dmesg | 1016784k = 1GB - 31792k |
Memoria libre en dmesg | 990528k |
Total en el intérprete de órdenes | 997184k |
Libre en el intérprete de órdenes | 20256k (pero de forma efectiva 321780k) |
Un mantenimiento inadecuado del sistema puede exponerlo a sufrir un ataque del exterior.
Para la seguridad y las comprobaciones de integridad, debe comenzar con lo que se muestra.
Para el paquete debsums
, ver
debsums
(1) y Sección 2.5.2, “Archivo «Release» del nivel superior y autenticación”.
Para el paquete chkrootkit
ver
chkrootkit
(1).
Para la familia de paquetes clamav
ver
clamscan
(1) y freshclam
(1).
Tabla 9.18. Relación de las herramientas de seguridad del sistema y comprobación de la integridad
paquete | popularidad | tamaño | descripción |
---|---|---|---|
logcheck
|
V:6, I:7 | 110 | demonio que envía por correo anomalías en los registros del sistema al administrador |
debsums
|
V:5, I:35 | 98 | utilidad para verificar los archivos de los paquetes instalado mediante sumas MD5 |
chkrootkit
|
V:8, I:17 | 925 | detector de rootkit |
clamav
|
V:9, I:45 | 27455 | utilidad anti-virus para Unix - interfaz de línea de órdenes |
tiger
|
V:1, I:2 | 7800 | informa de vulnerabilidades de seguridad del sistema |
tripwire
|
V:1, I:2 | 5016 | comprobador de integridad de archivos y directorios |
john
|
V:1, I:9 | 471 | herramienta para descifrar contraseñas |
aide
|
V:1, I:1 | 293 | Entorno de Detección Avanzado de Intrusión - binario estático |
integrit
|
V:0, I:0 | 2659 | programa de verificación de la integridad del archivo |
crack
|
V:0, I:1 | 149 | programa que adivina contraseñas |
He aquí 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 | |
---|---|
Ya que el paquete |
El arranque del 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.
Es posible que debas desmontar
(8) algunos dispositivos
manualmente desde la línea de comandos antes de operar en ellos si el
sistema del escritorio GUI los monta automáticamente.
El uso de espacio en disco lo pueden evaluar los programas proporcionados
por los paquetes mount
, coreutils
y
xdu
:
mount
(8) muestra todos los sistemas de archivos (=discos)
montados.
df
(1) muestra el espacio de disco utilizado por el
sistema de archivos.
du
(1) informa del espacio de disco utilizado por el árbol
de un directorio.
Sugerencia | |
---|---|
Puede utilizar la salida de |
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.
Los ordenadores más antiguos usan el esquema clásico Master Boot Record (MBR) para almacenar datos del particionamiento del disco en el primer sector, es decir, LBA sector 0 (512 bytes).
Algunos ordenadores modernos con Interfaz de firmware extensible unificada (UEFI), incluidas los Mac basados en Intel, usan Identificar la tabla de particiones única globalmente (partición GUID Table, GPT) esquema, partición del disco duro los datos no se guardan en el primer sector.
Aunque fdisk
(8) fue la herramienta estándar para el
particionado del disco, se ha sustituido por parted
(8).
Tabla 9.19. Relación de paquetes para la gestión del particionado del disco
paquete | popularidad | tamaño | descripción |
---|---|---|---|
util-linux
|
V:881, I:999 | 5283 | las utilidades varias del sistema incluyen fdisk (8) y
cfdisk (8) |
parted
|
V:417, I:568 | 122 | Programa de modificación del tamaño de las particiones de disco GNU Parted |
gparted
|
V:15, I:102 | 2175 | Editor GNOME del particionado basado en libparted |
gdisk
|
V:338, I:511 | 885 | editor de particiones para el disco híbrido GPT/MBR |
kpartx
|
V:22, I:33 | 77 | programa para crear mapeos entre dispositivos y particiones |
Atención | |
---|---|
Aunque |
Nota | |
---|---|
Para realizar el cambio entre GPT y MBR, necesita eliminar el contenido de unos cuantos
bloques ubicados al principio (ver Sección 9.8.6, “Limpieza del contenido de los archivos”) y utilice « |
Aunque la reconfiguración de tu partición o el orden de activación de los medios del almacenamiento extraíbles puede dar lugar a diferentes nombres para las particiones, puede acceder a ellos de forma coherente. Esto también es útil si tienes varios discos y tu BIOS/UEFI no les da nombres de dispositivo consistentes.
mount
(8) con la opción «-U
» permite
montar dispositivos de bloque utilizando UUID,
en lugar de sus nombres de archivo como «/dev/sda3
».
«/etc/fstab
» (ver fstab
(5)) puede
utilizar UUID.
Los gestores de arranque (Sección 3.1.2, “Fase 2: el cargador de arranque”) pueden utilizar también UUID.
Sugerencia | |
---|---|
Puede determinar el UUID de un dispositivo
especial de bloque con También puedes buscar el UUID y otra información con " |
LVM2 es un gestor de volúmenes lógicos del núcleo de Linux. Con LVM2 las particiones de disco se pueden crear en volúmenes 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 saber sobre 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úmenes
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
específicos 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.
Tabla 9.20. Relación de paquetes para la gestión del sistema de archivos
paquete | popularidad | tamaño | descripción |
---|---|---|---|
e2fsprogs
|
V:767, I:999 | 1499 | utilidades para el sistema de archivos ext2/ext3/ext4 |
btrfs-progs
|
V:44, I:72 | 5078 | utilidades para el sistema de archivos Btrfs |
reiserfsprogs
|
V:12, I:25 | 473 | utilidades para el sistema de archivos Reiserfs |
zfsutils-linux
|
V:29, I:30 | 1762 | utilidades para el sistema de archivos OpenZFS |
dosfstools
|
V:196, I:541 | 315 | utilidades para el sistema de archivos FAT. (Microsoft: MS-DOS, Windows) |
exfatprogs
|
V:29, I:371 | 301 | utilidades para el sistema de archivos exFAT mantenido por Samsung. |
exfat-fuse
|
V:5, I:120 | 73 | lectura/escritura exFAT controlador del sistema de archivos (Microsoft) para FUSE. |
exfat-utils
|
V:4, I:106 | 231 | utilidades para el sistema de archivos exFAT mantenidas por el autor de exfat-fuse. |
xfsprogs
|
V:21, I:95 | 3476 | utilidades para el sistema de archivos XFS. (SGI: IRIX) |
ntfs-3g
|
V:197, I:513 | 1474 | lectura/escritura NTFS controlador del sistema de archivos (Microsoft: Windows NT, ...) para FUSE. |
jfsutils
|
V:0, I:8 | 1577 | utilidades para el sistema de archivos JFS. (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:2 | 1367 | utilidades para el sistema de archivos Reiser4 |
hfsprogs
|
V:0, I:4 | 394 | utilidades para el sistema de archivos HFS y HFS Plus. (Apple: Mac OS) |
zerofree
|
V:5, I:131 | 25 | programa de cero bloques libres para sistemas de archivos ext2/3/4 |
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. El estado de Btrfs se puede encontrar en La wiki de Debian en btrfs y la wiki kernel.org wiki en btrfs. Se espera que sea el siguiente sistema de archivos por defecto después del sistema de archivos ext4. Algunas herramientas permiten el acceso al sistema de archivos sin soporte del núcleo de Linux (ver Sección 9.8.2, “Manipular archivos sin el montaje de discos”). |
La orden mkfs
(8) crea el sistema de archivos en el
sistema Linux. La orden fsck
(8) aporta la comprobación de
integridad al sistema de archivos y la capacidad de reparación al sistema
Linux.
El Debian actual no ejecuta periódicamente fsck
después
de la creación del sistema de archivos.
Atención | |
---|---|
Normalmente no es seguro ejecutar |
Sugerencia | |
---|---|
Puede ejecutar la orden Para comprobar la ejecución de la orden |
La configuración estática básica del sistema de archivos se realizan en
«/etc/fstab
». Por ejemplo,
«file system» «mount point» «type» «options» «dump» «pass» proc /proc proc defaults 0 0 UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 errors=remount-ro 0 1 UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Sugerencia | |
---|---|
UUID (ver Sección 9.6.3, “Acceso al particionado utilizando UUID”) puede utilizarse para
identificar los dispositivos de bloque en lugar de los nombres de los
dispositivos de bloque como « |
Desde Linux 2.6.30, el kernel utiliza por defecto el comportamiento
proporcionado por la opción "relatime
".
Ver fstab
(5) y mount
(8).
La caracterización del sistema de archivos se puede optimizar a través de su
superbloque utilizando la orden tune2fs
(8).
La ejecución de «sudo tune2fs -l /dev/hda1
» muestra el
contenido del sistema de archivos del superbloque de
«/dev/hda1
».
La ejecución de «sudo tune2fs -c 50 /dev/hda1
» cambia la
frecuencia de comprobaciones del sistema de archivos
(fsck
durante el arranque) cada 50 arranques en
«/dev/hda1
».
La ejecución de «sudo tune2fs -j /dev/hda1
» añade la
capacidad del registro de operaciones al sistema archivos, a saber
conversión del sistema de archivos de ext2 a
ext3 en «/dev/hda1
». (Para
ello se necesita que el sistema de archivos este desmontado.)
La ejecución de «sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1
» lo convierte de ext3 a ext4 en
«/dev/hda1
». (Realice esto con el sistema de archivos
desmontado.)
Aviso | |
---|---|
Por favor, compruebe su hardware y lea las páginas de manual de
|
Puede comprobar la velocidad de acceso al disco duro,
p. ej. «/dev/hda
» con «hdparm -tT
/dev/hda
». Algunos discos conectados mediante (E)IDE se puede
mejorar su velocidad con «hdparm -q -c3 -d1 -u1 -m16
/dev/hda
» activando el «soporte I/O (E)IDE 32-bit«, activando la
«bandera using_dma«, asignando la «bandera interrupt-unmask» y activando
«multiple 16 sector I/O» (¡peligroso!).
Puede comprobar la funcionalidad de la escritura de caché del disco duro ,
p. ej. «/dev/sda
», con «hdparm -W
/dev/sda
». Para deshabilitar esta funcionalidad ejecute
«hdparm -W 0 /dev/sda
».
Puede intentar leer CDROMs dañados en dispositivos de lectura de alta
velocidad modernos haciendo que funcionen a menor velocidad con
«setcd -x 2
».
La unidad de estado sólido (SSD) ahora se detecta automáticamente.
Reducir los accesos innecesarios al disco para evitar el desgaste del disco
montando "tmpfs
" en la trayectoria de datos volátil en
/etc/fstab
.
Puede monitorear y registrar el cumplimiento de su disco duro con SMART con el demonio smartd
(8).
Instale el paquete smartmontools
.
Identifique los dispositivos que son discos duros enumerándolos con
df
(1).
Asumamos que el dispositivo de disco duro a controlar es
«/dev/hda
».
Compruebe la salida de «smartctl -a /dev/hda
» para
verificar que la funcionalidad SMART está
activada realmente.
Si no es así, actívelo con «smartctl -s on -a /dev/hda
».
Active el demonio smartd
(8) ejecutando lo siguiente.
descomente «start_smartd=yes
» en el archivo
«/etc/default/smartmontools
».
reiniciar el demonio smartd
(8) mediante «sudo
/etc/init.d/smartmontools restart
».
Sugerencia | |
---|---|
El demonio |
Las aplicaciones habitualmente crean los archivos temporales en el
directorio de almacenamiento temporal «/tmp
». Si
«/tmp
» no proporciona suficiente espacio, puede
especificar el directorio de almacenamiento temporal por medio de la
variable $TMPDIR
para obtener el comportamiento adecuado
de las aplicaciones.
Las particiones creadas mediante el Gestor de Volúmenes Lógicos (Logical Volume Manager, LVM) (funcionalidad de Linux) en el momento de la instalación, se pueden redimensionar de forma sencilla mediante la concatenación o la extensión de estas sobre varios dispositivos de almacenamiento sin necesitar otras reconfiguraciones del sistema.
Si tiene una partición vacía (p. ej. «/dev/sdx
»), puede
darle formato con mkfs.ext4
(1) y
montarlo
(8) en un directorio donde necesite más
espacio. (Necesitará copiar el contenido de los datos originales.)
$ sudo mv work-dir old-dir $ sudo mkfs.ext4 /dev/sdx $ sudo mount -t ext4 /dev/sdx work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
Sugerencia | |
---|---|
También puede montar un archivo de imagen de disco vacío (ver Sección 9.7.5, “Haciendo un archivo de imagen de disco vacío”) como un dispositivo «loop« (ver Sección 9.7.3, “Montaje del archivo imagen del disco”). El uso actual del disco crece con los datos reales almacenados. |
Si tiene un directorio vacío (p. ej. «/path/to/emp-dir
»)
en otra partición con espacio utilizable, puede montar(8)lo con la opción
«--bind
» a un directorio (p. ej.,
«work-dir
») donde necesite más espacio.
$ sudo mount --bind /path/to/emp-dir work-dir
Si tiene espacio útil en otras particiones
(p. ej. «/path/to/empty
» y
«/path/to/work
»), puede crear un directorio en él y
juntarlo con el antiguo directorio (p. ej.,
«/path/to/old
») donde necesita espacio usando el OverlayFS para el kernel de Linux 3.18 o posterior
(Debian Stretch 9.0 o nuevas).
$ sudo mount -t overlay overlay \ -olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
Aquí, «/path/to/empty
» y
«/path/to/work
» deben ser una partición con permiso RW
para escribir en "/path/to/old
"..
Atención | |
---|---|
Este es un método obsoleto. Algún software puede no funcionar bien con "enlace simbólico a un directorio". En su lugar, utilice los enfoques de "montaje" ya descritos. |
Si tiene un directorio vacío (p. ej., «/path/to/emp-dir
»)
en otra partición con espacio utilizable, puede crear un enlace simbólico a
el directorio con ln
(8).
$ sudo mv work-dir old-dir $ sudo mkdir -p /path/to/emp-dir $ sudo ln -sf /path/to/emp-dir work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
Aviso | |
---|---|
No utilice «enlaces simbólicos a directorios« que gestionen el sistema como
« |
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) (ver
Sección 9.6.2, “Configuración del particionado de disco”) que 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
»: Únicamente 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.
El archivo imagen del disco «disk.img
» se puede escribir
como un dispositivo sin montar, p. ej., el dispositivo SCSI secundario
«/dev/sdb
» con el tamaño adecuado como se muestra.
# dd if=disk.img of=/dev/sdb
De forma parecida, el archivo imagen de la partición del disco,
«partition.img
» se puede escribir a una partición
desmontada, p. ej., la primera partición del segundo dispositivo SCSI
«/dev/sdb1
» con el tamaño correcto, como se muestra.
# dd if=partition.img of=/dev/sdb1
La imagen del disco «partition.img
» que contiene la
imagen de una única partición se puede montar y desmontar utilizándolo como
dispositivo «loop« como aparece.
# losetup --show -f partition.img /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 se pueden montar utilizando los dispositivos «loop«.
# losetup --show -f -P disk.img /dev/loop0 # ls -l /dev/loop0* brw-rw---- 1 root disk 7, 0 Apr 2 22:51 /dev/loop0 brw-rw---- 1 root disk 259, 12 Apr 2 22:51 /dev/loop0p1 brw-rw---- 1 root disk 259, 13 Apr 2 22:51 /dev/loop0p14 brw-rw---- 1 root disk 259, 14 Apr 2 22:51 /dev/loop0p15 # fdisk -l /dev/loop0 Disk /dev/loop0: 2 GiB, 2147483648 bytes, 4194304 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 6A1D9E28-C48C-2144-91F7-968B3CBC9BD1 Device Start End Sectors Size Type /dev/loop0p1 262144 4192255 3930112 1.9G Linux root (x86-64) /dev/loop0p14 2048 8191 6144 3M BIOS boot /dev/loop0p15 8192 262143 253952 124M EFI System Partition table entries are not in disk order. # mkdir -p /mnt/loop0p1 # mkdir -p /mnt/loop0p15 # mount -t auto /dev/loop0p1 /mnt/loop0p1 # mount -t auto /dev/loop0p15 /mnt/loop0p15 # mount |grep loop /dev/loop0p1 on /mnt/loop0p1 type ext4 (rw,relatime) /dev/loop0p15 on /mnt/loop0p15 type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro) ...hack...hack...hack # umount /dev/loop0p1 # umount /dev/loop0p15 # losetup -d /dev/loop0
De forma alternativa, se pueden conseguir los mismos efectos utilizando el
mapeo de dispositivos de los
dispositivos creados por kpartx
(8) del paquete
kpartx
como sigue.
# kpartx -a -v disk.img add map loop0p1 (253:0): 0 3930112 linear 7:0 262144 add map loop0p14 (253:1): 0 6144 linear 7:0 2048 add map loop0p15 (253:2): 0 253952 linear 7:0 8192 # fdisk -l /dev/loop0 Disk /dev/loop0: 2 GiB, 2147483648 bytes, 4194304 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 6A1D9E28-C48C-2144-91F7-968B3CBC9BD1 Device Start End Sectors Size Type /dev/loop0p1 262144 4192255 3930112 1.9G Linux root (x86-64) /dev/loop0p14 2048 8191 6144 3M BIOS boot /dev/loop0p15 8192 262143 253952 124M EFI System Partition table entries are not in disk order. # ls -l /dev/mapper/ total 0 crw------- 1 root root 10, 236 Apr 2 22:45 control lrwxrwxrwx 1 root root 7 Apr 2 23:19 loop0p1 -> ../dm-0 lrwxrwxrwx 1 root root 7 Apr 2 23:19 loop0p14 -> ../dm-1 lrwxrwxrwx 1 root root 7 Apr 2 23:19 loop0p15 -> ../dm-2 # mkdir -p /mnt/loop0p1 # mkdir -p /mnt/loop0p15 # mount -t auto /dev/mapper/loop0p1 /mnt/loop0p1 # mount -t auto /dev/mapper/loop0p15 /mnt/loop0p15 # mount |grep loop /dev/loop0p1 on /mnt/loop0p1 type ext4 (rw,relatime) /dev/loop0p15 on /mnt/loop0p15 type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro) ...hack...hack...hack # umount /dev/mapper/loop0p1 # umount /dev/mapper/loop0p15 # kpartx -d disk.img
Un archivo de imagen de disco, «disk.img
» se puede
limpiar de archivos borrados en una imagen dispersa limpia
«new.img
» así.
# mkdir old; mkdir new # mount -t auto -o loop disk.img old # dd bs=1 count=0 if=/dev/zero of=new.img seek=5G # mount -t auto -o loop new.img new # cd old # cp -a --sparse=always ./ ../new/ # cd .. # umount new.img # umount disk.img
Si «disk.img
» es ext2, ext3 o ext4, también puede
utilizar zerofree
(8) del paquete
zerofree
como se muestra.
# losetup --show -f disk.img /dev/loop0 # zerofree /dev/loop0 # cp --sparse=always disk.img new.img # losetup -d /dev/loop0
La imagen de disco vacío «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
En lugar de usar dd
(1), se puede usar aquí
fallocate
(8) especializado.
Puede crear un sistema de archivos ext4 en la imagen de disco
«disk.img
» utilizando el dispositivo «loop« como se muestra.
# losetup --show -f disk.img /dev/loop0 # mkfs.ext4 /dev/loop0 ...hack...hack...hack # losetup -d /dev/loop0 $ 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 | |
---|---|
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 mapeador de dispositivos como Sección 9.7.3, “Montaje del archivo 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 «source_directory
» 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
debian-installer
como el árbol de directorios del
«source_directory
» 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 (ver 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 | |
---|---|
Debe evitar cuidadosamente el sistema de archivos ISO9660 debido al problema de lectura adelantada de Linux para obtener el resultado correcto. |
Sugerencia | |
---|---|
DVD es únicamente un CD de mayor tamaño que utiliza
|
Puede encontrar un dispositivo utilizable como se muestra.
# wodim --devices
Entonces se inserta el CD-R vacío en el dispositivo CD, y el archivo de
imagen ISO9660 , «cd.iso
» se escribe en el dispositivo,
p. ej. «/dev/hda
», utilizando wodim
(1)
como se muestra.
# wodim -v -eject dev=/dev/hda cd.iso
Si se utiliza un CR-RW en lugar de un CD-R, hago lo siguiente en su lugar.
# wodim -v -eject blank=fast dev=/dev/hda cd.iso
Sugerencia | |
---|---|
Si su sistema de escritorio monta automáticamente los CD, desmóntalo con
« |
Si «cd.iso
» contiene una imagen ISO9660, entonces lo
siguiente sirve para montarlo de forma manual en
«/cdrom
».
# mount -t iso9660 -o ro,loop cd.iso /cdrom
Sugerencia | |
---|---|
Los sistemas de escritorio modernos pueden montar los medios extraíbles como un CD con formato ISO9660 de forma automática (ver Sección 10.1.7, “Dispositivos de almacenamiento extraíbles”). |
Aquí discutiremos la manipulación directa de datos binarios en medios de almacenamiento.
El método más básico de visualización de datos binarios es la orden
«od -t x1
».
Tabla 9.21. Relación de paquetes para la visualización y edición de datos binarios
paquete | popularidad | tamaño | descripción |
---|---|---|---|
coreutils
|
V:880, I:999 | 18307 | paquete básico que tiene od (1) para volcar archivos (HEX,
ASCII, OCTAL, …) |
bsdmainutils
|
V:11, I:315 | 17 | paquete de utilidades que tiene hd (1) para volcar
archivos (HEX, ASCII, OCTAL, …) |
hexedit
|
V:0, I:9 | 73 | visor y editor binario (HEX, ASCII) |
bless
|
V:0, I:2 | 924 | editor hexadecimal con funcionalidad completa (GNOME) |
okteta
|
V:1, I:12 | 1585 | editor hexadecimal con funcionalidad completa (KDE4) |
ncurses-hexedit
|
V:0, I:1 | 130 | visor y editor binario (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:0 | 137 | visor y editor binario (HEX, ASCII, EBCDIC, OCTAL, …) |
Sugerencia | |
---|---|
HEX es un acrónimo del formato hexadecimal con radix 16. OCTAL se utiliza para formato octal con radix 8. ASCII se utiliza para Codificación Americana Estándar para el Intercambio de Información (American Standard Code for Information Interchange), a saber, codificación del inglés normal. EBCDIC es para Extended Binary Coded Decimal Interchange Code utilizado en sistemas operativos de IBM mainframe. |
Existen herramientas para leer y escribir archivos sin montar el disco.
Los sistemas de software RAID del núcleo Linux aportan redundancia en el nivel del sistema de archivos de datos del núcleo con la finalidad de alcanzar alta fiabilidad en el almacenamiento.
Existen herramientas para añadir datos redundados a archivos al nivel de aplicación de programas para conseguir también alta fiabilidad en el almacenamiento.
Tabla 9.23. Relación de herramientas para añadir redundancia de datos a los archivos
paquete | popularidad | tamaño | descripción |
---|---|---|---|
par2
|
V:9, I:94 | 268 | Paridad del conjunto de volúmenes de archivo, para comprobar y reparar archivos |
dvdisaster
|
V:0, I:1 | 1422 | Protección contra pérdida/rotura/vejez de medios CD/DVD |
dvbackup
|
V:0, I:0 | 413 | herramienta de copia de seguridad para MiniDV (aportada por
rsbep (1)) |
Existen herramientas para la recuperación de archivos y análisis forense.
Tabla 9.24. Relación de paquetes para la recuperación de archivos y análisis forense
paquete | popularidad | tamaño | descripción |
---|---|---|---|
testdisk
|
V:2, I:28 | 1413 | utilidades para el escaneado de particiones y recuperaciones de disco |
magicrescue
|
V:0, I:2 | 255 | utilidades para la recuperación de archivos y búsqueda de bytes mágicos |
scalpel
|
V:0, I:3 | 89 | Divisor de archivos ligero y alto rendimiento |
myrescue
|
V:0, I:2 | 83 | recuperación de datos de discos duros dañados |
extundelete
|
V:0, I:8 | 147 | utilidad para recuperar archivos borrados en sistemas de archivos ext3/4 |
ext4magic
|
V:0, I:4 | 233 | utilidad para recuperar archivos borrados en sistemas de archivos ext3/4 |
ext3grep
|
V:0, I:2 | 293 | herramienta de ayuda a la recuperación de archivos borrados en sistemas de archivos ext3 |
scrounge-ntfs
|
V:0, I:2 | 50 | programa de recuperación de datos en sistemas de archivos NTFS |
gzrt
|
V:0, I:0 | 33 | conjunto de herramientas de recuperación gzip |
sleuthkit
|
V:3, I:24 | 1671 | herramientas de análisis forense (Sleuthkit) |
autopsy
|
V:0, I:1 | 1026 | interfaz gráfico para SleuthKit |
foremost
|
V:0, I:5 | 102 | aplicación forense para la recuperación de datos |
guymager
|
V:0, I:0 | 1021 | herramienta para el análisis forense de imágenes basado en Qt |
dcfldd
|
V:0, I:3 | 114 | versión mejorada de dd para análisis forense y seguridad |
Sugerencia | |
---|---|
Puede recuperar archivos borrados en sistemas de archivos ext2 utilizando la
|
Cuando los datos son demasiado grandes para guardarlos en un único archivo, puede obtener una copia de seguridad de su contenido dividiéndolo en, p. ej. trozos de 2000MiB y juntarlos más tarde para obtener el archivo original.
$ split -b 2000m large_file $ cat x* >large_file
Atención | |
---|---|
Por favor, asegúrese que no tiene ningún archivo que comience por
« |
Para limpiar el contenido de los archivos como los archivos de registro, no
utilice rm
(1) para borrarlo y crear uno nuevo vacío, ya
que puede intentar ser accedido entre ambas operaciones. La forma segura de
limpiar el contenido de un archivo es la que se muestra.
$ :>file_to_be_cleared
Las órdenes siguientes crean archivos «vacíos».
$ dd if=/dev/zero of=5kb.file bs=1k count=5 $ dd if=/dev/urandom of=7mb.file bs=1M count=7 $ touch zero.file $ : > alwayszero.file
Encontrará lo siguiente tras ejecutar lo anterior.
«5kb.file
» que contiene 5KB de ceros.
«7mb.file
» que contiene 7MB de datos aleatorios.
«zero.file
» puede tener 0 bytes. Si existiera con
anterioridad, su mtime
es actualizado y su contenido y su
longitud permanecen sin cambios.
«alwayszero.file
» es siempre un archivo de 0 bytes. Si
existía con anterioridad, su mtime
es actualizado y su
contenido borrado.
Existen diferentes modos de borrar completamente la información de un disco
duro como dispositivo, p. ej. una memoria USB ubicada en
«/dev/sda
».
Atención | |
---|---|
Antes de ejecutar las órdenes que le vamos a mostrar, compruebe la ubicación
de su memoria USB por medio de |
Borre todo el contenido del disco poniendo a 0 toda la información como se muestra.
# dd if=/dev/zero of=/dev/sda
Bórrelo todo escribiendo datos aleatorios como sigue.
# dd if=/dev/urandom of=/dev/sda
Bórrelo todo sobrescribiendo datos aleatorios de forma eficiente como se muestra.
# shred -v -n 1 /dev/sda
También puede usar la opción badblocks
(8) con la opción
-t random
.
Ya que dd
(1) esta disponible en el intérprete de órdenes
de muchos CDs de Linux arrancables como el CD instalador de Debian, puede
borrar el sistema instalado completamente ejecutando una de las órdenes
anteriores desde dicho medio sobre el disco duro del sistema,
p. ej.«/dev/hda
», «/dev/sda
», etc.
Las áreas en desuso del disco duro (o de la memoria USB),
p. ej. «/dev/sdb1
» todavía pueden contener datos borrados
ya que solo han sido desligados del sistema de archivos. Estos se pueden
limpiar sobrescribiendo.
# mount -t auto /dev/sdb1 /mnt/foo # cd /mnt/foo # dd if=/dev/zero of=junk dd: writing to `junk': No space left on device ... # sync # umount /dev/sdb1
Aviso | |
---|---|
Esto es generalmente suficiente para las memorias USB. Pero no es perfecto. La mayor parte de los nombres de archivo borrados y sus atributos pueden estar ocultos y permanecer en el sistema de archivos. |
Incluso en el caso de que accidentalmente haya borrado un archivo, mientras que ese archivo sea utilizado por alguna aplicación (en modo lectura o escritura), es posible recuperar dicho archivo.
Por ejemplo, intente lo siguiente
$ echo foo > bar $ less bar $ ps aux | grep ' less[ ]' bozo 4775 0.0 0.0 92200 884 pts/8 S+ 00:18 0:00 less bar $ rm bar $ ls -l /proc/4775/fd | grep bar lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -l -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar $ cat bar foo
Ejecute en otro terminal (cuando tenga el paquete lsof
instalado) como se muestra.
$ ls -li bar 2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar $ rm bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -li bar 2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar $ cat bar foo
Los archivos con enlaces duros pueden identificarse mediante «ls
-li
».
$ ls -li total 0 2738405 -rw-r--r-- 1 root root 0 2008-09-15 20:21 bar 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 baz 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 foo
Tanto «baz
» como «foo
» tiene una
cuenta de «2« (>1) de forma que tiene enlaces duros. Sus números de
inodos son comunes «2738404«. Esto significa
que son el mismo archivo mediante un archivo duro. Si no se encuentra todos
los enlaces duros por casualidad, puede buscarlos mediante el inodo, p. ej. «2738404« como sigue.
# find /path/to/mount/point -xdev -inum 2738404
Con acceso físico a su PC, cualquiera puede acceder como superusuario y acceder a todos los archivos en él (ver Sección 4.6.4, “Asegurando la contraseña de root”). Esto significa que el sistema de acceso por contraseña puede no asegurar 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 (ver Sección 10.3, “Infraestructura de seguridad de la información”) puede cifrar archivos , necesita de los esfuerzos del usuario.
Dm-crypt ayuda al cifrado automático de la información de forma nativa por medio de módulos del núcleo Linux con el mínimo esfuerzo por parte del usuario usando device-mapper.
Tabla 9.25. Relación de utilidades para el cifrado de información
paquete | popularidad | tamaño | descripción |
---|---|---|---|
cryptsetup
|
V:19, I:79 | 417 | utilidades para cifrar dispositivos de bloque (dm-crypt / LUKS) |
cryptmount
|
V:2, I:3 | 231 | utilidades para cifrar dispositivos de bloque (dm-crypt / LUKS) centrado en el montaje/desmontaje por usuarios normales |
fscrypt
|
V:0, I:1 | 5520 | utilidades para el cifrado del sistema de archivos de Linux (fscrypt) |
libpam-fscrypt
|
V:0, I:0 | 5519 | Módulo PAM para el cifrado del sistema de archivos de Linux (fscrypt) |
Atención | |
---|---|
El cifrado de datos gasta recursos de la CPU, etc. Los datos encriptados se vuelven inaccesibles si se pierde su contraseña. Sopesa sus ventajas y sus costes. |
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 | |
---|---|
Ver 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 extraíbles,
p. ej. memoria USB en «/dev/sdx
», utilizando dm-crypt/LUKS.
Simplemente formatéelo 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
Entonces, se puede montar igual que uno normal en
"/media/nombre_usuario/etiqueta_disco
",
excepto para pedir la contraseña (ver Sección 10.1.7, “Dispositivos de almacenamiento extraíbles”) bajo el entorno de un escritorio
moderno usando el paquete udisks2
. La diferencia es que
todos los datos que se escriben en él están cifrados. La introducción de la
contraseña puede automatizarse utilizando llaveros (véase Sección 10.3.6, “Llavero de contraseña”).
Alternativamente, puedes formatear los medios en un sistema de archivos
diferente, por ejemplo, ext4 con "mkfs.ext4
/dev/mapper/sdx1
". Si se utiliza btrfs en su lugar, es necesario
instalar el paquete udisks2-btrfs
. Para estos sistemas
de archivos, puede ser necesario configurar la propiedad y los permisos de
los archivos.
Por ejemplo, una partición de disco cifrada creada con dm-crypt/LUKS en
"/dev/sdc5
" por el instalador de Debian puede montarse en
"/mnt
" de la siguiente forma:
$ sudo cryptsetup open /dev/sdc5 ninja --type luks Enter passphrase for /dev/sdc5: **** $ sudo lvm lvm> lvscan inactive '/dev/ninja-vg/root' [13.52 GiB] inherit inactive '/dev/ninja-vg/swap_1' [640.00 MiB] inherit ACTIVE '/dev/goofy/root' [180.00 GiB] inherit ACTIVE '/dev/goofy/swap' [9.70 GiB] inherit lvm> lvchange -a y /dev/ninja-vg/root lvm> exit Exiting. $ sudo mount /dev/ninja-vg/root /mnt
Debian distribuye el núcleo de Linux modularizado en paquetes para soportar las arquitecturas.
Si estás leyendo esta documentación, probablemente no necesites compilar el kernel de Linux por ti mismo.
Muchas funcionalidades de Linux son configurables por medio de parámetros del núcleo como se muestra.
Los parámetros del núcleo las inicializa el cargador de arranque (ver Sección 3.1.2, “Fase 2: el cargador de arranque”)
Los parámetros del núcleo cambian mediante sysctl
(8) en
tiempo de ejecución por aquellos accesibles por medio de sysfs (consulte
Sección 1.2.12, “procfs y sysfs”)
Los parámetros de modprobe
(8) se asignan como parámetros
del módulo cuando se activa el módulo (ver Sección 9.7.3, “Montaje del archivo imagen del disco”)
Consulta la "Guía del usuario y administrador del kernel de Linux " Parámetros de la línea de comandos del kernel" para obtener más información.
La mayor parte de los programas normales
no necesitan las cabeceras del núcleo y de hecho puede producir errores si
se utiliza directamente para compilar. Estos se deben compilar con las
cabeceras en «/usr/include/linux
» y
«/usr/include/asm
» que están en el paquete
libc6-dev
(creado por el paquete fuente
glibc
) en el sistema Debian.
Nota | |
---|---|
Para compilar algunos programas específicos del kernel, como los módulos del
kernel de la fuente externa y el contador automático de daemon
( |
Debian tiene su propio método para compilar el núcleo y los módulos asociados.
Tabla 9.26. Relación de los paquetes fundamentales para la recompilación del núcleo en los sistemas Debian
paquete | popularidad | tamaño | descripción |
---|---|---|---|
build-essential
|
I:480 | 17 | paquetes fundamentales para la construcción de paquetes Debian:
make , gcc , … |
bzip2
|
V:166, I:970 | 112 | utilidades de compresión y descompresión de archivos bz2 |
libncurses5-dev
|
I:71 | 6 | bibliotecas de desarrollo y documentación de ncurses |
git
|
V:351, I:549 | 46734 | git: sistema de control de versiones distribuido utilizado por el núcleo de Linux |
fakeroot
|
V:29, I:486 | 224 | aporta el entorno fakeroot para la construcción de paquetes sin ser «root« |
initramfs-tools
|
V:430, I:989 | 113 | herramienta para construir initramfs (propio de Debian) |
dkms
|
V:74, I:162 | 196 | soporte del núcleo para módulos dinámico (DKMS, dynamic kernel module support) (genérico) |
module-assistant
|
V:0, I:19 | 406 | herramienta de ayuda para crear los paquetes de los módulos (específico de Debian) |
devscripts
|
V:6, I:40 | 2658 | archivos de órdenes para el mantenimiento de Paquetes Debian (específico de Debian) |
Si utiliza initrd
en 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 | |
---|---|
No cree enlaces simbólicos en el árbol de directorios del código fuente
(p. ej. « |
Nota | |
---|---|
Cuando compile el núcleo de Linux en el sistema Debian
El soporte del núcleo 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. |
Para la construcción de paquetes binarios personalizados del núcleo desde el
código fuente del núcleo, podría utilizar el objetivo
«deb-pkg
» que se proporciona para ello.
$ sudo apt-get build-dep linux $ cd /usr/src $ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-version.tar.xz $ tar --xz -xvf linux-version.tar.xz $ cd linux-version $ cp /boot/config-version .config $ make menuconfig ... $ make deb-pkg
Sugerencia | |
---|---|
El paquete linux-source-version contiene el código
fuente del núcleo de Linux con los parches de Debian como
« |
Para la construcción de paquetes binarios concretos desde el paquete de
código fuente del núcleo de Debian, puede utilizar los objetivos
«binary-arch_architecture_featureset_flavour
»
en «debian/rules.gen
».
$ sudo apt-get build-dep linux $ apt-get source linux $ cd linux-3.* $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
Compruebe la información adicional:
Debian Wiki: KernelFAQ
Debian Wiki: DebianKernel
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net
El controlador de hardware es el código que se ejecuta en las CPU
principales del sistema de destino.. La mayor parte de los controladores de
hardware están disponibles como software libre actualmente se incluyen en
los paquetes normales del núcleo de Debian en el apartado
main
.
El firmware es el código o los datos ubicados en el propio dispositivo (p. ej. CPU microcode, código ejecutable para el «rendering« en GPU, o los datos FPGA / CPLD , …). Algunos paquetes con firmware están disponibles como software libre pero no la mayoría ya que contienen información binaria sin su código fuente. La instalación de estos datos de firmware es esencial para que el dispositivo funcione como se espera.
Paquetes de datos de firmware que contienen datos cargados en la memoria volátil en el dispositivo de destino.
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
)
El programa de actualización de firmware empaqueta los datos de actualización en la memoria no volátil en el dispositivo de destino.
fwupd (main
): Demonio de
actualización de firmware que descarga datos de firmware de Linux Vendor Firmware Service.
gnome-firmware (principal
): interfaz GTK para fwupd
plasma-discover-backend-fwupd (principal
): interfaz Qt
para fwupd
Ten en cuenta que el acceso a los paquetes de
non-free-firmware
lo proporcionan los medios de
instalación oficiales para ofrecer una experiencia de instalación funcional
al usuario desde Debian 12 Bookworm. El área de firmware no
libre
se describe en Sección 2.1.5, “Fundamentos del archivo de Debian”.
Ten en cuenta también que los datos del firmware descargados por fwupd del Servicio de firmware del proveedor de
Linux y cargados en el kernel de Linux en la ejecución pueden ser
no libre
.
La utilización de sistemas virtualizados nos permite la ejecución de varias instancias del sistema a la vez sobre un único hardware.
Sugerencia | |
---|---|
Hay varias plataformas de virtualización y emulación.
Completa los paquetes del hardware de emulación como los instalados por el metapaquete games-emulator
Principalmente la emulación a nivel de la CPU con algunas emulaciones de dispositivos de E/S como QEMU
Principalmente la virtualización a nivel de CPU con algunas emulaciones de dispositivos de E/S como Máquina virtual basada en kernel (KVM)
Virtualización de los contenedores a nivel del sistema operativo con soporte
a nivel de kernel como LXC (Linux
Containers), Docker,
systemd-nspawn
(1), ....
Virtualización del acceso al sistema de archivos a nivel del sistema operativo con la anulación de la llamada a la biblioteca del sistema en la ruta del archivo, como chroot
Virtualización del acceso al sistema de archivos a nivel del sistema operativo con la anulación de las llamada a la biblioteca del sistema sobre la propiedad del archivo, como fakeroot
Emulación de API de SO como Wine
Virtualización a nivel del intérprete, además de la selección de la ejecución y anulaciones de las bibliotecas en el tiempo de ejecución, como virtualenv y venv de Python
La virtualización de los contenedores utiliza Sección 4.7.5, “Características de seguridad de Linux” y es la tecnología backend de Sección 7.7, “Sandbox”.
Aquí tienes algunos paquetes que te ayudarán a configurar el sistema virtualizado.
Tabla 9.27. Relación de herramientas de virtualización
paquete | popularidad | tamaño | descripción |
---|---|---|---|
coreutils
|
V:880, I:999 | 18307 | Utilidades básicas de GNU que contienen chroot (8) |
systemd-container
|
V:53, I:61 | 1330 | herramientas systemd container/nspawn que contienen
systemd-nspawn (1) |
schroot
|
V:5, I:7 | 2579 | herramientas especializadas para la ejecución de paquetes binarios en «chroot« |
sbuild
|
V:1, I:3 | 243 | herramientas para la construcción de paquetes binarios desde el código fuente de Debian |
debootstrap
|
V:5, I:54 | 314 | sistema de arranque como sistema Debian mínimo (escrito en sh) |
cdebootstrap
|
V:0, I:1 | 115 | sistema de arranque de un sistema Debian (escrito en C) |
cloud-image-utils
|
V:1, I:17 | 66 | utilidades para la gestión de las imágenes en la nube |
cloud-guest-utils
|
V:3, I:13 | 71 | utilidades para invitados en la nube |
virt-manager
|
V:11, I:44 | 2296 | Gestor de Máquinas Virtuales: aplicación de escritorio para la gestión de máquinas virtuales |
libvirt-clients
|
V:46, I:65 | 1241 | programas para la biblioteca libvirt |
incus
|
V:0, I:0 | 56209 | Incus: contenedor de los sistemas y gestor de máquinas virtuales (para Debian 13 "Trixie") |
lxd
|
V:0, I:0 | 52119 | LXD: contenedor de los sistemas y gestor de máquinas virtuales (para Debian 12 "Bookworm") |
podman
|
V:14, I:16 | 41948 | podman: motor para ejecutar contenedores basados en OCI en Pods |
podman-docker
|
V:0, I:0 | 249 | motor para ejecutar contenedores basados en OCI en Pods - wrapper para docker |
docker.io
|
V:41, I:43 | 150003 | docker: Tiempo de ejecución de contenedores Linux |
games-emulator
|
I:0 | 21 | games-emulator: emuladores de Debian para juegos |
bochs
|
V:0, I:0 | 6956 | Bochs: emulador de PC IA-32 PC |
qemu
|
I:14 | 97 | QEMU: emulador rápido de un procesador genérico |
qemu-system
|
I:22 | 66 | QEMU: binarios para la emulación de un sistema completo |
qemu-user
|
V:1, I:6 | 93760 | QEMU: binarios para la emulación en modo usuario |
qemu-utils
|
V:12, I:106 | 10635 | QEMU: utilidades |
qemu-system-x86
|
V:33, I:91 | 58140 | KVM: virtualización completa de hardware x86 con la virtualización asistida por hardware |
virtualbox
|
V:6, I:8 | 130868 | VirtualBox: solución de virtualización x86 en i386 y amd64 |
gnome-boxes
|
V:1, I:7 | 6691 | Boxes: Sencilla aplicación de GNOME para acceder a sistemas virtuales |
xen-tools
|
V:0, I:2 | 719 | herramientas para la gestión de debian del servidor virtual XEN |
wine
|
V:13, I:60 | 132 | Wine: Implementación de la API Windows (suite estándar) |
dosbox
|
V:1, I:15 | 2696 | DOSBox: emulador x86 con gráficos Tandy/Herc/CGA/EGA/VGA/SVGA , sonido y DOS |
lxc
|
V:9, I:12 | 25890 | Contenedores Linux herramientas del espacio de usuario |
python3-venv
|
I:88 | 6 | venv para crear entornos virtuales python (biblioteca del sistema) |
python3-virtualenv
|
V:9, I:50 | 356 | virtualenv para crear entornos python virtuales aislados |
pipx
|
V:3, I:19 | 3324 | pipx para instalar aplicaciones python en entornos aislados |
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 | |
---|---|
El núcleo de Debian por defecto soporta KVM desde
|
El flujo de trabajo de la virtualización conlleva varios pasos.
Crear un sistema de archivos vacío (un árbol de directorios o una imagen de disco).
El árbol de directorios puede ser creado mediante «mkdir -p
/ruta/al/entorno//chroot
».
El archivo de la imagen de disco en crudo puede ser creado con
dd
(1) (ver Sección 9.7.1, “Creando un archivo de imagen de disco”
y Sección 9.7.5, “Haciendo un archivo de imagen de disco vacío”).
qemu-img
(1) se puede utilizar para crear y convertir
archivos de imagen de disco utilizados por QEMU.
Los formatos de archivo crudos y VMDK se pueden utilizar como formato común entre diferentes herramientas de virtualización.
Monte la imagen de disco con mount
(8) en el sistema de
archivos (opcional).
Para el archivo de imagen de disco crudo, móntelo como un dispositivo «loop« o mapeo de dispositivo (ver Sección 9.7.3, “Montaje del archivo imagen del disco”).
Para el soporte de imágenes de disco por QEMU, móntelos como dispositivo de bloque de red (ver Sección 9.11.3, “Montando el archivo de imagen de disco virtual”).
Llene el sistema de archivos objetivo con la información del sistema.
La utilización de programas como debootstrap
y
cdebootstrap
ayudan en este proceso (ver Sección 9.11.4, “Sistemas chroot”).
Utilización de instaladores de los sistemas operativos en la emulación del sistema completo.
Ejecute un programa en un entorno virtualizado.
chroot ofrece un entorno de virtualización básico para compilar programas , ejecutar aplicaciones de consola y ejecutar demonios en él.
QEMU ofrece emulación de CPU independiente de la plataforma.
QEMU con KVM ofrece un sistema de emulación completo por medio de la virtualización asistida por hardware.
VirtualBox ofrece un sistema completo de emulación en i386 y amd64 con o sin la virtualización asistida por hardware.
Para un archivo de imagen de disco crudo, ver 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) admite formatos de disco compatibles con
QEMU: 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« (ver Sección 9.7.3, “Montaje del archivo 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 | |
---|---|
Puede exportar únicamente la primera partición de
« |
Si deseas probar un nuevo entorno Debian desde una consola de terminal, te
recomiendo que uses chroot. Esto te permite
ejecutar aplicaciones de la consola de Debian inestable
y
prueba
sin los riesgos habituales asociados y sin
reiniciar. chroot
(8) es la forma más básica.
Atención | |
---|---|
Los ejemplos de abajo asumen que tanto el sistema padre como el sistema
chroot comparten la misma arquitectura de CPU |
Aunque puedes crear manualmente un entorno chroot
(8)
usando debootstrap
(1), esto requiere esfuerzos no
triviales.
El paquete sbuild para crear paquetes Debian
desde el código fuente utiliza el entorno chroot administrado por el paquete
schroot. Viene con una secuencia de comandos
auxiliar sbuild-createchroot
(1). Aprendamos cómo
funciona ejecutándolo de la siguiente manera.
$ sudo mkdir -p /srv/chroot $ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian ...
Puedes ver como debootstrap
(8) rellena los datos del
sistema para el entorno unstable
bajo
"/srv/chroot/unstable-amd64-sbuild
" para un sistema de
construcción mínimo.
Puedes acceder a este entorno utilizando schroot
(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild
Verás cómo se crea un shell de sistema que se ejecuta en un entorno
inestable
.
Nota | |
---|---|
El fichero " |
Nota | |
---|---|
Algunos programas en chroot pueden requerir acceso a más archivos del
sistema principal para funcionar que los que proporciona
|
Sugerencia | |
---|---|
El paquete |
Sugerencia | |
---|---|
El comando |
Si deseas probar un nuevo entorno de escritorio GUI de cualquier sistema
operativo, te recomiendo que uses QEMU o KVM en un sistema Debian stable
(estable) para ejecutar múltiples sistemas de escritorio de forma segura
usando la virtualización. Esto te
permite ejecutar cualquier aplicación de escritorio incluyendo las de Debian
unstable
(inestable) y testing
(pruebas) sin los riesgos habituales asociados a ellas y sin reiniciar.
Dado que QEMU puro es muy lento, se recomienda acelerarlo con KVM cuando el sistema anfitrión lo soporte.
Gestor de máquinas virtuales
también conocido como virt-manager
es una práctica
herramienta GUI para gestionar las máquinas virtuales KVM a través de libvirt.
La imagen de disco virtual «virtdisk.qcow2
» que contiene
una imagen del sistema Debian para QEMU se puede
crear utilizando el instalador
debian: en pequeños CDs como se muestra.
$ wget https://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 | |
---|---|
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. |
Ver más consejos en La Wikipedia de Debian: Virtualización del sistema.
[2] Ejemplos de personalización más elaborados: "Vim Galore", "sensible.vim", ...
[3] vim-pathogen fue popular.