Índice
Aqui, descrevo dicas básicas para configurar e gerir sistemas, a maioria a partir da consola.
There are some utility programs to help your console activities.
Tabela 9.1. List of programs to support console activities
pacote | popcon | tamanho | descrição |
---|---|---|---|
mc
|
V:50, I:209 | 1542 | See Secção 1.3, “Midnight Commander (MC)” |
bsdutils
|
V:519, I:999 | 356 | script (1) command to make a record of terminal session |
screen
|
V:71, I:230 | 1003 | terminal multiplexador com emulação de terminal VT100/ANSI |
tmux
|
V:43, I:146 | 1180 | multiplexador alternativo de terminal (Use "Control-B" em vez disto) |
fzf
|
V:4, I:16 | 3648 | fuzzy text finder |
fzy
|
V:0, I:0 | 54 | fuzzy text finder |
rlwrap
|
V:1, I:15 | 330 | readline feature command line wrapper |
ledit
|
V:0, I:11 | 331 | readline feature command line wrapper |
rlfe
|
V:0, I:0 | 45 | readline feature command line wrapper |
ripgrep
|
V:5, I:19 | 5152 | fast recursive string search in the source code tree with automatic filtering |
O uso simples de script
(1) (veja Secção 1.4.9, “Gravar as atividades da shell”) para gravar a atividade da
shell produz um ficheiro com caracteres de controle. Isto pode ser evitado
ao usar o col
(1) como o seguinte.
$ script Script started, file is typescript
Faça o que tem a fazer ... e carregue em Ctrl-D
para
terminar o script
.
$ col -bx < typescript > cleanedfile $ vim cleanedfile
There are alternative methods to record the shell activities:
Use tee
(usable during the boot process in the
initramfs):
$ sh -i 2>&1 | tee typescript
Use gnome-terminal
with the extend line buffer for
scrollback.
Use screen
with "^A H
" (see Secção 9.1.2, “O programa screen”) to perform recording of console.
Use vim
with ":terminal
" to enter the
terminal mode. Use "Ctrl-W N
" to exit from terminal mode
to normal mode. Use ":w typescript
" to write the buffer
to a file.
Use emacs
with "M-x shell
",
"M-x eshell
", or "M-x term
" to enter
recording console. Use "C-x C-w
" to write the buffer to
a file.
O screen
(1) não apenas permite que uma janela terminal
funcione com múltiplos processos, mas também permite que os processos de shell remota sobrevivam a ligações
interrompidas. Aqui está um cenário típico de utilização do
screen
(1).
Faz login numa máquina remota.
Arranca o screen
numa consola única.
Executa múltiplos programas na janela criada do screen
com ^A c
("Ctrl-A" seguido de "c").
Muda entre as múltiplas janelas do screen
com ^A
n
("Ctrl-A" seguido de "n").
Subitamente precisa de abandonar o seu terminal, mas não quer perder o seu trabalho ativo a manter a ligação.
Pode separar a sessão do
screen
por quaisquer métodos.
Desligar a sua ligação de rede à bruta
Escrever ^A d
("Ctrl-A" seguido de "d") e manualmente
terminar a sessão da ligação remota
Escrever ^A DD
("Ctrl-A" seguido de "DD") para separar o
screen
e terminar a sua sessão
Faz login de novo à mesma máquina remota (mesmo a partir de um terminal diferente).
Inicia o screen
como "screen -r
".
O screen
magicamente reagrupa todas as janelas screen
anteriores com todos os programas a funcionar activamente.
Dica | |
---|---|
Pode poupar despesas de ligação com o |
Numa sessão do screen
, todas as entradas do teclado são
enviadas à sua janela atual excepto as teclas de comandos. Todas as teclas
de comando do screen
são inseridas ao escrever
^A
("Control-A") mais uma única tecla [mais quaisquer
parâmetros]. Aqui estão alguns importantes para fazer lembrar.
Tabela 9.2. Lista de ligações de teclas para o screen
tecla de atalho | significado |
---|---|
^A ? |
mostra um écran de ajuda (mostra as teclas de atalho) |
^A c |
cria uma nova janela e muda para lá |
^A n |
vai à janela seguinte |
^A p |
vai à janela anterior |
^A 0 |
vaia à janela número 0 |
^A 1 |
vai à janela número 1 |
^A w |
mostra uma lista de janelas |
^A a |
envia Ctrl-A à janela atual como entrada do teclado |
^A h |
escreve uma cópia física da janela atual para um ficheiro |
^A H |
inicia/termina o registo da janela atual para um ficheiro |
^A ^X |
bloqueia o terminal (protegido por palavra-passe) |
^A d |
separa a sessão do ecrã do terminal |
^A DD |
separa a sessão do ecrã e termina a sessão |
Veja screen
(1) para detalhes.
See tmux
(1) for functionalities of the alternative
command.
In Secção 1.4.2, “Personalizar bash”, 2 tips to allow quick navigation
around directories are described: $CDPATH
and
mc
.
If you use fuzzy text filter program, you can do without typing the exact
path. For fzf
, include following in
~/.bashrc
.
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash if [ -f $FZF_KEYBINDINGS_PATH ]; then . $FZF_KEYBINDINGS_PATH fi
For example:
You can jump to a very deep subdirectory with minimal efforts. You first
type "cd **
" and press Tab
. Then you
will be prompted with candidate paths. Typing in partial path strings,
e.g., s/d/b foo
, will narrow down candidate paths. You
select the path to be used by cd
with cursor and return
keys.
You can select a command from the command history more efficiently with
minimal efforts. You press Ctrl-R
at the command
prompt. Then you will be prompted with candidate commands. Typing in
partial command strings, e.g., vim d
, will narrow down
candidates. You select the one to be used with cursor and return keys.
Some commands such as /usr/bin/dash
which lacks command
line history editing capability can add such functionality transparently by
running under rlwrap
or its equivalents.
$ rlwrap dash -i
This provides convenient platform to test subtle points for
dash
with friendly bash
-like
environment.
After you learn basics of vim
(1) through Secção 1.4.8, “Using vim”, please read Bram Moolenaar's "Seven habits of effective text
editing (2000)" to understand how vim
should be
used.
The behavior of vim
can be changed significantly by
enabling its internal features through the Ex
-mode
commands such as "set ...
" to set vim options.
These Ex
-mode commands can be included in user's vimrc
file, traditional "~/.vimrc
" or git-friendly
"~/.vim/vimrc
". Here is a very simple example
[2]:
""" 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 "colorscheme default 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
The keymap of vim
can be changed in user's vimrc file.
E.g.:
Cuidado | |
---|---|
Don't try to change the default key bindings without very good reasons. |
""" 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
In order for the above keybindings to function properly, the terminal
program needs to be configured to generate "ASCII DEL" for
Backspace
-key and "Escape sequence" for
Delete
-key.
Other miscellaneous configuration can be changed in user's vimrc file. E.g.:
""" 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\+\%#\@<!$/
Interesting external plugin packages can be found:
Vim - the ubiquitous text editor -- The official upstream site of Vim and vim scripts
VimAwsome -- The listing of Vim plugins
vim-scripts -- Debian package: a collection of vim scripts
Plugin packages in the vim-scripts package can be enabled using user's vimrc file. E.g.:
packadd! secure-modelines packadd! winmanager " IDE-like UI for files and buffers with <space>w nnoremap <leader>w :WMToggle<CR>
The new native Vim package system works nicely with "git
"
and "git submodule
". One such example configuration can
be found at my git repository:
dot-vim. This does essentially:
By using "git
" and "git submodule
",
latest external packages, such as
"name
", are placed into
~/.vim/pack/*/opt/name
and similar.
By adding :packadd! name
line to
user's vimrc file, these packages are placed on
runtimepath
.
Vim loads these packages on runtimepath
during its
initialization.
At the end of its initialization, tags for the installed documents are
updated with "helptags ALL
".
For more, please start vim
with "vim
--startuptime vimstart.log
" to check actual execution sequence and
time spent for each step.
It is quite confusing to see too many ways[3] to manage and load these external packages to
vim
. Checking the original information is the best cure.
Tabela 9.3. Information on the initialization of vim
key strokes | information |
---|---|
:help package |
explanation on the vim package mechanism |
:help runtimepath |
explanation on the runtimepath mechanism |
:version |
internal states including candidates for the vimrc file |
:echo $VIM |
the environment variable "$VIM " used to locate the vimrc
file |
:set runtimepath? |
list of directories which will be searched for all runtime support files |
:echo $VIMRUNTIME |
the environment variable "$VIMRUNTIME " used to locate
various system provided runtime support files |
Many traditional programs record their activities in the text file format
under the "/var/log/
" directory.
logrotate
(8) is used to simplify the administration of
log files on a system which generates a lot of log files.
Many new programs record their activities in the binary file format using
systemd-journald
(8) Journal service under the
"/var/log/journal
" directory.
You can log data to the systemd-journald
(8) Journal from
a shell script by using the systemd-cat
(1) command.
Veja Secção 3.4, “A mensagem do sistema” e Secção 3.3, “A mensagem do kernel”.
Aqui estão analisadores de relatórios notáveis
("~Gsecurity::log-analyzer
" no
aptitude
(8)).
Tabela 9.4. Lista de analisadores de log do sistema
pacote | popcon | tamanho | descrição |
---|---|---|---|
logwatch
|
V:11, I:13 | 2328 | analisador de log com saída bonita escrito em Perl |
fail2ban
|
V:98, I:111 | 2126 | banir IPs que causam vários erros de autenticação |
analog
|
V:3, I:96 | 3739 | analisador de log do servidor web |
awstats
|
V:6, I:10 | 6928 | analisador de logs de servidor web poderoso e cheio de funcionalidades |
sarg
|
V:1, I:1 | 845 | gerador de relatórios de análises do squid |
pflogsumm
|
V:1, I:4 | 109 | resumidor de entradas do relatório do Postfix |
fwlogwatch
|
V:0, I:0 | 481 | analisador de log da firewall |
squidview
|
V:0, I:0 | 189 | monitoriza e analisa ficheiros access.log do squid |
swatch
|
V:0, I:0 | 99 | visualizador de ficheiros de registo com correspondência de expressões regulares, destaque e hooks |
crm114
|
V:0, I:0 | 1119 | Mutilador de Expressões Regulares Controlável e Filtro de Spam (CRM114) |
icmpinfo
|
V:0, I:0 | 44 | interpretar mensagens ICMP |
Nota | |
---|---|
CRM114 disponibiliza uma infraestrutura de linguagem para escrever filtros fuzzy com a biblioteca de expressões regulares TRE. O uso popular dela é o filtro de spam de mail, mas pode ser usado como um analisador de registos. |
Apesar de ferramentas paginadoras com o more
(1) e
less
(1) (veja Secção 1.4.5, “O pager”) e ferramentas
personalizadas para destaque e formatação (veja Secção 11.1.8, “Destacar e formatar dados de texto simples”) poderem mostrar
dados de texto muito bem, os editores de objetivos gerais (veja Secção 1.4.6, “O editor de texto”) são mais versáteis e personalizáveis.
Dica | |
---|---|
Para o |
The default display format of time and date by the "ls
-l
" command depends on the locale (see Secção 1.2.6, “Marcas temporais (Timestamps)” for
value). The "$LANG
" variable is referred first and it
can be overridden by the "$LC_TIME
" or
"$LC_ALL
" exported environment variables.
The actual default display format for each locale depends on the version of
the standard C library (the libc6
package) used. I.e.,
different releases of Debian had different defaults. For iso-formats, see
ISO 8601.
Se deseja realmente personalizar este formato de amostragem da hora e data
para além do locale, deve definir o
valor de estilo de hora com o argumento
"--time-style
" ou com o valor
"$TIME_STYLE
" (veja ls
(1),
date
(1), "info coreutils 'ls
invocation'
").
Tabela 9.5. Display examples of time and date for the "ls -l
" command
with the time style value
valor do estilo de hora | localização | mostra a hora e data |
---|---|---|
iso |
qualquer | 01-19 00:15 |
long-iso |
qualquer | 2009-01-19 00:15 |
full-iso |
qualquer | 2009-01-19 00:15:16.000000000 +0900 |
locale |
C |
Jan 19 00:15 |
locale |
en_US.UTF-8 |
Jan 19 00:15 |
locale |
es_ES.UTF-8 |
ene 19 00:15 |
+%d.%m.%y %H:%M |
qualquer | 19.01.09 00:15 |
+%d.%b.%y %H:%M |
C ou en_US.UTF-8 |
19.Jan.09 00:15 |
+%d.%b.%y %H:%M |
es_ES.UTF-8 |
19.ene.09 00:15 |
Dica | |
---|---|
You can eliminate typing long option on commandline using command alias (see Secção 1.5.9, “Comando alias”): alias ls='ls --time-style=+%d.%m.%y %H:%M' |
A escrita da shell nos terminais mais modernos pode ser colorida a usar
código de escape de ANSI (veja
"/usr/share/doc/xterm/ctlseqs.txt.gz
").
Por exemplo, tente o seguinte:
$ RED=$(printf "\x1b[31m") $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"
Comandos coloridos são úteis para inspeccionar os seus resultados no
ambiente interativo. Incluí o seguinte no meu
"~/.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
O uso de alias limita os efeitos coloridos da utilização interactiva do
comando. Tem vantagem sobre exportar a variável de ambiente "export
GREP_OPTIONS='--color=auto'
" porque a cor pode ser vista sob
programas paginadores como o less
(1). Se deseja suprimir
a cor quando canaliza (pipe) para outros programas, use antes
"--color=auto
" no exemplo em cima para
"~/.bashrc
".
Dica | |
---|---|
Pode desligar estes nomes alternativos coloridos no ambiente interativo ao
invocar a shell com " |
Pode recordar as atividades do editor para repetições complexas.
Para o Vim, como a seguir.
"qa
": inicia a gravação de caracteres teclados no registo
nomeado "a
".
... atividades do editor
"q
": termina a gravação de caracteres escritos.
"@a
": executa o conteúdo do registo
"a
".
Para Emacs, como a seguir.
"C-x (
": começa a definir uma macro de teclado.
... atividades do editor
"C-x )
": termina de definir uma macro de teclado.
"C-x e
": executa uma macro de teclado.
Existem algumas maneiras de gravar a imagem gráfica de uma aplicação X, a
incluir um ecrã xterm
.
Tabela 9.6. Lista de ferramentas gráficas de manipulação de imagens
pacote | popcon | tamanho | screen | comando |
---|---|---|---|---|
gnome-screenshot
|
V:18, I:173 | 1134 | Wayland | screenshot application for GNOME |
flameshot
|
V:7, I:15 | 3364 | Wayland | screenshot application on steroid |
gimp
|
V:50, I:252 | 19304 | Wayland + X | screenshot in GUI menu |
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) |
There are specialized tools to record changes in configuration files with help of DVCS and to make system snapshots on Btrfs.
Tabela 9.7. List of packages which can record configuration history
pacote | popcon | tamanho | descrição |
---|---|---|---|
etckeeper
|
V:26, I:30 | 168 | armazenar ficheiros de configuração e os seus meta-dados com Git (predefinido), Mercurial, ou GNU Bazaar (novo) |
timeshift
|
V:5, I:10 | 3506 | system restore utility using rsync or BTRFS snapshots |
snapper
|
V:4, I:5 | 2392 | Linux filesystem snapshot management tool |
You may also think about local script Secção 10.2.3, “Backup tips” approach.
As atividades de programas podem ser monitorizadas e controladas a usar ferramentas especiais.
Tabela 9.8. Lista de ferramentas para monitorizar e controlar as atividades de programas
pacote | popcon | tamanho | descrição |
---|---|---|---|
coreutils
|
V:880, I:999 | 18307 | nice (1): correr um programa com prioridade de agendamento
modificada |
bsdutils
|
V:519, I:999 | 356 | renice (1): modifica a prioridade de agendamento de um
processo em execução |
procps
|
V:766, I:999 | 2389 | "/proc " utilitários de sistema de ficheiros:
ps (1), top (1),
kill (1) , watch (1), … |
psmisc
|
V:420, I:775 | 908 | "/proc " utilitários de sistema de ficheiros:
killall (1), fuser (1),
peekfd (1), pstree (1) |
time
|
V:7, I:132 | 129 | time (1): corre um programa para reportar as utilizações
de recursos do sistema no que respeita a tempo |
sysstat
|
V:148, I:170 | 1904 | sar (1), iostat (1),
mpstat (1), …: ferramentas de performance do sistema para
Linux |
isag
|
V:0, I:3 | 109 | Interactive System Activity Grapher para sysstat |
lsof
|
V:422, I:945 | 482 | lsof (8): lista os ficheiro abertos por um processo em
execução a usar a opção "-p " |
strace
|
V:12, I:119 | 2897 | strace (1): rastreia chamadas e sinais do sistema |
ltrace
|
V:0, I:16 | 330 | ltrace (1): rastreia chamadas de bibliotecas |
xtrace
|
V:0, I:0 | 353 | xtrace (1): rastreia a comunicação entre cliente X11 e
servidor |
powertop
|
V:18, I:217 | 677 | powertop (1): informação sobre a utilização do sistema de
energia |
cron
|
V:872, I:995 | 244 | corre processos de acordo com uma agenda nos bastidores a partir do daemon
cron (8) |
anacron
|
V:396, I:479 | 93 | agenda de comandos tipo cron para sistemas que não funcionam 24 horas por dia |
at
|
V:101, I:154 | 158 | at (1) ou batch (1): executam um
trabalho a uma hora especificada ou abaixo de um certo nível de carga |
Dica | |
---|---|
Os pacotes |
Mostrar o tempo usado pelo processo invocado pelo comando.
# 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
Um valor nice é usado para controlar a prioridade de agendamento para o processo.
Tabela 9.9. Lista de valores nice para a prioridade de agendamento
o valor nice | prioridade de agendamento |
---|---|
19 | processo de prioridade menor (nice) |
0 | processo de prioridade muito alta para o utilizador |
-20 | processo de prioridade muito alta para o root (não-nice) |
# nice -19 top # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
Por vezes um valor nice extremo faz mais danos que benefícios ao sistema. Use este comando com cuidado.
O comando ps
(1) num sistema Debian suporta ambas
funcionalidades do BSD e SystemV e ajuda-o a identificar estaticamente a
atividade do processo.
Tabela 9.10. Lista dos estilos do comando ps
estilo | comando típico | funcionalidade |
---|---|---|
BSD | ps aux |
mostrar %CPU %MEM |
System V | ps -efH |
mostra PPID |
Para o processo filho zombie (defunto), pode matá-lo pelo ID do processo pai
identificado no campo "PPID
".
O comando pstree
(1) mostra uma árvore de processos.
O top
(1) no sistema Debian tem funcionalidades ricas e
ajuda-o a identificar dinamicamente que processo está a actuar de modo
esquisito.
É um programa interativo de ecrã total. Pode obter a ajuda de utilização dele ao pressionar a tecla "h" e terminá-lo ao pressionar a tecla "q".
Pode listar todos os ficheiros abertos por um processo com o ID do processo (PID), ex. 1, com o seguinte.
$ sudo lsof -p 1
PID=1 é geralmente o programa de init
.
Pode rastrear a atividade do programa com o strace
(1),
ltrace
(1), ou xtrace
(1) para chamadas
de sistema e sinais, chamadas de bibliotecas, ou comunicação entre cliente e
servidor do X11.
Pode rastrear as chamadas do sistema do comando ls
como a
seguir.
$ sudo strace ls
Dica | |
---|---|
Use strace-graph script found in /usr/share/doc/strace/examples/ to make a nice tree view |
Também pode identificar processos que usam ficheiros pelo
fuser
(1), ex. para "/var/log/mail.log
"
com o seguinte.
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
Vê que o ficheiro "/var/log/mail.log
" está aberto para
escrita pelo comando rsyslogd
(8).
Também pode identificar processos que usam sockets pelo
fuser
(1), ex. para "smtp/tcp
" com o
seguinte.
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
Agora sabe que o seu sistema executa o exim4
(8) para
lidar com as ligações TCP para a porta SMTP (25).
O watch
(1) executa um programa repetidamente num
intervalo constante enquanto mostra os seus resultados em ecrã completo.
$ watch w
Isto mostra quem tem sessão iniciada (logged) no sistema e é atualizado a cada 2 segundos.
Existem várias maneiras de repetir um ciclo de comandos sobre ficheiros que
correspondem a alguma condição, ex. que correspondem ao modelo glob
"*.ext
".
Método for-loop da shell (veja Secção 12.1.4, “Ciclos (loops) da shell”):
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
combinação do find
(1) e do xargs
(1):
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find
(1) com a opção "-exec
" com um
comando:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find
(1) com a opção "-exec
" com um
script de shell curto:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
Os exemplos em cima foram escritos para assegurar o lidar apropriado dos
nomes de ficheiros esquisitos como os que contêm espaços. Veja Secção 10.1.5, “Idiomas para a seleção de ficheiros” para utilizações mais
avançadas do find
(1).
Para a interface de linha de comandos
(CLI), é executado o primeiro programa com o nome correspondente
encontrado nos diretórios especificados na variável de ambiente
$PATH
. Veja Secção 1.5.3, “A variável "$PATH
"”.
For the graphical user interface
(GUI) compliant to the freedesktop.org standards, the
*.desktop
files in the
/usr/share/applications/
directory provide necessary
attributes for the GUI menu display of each program. Each package which is
compliant to Freedesktop.org's xdg menu system installs its menu data
provided by "*.desktop" under "/usr/share/applications/". Modern desktop
environments which are compliant to Freedesktop.org standard use these data
to generate their menu using the xdg-utils package. See
"/usr/share/doc/xdg-utils/README".
Por exemplo, os atributos do ficheiro chromium.desktop
para o "Navegador Web Chromium" tais como "Nome" para o nome do programa,
"Exec" para o caminho de execução do programa e argumentos, "Icon" para o
ícone usado, etc. (veja Desktop
Entry Specification) como a seguir:
[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 é uma descrição muito simplificada. Os ficheiros
*.desktop
são examinados como a seguir:
O ambiente de trabalho define as variáveis de ambiente
$XDG_DATA_HOME
e $XDG_DATA_DIR
. Por
exemplo, sob o GNOME 3:
$XDG_DATA_HOME
é desconfigurada. (É usado o valor
predefinido de $HOME/.local/share
.)
$XDG_DATA_DIRS
é definida para
/usr/share/gnome:/usr/local/share/:/usr/share/
.
Para que os diretórios base (veja Especificação de Diretório Base
XDG) e os diretórios applications
sejam como a
seguir:
$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/
Os ficheiros *.desktop
são examinados nestes diretórios
applications
por esta ordem.
Dica | |
---|---|
Pode ser criada uma entrada personalizada no menu da GUI ao adicionar um
ficheiro |
Dica | |
---|---|
The " |
Dica | |
---|---|
Se modo semelhante, se um ficheiro |
Dica | |
---|---|
De modo semelhante, se um ficheiro |
Alguns programas iniciam outros programas automaticamente. Aqui estão alguns pontos de controle para personalizar este processo.
Menu de configuração da aplicação:
Ambiente GNOME3: "Definições" → "Sistema" → "Detalhes" → "Aplicações Predefinidas"
Ambiente KDE: "K" → "Centro de Controle" → "Componentes do KDE" → "selcionar Componente"
Navegador Iceweasel: "Editar" → "Preferências" → "Aplicações"
mc
(1): "/etc/mc/mc.ext
"
Environment variables such as "$BROWSER
",
"$EDITOR
", "$VISUAL
", and
"$PAGER
" (see environ
(7))
O sistema update-alternatives
(1) para programas como o
"editor
", "view
",
"x-www-browser
", "gnome-www-browser
" e
"www-browser
" (veja Secção 1.4.7, “Definir um editor de texto predefinido”)
os conteúdos dos ficheiros "~/.mailcap
" e
"/etc/mailcap
" com a associação do tipo MIME com o programa (veja
mailcap
(5))
Os conteúdos dos ficheiros "~/.mime.types
" e
"/etc/mime.types
" que associam a extensão do nome do
ficheiro com o tipo MIME (veja
run-mailcap
(1))
Dica | |
---|---|
|
Dica | |
---|---|
O pacote |
Dica | |
---|---|
In order to run a console application such as # cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF # chmod 755 /usr/local/bin/mutt-term |
Use kill
(1) para matar (ou enviar um sinal para) um
processo pelo ID do processo.
Use killall
(1) ou pkill
(1) para fazer
o mesmo pelo nome do comando do processo ou outro atributo.
Tabela 9.11. Lista dos sinais frequentemente usados para o comando kill
valor do sinal | nome do sinal | acção | note |
---|---|---|---|
0 | --- | no signal is sent (see kill (2)) |
check if process is running |
1 | SIGHUP | terminate the process | disconnected terminal (signal hang up) |
2 | SIGINT | terminate the process | interrupt from keyboard (CTRL-C ) |
3 | SIGQUIT | terminate the process and dump core | quit from keyboard (CTRL-\ ) |
9 | SIGKILL | terminate the process | unblockable kill signal |
15 | SIGTERM | terminate the process | blockable termination signal |
Corra o comando at
(1) para agendar uma tarefa de uma-vez
com o seguinte.
$ echo 'command -args'| at 3:40 monday
Use cron
(8) para agendar tarefas regularmente. Veja
crontab
(1) e crontab
(5).
Pode agendar a execução de processos como um utilizador normal,
ex. foo
ao criar um ficheiro
crontab
(5) como
"/var/spool/cron/crontabs/foo
" com o comando
"crontab -e
".
Aqui está um exemplo de um ficheiro 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
Dica | |
---|---|
Para o sistema que não corre continuamente, instale o pacote
|
Dica | |
---|---|
Para scripts agendados de manutenção do sistema, pode executá-los
periodicamente a partir da conta root ao pôr tais scripts em
" |
Systemd has low level capability to schedule
programs to run without cron
daemon. For example,
/lib/systemd/system/apt-daily.timer
and
/lib/systemd/system/apt-daily.service
set up daily apt
download activities. See systemd.timer
(5) .
Systemd can schedule program not only on the timer event but also on the mount event. See Secção 10.2.3.3, “Timer event triggered backup” and Secção 10.2.3.2, “Mount event triggered backup” for examples.
Pressing Alt-SysRq (PrtScr) followed by one keys does the magic of rescuing control of the system.
Tabela 9.12. List of notable SAK command keys
tecla que segue a Alt-SysRq | descrição da acção |
---|---|
k |
kill all processes on the current virtual console (SAK) |
s |
sincroniza todos os sistemas de ficheiros montados para evitar corrupção de dados |
u |
remontar todos os sistemas de ficheiros montados em modo de apenas-leitura (umount) |
r |
restaurar o teclado a partir de modo raw após crash do X |
See more on Linux kernel user’s and administrator’s guide » Linux Magic System Request Key Hacks
Dica | |
---|---|
A partir de um terminal SSH etc., pode usar a funcionalidade Alt-SysRq ao
escrever para o " |
The current (2021) Debian amd64 Linux kernel has
/proc/sys/kernel/sysrq=438=0b110110110
:
2 = 0x2 - enable control of console logging level (ON)
4 = 0x4 - enable control of keyboard (SAK, unraw) (ON)
8 = 0x8 - enable debugging dumps of processes etc. (OFF)
16 = 0x10 - enable sync command (ON)
32 = 0x20 - enable remount read-only (ON)
64 = 0x40 - enable signaling of processes (term, kill, oom-kill) (OFF)
128 = 0x80 - allow reboot/poweroff (ON)
256 = 0x100 - allow nicing of all RT tasks (ON)
Pode verificar quem está no sistema com o seguinte.
who
(1) mostra quem tem sessão iniciada.
w
(1) mostra quem tem sessão iniciada e o que estão a
fazer.
last
(1) mostra a listagem do último utilizador a iniciar
sessão.
lastb
(1 )mostra a listagem dos últimos utilizadores a
falharem o inicio de sessão.
Dica | |
---|---|
" |
Pode mandar uma mensagem para todos os que têm sessão iniciada no sistema
com wall
(1) com o seguinte.
$ echo "We are shutting down in 1 hour" | wall
Para os aparelhos tipo PCI (AGP, PCI-Express,
CardBus, ExpressCard, etc.), o
lspci
(8) (provavelmente com a opção
"-nn
") é um bom inicio para a identificação do hardware.
Alternativamente, pode identificar o hardware ao ler os conteúdos de
"/proc/bus/pci/devices
" ou explorar a árvore de
diretórios sob "/sys/bus/pci
" (veja Secção 1.2.12, “procfs e sysfs”).
Tabela 9.13. Lista de ferramenta de identificação de hardware
pacote | popcon | tamanho | descrição |
---|---|---|---|
pciutils
|
V:249, I:991 | 213 | Utilitários PCI do Linux: lspci (8) |
usbutils
|
V:68, I:869 | 325 | Utilitários USB do Linux: lsusb (8) |
nvme-cli
|
V:15, I:22 | 1642 | NVMe utilities for Linux: nvme (1) |
pcmciautils
|
V:6, I:10 | 91 | Utilitários PCMCIA par Linux: pccardctl (8) |
scsitools
|
V:0, I:2 | 346 | colecção de ferramentas para gestão de hardware SCSI:
lsscsi (8) |
procinfo
|
V:0, I:9 | 132 | informação do sistema obtida de "/proc ":
lsdev (8) |
lshw
|
V:13, I:89 | 919 | informação acerca da configuração do hardware: lshw (1) |
discover
|
V:40, I:958 | 98 | sistema de identificação de hardware: discover (8) |
Apesar da maioria da configuração de hardware nos sistemas de ambiente de trabalho GUI modernos como o GNOME e KDE poder ser gerida através de acompanhamento por ferramentas de configuração com GUI, é uma boa ideia conhecer alguns métodos básicos de o configurar.
Tabela 9.14. Lista de ferramentas de configuração do hardware
pacote | popcon | tamanho | descrição |
---|---|---|---|
console-setup
|
V:88, I:967 | 428 | tipo de letra da consola Linux e utilitários da tabela de teclas |
x11-xserver-utils
|
V:302, I:528 | 568 | Utilitários do servidor X: xset (1),
xmodmap (1) |
acpid
|
V:84, I:148 | 158 | daemon para gerir eventos entregues pelo Advanced Configuration and Power Interface (ACPI) |
acpi
|
V:9, I:136 | 47 | utilitário para mostrar informação em aparelhos ACPI |
sleepd
|
V:0, I:0 | 86 | daemon para pôr um portátil em modo de adormecimento durante a inatividade |
hdparm
|
V:178, I:335 | 256 | optimização do acesso ao disco rígido (veja Secção 9.6.9, “Optimização do disco rígido”) |
smartmontools
|
V:207, I:250 | 2358 | controlar e monitorizar sistemas de armazenamento a usar S.M.A.R.T. |
setserial
|
V:4, I:6 | 103 | colecção de ferramentas para gestão de portas série |
memtest86+
|
V:1, I:21 | 12711 | colecção de ferramentas para gestão de hardware de memória |
scsitools
|
V:0, I:2 | 346 | colecção de ferramentas para gestão de hardware SCSI |
setcd
|
V:0, I:0 | 37 | optimização de acesso a drives de discos compactos |
big-cursor
|
I:0 | 26 | cursores de rato maiores para o X |
Aqui, o ACPI é uma estrutura mais recente para o sistema de gestão de energia que o APM.
Dica | |
---|---|
O escalar de frequências da CPU em sistemas modernos é governado por módulos
do kernel como o |
O seguinte define a hora do sistema e hardware para MM/DD hh:mm, AAAA.
# date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show
A horas são mostradas normalmente na hora local no sistema Debian mas o hardware e a hora do sistema geralmente usam UTC(GMT).
If the hardware time is set to UTC, change the setting to
"UTC=yes
" in the "/etc/default/rcS
".
O seguinte reconfigura a zona horária usada pelo sistema Debian.
# dpkg-reconfigure tzdata
Se desejar atualizar a hora do sistema através da rede, considere usar o
serviço NTP como pacotes como os
ntp
, ntpdate
e
chrony
.
Dica | |
---|---|
Sob systemd, use
|
Veja o seguinte.
O pacote ntp-doc
Dica | |
---|---|
O |
Existem vários componentes para configurar a consola de caracteres e as
funcionalidades do sistema ncurses
(3).
O ficheiro "/etc/terminfo/*/*
"
(terminfo
(5))
A variável de ambiente "$TERM
"
(term
(7))
setterm
(1), stty
(1),
tic
(1) e toe
(1)
Se a entrada terminfo
para o xterm
não
funcionar com um xterm
não Debian, mude o seu tipo e
terminal, "$TERM
", de "xterm
" para uma
das versões de funcionalidades limitadas como o
"xterm-r6
" quando iniciar sessão num sistema Debian
remotamente. Veja "/usr/share/doc/libncurses5/FAQ
" para
mais. O "dumb
" é o denominador comum mais baixo para
"$TERM
".
As drivers para placas de som para o Linux atual são disponibilizadas pelo Advanced Linux Sound Architecture (ALSA). ALSA disponibiliza um modo de emulação para o anterior Open Sound System (OSS) para compatibilidade.
Application softwares may be configured not only to access sound devices directly but also to access them via some standardized sound server system. Currently, PulseAudio, JACK, and PipeWire are used as sound server system. See Debian wiki page on Sound for the latest situation.
Existe normalmente um motor de som comum para cada ambiente de trabalho popular. Cada motor de som usado pela aplicação pode escolher ligar a diferentes servidores de som.
Dica | |
---|---|
Use " |
Dica | |
---|---|
Se não conseguir obter som, os seus altifalantes podem estar ligados a uma
saída silenciada (mute). Os sistemas de som modernos têm muitas saídas. O
|
Tabela 9.15. Lista de pacotes de som
Para desativar o protector de ecrã, utilize os seguintes comandos.
Tabela 9.16. Lista de comandos para desativar o protector de ecrã
ambiente | comando |
---|---|
A consola do Linux | setterm -powersave off |
O X Window (desativar o protector de ecrã) | xset s off |
O X Window (desativar o dpms) | xset -dpms |
O X Window (GUI de configuração do protector de ecrã) | xscreensaver-command -prefs |
Pode-se sempre desligar o altifalante do PC para desativar os
apitos. Remover o módulo de kernel pcspkr
faz isso por
si.
O seguinte previne o programa readline
(3) usado pelo
bash
(1) de apitar quando encontra um caractere de alerta
(ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
Existem 2 recursos disponíveis para obter o estado da utilização de memória.
A mensagem de arranque do kernel em "/var/log/dmesg
"
contém o tamanho total exacto da memória disponível.
free
(1) e top
(1) mostram informação
sobre os recursos de memória no sistema em execução.
Aqui está um exemplo.
# 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
Pode estar a pensar "o dmesg fala-me em 990 MB livres e o free -k diz 320 MB livres. Faltam mais de 600 MB ...".
Não se preocupe com o grande tamanho de "used
" e o
pequeno tamanho de "free
" na linha
"Mem:
", mas leia a que está sob elas (675404 e 321780 no
exemplo em cima) e relaxe.
Para o meu MacBook com 1GB=1048576k de DRAM (o sistema de vídeo rouba alguma), vejo o seguinte.
Tabela 9.17. Lista dos tamanhos de memória reportados
relatório | tamanho |
---|---|
Tamanho total no dmesg | 1016784k = 1GB - 31792k |
Livre no dmesg | 990528k |
Total sob a shell | 997184k |
Livre sob a shell | 20256k (mas efectivamente 321780k) |
Uma manutenção pobre do sistema pode expor o seu sistema à exploração externa.
Para segurança do sistema e verificação de integridade, deve começar com o seguinte.
O pacote debsums
, veja debsums
(1) e
Secção 2.5.2, “Ficheiro "Release" de nível de topo e autenticidade:”.
O pacote chkrootkit
, veja
chkrootkit
(1).
A família de pacotes clamav
, veja
clamscan
(1) e freshclam
(1).
Tabela 9.18. Lista de ferramentas para segurança do sistema e verificação de integridade
pacote | popcon | tamanho | descrição |
---|---|---|---|
logcheck
|
V:6, I:7 | 110 | daemon para enviar as anomalias nos ficheiros de log do sistema ao administrador por mail |
debsums
|
V:5, I:35 | 98 | utilitário para verificar os pacotes instalados contra chaves de verificação MD5 |
chkrootkit
|
V:8, I:17 | 925 | detector de rootkit |
clamav
|
V:9, I:45 | 27455 | utilitário de anti-vírus para Unix - interface de linha de comandos |
tiger
|
V:1, I:2 | 7800 | relatar vulnerabilidades de segurança do sistema |
tripwire
|
V:1, I:2 | 5016 | verificador de integridade de ficheiros e diretórios |
john
|
V:1, I:9 | 471 | ferramenta activa de crack de palavras-passe |
aide
|
V:1, I:1 | 293 | Ambiente de Detecção de Intrusão Avançado - binário estático |
integrit
|
V:0, I:0 | 2659 | programa de verificação de integridade de ficheiros |
crack
|
V:0, I:1 | 149 | programa de adivinhação de palavra-passe |
Aqui está um script simples para verificar as típicas permissões de ficheiros escritas incorrectamente.
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
Cuidado | |
---|---|
Como o pacote |
Arrancar o seu sistema com live CDs de Linux ou CDs de instalação de debian em modo de recuperação torna fácil para si reconfigurar o armazenamento de dados no seu aparelho de arranque.
You may need to umount
(8) some devices manually from the
command line before operating on them if they are automatically mounted by
the GUI desktop system.
A utilização do espaço em disco pode ser avaliada por programas
disponibilizados pelos pacotes mount
,
coreutils
e xdu
:
mount
(8) reporta todos os sistemas de ficheiros montados
(= discos).
df
(1) reporta a utilização do espaço em disco para o
sistema de ficheiros.
du
(1) reporta a utilização do espaço em disco para a
árvore do diretório.
Dica | |
---|---|
Pode alimentar a saída de |
Para configuração de partições de
disco, apesar do fdisk
(8) ser considerado o
standard, o parted
(8) merece alguma atenção. "Dados de
particionamento do disco", "Tabela de partições", "Mapa de partições" e
"Etiqueta do disco" são todos sinónimos.
Older PCs use the classic Master Boot Record (MBR) scheme to hold disk partitioning data in the first sector, i.e., LBA sector 0 (512 bytes).
Recent PCs with Unified Extensible Firmware Interface (UEFI), including Intel-based Macs, use GUID Partition Table (GPT) scheme to hold disk partitioning data not in the first sector.
Apesar do fdisk
(8) ter sido o standard como ferramenta de
particionamento de disco, o parted
(8) está a
substituí-lo.
Tabela 9.19. Lista de pacotes de gestão de partições do disco
pacote | popcon | tamanho | descrição |
---|---|---|---|
util-linux
|
V:881, I:999 | 5283 | vários utilitários de sistema incluindo fdisk (8) e
cfdisk (8) |
parted
|
V:417, I:568 | 122 | GNU Parted programa de redimensionamento de partições do disco |
gparted
|
V:15, I:102 | 2175 | Editor de partições do GNOME baseado na libparted |
gdisk
|
V:338, I:511 | 885 | partition editor for the GPT/MBR hybrid disk |
kpartx
|
V:22, I:33 | 77 | programa para criar mapeamentos de aparelho para partições |
Cuidado | |
---|---|
Apesar do |
Nota | |
---|---|
De modo a mudar entre GPT e MBR, precisa de apagar os primeiros blocos de conteúdo
do disco directamente (veja Secção 9.8.6, “Limpar conteúdo de ficheiro”) e
usar " |
Although reconfiguration of your partition or activation order of removable storage media may yield different names for partitions, you can access them consistently. This is also helpful if you have multiple disks and your BIOS/UEFI doesn't give them consistent device names.
mount
(8) com a opção "-U
" pode montar
um aparelho de bloco a usar o UUID, em vez de
usar o nome de ficheiro dele tal como "/dev/sda3
".
"/etc/fstab
" (veja fstab
(5)) pode usar
UUID.
Os gestores de arranque (Secção 3.1.2, “Estágio 2: o gestor de arranque”) também podem usar UUID.
Dica | |
---|---|
Pode testar o UUID de um aparelho especial de
bloco com You can also probe UUID and other information with " |
LVM2 é um gestor de volumes lógicos para o kernel Linux. Com o LVM2, podem ser criadas partições de disco em volumes lógicos em vez de discos rijos físicos.
O LVM requer o seguinte.
suporte a device-mapper no kernel Linux (predefinido para os kernels Debian)
a biblioteca de suporte a device-mapper no espaço de utilizador (pacote
(libdevmapper*
)
as ferramentas LVM2 do espaço de utilizador (pacote lvm2
)
Por favor comece a aprender LVM2 a partir dos seguintes manuais.
lvm
(8): Bases do mecanismo LVM2 (lista de todos os
comandos LVM2)
lvm.conf
(5): Ficheiro de configuração para LVM2
lvs
(8): Reporta informação acerca de volumes lógicos
vgs
(8): Reporta informação acerca de grupos de volumes
pvs
(8): Reporta informação acerca de volumes físicos
Para o sistema de ficheiro ext4, o pacote
e2fsprogs
disponibiliza o seguinte.
mkfs.ext4
(8) para criar um novo sistema de ficheiros
ext4
fsck.ext4
(8) para verificar e reparar um sistema de
ficheiros ext4 existente
tune2fs
(8) para configurar o super-bloco do sistema de
ficheiros ext4
debugfs
(8) para depurar um sistema de ficheiros ext4 interativamente. (Era o comando
undel
para recuperar ficheiros apagados.)
Os comandos mkfs
(8) e fsck
(8) são
disponibilizados pelo pacote e2fsprogs
como frontends
para vários programas dependentes do sistema de ficheiros
(mkfs.fstype
e fsck.fstype
). Para o
sistema de ficheiros ext4 existem os
mkfs.ext4
(8) e o fsck.ext4
(8) (estão
ligados simbolicamente ao mke2fs
(8) and
e2fsck
(8)).
Estão disponíveis comandos semelhantes para cada sistema de ficheiros suportado pelo Linux.
Tabela 9.20. Lista de pacotes de gestão de sistemas de ficheiros
pacote | popcon | tamanho | descrição |
---|---|---|---|
e2fsprogs
|
V:767, I:999 | 1499 | utilitários para os sistemas de ficheiros ext2/ext3/ext4 |
btrfs-progs
|
V:44, I:72 | 5078 | utilitários para o sistema de ficheiros btrfs |
reiserfsprogs
|
V:12, I:25 | 473 | utilitários para o sistema de ficheiros Reiserfs |
zfsutils-linux
|
V:29, I:30 | 1762 | utilities for the OpenZFS filesystem |
dosfstools
|
V:196, I:541 | 315 | utilitários para o sistema de ficheiros FAT. (Microsoft: MS-DOS, Windows) |
exfatprogs
|
V:29, I:371 | 301 | utilities for the exFAT filesystem maintained by Samsung. |
exfat-fuse
|
V:5, I:120 | 73 | read/write exFAT filesystem (Microsoft) driver for FUSE. |
exfat-utils
|
V:4, I:106 | 231 | utilities for the exFAT filesystem maintained by the exfat-fuse author. |
xfsprogs
|
V:21, I:95 | 3476 | utilitários para o sistema de ficheiros XFS. (SGI: IRIX) |
ntfs-3g
|
V:197, I:513 | 1474 | read/write NTFS filesystem (Microsoft: Windows NT, …) driver for FUSE. |
jfsutils
|
V:0, I:8 | 1577 | utilitários para o sistema de ficheiros JFS. (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:2 | 1367 | utilitários para o sistema de ficheiros Reiser4 |
hfsprogs
|
V:0, I:4 | 394 | utilitários para os sistemas de ficheiros HFS e HFS Plus. (Apple: Mac OS) |
zerofree
|
V:5, I:131 | 25 | programa para zerar blocos livres de sistemas de ficheiros ext2/3/4 |
Dica | |
---|---|
O sistema de ficheiros Ext4 é o sistema de ficheiros predefinido para o sistema Linux e a utilização é fortemente recomendada a menos que tenha razões especificas para não o fazer. Btrfs status can be found at Debian wiki on btrfs and kernel.org wiki on btrfs. It is expected to be the next default filesystem after the ext4 filesystem. Algumas ferramentas permitem acesso a sistemas de ficheiros sem suporte do kernel do Linux (veja Secção 9.8.2, “Manipular ficheiros sem montar o disco”). |
O comando mkfs
(8) cria o sistema de ficheiros num sistema
Linux. O comando fsck
(8) disponibiliza a verificação de
integridade e reparação do sistema de ficheiros num sistema Linux.
Debian agora, por predefinição, não faz fsck
periódicos
após a criação do sistema de ficheiros.
Cuidado | |
---|---|
Geralmente não é seguro correr o |
Dica | |
---|---|
Pode executar o comando Verifique os ficheiros em " |
A configuração estática básica dos sistemas de ficheiros é dada por
"/etc/fstab
". Por exemplo,
«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
Dica | |
---|---|
O UUID (veja Secção 9.6.3, “Aceder a partição a usar UUID”) pode ser utilizado para
identificar um aparelho de bloco em vez de nomes vulgares de aparelhos de
bloco, tal como " |
Since Linux 2.6.30, the kernel defaults to the behavior provided by
"relatime
" option.
See fstab
(5) and mount
(8).
As características de um sistema de ficheiros podem ser optimizadas via o
super-bloco dele a usar o comando tune2fs
(8).
A execução de "sudo tune2fs -l /dev/hda1
" mostra o
conteúdo do super-bloco do sistema de ficheiros em
"/dev/hda1
".
A execução de "sudo tune2fs -c 50 /dev/hda1
" muda a
frequência das verificações do sistema de ficheiros (execução do
fsck
durante o arranque) para cada 50 arranques em
"/dev/hda1
".
A execução de "sudo tune2fs -j /dev/hda1
" adiciona
capacidade de journal ao sistema de ficheiros, isto é, conversão de ext2 para ext3 em
"/dev/hda1
". (Faça isto no sistema de ficheiros
desmontado.)
A execução de "sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1
" converte-o de ext3 para ext4 em
"/dev/hda1
". (Faça isto no sistema de ficheiros
desmontado.)
Atenção | |
---|---|
Por favor verifique o seu hardware e leia o manual do
|
Pode testar a velocidade de acesso ao disco de um disco rígido,
p.e. "/dev/hda
", por "hdparm -tT
/dev/hda
". Para algum disco rígido ligado com (E)IDE, pode
acelerá-lo com "hdparm -q -c3 -d1 -u1 -m16 /dev/hda
" ao
ativar o suporte a "(E)IDE 32-bit I/O", a ativar a flag "using_dma", a
definir a flag "interrupt-unmask" e a definir o "multiple 16 sector I/O"
(perigoso!).
Pode testar a funcionalidade de cache de escrita de um disco rígido, por
exemplo "/dev/sda
", com "hdparm -W
/dev/sda
". Pode desativar a funcionalidade de cache de escrita
dele com "hdparm -W 0 /dev/sda
".
Pode ser capaz de ler CDROMs muito pressionados em drives de CDROM modernas
de alta velocidade ao abrandá-la com "setcd -x 2
".
Solid state drive (SSD) is auto detected now.
Reduce unnecessary disk accesses to prevent disk wear out by mounting
"tmpfs
" on volatile data path in
/etc/fstab
.
Pode monitorizar e registar em log o seu disco rígido que é compatível com
SMART com o daemon
smartd
(8).
Instalar o pacote smartmontools
.
Identificar os seus discos rígidos ao listá-los com
df
(1).
Vamos assumir uma drive de disco rígido a ser monitorizada como
"/dev/hda
".
Verifique o resultado de "smartctl -a /dev/hda
" para ver
se a funcionalidade SMART está atualmente
ligada.
Se não, active-o com "smartctl -s on -a /dev/hda
".
Active o daemon smartd
(8) ao correr o seguinte.
retire a marca de comentário na linha "start_smartd=yes
"
no ficheiro "/etc/default/smartmontools
".
restart the smartd
(8) daemon by "sudo systemctl
restart smartmontools
".
Dica | |
---|---|
O daemon |
As aplicações criam ficheiros temporários normalmente sob o diretório de
armazenamento temporário "/tmp
". Se
"/tmp
" não disponibilizar espaço suficiente, pode
especificar um diretório de espaço temporário, a programas bem-comportados,
através da variável $TMPDIR
.
Para partições criadas em Logical Volume Manager (LVM) (funcionalidade do Linux) durante a instalação, elas podem ser redimensionadas facilmente ao concatenar extensões nelas ou ao truncar extensões delas sobre múltiplos aparelhos de armazenamento sem grandes reconfigurações do sistema.
Se tiver uma partição vazia (ex. "/dev/sdx
"), pode
formatá-la com mkfs.ext4
(1) e mount
(8)
para um diretório onde precise de mais espaço. (necessita copiar os
conteúdos originais.)
$ 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
Dica | |
---|---|
Pode em alternativa montar um ficheiro de imagem de disco vazio (veja Secção 9.7.5, “Criar um ficheiro de imagem de disco vazio”) como um aparelho de loop (veja Secção 9.7.3, “Montar o ficheiro de imagem de disco”). A utilização real do disco cresce com os dados reais armazenados. |
Se tiver um diretório vazio
(p.e. "/caminho/para/diretório-vazio
") com espaço
utilizável noutra partição, pode fazer mount(8) ao mesmo com a opção
"--bind
para um diretório (p.e.,
"diretório-de-trabalho
") onde necessite de mais espaço.
$ sudo mount --bind /path/to/emp-dir work-dir
Se tem espaço utilizável noutra partição
(ex. "/path/to/empty
") e
"/path/to/work
"), pode criar um diretório nela e
empilhá-lo no diretório antigo (ex, "/path/to/old
") onde
precisa de espaço a usar o OverlayFS para
Linux kernel 3.18 ou mais recente (Debian Stretch 9.0 ou posterior).
$ sudo mount -t overlay overlay \ -olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
Aqui, "/path/to/empty
" e
"/path/to/work
" devem estar na partição com
Escrita-Leitura activa a escrever em "/path/to/old
".
Cuidado | |
---|---|
Este é um método descontinuado. Alguns programas podem não funcionar bem com uma "ligação simbólica a um diretório". Em vez disso, use as opções de "montagem" descritas em cima. |
Se tem um diretório vazio
(ex. "/caminho/para/diretório-vazio
") noutra partição com
espaço utilizável, pode criar uma ligação simbólica ao diretório com o
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
Atenção | |
---|---|
Não utilize uma "ligação simbólica para um diretório" para diretórios
geridos pelo sistema, tais como o " |
Aqui discutimos manipulações da imagem do disco.
O ficheiro de imagem de disco, "disco.img
", de um
aparelho não montado, ex., a segunda drive SCSI ou serial ATA
"/dev/sdb
", pode ser feito a usar o
cp
(1) ou o dd
(1) com o seguinte.
# cp /dev/sdb disk.img # dd if=/dev/sdb of=disk.img
O master boot record (MBR) da
imagem de disco dos PC's tradicionais (veja Secção 9.6.2, “Configuração das partições do disco”) que reside no primeiro sector no
disco IDE primário pode ser feito a usar o dd
(1) com o
seguinte.
# 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
": O MBR com a tabela de partições
"mbr-nopart.img
": O MBR sem a tabela de partições
"mbr-part.img
": A tabela de partições apenas do MBR
Se tem um aparelho SCSI ou serial ATA como disco de arranque, substitua
"/dev/hda
" por "/dev/sda
".
Se está a criar uma imagem de uma partição de disco do disco original,
substitua "/dev/hda
" por "/dev/hda1
"
etc.
O ficheiro de imagem de disco "disk.img
" pode ser escrito
para um aparelho desmontado, ex. a segunda drive SCSI
"/dev/sdb
" como tamanho correspondente, com o seguinte.
# dd if=disk.img of=/dev/sdb
Se modo semelhante, o ficheiro de imagem de partição de disco,
"partition.img
" pode ser escrito para uma partição
desmontada, ex., a primeira partição do segundo disco SCSI
"/dev/sdb1
" com tamanho correspondente, com o seguinte.
# dd if=partition.img of=/dev/sdb1
A imagem de disco "partition.img
" que contém uma partição
única pode ser montada e desmontada ao usar o aparelho loop como a seguir.
# 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
Isto pode ser simplificado como a seguir.
# mkdir -p /mnt/loop0 # mount -t auto -o loop partition.img /mnt/loop0 ...hack...hack...hack # umount partition.img
Cada partição da imagem de disco "disk.img
" que contém
múltiplas partições pode ser montada a usar o aparelho 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
Alternativamente, podem-se fazer efeitos semelhantes ao usar os aparelhos
device mapper criados pelo
kpartx
(8) do pacote kpartx
como a
seguir.
# 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
Um ficheiro de imagem de disco, "disk.img
" pode ser limpo
de todos os ficheiros removidos numa imagem limpa
"new.img
" com o seguinte.
# 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
Se o "disk.img
" está em ext2, ext3 ou ext4, você também
pode usar o zerofree
(8) do pacote
zerofree
como a seguir.
# losetup --show -f disk.img /dev/loop0 # zerofree /dev/loop0 # cp --sparse=always disk.img new.img # losetup -d /dev/loop0
A imagem de disco vazia "disk.img
" que pode crescer até
aos 5GiB pode ser feita a usar o dd
(1) como a seguir.
$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G
Instead of using dd
(1), specialized
fallocate
(8) may be used here.
Pode criar um sistema de ficheiros ext4 nesta imagem de disco
"disk.img
" a usar o aparelho
loop como a seguir.
# 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
", o tamanho de ficheiro dele é 5.0 Gb e a
utilização real do disco dele é apenas 83 Mb. Esta discrepância é possível
porque o ext4 pode manter o ficheiro sparse.
Dica | |
---|---|
A utilização de disco real do ficheiro sparse cresce com os dados que são escritos nele. |
A usar uma operação semelhante em aparelhos criados pelo aparelho loop ou o mapeador de aparelhos como Secção 9.7.3, “Montar o ficheiro de imagem de disco”, pode particionar esta imagem de
disco "disk.img
" a usar o parted
(8) ou
o fdisk
(8) e pode criar um sistema de ficheiros nela a
usar mkfs.ext4
(8), mkswap
(8), etc.
O ficheiro de imagem ISO9660,
"cd.iso
", a partir da árvore de diretórios fonte em
"source_diretory
" pode ser feito a usar o
genisoimage
(1) disponibilizado pelo cdrkit com o seguinte.
# genisoimage -r -J -T -V volume_id -o cd.iso source_directory
De modo semelhante, o ficheiro de imagem ISO9660 de arranque,
"cdboot.iso
", pode ser feito a partir do
instalador-debian
como árvore de diretórios em
"source_diretory
" com o seguinte.
# 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
Aqui é usado para arranque o boot loader Isolinux (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”).
Pode calcular o valor md5sum e fazer a imagem ISO9660 directamente a partir do aparelho CD-ROM como a seguir.
$ 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
Atenção | |
---|---|
Tem de ter o cuidado de evitar o bug de leitura antecipada do sistema de ficheiros ISO9660 do Linux como em cima para obter o resultado correcto. |
Dica | |
---|---|
Um DVD é apenas um CD grande para o |
Pode procurar um aparelho utilizável com o seguinte.
# wodim --devices
Então o CD-R vazio é inserido na drive de CD e o ficheiro de imagem ISO9660,
"cd.iso
" é escrito neste aparelho,
ex. "/dev/hda
", a usar o wodim
(1) com
o seguinte.
# wodim -v -eject dev=/dev/hda cd.iso
Se for usado um CD-RW em vez de um CD-R, faça antes o seguinte.
# wodim -v -eject blank=fast dev=/dev/hda cd.iso
Dica | |
---|---|
Se o seu ambiente montar CDs automaticamente, desmonte-o com " |
Se "cd.iso
" conter uma imagem ISO9660, então o seguinte
monta-o manualmente em "/cdrom
".
# mount -t iso9660 -o ro,loop cd.iso /cdrom
Dica | |
---|---|
Os sistemas de ambiente de trabalho modernos podem montar medias amovíveis, tais como um CD formatado em ISO9660, automaticamente (veja Secção 10.1.7, “Aparelho de armazenamento amovível”). |
Aqui, discutimos manipulação directa de dados binários em meios de armazenamento.
o método de visualização mais básico de dados binários é usar o comando
"od -t x1
".
Tabela 9.21. Lista de pacote para ver e editar dados binários
pacote | popcon | tamanho | descrição |
---|---|---|---|
coreutils
|
V:880, I:999 | 18307 | pacote básico que tem od (1) para despejar ficheiros (HEX,
ASCII, OCTAL, …) |
bsdmainutils
|
V:11, I:315 | 17 | pacote utilitário que tem hd (1) para despejar ficheiros
(HEX, ASCII, OCTAL, …) |
hexedit
|
V:0, I:9 | 73 | editor binário e visualizador (HEX, ASCII) |
bless
|
V:0, I:2 | 924 | editor hexadecimal cheiro de funcionalidades (GNOME) |
okteta
|
V:1, I:12 | 1585 | editor hexadecimal cheiro de funcionalidades (KDE4) |
ncurses-hexedit
|
V:0, I:1 | 130 | editor binário e visualizador (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:0 | 137 | editor binário e visualizador (HEX, ASCII, EBCDIC, OCTAL, …) |
Dica | |
---|---|
HEX é usado como um acrónimo para o formato hexadecimal com radix 16. OCTAL é para formato octal com radix 8. ASCII é para American Standard Code for Information Interchange, isto é, código de texto Inglês normal. EBCDIC é para Extended Binary Coded Decimal Interchange Code usado em sistemas operativos com infraestrutura da IBM. |
Existem ferramentas para ler e escrever ficheiros sem montar o disco.
Os sistemas RAID por software oferecidos pelo kernel Linux oferecem redundância de dados ao nível do sistema de ficheiros do kernel, para se conseguir altos níveis de fiabilidade de armazenamento.
Também existem ferramentas para adicionar redundância a ficheiros ao nível de programa aplicação, para se conseguir altos níveis de fiabilidade de armazenamento.
Tabela 9.23. Lista de ferramentas para adicionar redundância de dados a ficheiros
pacote | popcon | tamanho | descrição |
---|---|---|---|
par2
|
V:9, I:94 | 268 | Parity Archive Volume Set, para verificação e reparação de ficheiros |
dvdisaster
|
V:0, I:1 | 1422 | protecção de dados contra percas/riscos/envelhecimento para medias CD/DVD |
dvbackup
|
V:0, I:0 | 413 | ferramenta de backup que usa câmaras de filmar MiniDV (a disponibilizar
rsbep (1)) |
Existem ferramentas para recuperação de ficheiros e dados e análise forense.
Tabela 9.24. Lista de pacotes para recuperação de ficheiros e dados e análise forense
pacote | popcon | tamanho | descrição |
---|---|---|---|
testdisk
|
V:2, I:28 | 1413 | utilitários para sondagem de partições e recuperação de discos |
magicrescue
|
V:0, I:2 | 255 | utilitário para recuperar ficheiros ao procurar por bytes mágicos |
scalpel
|
V:0, I:3 | 89 | frugal, entalhador de ficheiros de alta performance |
myrescue
|
V:0, I:2 | 83 | recuperar dados de discos rígidos danificados |
extundelete
|
V:0, I:8 | 147 | utilitários para recuperar ficheiros apagados no sistema de ficheiros ext3/4 |
ext4magic
|
V:0, I:4 | 233 | utilitários para recuperar ficheiros apagados no sistema de ficheiros ext3/4 |
ext3grep
|
V:0, I:2 | 293 | ferramenta para ajudar a recuperar ficheiros apagados no sistema de ficheiros ext3 |
scrounge-ntfs
|
V:0, I:2 | 50 | programa de recuperação de dados para sistemas de ficheiros NTFS |
gzrt
|
V:0, I:0 | 33 | conjunto de ferramentas de recuperação gzip |
sleuthkit
|
V:3, I:24 | 1671 | ferramentas para análise forense. (Sleuthkit) |
autopsy
|
V:0, I:1 | 1026 | interface gráfica para o SleuthKit |
foremost
|
V:0, I:5 | 102 | aplicação forense para recuperar dados |
guymager
|
V:0, I:0 | 1021 | ferramenta de imagem forense baseada em Qt |
dcfldd
|
V:0, I:3 | 114 | versão melhorada do dd para forenses e segurança |
Dica | |
---|---|
Pode recuperar ficheiros apagados no sistema de ficheiros ext2 a usar os
comandos |
Quando os dados são muito grandes para fazer backup num ficheiro único, pode fazer backup ao conteúdo dele após dividi-lo em fatias de, por exemplo, 2000Mb e mais tarde fundir essas fatias de volta para o ficheiro original.
$ split -b 2000m large_file $ cat x* >large_file
Cuidado | |
---|---|
Por favor certifique-se que não tem nenhuns ficheiros que começam com
" |
De modo a limpar o conteúdo de um ficheiro como um ficheiro log, não use o
rm
(1) para apagar o ficheiro e depois crie um ficheiro
vazio, porque o ficheiro pode ainda estar a ser acedido no intervalo entre
comandos. O seguinte é o modo seguro de limpar o conteúdo do ficheiro.
$ :>file_to_be_cleared
Os seguintes comandos criam ficheiros dummy ou vazios.
$ 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
Deve encontrar os seguintes ficheiros.
"5kb.file
" é 5KB de zeros.
"7mb.file
" são 7MB de dados aleatórios.
"zero.file
" pode ser um ficheiro de 0 bytes. Se existir,
o mtime
dele é atualizado enquanto o conteúdo e tamanho
dele são mantidos.
"alwayszero.file
" é sempre um ficheiro de 0 bytes. Se
existir, o mtime
dele é atualizado e o conteúdo dele é
reposto.
Existem várias maneiras de apagar completamente os dados de um aparelho
inteiro tipo disco rígido, ex., pen de memória USB em
"/dev/sda
".
Cuidado | |
---|---|
Primeiro verifique a localização da sua pen de memória USB com o
|
Apagar todo o conteúdo do disco ao repor os dados a 0 com o seguinte.
# dd if=/dev/zero of=/dev/sda
Apagar tudo ao sobrescrever com dados aleatórios como a seguir.
# dd if=/dev/urandom of=/dev/sda
Apagar tudo muito eficientemente ao sobrescrever com dados aleatórios como a seguir.
# shred -v -n 1 /dev/sda
You may alternatively use badblocks
(8) with -t
random
option.
Como o dd
(1) está disponível a partir da shell de muitos
CDs de arranque de Linux como o CD de instalação de Debian, pode apagar
completamente o seu sistema instalado no disco rígido, por exemplo,
"/dev/hda
", "/dev/sda
", etc., ao
correr um comando de limpeza a partir de tal media de arranque.
A área não utilizada de um disco rígido (ou duma pen USB ), por exemplo
"/dev/sdb1
" pode ainda conter os próprios dados apagados
pois eles são apenas 'desligados' do sistema de ficheiros. Estes podem ser
limpos ao sobrescrever a área onde estão.
# 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
Atenção | |
---|---|
Normalmente isto é suficientemente bom para a sua pen de memória USB. Mas não é perfeito. A maioria das partes dos nomes de ficheiros apagados e os atributos deles podem ficar escondidos e permanecerem no sistema de ficheiros. |
Mesmo que tenha acidentalmente apagado um ficheiro, desde que esse ficheiro esteja ainda a ser usado por alguma aplicação (em modo de leitura ou escrita), é possível recuperar tal ficheiro.
Por exemplo, tente o seguinte:
$ 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
Execute em outro terminal (quando tem o pacote lsof
instalado) o seguinte.
$ 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
Os ficheiros com ligações rígidas podem ser identificados com "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
Ambos "baz
" e "foo
" têm contagens de
ligações de "2" (>1) a mostrar que têm ligaçõesrígidas. Os números de
inode deles são comuns "2738404". Isto
significa que são o mesmo ficheiro em ligação rígida. Se não encontrar
todos os ficheiros em ligação rígida por acaso, pode procurá-los pelo inode, ex., "2738404" com o seguinte.
# find /path/to/mount/point -xdev -inum 2738404
Com acesso físico ao seu PC, qualquer um pode facilmente ganhar privilégios de root e aceder a todos os ficheiros no seu PC (veja Secção 4.6.4, “Tornar a palavra-passe do root segura”). Isto significa que o sistema de palavra passe no login não pode proteger os seus dados privados e sensíveis contra um possível roubo do seu PC. Tem que implementar uma tecnologia de encriptação de dados para o fazer. Apesar do GNU privacy guard (veja Secção 10.3, “Infraestrutura da segurança de dados”) poder encriptar ficheiro,consome alguns esforços do utilizador.
Dm-crypt facilitates automatic data encryption via native Linux kernel modules with minimal user efforts using device-mapper.
Tabela 9.25. Lista de utilitários de encriptação de dados
pacote | popcon | tamanho | descrição |
---|---|---|---|
cryptsetup
|
V:19, I:79 | 417 | utilitários para aparelhos de bloco encriptados (dm-crypt / LUKS) |
cryptmount
|
V:2, I:3 | 231 | utilitários para aparelhos de bloco encriptados (dm-crypt / LUKS) com focagem na montagem/desmontagem por utilizadores normais |
fscrypt
|
V:0, I:1 | 5520 | utilities for Linux filesystem encryption (fscrypt) |
libpam-fscrypt
|
V:0, I:0 | 5519 | PAM module for Linux filesystem encryption (fscrypt) |
Cuidado | |
---|---|
Data encryption costs CPU time etc. Encrypted data becomes inaccessible if its password is lost. Please weigh its benefits and costs. |
Nota | |
---|---|
O sistema Debian inteiro pode ser instalado num disco encriptado pelo instalador debian (lenny ou mais recente) a usar dm-crypt/LUKS e initramfs. |
Dica | |
---|---|
Veja Secção 10.3, “Infraestrutura da segurança de dados” para utilitário de encriptação do espaço de utilizador: GNU Privacy Guard. |
Pode encriptar o conteúdo de aparelhos de massa amovíveis, por exemplo, uma
pen USB em "/dev/sdx
", a usar dm-crypt/LUKS. Simplesmente formate-a como a seguir.
# fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup open /dev/sdx1 secret ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2021-10-04 18:44 control lrwxrwxrwx 1 root root 7 2021-10-04 23:55 secret -> ../dm-0 # mkfs.vfat /dev/mapper/secret ... # cryptsetup close secret
Then, it can be mounted just like normal one on to
"/media/username/disk_label
", except
for asking password (see Secção 10.1.7, “Aparelho de armazenamento amovível”) under
modern desktop environment using the udisks2
package.
The difference is that every data written to it is encrypted. The password
entry may be automated using keyring (see Secção 10.3.6, “Password keyring”).
You may alternatively format media in different filesystem, e.g., ext4 with
"mkfs.ext4 /dev/mapper/sdx1
". If btrfs is used instead,
the udisks2-btrfs
package needs to be installed. For
these filesystems, the file ownership and permissions may need to be
configured.
For example, an encrypted disk partition created with dm-crypt/LUKS on
"/dev/sdc5
" by Debian Installer can be mounted onto
"/mnt
" as follows:
$ 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 distribui o kernel Linux organizado em módulos como pacotes para as arquitecturas suportadas.
If you are reading this documentation, you probably don't need to compile Linux kernel by yourself.
Muitas funcionalidades do Linux são configuráveis via parâmetros de kernel como a seguir.
Parâmetros de kernel iniciados pelo gestor de arranque (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”)
Parâmetros de kernel alterados pelo sysctl
(8) durante a
execução para os acessíveis via sysfs (veja Secção 1.2.12, “procfs e sysfs”)
Parâmetros de módulos definidos por argumentos do
modprobe
(8) quando um módulo é activado (veja Secção 9.7.3, “Montar o ficheiro de imagem de disco”)
See "The Linux kernel user’s and administrator’s guide » The kernel’s command-line parameters" for the detail.
A maioria dos programas normais não
precisa dos cabeçalhos do kernel e na verdade podem bloquear se os usar
directamente para compilação. Eles devem ser compilados contra os cabeçalhos
em "/usr/include/linux
" e
"/usr/include/asm
" disponibilizado pelo pacote
libc6-dev
(criado a partir do pacote fonte
glibc
) no sistema Debian.
Nota | |
---|---|
For compiling some kernel-specific programs such as the kernel modules from
the external source and the automounter daemon ( |
O Debian tem método próprio dele para compilar o kernel e os módulos relacionados.
Tabela 9.26. Lista de pacotes chave a serem instalados para a recompilação do kernel no sistema Debian
pacote | popcon | tamanho | descrição |
---|---|---|---|
build-essential
|
I:480 | 17 | pacotes essenciais para construir pacotes Debian: make ,
gcc , … |
bzip2
|
V:166, I:970 | 112 | utilitários de compressão e descompressão para ficheiros bz2 |
libncurses5-dev
|
I:71 | 6 | bibliotecas de programadores e documentos para ncurses |
git
|
V:351, I:549 | 46734 | git: sistema de controle de versão distribuído usado pelo kernel Linux |
fakeroot
|
V:29, I:486 | 224 | disponibiliza um ambiente de falso-root para construção de pacotes como não-root |
initramfs-tools
|
V:430, I:989 | 113 | ferramenta para construir uma initramfs (específico de Debian) |
dkms
|
V:74, I:162 | 196 | suporte de módulos de kernel dinâmicos (DKMS) (genérico) |
module-assistant
|
V:0, I:19 | 406 | helper tool to make module package (Debian specific) |
devscripts
|
V:6, I:40 | 2658 | scripts de ajuda para um responsável de pacote Debian (específico de Debian) |
Se usa initrd
em Secção 3.1.2, “Estágio 2: o gestor de arranque”, certifique-se de ler a informação
relacionada em initramfs-tools
(8),
update-initramfs
(8), mkinitramfs
(8) e
initramfs.conf
(5).
Atenção | |
---|---|
Não ponha ligações simbólicas aos diretórios na árvore fonte
(ex. " |
Nota | |
---|---|
Quando compilar o kernel Linux mais recente no sistema Debian
O suporte dinâmico a módulos do kernel (DKMS) é uma nova infraestrutura independente da distribuição desenhada para permitir que módulos de kernel individuais sejam atualizados sem se alterar todo o kernel. Isto é usado para a manutenção de módulos de fora-da-árvore. Isto também facilita a reconstrução de módulos quando se atualiza os kernels. |
Para compilar pacotes binários de kernels personalizados a partir do
código-fonte original, deve utilizar o alvo disponibilizado por
"deb-pkg
".
$ 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
Dica | |
---|---|
O pacote linux-source-version disponibiliza o
código-fonte do kernel Linux com os patches Debian como
" |
Para construir pacotes binários específicos a partir do pacote de
código-fonte do kernel Debian, deve utilizar os alvos
"binary-arch_architecture_featureset_flavour
"em
"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
Veja mais informação:
Wiki Debian: KernelFAQ
Wiki Debian: DebianKernel
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net
The hardware driver is the code running on the main CPUs of the target
system. Most hardware drivers are available as free software now and are
included in the normal Debian kernel packages in the main
area.
The firmware is the code or data loaded on the device attach to the target system (e.g., CPU microcode, rendering code running on GPU, or FPGA / CPLD data, …). Some firmware packages are available as free software but many firmware packages are not available as free software since they contain sourceless binary data. Installing these firmware data is essential for the device to function as expected.
The firmware data packages containing data loaded to the volatile memory on the target device.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free-firmware
)
firmware-linux-* (non-free-firmware
)
*-firmware (non-free-firmware
)
intel-microcode (non-free-firmware
)
amd64-microcode (non-free-firmware
)
The firmware update program packages which update data on the non-volatile memory on the target device.
fwupd (main
): Firmware
update daemon which downloads firmware data from Linux Vendor Firmware Service.
gnome-firmware (main
): GTK front end for fwupd
plasma-discover-backend-fwupd (main
): Qt front end for
fwupd
Please note that access to non-free-firmware
packages are
provided by the official installation media to offer functional installation
experience to the user since Debian 12 Bookworm. The
non-free-firmware
area is described in Secção 2.1.5, “Básico do arquivos Debian”.
Please also note that the firmware data downloaded by fwupd from Linux Vendor Firmware Service and
loaded to the running Linux kernel may be non-free
.
O uso de sistema virtualizado permite-nos correr várias instâncias do sistema simultâneamente num único hardware.
Dica | |
---|---|
There are several virtualization and emulation tool platforms.
Complete hardware emulation packages such as ones installed by the games-emulator metapackage
Mostly CPU level emulation with some I/O device emulations such as QEMU
Mostly CPU level virtualization with some I/O device emulations such as Kernel-based Virtual Machine (KVM)
OS level container virtualization with the kernel level support such as
LXC (Linux Containers), Docker, systemd-nspawn
(1), ...
OS level filesystem access virtualization with the system library call override on the file path such as chroot
OS level filesystem access virtualization with the system library call override on the file ownership such as fakeroot
OS API emulation such as Wine
Interpreter level virtualization with its executable selection and run-time library overrides such as virtualenv and venv for Python
The container virtualization uses Secção 4.7.5, “Linux security features” and is the backend technology of Secção 7.7, “Sandbox”.
Here are some packages to help you to setup the virtualized system.
Tabela 9.27. Lista de ferramentas de virtualização
pacote | popcon | tamanho | descrição |
---|---|---|---|
coreutils
|
V:880, I:999 | 18307 | GNU core utilities which contain chroot (8) |
systemd-container
|
V:53, I:61 | 1330 | systemd container/nspawn tools which contain
systemd-nspawn (1) |
schroot
|
V:5, I:7 | 2579 | ferramenta especializada para executar pacotes binários Debian em chroot |
sbuild
|
V:1, I:3 | 243 | ferramenta para construir pacotes binários Debian a partir de fontes Debian |
debootstrap
|
V:5, I:54 | 314 | bootstrap um sistema Debian básico (escrito em sh) |
cdebootstrap
|
V:0, I:1 | 115 | bootstrap um sistema Debian (escrito em C) |
cloud-image-utils
|
V:1, I:17 | 66 | cloud image management utilities |
cloud-guest-utils
|
V:3, I:13 | 71 | cloud guest utilities |
virt-manager
|
V:11, I:44 | 2296 | Virtual Machine Manager: aplicação de ambiente de trabalho para gerir máquinas virtuais |
libvirt-clients
|
V:46, I:65 | 1241 | programas para a biblioteca libvirt |
incus
|
V:0, I:0 | 56209 | Incus: system container and virtual machine manager (for Debian 13 "Trixie") |
lxd
|
V:0, I:0 | 52119 | LXD: system container and virtual machine manager (for Debian 12 "Bookworm") |
podman
|
V:14, I:16 | 41948 | podman: engine to run OCI-based containers in Pods |
podman-docker
|
V:0, I:0 | 249 | engine to run OCI-based containers in Pods - wrapper for docker |
docker.io
|
V:41, I:43 | 150003 | docker: Linux container runtime |
games-emulator
|
I:0 | 21 | games-emulator: Debian's emulators for games |
bochs
|
V:0, I:0 | 6956 | Bochs: emulador PC IA-32 |
qemu
|
I:14 | 97 | QEMU: emulador de processador genérico rápido |
qemu-system
|
I:22 | 66 | QEMU: binários de emulação de sistema completo |
qemu-user
|
V:1, I:6 | 93760 | QEMU: binários de emulação em modo de utilizador |
qemu-utils
|
V:12, I:106 | 10635 | QEMU: utilitários |
qemu-system-x86
|
V:33, I:91 | 58140 | KVM: virtualização completa em hardware x86 com virtualização assistida por hardware |
virtualbox
|
V:6, I:8 | 130868 | VirtualBox: solução de virtualização x86 em i386 e amd64 |
gnome-boxes
|
V:1, I:7 | 6691 | Boxes: Simple GNOME app to access virtual systems |
xen-tools
|
V:0, I:2 | 719 | ferramentas para gerir o servidor virtual XEN do debian |
wine
|
V:13, I:60 | 132 | Wine: Windows API Implementation (suite standard) |
dosbox
|
V:1, I:15 | 2696 | DOSBox: emulador x86 com gráficos Tandy/Herc/CGA/EGA/VGA/SVGA, som e DOS |
lxc
|
V:9, I:12 | 25890 | Linux containers user space tools |
python3-venv
|
I:88 | 6 | venv for creating virtual python environments (system library) |
python3-virtualenv
|
V:9, I:50 | 356 | virtualenv for creating isolated virtual python environments |
pipx
|
V:3, I:19 | 3324 | pipx for installing python applications in isolated environments |
Veja o artigo da Wikipedia Comparação de plataformas de máquinas virtuais para uma comparação detalhada das diferentes soluções de plataformas de virtualização.
Nota | |
---|---|
Os kernels predefinidos de Debian suportam KVM
desde |
O fluxo e trabalho típico para virtualização envolve vários passos.
Criar um sistema de ficheiros vazio (uma árvore de ficheiros ou uma imagem de disco).
A árvore de ficheiros pode ser criada por "mkdir -p
/path/to/chroot
".
A imagem de disco crua pode ser criada com o dd
(1) (veja
Secção 9.7.1, “Criar o ficheiro de imagem de disco” e Secção 9.7.5, “Criar um ficheiro de imagem de disco vazio”).
qemu-img
(1) pode ser usado para criar e converter
ficheiros de imagem de disco suportados pelo QEMU.
Os formatos de ficheiro cru e VMDK podem ser usados como formatos comuns entre ferramentas de virtualização.
Montar a imagem de disco com mount
(8) no sistema de
ficheiros (opcional).
Para o ficheiro de imagem de disco cru, monte-o como aparelho loop ou aparelho do device mapper (veja Secção 9.7.3, “Montar o ficheiro de imagem de disco”).
Para imagens de disco suportadas pelo QEMU, monte-as como aparelhos de bloco de rede (veja Secção 9.11.3, “Montar o ficheiro de imagem de disco virtual”).
Povoar o sistema de ficheiros alvo com os dados de sistema necessários.
O uso de programas como o debootstrap
e o
cdebootstrap
ajudam com este processo (veja Secção 9.11.4, “Sistema chroot”).
Use instaladores de SOs sob o emulador de sistema completo.
Correr um programa sob um ambiente virtualizado.
chroot disponibiliza um ambiente virtualizado básico suficiente para compilar programas, correr aplicações de consola e correr daemons nele.
QEMU oferece emulação de CPU de várias plataformas.
QEMU com KVM oferece emulação de sistema completo pela virtualização assistida a hardware.
VirtualBox oferece emulação de sistema completo em i386 ou amd64 com ou sem a virtualização assistida a hardware.
Para o ficheiro de imagem de disco raw, veja Secção 9.7, “A imagem de disco”.
Para outros ficheiros de imagem de disco virtual, pode usar o
qemu-nbd
para exportá-los pelo protocolo aparelho de bloco de rede e montá-los a
usar o módulo de kernel nbd
.
O qemu-nbd
(8) suporta os formatos de disco suportados
pelo QEMU: O QEMU
suporta os seguintes formatos de discos: raw, qcow2, qcow, vmdk,
vdi, bochs, cow
(modo-de-utilizador de Linux de copiar-ao-escrever), parallels, dmg, cloop, vpc, vvfat (VFAT
virtual) e aparelho_máquina.
O aparelho de bloco em rede pode
suportar partições do mesmo modo que o aparelho de
loop (veja Secção 9.7.3, “Montar o ficheiro de imagem de disco”). Pode
montar a primeira partição de "disk.img
" como a seguir.
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
Dica | |
---|---|
Pode exportar apenas a primeira partição de " |
If you wish to try a new Debian environment from a terminal console, I
recommend you to use chroot. This enables you
to run console applications of Debian unstable
and
testing
without usual risks associated and without
rebooting. chroot
(8) is the most basic way.
Cuidado | |
---|---|
Examples below assumes both parent system and chroot system share the same
|
Although you can manually create a chroot
(8) environment
using debootstrap
(1), this requires non-trivial efforts.
The sbuild package to build Debian packages
from source uses the chroot environment managed by the schroot package. It comes with helper script
sbuild-createchroot
(1). Let's learn how it works by
running it as follows.
$ sudo mkdir -p /srv/chroot $ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian ...
You see how debootstrap
(8) populates system data for
unstable
environment under
"/srv/chroot/unstable-amd64-sbuild
" for a minimal build
system.
You can login to this environment using schroot
(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild
You see how a system shell running under unstable
environment is created.
Nota | |
---|---|
The " |
Nota | |
---|---|
Some programs under chroot may require access to more files from the parent
system to function than |
Dica | |
---|---|
The |
Dica | |
---|---|
The |
If you wish to try a new GUI Desktop environment of any OS, I recommend you
to use QEMU or KVM on
a Debian stable
system to run multiple desktop systems
safely using virtualization. These
enable you to run any desktop applications including ones of Debian
unstable
and testing
without usual
risks associated with them and without rebooting.
Since pure QEMU is very slow, it is recommended to accelerate it with KVM when the host system supports it.
Virtual Machine Manager also
known as virt-manager
is a convenient GUI tool for
managing KVM virtual machines via libvirt.
A imagem de disco virtual "virtdisk.qcow2
" que contem um
sistema Debian para o QEMU pode ser criada a
usar o instalador de debian em
pequenos CDs como a seguir.
$ 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 ...
Dica | |
---|---|
Correr outras distribuições de GNU/Linux como o Ubuntu e o Fedora sob virtualização é um bom modo de aprender dicas de configuração. Também outros SOs proprietários podem correr muito bem sob esta virtualização do GNU/Linux. |
See more tips at Debian wiki: SystemVirtualization.
[2] More elaborate customization examples: "Vim Galore", "sensible.vim", ...
[3] vim-pathogen was popular.