Capítulo 9. Dicas do sistema

Índice

9.1. The console tips
9.1.1. Gravar as atividades da shell de modo limpo
9.1.2. O programa screen
9.1.3. Navigating around directories
9.1.4. Readline wrapper
9.2. Personalizar o vim
9.2.1. Customizing vim with internal features
9.2.2. Customizing vim with external packages
9.3. Gravação de dados e apresentação
9.3.1. O daemon de log
9.3.2. Analisador de relatório (Log)
9.3.3. Amostragem personalizada de dados em texto
9.3.4. Amostragem personalizada de hora e data
9.3.5. Echo de shell colorido
9.3.6. Comandos coloridos
9.3.7. Recordar as atividades do editor para repetições complexas
9.3.8. Gravar a imagem gráfica de uma aplicação X
9.3.9. Gravar alterações em ficheiros de configuração
9.4. Monitorizar, controlar e iniciar as atividades de programas
9.4.1. Temporizar um processo
9.4.2. A prioridade de agendamento
9.4.3. O comando ps
9.4.4. O comando top
9.4.5. Listar ficheiros abertos por um processo
9.4.6. Rastear as atividades de programas
9.4.7. Identificação de um processo a usar ficheiros ou sockets
9.4.8. Repetir um comando com um intervalo constante
9.4.9. Repetir um ciclo de comandos sobre ficheiros
9.4.10. Arrancar um programa a partir da GUI
9.4.11. Personalizar o programa a ser iniciado
9.4.12. Matar um processo
9.4.13. Agendar tarefas uma vez
9.4.14. Agendar tarefas regularmente
9.4.15. Tecla Alt-SysRq
9.5. Dicas de manutenção do sistema
9.5.1. Quem está no sistema?
9.5.2. Avisar todos
9.5.3. Identificação do hardware
9.5.4. Configuração do hardware
9.5.5. Hora do sistema e do hardware
9.5.6. A configuração do terminal
9.5.7. A infraestrutura de som
9.5.8. desativar o protector de ecrã (screensaver)
9.5.9. desativar os sons de beep
9.5.10. Utilização da memória
9.5.11. Segurança do sistema e verificação de integridade
9.6. Dicas de armazenamento de dados
9.6.1. Utilização do espaço em disco
9.6.2. Configuração das partições do disco
9.6.3. Aceder a partição a usar UUID
9.6.4. LVM2
9.6.5. Configuração do sistema de ficheiros
9.6.6. Criação do sistema de ficheiros e verificação de integridade
9.6.7. Optimização do sistema de ficheiros por opções de montagem
9.6.8. Optimização do sistema de ficheiros através do superblock
9.6.9. Optimização do disco rígido
9.6.10. Optimização de disco de estado sólido (SSD)
9.6.11. Usar SMART para prever falhas no disco rígido
9.6.12. Especifique o diretório de armazenamento temporário através de $TMPDIR
9.6.13. Expandir o espaço de armazenamento utilizável via LVM
9.6.14. Expandir o espaço de armazenamento utilizável ao montar outra partição
9.6.15. Expandir o espaço de armazenamento utilizável ao fazer bind-mount para outro diretório
9.6.16. Expansão do espaço de armazenamento utilizável ao fazer overlay-mounting para outro diretório
9.6.17. Expandir o espaço de armazenamento utilizável a usar ligações simbólicas
9.7. A imagem de disco
9.7.1. Criar o ficheiro de imagem de disco
9.7.2. Escrever directamente no disco
9.7.3. Montar o ficheiro de imagem de disco
9.7.4. Limpar um ficheiro de imagem de disco
9.7.5. Criar um ficheiro de imagem de disco vazio
9.7.6. Criar o ficheiro de imagem ISO9660
9.7.7. Escrever directamente ao CD/DVD-R/RW
9.7.8. Montar o ficheiro de imagem ISO9660
9.8. Os dados binários
9.8.1. Ver e editar dados binários
9.8.2. Manipular ficheiros sem montar o disco
9.8.3. Redundância de dados
9.8.4. Recuperação de ficheiros e dados e análise forense
9.8.5. Dividir um ficheiro grande em ficheiros pequenos
9.8.6. Limpar conteúdo de ficheiro
9.8.7. Ficheiros dummy
9.8.8. apagar um disco rígido inteiro
9.8.9. Apagar uma área não utilizada do disco rígido
9.8.10. Recuperar ficheiros apagados mas ainda abertos
9.8.11. Procurar todas as ligações rígidas
9.8.12. Consumo invisível do espaço do disco
9.9. Dicas de encriptação de dados
9.9.1. Encriptação de discos amovíveis com dm-crypt/LUKS
9.9.2. Partição swap encriptada com dm-crypt
9.9.3. Montar discos encriptados com dm-crypt/LUKS
9.10. O kernel
9.10.1. Parâmetros do kernel
9.10.2. Cabeçalhos do kernel
9.10.3. Compilar o kernel e módulos relacionados
9.10.4. Compilar código-fonte do kernel: a recomendação da equipa do kernel de Debian
9.10.5. Controladores de hardware e firmware
9.11. Sistema virtualizado
9.11.1. Virtualization and emulation tools
9.11.2. Fluxo de trabalho da virtualização
9.11.3. Montar o ficheiro de imagem de disco virtual
9.11.4. Sistema chroot
9.11.5. Sistemas de vários ambientes de trabalho

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.


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

  1. Faz login numa máquina remota.

  2. Arranca o screen numa consola única.

  3. Executa múltiplos programas na janela criada do screen com ^A c ("Ctrl-A" seguido de "c").

  4. Muda entre as múltiplas janelas do screen com ^A n ("Ctrl-A" seguido de "n").

  5. Subitamente precisa de abandonar o seu terminal, mas não quer perder o seu trabalho ativo a manter a ligação.

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

  7. Faz login de novo à mesma máquina remota (mesmo a partir de um terminal diferente).

  8. Inicia o screen como "screen -r".

  9. O screen magicamente reagrupa todas as janelas screen anteriores com todos os programas a funcionar activamente.

[Dica] Dica

Pode poupar despesas de ligação com o screen em ligações de rede medidas 'a metro' como as dial-up, porque pode deixar um processo ativo enquanto desligado e depois lhe re-ligar-se mais tarde quando ligar de novo.

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.


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
FZF_COMPLETION_PATH=/usr/share/doc/fzf/examples/completion.bash
if [ -f $FZF_COMPLETION_PATH ]; then
  . $FZF_COMPLETION_PATH
fi

For example:

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

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

After you learn basics of vim(1) through 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.

[Cuidado] Cuidado

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

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

These Ex-mode commands can be included in user's vimrc file, traditional "~/.vimrc" or git-friendly "~/.vim/vimrc". Here is a very simple example [2]:

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

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

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

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

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

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

  • Vim loads these packages on runtimepath during its initialization.

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

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

Interesting external plugin packages can be found:

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


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] Dica

Para o vim(1) e o aliás de modo paginador dele view(1), ":set hls" ativa pesquisas destacadas.

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}"

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.

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:901, I:999 17478 nice(1): correr um programa com prioridade de agendamento modificada
bsdutils V:708, I:999 394 renice(1): modifica a prioridade de agendamento de um processo em execução
procps V:742, I:999 1648 "/proc" utilitários de sistema de ficheiros: ps(1), top(1), kill(1) , watch(1), …
psmisc V:433, I:831 793 "/proc" utilitários de sistema de ficheiros: killall(1), fuser(1), peekfd(1), pstree(1)
time V:13, I:249 129 time(1): corre um programa para reportar as utilizações de recursos do sistema no que respeita a tempo
sysstat V:168, I:190 1923 sar(1), iostat(1), mpstat(1), …: ferramentas de performance do sistema para Linux
isag V:0, I:4 117 Interactive System Activity Grapher para sysstat
lsof V:393, I:944 451 lsof(8): lista os ficheiro abertos por um processo em execução a usar a opção "-p"
strace V:16, I:151 2367 strace(1): rastreia chamadas e sinais do sistema
ltrace V:1, I:22 363 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:8, I:204 662 powertop(1): informação sobre a utilização do sistema de energia
cron V:800, I:997 263 corre processos de acordo com uma agenda nos bastidores a partir do daemon cron(8)
anacron V:399, I:463 104 agenda de comandos tipo cron para sistemas que não funcionam 24 horas por dia
at V:154, I:278 161 at(1) ou batch(1): executam um trabalho a uma hora especificada ou abaixo de um certo nível de carga

[Dica] Dica

Os pacotes procps disponibilizam as bases de monitorizar, controlar e iniciar atividades de programas. Deve aprendê-las todas.

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

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] Dica

Pode ser criada uma entrada personalizada no menu da GUI ao adicionar um ficheiro *.desktop no diretório $HOME/.local/share/applications/.

[Dica] Dica

Se modo semelhante, se um ficheiro *.desktop for criado no diretório autostart sob esses diretórios base, o programa especificado no ficheiro *.desktop é executado automaticamente quando o ambiente de trabalho é iniciado. Veja Especificação de Arranque Automático de Aplicações do Ambiente de Trabalho.

[Dica] Dica

De modo semelhante, se um ficheiro *.desktop for criado no diretório $HOME/Desktop e o ambiente de trabalho estiver configurado para suportar funcionalidade de lançamento por ícones do ambiente de trabalho, o programa especificado nele é executado ao se clicar no ícone. Por favor note que o nome real do diretório $HOME/Desktop é dependente da localização. Veja xdg-user-dirs-update(1).

Alguns programas iniciam outros programas automaticamente. Aqui estão alguns pontos de controle para personalizar este processo.

[Dica] Dica

update-mime(8) atualiza o ficheiro "/etc/mailcap" a usar o ficheiro "/etc/mailcap.order" (veja mailcap.order(5)).

[Dica] Dica

O pacote debianutils disponibiliza sensible-browser(1), sensible-editor(1) e sensible-pager(1) que fazem decisões sensíveis sobre qual editor, paginador e explorador web chamar, respectivamente. Recomendo-lhe a leitura destes scripts de shell.

[Dica] Dica

De modo a correr uma aplicação de consola como o mutt sob o X como a sua aplicação preferida, deve criar uma aplicação X como a seguir e definir "/usr/local/bin/mutt-term" como a sua aplicação preferida a ser iniciada como descrito.

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

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 /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] Dica

Para o sistema que não corre continuamente, instale o pacote anacron para agendar comandos periódicos a intervalos especificados o mais próximo que os tempos de ligação de máquina permitem. Veja anacron(8) e anacrontab(5).

[Dica] Dica

Para scripts agendados de manutenção do sistema, pode executá-los periodicamente a partir da conta root ao pôr tais scripts em "/etc/cron.hourly/", "/etc/cron.daily/", "/etc/cron.weekly/", ou "/etc/cron.monthly/". Os tempos de execução destes scripts podem ser personalizados pelo "/etc/crontab" e "/etc/anacrontab".

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

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


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

[Dica] Dica

A partir de um terminal SSH etc., pode usar a funcionalidade Alt-SysRq ao escrever para o "/proc/sysrq-trigger". Por exemplo, "echo s > /proc/sysrq-trigger; echo u > /proc/sysrq-trigger" a partir do aviso da shell de root ssincroniza e umounts (desmonta) todos os sistemas de ficheiros montados.

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)

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.


Aqui, o ACPI é uma estrutura mais recente para o sistema de gestão de energia que o APM.

[Dica] Dica

O escalar de frequências da CPU em sistemas modernos é governado por módulos do kernel como o acpi_cpufreq.

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] Dica

Sob systemd, use systemd-timesyncd para a sincronização da hora com a rede. Veja systemd-timesyncd(8).

Veja o seguinte.

[Dica] Dica

O ntptrace(8) no pacote ntp pode rastrear uma cadeia de servidores NTP até à sua fonte principal.

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] Dica

Use "cat /dev/urandom > /dev/audio" ou speaker-test(1) para testar os altifalantes (^C para parar).

[Dica] 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 alsamixer(1) no pacote alsa-utils é útil para configurar as definições de volume e mute.


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.


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] Cuidado

Como o pacote debsums usa sumários de verificação MD5 armazenados localmente, não pode ser de total confiança como ferramenta de auditoria à segurança do sistema contra ataques maliciosos.

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.

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.


[Cuidado] Cuidado

Apesar do parted(8) afirmar também criar e redimensionar sistemas de ficheiros, é mais seguro fazer tais coisas a usar ferramentas especializadas e com melhor manutenção como as ferramentas mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), mkfs.ext4(8), …) e resize2fs(8).

[Nota] 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 "parted /dev/sdx mklabel gpt" ou "parted /dev/sdx mklabel msdos" para o definir. Por favor note que "msdos" é usado aqui para o MBR.

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.


[Dica] 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”).

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

  1. ativar a função SMART na BIOS.

  2. Instalar o pacote smartmontools.

  3. 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".

  4. 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".

  5. 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] Dica

O daemon smartd(8) pode ser personalizado com o ficheiro /etc/smartd.conf incluindo em como ser notificado dos avisos.

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

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.

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 -v -f partition.img
Loop device is /dev/loop0
# mkdir -p /mnt/loop0
# mount -t auto /dev/loop0 /mnt/loop0
...hack...hack...hack
# umount /dev/loop0
# losetup -d /dev/loop0

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. Como o aparelho loop não gere partições por predefinição, temos que o redefinir como a seguir.

# modinfo -p loop # verify kernel capability
max_part:Maximum number of partitions per loop device
max_loop:Maximum number of loop devices
# losetup -a # verify nothing using the loop device
# rmmod loop
# modprobe loop max_part=16

Agora, o aparelho loop pode lidar com 16 partições (máximo).

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

Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x452b6464

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

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
...
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2
...
...hack...hack...hack
# umount /dev/mapper/loop0p2
...
# kpartx -d /mnt/loop0
[Nota] Nota

Também pode montar uma única partição de tal imagem de disco com o aparelho loop a usar um offset para saltar o MBR etc. Mas isto é mais inclinado a erros.

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

Pode criar um sistema de ficheiros ext4 nesta imagem de disco "disk.img" a usar o aparelho loop como a seguir.

# losetup -f -v disk.img
Loop device is /dev/loop1
# mkfs.ext4 /dev/loop1
...hack...hack...hack
# losetup -d /dev/loop1
$ du  --apparent-size -h disk.img
5.0G  disk.img
$ du -h disk.img
83M disk.img

Para "disk.img", 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] 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] 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.

Aqui, discutimos manipulação directa de dados binários em meios de armazenamento.

Existem ferramentas para recuperação de ficheiros e dados e análise forense.


[Dica] Dica

Pode recuperar ficheiros apagados no sistema de ficheiros ext2 a usar os comandos list_deleted_inodes e undel de debugfs(8) no pacote e2fsprogs.

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.


[Cuidado] Cuidado

A encriptação de dados custa tempo da CPU e etc. Por favor pese os seus benefícios e custos.

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

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

Depois, pode ser montada tal como uma normal em "/media/etiqueta_do_disco", à excepção de pedir a palavra-passe (veja Secção 10.1.7, “Aparelho de armazenamento amovível”) sob ambientes de trabalho modernos como o GNOME a usar gnome-mount(1). A diferença é que todos os dados escritos nela são encriptados. Alternativamente pode formatar o meio num sistema de ficheiros diferente, por exemplo, ext4 com "mkfs.ext4 /dev/mapper/sdx1".

[Nota] Nota

Se é realmente paranóico pela segurança dos dados, pode precisar de sobrescrever várias vezes (o comando "badblocks" no exemplo em cima). No entanto esta operação irá consumir muito tempo.

Vamos assumir que o seu "/etc/fstab" original contém o seguinte.

/dev/sda7 swap sw 0 0

Pode ativar a encriptação da partição swap a usar o dm-crypt com o seguinte.

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

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

O Debian tem método próprio dele para compilar o kernel e os módulos relacionados.


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] Atenção

Não ponha ligações simbólicas aos diretórios na árvore fonte (ex. "/usr/src/linux*") a partir de "/usr/include/linux" e "/usr/include/asm" quando compilar a fonte do kernel Linux. (Alguns documentos antigos sugerem isto.)

[Nota] Nota

Quando compilar o kernel Linux mais recente no sistema Debian stable, pode ser necessário o uso das ferramentas backport mais recentes do Debian unstable.

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

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.

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

  • Controlador de GPU

    • Controlador de GPU Intel (main)

    • Controlador de GPU AMD/ATI (main)

    • Controlador de GPU NVIDIA (main nouveau e em non-free controladores binários, sem código fonte, suportados pelo fabricante.)

  • controlador de Softmodem

    • os pacotes martian-modem e sl-modem-dkms (non-free)

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

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

    • firmware-linux-free (main)

    • firmware-linux-nonfree (non-free)

    • firmware-linux-* (non-free)

    • firmware (non-free)

    • intel-microcode (non-free)

    • amd64-microcode (non-free)

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

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

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

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

Por favor note que os pacotes non-free e contrib não fazem parte do sistema Debian. A configuração de acesso para ativar ou desativar as áreas non-free e contrib é descrita em Secção 2.1.4, “Básico do arquivos Debian”. Deve estar ciente dos contras associados à utilização de pacotes non-free e contrib, conforme é descrito em Secção 2.1.5, “Debian é 100% software livre”.

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.

There are several virtualization and emulation tool platforms.

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

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

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

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

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

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

  • OS API emulation such as Wine

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

The container virtualization uses Secção 4.7.4, “Linux security features” and it is the backend technology of Secção 7.6, “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
schroot V:7, I:9 2708 ferramenta especializada para executar pacotes binários Debian em chroot
sbuild V:1, I:4 271 ferramenta para construir pacotes binários Debian a partir de fontes Debian
debootstrap V:5, I:62 298 bootstrap um sistema Debian básico (escrito em sh)
cdebootstrap V:0, I:2 116 bootstrap um sistema Debian (escrito em C)
virt-manager V:10, I:43 2298 Virtual Machine Manager: aplicação de ambiente de trabalho para gerir máquinas virtuais
libvirt-clients V:46, I:64 1130 programas para a biblioteca libvirt
games-emulator I:0 26 games-emulator: Debian's emulators for games
bochs V:0, I:1 7194 Bochs: emulador PC IA-32
qemu I:31 96 QEMU: emulador de processador genérico rápido
qemu-system I:21 97 QEMU: binários de emulação de sistema completo
qemu-user V:0, I:11 89683 QEMU: binários de emulação em modo de utilizador
qemu-utils V:11, I:108 6077 QEMU: utilitários
qemu-kvm V:8, I:55 107 KVM: virtualização completa em hardware x86 com virtualização assistida por hardware
virtualbox V:11, I:14 107018 VirtualBox: solução de virtualização x86 em i386 e amd64
xen-tools V:0, I:4 727 ferramentas para gerir o servidor virtual XEN do debian
wine V:16, I:76 191 Wine: Windows API Implementation (suite standard)
dosbox V:2, I:18 2702 DOSBox: emulador x86 com gráficos Tandy/Herc/CGA/EGA/VGA/SVGA, som e DOS
dosemu V:0, I:2 4891 DOSEMU: O Emulador de DOS do Linux
lxc V:11, I:14 18971 Ferramentas de utilizador para Linux containers
python3-venv V:2, I:50 6 venv for creating virtual python environments (system library)
python3-virtualenv V:9, I:64 410 virtualenv for creating isolated virtual python environments
python3-pipx I:0 NOT_FOUND pipx for installing python applications in isolated environments

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] Nota

Os kernels predefinidos de Debian suportam KVM desde lenny.

O fluxo e trabalho típico para virtualização envolve vários passos.

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] Dica

Pode exportar apenas a primeira partição de "disk.img" a usar a opção "-P 1" para qemu-nbd(8).

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

[Cuidado] Cuidado

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

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

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

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

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

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

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

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

[Nota] Nota

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

[Nota] Nota

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

[Dica] Dica

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

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

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

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 http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso
$ qemu-img create -f qcow2 virtdisk.qcow2 5G
$ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256
...

Veja mais dicas em Debian wiki: QEMU.

O VirtualBox vem com ferramentas GUI Qt e é bastante intuitivo. As suas ferramentas GUI e de linha de comandos estão explicadas em Manual do Utilizador do VirtualBox e Manual do Utilizador do VirtualBox (PDF).

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



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

[3] vim-pathogen was popular.