Capítulo 9. Dicas do sistema

Índice

9.1. O programa screen
9.1.1. O cenário de utilização para o screen(1)
9.1.2. ligações de teclas para o comando screen
9.2. Gravação de dados e apresentação
9.2.1. O daemon de log
9.2.2. Analisador de relatório (Log)
9.2.3. Gravar as actividades da shell de modo limpo
9.2.4. Amostragem personalizada de dados em texto
9.2.5. Amostragem personalizada de hora e data
9.2.6. Echo de shell colorido
9.2.7. Comandos coloridos
9.2.8. Recordando as actividades do editor para repetições complexas
9.2.9. Gravar a imagem gráfica de uma aplicação X
9.2.10. Gravar alterações em ficheiros de configuração
9.3. Monitorizar, controlar e iniciar as actividades de programas
9.3.1. Temporizando um processo
9.3.2. A prioridade de agendamento
9.3.3. O comando ps
9.3.4. O comando top
9.3.5. Listar ficheiros abertos por um processo
9.3.6. Rastear as actividades de programas
9.3.7. Identificação de um processo usando ficheiros ou sockets
9.3.8. Repetir um comando com um intervalo constante
9.3.9. Repetindo um ciclo de comandos sobre ficheiros
9.3.10. Arrancar um programa a partir da GUI
9.3.11. Personalizar o programa a ser iniciado
9.3.12. Matar um processo
9.3.13. Agendar tarefas uma vez
9.3.14. Agendar tarefas regularmente
9.3.15. Tecla Alt-SysRq
9.4. Dicas de manutenção do sistema
9.4.1. Quem está no sistema?
9.4.2. Avisar todos
9.4.3. Identificação do hardware
9.4.4. Configuração do hardware
9.4.5. Hora do sistema e do hardware
9.4.6. A configuração do terminal
9.4.7. A infraestrutura de som
9.4.8. Desactivar o protector de ecrã (screensaver)
9.4.9. Desactivar os sons de beep
9.4.10. Utilização da memória
9.4.11. Segurança do sistema e verificação de integridade
9.5. Dicas de armazenamento de dados
9.5.1. Utilização do espaço em disco
9.5.2. Configuração das partições do disco
9.5.3. Aceder a partição usando UUID
9.5.4. LVM2
9.5.5. Configuração do sistema de ficheiros
9.5.6. Criação do sistema de ficheiros e verificação de integridade
9.5.7. Optimização do sistema de ficheiros por opções de montagem
9.5.8. Optimização do sistema de ficheiros através do superblock
9.5.9. Optimização do disco rígido
9.5.10. Optimização de disco de estado sólido (SSD)
9.5.11. Usar SMART para prever falhas no disco rígido
9.5.12. Especifique o directório de armazenamento temporário através de $TMPDIR
9.5.13. Expandir o espaço de armazenamento utilizável via LVM
9.5.14. Expandir o espaço de armazenamento utilizável ao montar outra partição
9.5.15. Expandir o espaço de armazenamento utilizável ao fazer bind-mount para outro directório
9.5.16. Expandir o espaço de armazenamento utilizável usando links simbólicos
9.5.17. Expandir o espaço de armazenamento utilizável usando aufs
9.6. A imagem de disco
9.6.1. Criando o ficheiro de imagem de disco
9.6.2. Escrever directamente no disco
9.6.3. Montar o ficheiro de imagem de disco
9.6.4. Limpar um ficheiro de imagem de disco
9.6.5. Criar um ficheiro de imagem de disco vazio
9.6.6. Criar o ficheiro de imagem ISO9660
9.6.7. Escrever directamente para o CD/DVD-R/RW
9.6.8. Montar o ficheiro de imagem ISO9660
9.7. Os dados binários
9.7.1. Ver e editar dados binários
9.7.2. Manipular ficheiros sem montar o disco
9.7.3. Redundância de dados
9.7.4. Recuperação de ficheiros e dados e análise forense
9.7.5. Dividir um ficheiro grande em ficheiros pequenos
9.7.6. Limpar conteúdo de ficheiro
9.7.7. Ficheiros dummy
9.7.8. apagar um disco rígido inteiro
9.7.9. Apagar uma área não utilizada do disco rígido
9.7.10. Recuperar ficheiros apagados mas ainda abertos
9.7.11. Procurar todos os hardlinks
9.7.12. Consumo invisível do espaço do disco
9.8. Dicas de encriptação de dados
9.8.1. Encriptação de discos amovíveis com dm-crypt/LUKS
9.8.2. Partição swap encriptada com dm-crypt
9.8.3. Encriptar ficheiros automaticamente com eCryptfs
9.8.4. Montar eCryptfs automaticamente
9.9. O kernel
9.9.1. Kernel Linux 2.6/3.x
9.9.2. Parâmetros do kernel
9.9.3. Cabeçalhos do kernel
9.9.4. Compilar o kernel e módulos relacionados
9.9.5. Compilar código-fonte do kernel: a recomendação da equipa do kernel de Debian
9.9.6. Controladores de hardware e firmware
9.10. Sistema virtualizado
9.10.1. Ferramentas de virtualização
9.10.2. Fluxo de trabalho da virtualização
9.10.3. Montar o ficheiro de imagem de disco virtual
9.10.4. Sistema chroot
9.10.5. Sistemas de vários ambientes de trabalho

Aqui, eu descrevo dicas básicas para configurar e gerir sistemas, a maioria a partir da consola.

O screen(1) é uma ferramenta muito útil para se aceder a sites remotos via ligações não confiáveis e intermitentes porque suporta interrupções nas ligações de rede.


Aqui estão analisadores de relatórios notáveis ("~Gsecurity::log-analyzer" no aptitude(8)).


[Nota] Nota

CRM114 disponibiliza uma infraestrutura de linguagem para escrever filtros fuzzy com a biblioteca de expressões regulares TRE. O seu uso popular é o filtro de spam de mail, mas pode ser usado como um analisador de registos.

O uso simples de script(1) (veja Secção 1.4.9, “Gravar as actividades da shell”) para gravar a actividade da shell produz um ficheiro com caracteres de controle. Isto pode ser evitado ao usar o col(1) como o seguinte.

$ script
Script iniciado, ficheiro é typescript

Faça o que tem a fazer ... e carregue em Ctrl-D para terminar o script.

$ col -bx <typescript >ficheiro_limpo
$ vim ficheiro_limpo

Se você não tem o script (por exemplo, durante o processo de arranque no initramfs), então use antes o seguinte.

$ sh -i 2>&1 | tee typescript
[Dica] Dica

Alguns emuladores de terminal x como o gnome-terminal podem gravar. Você pode desejar estender o buffer de linhas para ter deslocamento para trás.

[Dica] Dica

Você pode usar o screen(1) com "^A H" (veja Secção 9.1.2, “ligações de teclas para o comando screen”) para executar a gravação da consola.

[Dica] Dica

Você pode usar o emacs(1) com "M-x shell", "M-x eshell", ou "M-x term" para executar gravação da consola. Pode usar mais tarde "C-x C-w" para escrever o buffer num ficheiro.

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 objectivos 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 seu alias de modo paginador view(1), ":set hls" activa pesquisas destacadas.

A escrita da shell nos terminais mais modernos pode ser colorida usando 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}"

Você pode recordar as actividades do editor para repetições complexas.

Para o Vim, como se segue.

  • "qa": inicia a gravação de caracteres teclados no registo nomeado "a".

  • ... actividades do editor

  • "q": termina a gravação de caracteres escritos

  • "@a": executa o conteúdo do registo "a".

Para Emacs, como se segue

  • "C-x (": começa a definir uma macro de teclado.

  • ... actividades do editor

  • "C-x )": termina de definir uma macro de teclado.

  • "C-x e": executa uma macro de teclado.

As actividades de programas podem ser monitorizadas e controladas usando ferramentas especiais

Tabela 9.7. Lista de ferramentas para monitorizar e controlar as actividades de programas

pacote popcon tamanho descrição
coreutils V:862, I:999 13461 nice(1): correr um programa com prioridade de agendamento modificada
bsdutils V:810, I:999 185 renice(1): modifica a prioridade de agendamento de um processo em execução
procps V:822, I:999 651 "/proc" utilitários de sistema de ficheiros: ps(1), top(1), kill(1) , watch(1), …
psmisc V:645, I:963 721 "/proc" utilitários de sistema de ficheiros: killall(1), fuser(1), peekfd(1), pstree(1)
time V:61, I:892 78 time(1): corre um programa para reportar as utilizações de recursos do sistema no que respeita a tempo
sysstat V:74, I:94 1272 sar(1), iostat(1), mpstat(1), …: ferramentas de performance do sistema para Linux
isag V:0, I:7 129 Interactive System Activity Grapher para sysstat
lsof V:415, I:927 420 lsof(8): lista os ficheiro abertos por um processo em execução usando a opção "-p"
strace V:31, I:206 404 strace(1): rastreia chamadas e sinais do sistema
ltrace V:2, I:29 188 ltrace(1): rastreia chamadas de bibliotecas
xtrace V:0, I:1 336 xtrace(1): rastreia a comunicação entre cliente X11 e servidor
powertop V:7, I:224 629 powertop(1): informação sobre sistema de energia usado em portáteis baseados em Intel
cron V:859, I:998 300 corre processos de acordo com uma agenda nos bastidores a partir do daemon cron(8)
anacron V:453, I:553 163 agenda de comandos tipo cron para sistemas que não funcionam 24 horas por dia
at V:510, I:894 98 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 actividades de programas. Você 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 padrão 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 'sucesso'" \;

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 selecção de ficheiros” para utilizações mais avançadas do find(1).

Você pode configurar para iniciar um processo a partir da interface gráfica de utilizador (GUI).

Sob o ambiente de trabalho GNOME, um programa pode ser iniciado com o argumento apropriado ao fazer duplo-clique no ícone do lançador, ao arrastar-e-largar um ícone de ficheiro no ícone do lançador, ou pelo menu "Abrir com …" via clique direito num ícone de ficheiro. O KDE também faz o equivalente.

Aqui está um exemplo sob GNOME para criar um ícone de lançamento para o mc(1) arrancado em gnome-terminal(1).

Criar um programa executável "mc-term" com o seguinte.

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

Crie um lançador de ambiente de trabalho com o seguinte.

  1. Clique com o botão direito no espaço de trabalho para seleccionar "Criar Lançador …".

  2. Defina "Tipo" para "Aplicação".

  3. Defina "Nome" para "mc".

  4. Defina "Comando" para "mc-term %f"

  5. Clique "OK".

Crie uma associação de 'abrir com' como o seguinte.

  1. Clique com o botão direito na pasta para seleccionar "Abrir com Outra Aplicação …".

  2. Clique para abrir o diálogo "Use um comando personalizado" e insira "mc-term %f".

  3. Clique "Abrir"

[Dica] Dica

o lançador é um ficheiro em "~/Desktop" com a extensão ".desktop".

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

[Dica] Dica

update-mime(8) actualiza o ficheiro "/etc/mailcap" usando 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. Eu 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, você deve criar uma aplicação X como se segue 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).

Você 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, você pode corrê-los periodicamente a partir da conta root ao colocar 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".

A segurança contra falhas do sistema é disponibiliza pela opção de compilação do kernel "Magic SysRq key" (tecla SAK) a qual é agora a predefinição para o kernel Debian. Pressionar Alt-SysRq seguido de uma das seguintes teclas faz a magia de recuperar o controle do sistema.


A combinação de "Alt-SysRq s", "Alt-SysRq u", e "Alt-SysRq r" é boa para sair de situações realmente más.

Veja "/usr/share/doc/linux-doc-3.*/Documentation/sysrq.txt.gz".

[Cuidado] Cuidado

A funcionalidade Alt-SysRq pode ser considerada um risco de segurança ao permitir que os utilizadores tenham acesso a funções com privilégios de root. Colocar "echo 0 >/proc/sys/kernel/sysrq" em "/etc/rc.local" ou "kernel.sysrq = 0" em "/etc/sysctl.conf" desactiva a funcionalidade Alt-SysRq.

[Dica] Dica

A partir de um terminal SSH etc., você 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.

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 MMDDhhmmAAAA
# 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 UT(GMT).

Se a hora do hardware (BIOS) estiver definida para UT, mude a definição para "UTC=yes" em "/etc/default/rcS".

Se desejar actualizar a hora do sistema através da rede, considere usar o serviço NTP como pacotes como os ntp, ntpdate, e chrony.

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

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

As aplicações de software podem ser configuradas para não só aceder directamente a dispositivos de som, mas também para aceder a eles através de alguns sistemas servidores de som normalizados.


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.

Uma manutenção pobre do sistema pode expor o seu sistema a exploração externa.

Para segurança do sistema e verificação de integridade, você 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 dispositivo 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.

A maioria dos PCs usa o esquema clássico do Master Boot Record (MBR) para manter os dados de partições do disco no primeiro sector, isto é, LBA sector 0 (512 bytes).

[Nota] Nota

Alguns PCs novos com Extensible Firmware Interface (EFI), incluindo os Macs baseados em Intel, usam o esquema GUID Partition Table (GPT) para manter os dados de partições do disco não no primeiro 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 usando 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, você precisa de apagar os primeiros blocos de conteúdo do disco directamente (veja Secção 9.7.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

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 o mkfs.ext4(8) e o fsck.ext4(8) (estão ligados por hardlink aos 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.

[Dica] Dica

O sistema de ficheiros Btrfs está disponível no kernel Linux 3.2 (Debian wheezy). É esperado que seja o próximo sistema de ficheiros predefinido após o sistema de ficheiros ext4.

[Atenção] Atenção

Não deve utilizar o sistema de ficheiros Btrfs para os seus dados críticos antes de este obter a funcionalidade de fsck(8) do kernel ao vivo e suporte de gestores de arranque.

[Dica] Dica

Algumas ferramentas permitem acesso a sistemas de ficheiros sem suporte do kernel do Linux (veja Secção 9.7.2, “Manipular ficheiros sem montar o disco”).

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

Pode ser utilizado o UUID (veja Secção 9.5.3, “Aceder a partição usando UUID”) para identificar um dispositivo de bloco em vez do seu vulgar nome de dispositivo de bloco, tal como "/dev/sda1", "/dev/sda2".

A performance e características de um sistema de ficheiros pode ser optimizada pelas opções de montagem usadas (veja fstab(5) e mount(8)). As mais notáveis são as seguintes.

  • A opção "defaults" implica opções predefinidas: "rw,suid,dev,exec,auto,nouser,async". (geral)

  • A opção "noatime" ou "relatime" é muito eficaz para acelerar o acesso de leitura. (geral)

  • A opção "user" permite que um utilizador normal monte o sistema de ficheiros. Esta opção implica a combinação com a opção "noexec,nosuid,nodev". (geral, usada para CDs e disquetes)

  • A combinação de opções "noexec,nodev,nosuid" é usada para melhorar a segurança. (geral)

  • A opção "noauto" limita a montagem apenas por operação explícita. (geral)

  • A opção "data=journal" para ext3fs pode melhorar a integridade dos dados contra falhas de energia com alguma perda na velocidade de gravação.

[Dica] Dica

Você precisa de disponibilizar o parâmetro de boot do kernel (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”), ex. "rootflags=data=journal" para implantar um modo de journal não predefinido para o sistema de ficheiros raiz. Para lenny, o modo de journal predefinido é "rootflags=data=ordered". Para squeeze, é "rootflags=data=writeback".

As características de um sistema de ficheiros podem ser optimizadas via o seu super-bloco usando o comando tune2fs(8).

[Atenção] Atenção

A conversão do sistema de ficheiros do dispositivo de arranque para ext4 deve ser evitada até que o GRUB boot loader suporte bem o sistema de ficheiros ext4 e o Kernel Linux instalado seja mais recente que 2.6.30.

[Dica] Dica

Apesar do seu nome, o tune2fs(8) não funciona apenas no sistema de ficheiros ext2, mas também nos sistemas de ficheiros ext3 e ext4.

O desempenho e desgaste do disco de estado sólido (SSD) podem ser optimizados como se segue.

  • Utilize o kernel Linux mais recente. (>= 3.2)

  • Reduz as escritas em disco para acessos de leitura ao disco.

    • Defina a opção de mount "noatime" ou "relatime" em /etc/fstab.

  • Activar o comando TRIM

    • Defina a opção "discard", do mount, em /etc/fstab para os sistemas de ficheiros ext4, partição swap, Btrfs, etc. Veja fstab(5).

    • Para LVM defina a opção "discard em /etc/lvm/lvm.conf. Veja lvm.conf(5).

    • Para dm-crypt veja a opção "discard" em /etc/crypttab. Veja crypttab(5).

  • Activar o esquema de alocação de espaço em disco optimizado para SSD.

    • Para Btrfs defina a opção "ssd", de mount, em /etc/fstab.

  • Para computadores portáteis fazer o sistema esvaziar os dados para o disco a cada 10 minutos.

    • Defina a opção, de mount,"commit=600" em /etc/fstab. Veja fstab(5).

    • Faça o pm-utils utilizar o laptop-mode mesmo quando ligado à corrente. Veja Debian BTS #659260.

[Atenção] Atenção

Alterar o intervalo de esvaziamento dos normais 5 segundos para 10 minutos torna o seus dados vulneráveis a falhas de alimentação.

Você pode monitorizar e registar em log o seu disco rígido que é compatível com SMART com o daemon smartd(8).

  1. Activar 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á actualmente 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"

    • reinicie o daemon smartd(8) com "sudo /etc/init.d/smartmontools restart".

[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 dispositivos de armazenamento sem grandes reconfigurações do sistema.

Se você tem espaço utilizável noutra partição (ex. "/caminho/para/"), você pode criar um directório nela e empilhá-lo no directório onde precisa de espaço com o aufs.

$ sudo mv work-dir old-dir
$ sudo mkdir work-dir
$ sudo mkdir -p /path/to/emp-dir
$ sudo mount -t aufs -o br:/path/to/emp-dir:old-dir none work-dir
[Cuidado] Cuidado

O uso do aufs para armazenamento de dados a longo termo não é boa ideia porque está sob desenvolvimento e as alterações ao seu desenho podem introduzir problemas.

[Dica] Dica

De modo a usar o aufs, precisam de ser instalados o seu pacote de utilitário aufs-tools e o pacote de módulo de kernel para aufs como o aufs-modules-2.6-amd64.

[Dica] Dica

O aufs é usado para disponibilizar um sistema de ficheiros raiz com modo de escrita por muitos projectos modernos de live CD.

Aqui discutimos manipulações da imagem do disco.

O ficheiro de imagem de disco, "disco.img", de um dispositivo não montado, ex., a segunda drive SCSI "/dev/sdb", pode ser feito usando o cp(1) ou o dd(1) com o seguinte.

# cp /dev/sdb disco.img
# dd if=/dev/sdb of=disco.img

O master boot record (MBR) da imagem de disco dos PC's tradicionais (veja Secção 9.5.2, “Configuração das partições do disco”) que reside no primeiro sector no disco IDE primário pode ser feito usando 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

  • "part.img": A tabela de partições apenas do MBR

Se você tem um dispositivo SCSI (incluindo a nova drive serial ATA) como o disco de arranque, substitua "/dev/hda" por "/dev/sda".

Se você 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 dispositivo loop como se segue.

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

# 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 usando o dispositivo loop. Como o dispositivo loop não gere partições por predefinição, temos que o redefinir como se segue.

# 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 dispositivo 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 dispositivos device mapper criados pelo kpartx(8) do pacote kpartx como se segue.

# 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

Você também pode montar uma única partição de tal imagem de disco com o dispositivo loop usando 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 usando o dd(1) como se segue.

$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G

Você pode criar um sistema de ficheiros ext4 nesta imagem de disco "disk.img" usando o dispositivo loop como se segue.

# 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 seu tamanho de ficheiro é 5.0 Gb e a sua utilização real do disco é apenas 83 Mb. Esta discrepância é possível porque o ext4 ponde manter o ficheiro sparse.

[Dica] Dica

A utilização de disco real do ficheiro sparse cresce com os dados que são escritos nele.

Usando uma operação semelhante em dispositivos criados pelo dispositivo loop ou o mapeador de dispositivos como Secção 9.6.3, “Montar o ficheiro de imagem de disco”, você pode particionar esta imagem de disco "disk.img" usando o parted(8) ou o fdisk(8), e pode criar um sistema de ficheiros nela usando mkfs.ext4(8), mkswap(8), etc.

O ficheiro de imagem ISO9660, "cd.iso", a partir da árvore de directórios fonte em "source_directory" pode ser feito usando o genisoimage(1) disponibilizado pelo cdrkit com o seguinte.

#  genisoimage -r -J -T -V volume_id -o cd.iso directório_fonte

De modo semelhante, o ficheiro de imagem ISO9660 de arranque, "cdboot.iso", pode ser feito a partir do instalador-debian como árvore de directórios em "source_directory" 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 directório_fonte

Aqui é usado para arranque o boot loader Isolinux (veja Secção 3.1.2, “Estágio 2: o gestor de arranque”).

Você pode calcular o valor md5sum e fazer a imagem ISO9660 directamente a partir do dispositivo CD-ROM como se segue.

$ 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

Você 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.


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.7.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. Você 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 e eCryptfs facilitam a encriptação de dados automática nativamente através de módulos do kernel Linux com o mínimo de esforço do utilizador.


Dm-crypt é um sistema de ficheiros criptográfico que usa mapeador-de-dispositivo. O mapeador-de-dispositivo mapeia um dispositivo de bloco para outro.

eCryptfs é outro sistema de ficheiros criptográfico que usa sistema de ficheiros em pilha. Os sistemas de ficheiros em pilha empilham-se a si próprios no topo de um directório existente de um sistema de ficheiros montado.

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

Você pode encriptar o conteúdo de dispositivos de massa amovíveis, por exemplo, uma pen USB em "/dev/sdx", usando dm-crypt/LUKS. Simplesmente formate-a como se segue.

# badblocks -c 10240 -s -w -t random -v /dev/sdx
# fdisk /dev/sdx
... "n" "p" "1" "return" "return" "w"
# cryptsetup luksFormat /dev/sdx1
...
# cryptsetup luksOpen /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, “Dispositivo de armazenamento amovível”) sob ambientes de trabalho modernos como o GNOME usando gnome-mount(1). A diferença é que todos os dados escritos nela são encriptados. Você pode alternativamente formatar o meio num formato diferente, por exemplo, ext4 com "mkfs.ext4 /dev/sdx1".

[Nota] Nota

Se você é realmente paranóico pela segurança dos dados, pode precisar de sobrescrever várias vezes 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

Você pode activar a encriptação da partição swap usando 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
# /etc/init.d/cryptdisks restart
 ...
# swapon -a

Você pode encriptar ficheiros escritos sob "~/Private/" automaticamente usando eCryptfs e o pacote ecryptfs-utils.

  • Execute ecryptfs-setup-private(1) e configure "~/Private/" pelos seguintes avisos.

  • Active "~/Private/" ao executar ecryptfs-mount-private(1).

  • Move ficheiros de dados sensitivos para "~/Private/" e cria os links simbólicos necessários.

    • Candidatos: "~/.fetchmailrc", "~/.ssh/identity", "~/.ssh/id_rsa", "~/.ssh/id_dsa" e outros ficheiros com "go-rwx"

  • Mova directórios de dados sensíveis para um sub-directório em "~/Private/" e crie os links simbólicos necessários.

    • Candidatos: "~/.gnupg" e outros directórios com "go-rwx"

  • Crie um link simbólico de "~/Desktop/Private/" para "~/Private/" para facilitar as operações do ambiente de trabalho.

  • Desactive "~/Private/" ao executar ecryptfs-umount-private(1).

  • Active "~/Private/" ao emitir "ecryptfs-mount-private" quando necessitar de dados encriptados.

[Dica] Dica

Como o eCryptfs apenas encripta de modo selectivo os ficheiros sensíveis, o seu custo para o sistema é muito menor do que usar o dm-crypt no dispositivo de raiz inteiro ou "/home". Não precisa de nenhuns esforços de alocação de armazenamento no disco especial mas não podem manter em confidencial todos os meta-dados do sistema de ficheiros.

Se você usar a sua palavra-passe do login para embrulhar as chaves de encriptação, você pode automatizar a montagem do eCryptfs via PAM (Pluggable Authentication Modules).

Insira a seguinte linha mesmo antes de "pam_permit.so" em "/etc/pam.d/common-auth".

auth required pam_ecryptfs.so unwrap

Insira a seguinte linha mesmo na última linha em "/etc/pam.d/common-session".

session optional pam_ecryptfs.so unwrap

Insira a seguinte linha na primeira linha activa em "/etc/pam.d/common-password".

password required pam_ecryptfs.so

Isto é bastante conveniente.

[Atenção] Atenção

Erros de configuração do PAM podem bloqueá-lo fora do seu próprio sistema. Veja Capítulo 4, Autenticação.

[Cuidado] Cuidado

Se você usar a sua palavra-passe de login para embrulhar chaves de encriptação, os seus dados encriptados são tão seguros como a sua palavra-passe de login de utilizador (veja Secção 4.3, “Boa palavra-passe”). A menos que seja cuidadoso a configurar uma palavra-passe forte, os seus dados estão em risco quando alguém corre software de crackar palavras-passe após roubar o seu portátil (veja Secção 4.7.4, “Tornar a palavra-passe do root segura”).

Debian distribui o kernel Linux organizado em módulos como pacotes para as arquitecturas suportadas.

Existem algumas funcionalidades notáveis no kernel Linux 2.6/3.x comparado ao 2.4.

O impacto de versões de Linux 2.6.39 a Linux 3.0 não é acerca de grandes alterações tecnológicas mas acerca do 20º aniversário.

Muitas funcionalidades do Linux são configuráveis via parâmetros de kernel como se segue.

Veja "kernel-parameters.txt(.gz)" e outros documentos relacionados na documentação do kernel Linux ("/usr/share/doc/linux-doc-3.*/Documentation/filesystems/*") disponibilizados pelo pacote linux-doc-3.*.

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


Se você 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 coloque links simbólicos para os directó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.

[Nota] Nota

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 actualizados sem se alterar todo o kernel. Isto será aprovado para a manutenção de módulos de fora-da-árvore para squeeze. Isto também facilita a reconstrução de módulos quando actualiza os kernels.

O controlador de hardware é o código que corre no sistema alvo. A maioria dos controladores de hardware estão agora disponíveis como software livre e estão incluídos nos pacotes normais de kernel Debian na área main.

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

O firmware é o código ou dados carregados no dispositivo (e.g. CPU microcode, código de renderização na GPU, ou dados FPGA / CPLD, ...). Alguns pacotes de firmware estão disponíveis como software livre, mas muitos pacotes de firmware não estão disponíveis como software livre já que são compostos por dados binários sem código-fonte.

  • firmware-linux-free (main)

  • firmware-linux-nonfree (non-free)

  • firmware-linux-* (non-free)

  • firmware (non-free)

  • intel-microcode (non-free)

  • amd64-microcode (non-free)

Por favor note que os pacotes non-free e contrib não fazem parte do sistema Debian. A configuração de acesso para activar ou desactivar 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”.

O uso de sistema virtualizado permite-nos correr várias instâncias do sistema simultâneamente num único hardware.

Existem vários pacotes relacionados com sistemas de virtualização e emulação em Debian para além do simples chroot. Alguns pacotes também o ajudam a configurar tais sistemas.

Tabela 9.27. Lista de ferramentas de virtualização

pacote popcon tamanho descrição
schroot V:8, I:13 2430 ferramenta especializada para executar pacotes binários Debian em chroot
sbuild V:0, I:2 463 ferramenta para construir pacotes binários Debian a partir de fontes Debian
pbuilder V:3, I:22 996 construtor de pacotes pessoais para pacotes Debian
debootstrap V:10, I:80 227 bootstrap um sistema Debian básico (escrito em sh)
cdebootstrap V:1, I:8 66 bootstrap um sistema Debian (escrito em C)
rootstrap V:0, I:1 97 ferramenta para construir imagens de sistema de ficheiros de Linux completas
virt-manager V:7, I:24 6520 Virtual Machine Manager: aplicação de ambiente de trabalho para gerir máquinas virtuais
libvirt-bin V:34, I:52 10107 programas para a biblioteca libvirt
user-mode-linux V:0, I:2 28128 Modo-de-utilizador Linux (kernel)
bochs V:0, I:1 2969 Bochs: emulador PC IA-32
qemu I:56 532 QEMU: emulador de processador genérico rápido
qemu-system V:34, I:58 73 QEMU: binários de emulação de sistema completo
qemu-user V:5, I:56 40394 QEMU: binários de emulação em modo de utilizador
qemu-utils V:10, I:91 2210 QEMU: utilitários
qemu-kvm V:38, I:63 75 KVM: virtualização completa em hardware x86 com virtualização assistida por hardware
virtualbox V:50, I:62 48227 VirtualBox: solução de virtualização x86 em i386 e amd64
xen-tools V:1, I:11 618 ferramentas para gerir o servidor virtual XEN do debian
wine V:8, I:116 80 Wine: Windows API Implementation (suite standard)
dosbox V:4, I:22 2526 DOSBox: emulador x86 com gráficos Tandy/Herc/CGA/EGA/VGA/SVGA, som e DOS
dosemu V:1, I:7 4820 DOSEMU: O Emulador de DOS do Linux
vzctl V:5, I:7 872 OpenVZ solução de virtualização de servidor - ferramentas de controle
vzquota V:5, I:8 210 OpenVZ solução de virtualização de servidor - ferramentas de quotas
lxc V:2, I:8 648 Ferramentas de utilizador para Linux containers

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

Algumas funcionalidades descritas aqui apenas estão disponíveis em squeeze.

[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.6, “A imagem de disco”.

Para outros ficheiros de imagem de disco virtual, você pode usar o qemu-nbd para exportá-los usando o protocolo dispositivo de bloco de rede e montá-los usando 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 dispositivo_máquina.

O dispositivo de bloco em rede pode suportar partições do mesmo modo que o dispositivo de loop (veja Secção 9.6.3, “Montar o ficheiro de imagem de disco”). Você pode montar a primeira partição de "disk.img" como se segue.

# modprobe nbd max_part=16
# qemu-nbd -v -c /dev/nbd0 disk.img
...
# mkdir /mnt/part1
# mount /dev/nbd0p1 /mnt/part1
[Dica] Dica

Você pode exportar apenas a primeira partição de "disk.img" usando a opção "-P 1" para qemu-nbd(8).

chroot(8) oferece a maneira mais básica de correr diferentes instâncias do ambiente GNU/Linux num único sistema em simultâneo sem reiniciar.

[Cuidado] Cuidado

Os exemplos em baixo assumem que ambos os sistemas pai e chroot partilham a mesma arquitectura de CPU.

Você pode aprender a como configurar e usar chroot(8) ao correr o programa pbuilder(8) sob script(1) como se segue.

$ sudo mkdir /sid-root
$ sudo pbuilder --create --no-targz --debug --buildplace /sid-root

Você vê como debootstrap(8) ou cdebootstrap(1) povoam dados do sistema para ambiente sid sob "/sid-root".

[Dica] Dica

Estes debootstrap(8) ou cdebootstrap(1) são usados para instalar Debian pelo instalador Debian Installer. Estes também podem ser usados para instalar Debian num sistema sem usar um disco de instalação de Debian, mas em vez disso, a partir de outra distribuição de GNU/Linux.

$ sudo pbuilder --login --no-targz  --debug --buildplace /sid-root

Você pode ver como uma shell de sistema a correr sob ambiente sid é criada como o seguinte.

  1. Copiar configuração local ("/etc/hosts", "/etc/hostname", "/etc/resolv.conf")

  2. Montar o sistema de ficheiros "/proc"

  3. Montar o sistema de ficheiros "/dev/pts"

  4. Criar "/usr/sbin/policy-rc.d" o qual sempre existe com 101

  5. Corra "chroot /sid-root bin/bash -c 'exec -a -bash bin/bash'"

[Nota] Nota

Alguns programas sob chroot podem requerer acesso a mais ficheiros do sistema pai para funcionarem do que o pbuilder disponibiliza. Por exemplo, "/sys", "/etc/passwd", "/etc/group", "/var/run/utmp", "/var/log/wtmp", etc. podem precisar de ser montados em união ou copiados.

[Nota] Nota

O ficheiro "/usr/sbin/policy-rc.d" previne que programas daemon arranquem automaticamente no sistema Debian. Veja "/usr/share/doc/sysv-rc/README.policy-rc.d.gz".

[Dica] Dica

O objectivo original do pacote especializado chroot, pbuilder é construir um sistema chroot system e construir um pacote dentro do chroot. É um sistema ideal para usar para verificar se as dependências de compilação de um pacote estão correctas, e para certificar que dependências de compilação erradas e desnecessárias não existem no pacote resultante.

[Dica] Dica

De modo semelhante, o pacote schroot pode dar-lhe uma uma ideia de correr um sistema chroot i386 sob um sistema pai amd64.

Eu recomendo usar o QEMU ou o VirtualBox num sistema Debian stable para correr vários sistemas de ambiente de trabalho em segurança usando virtualização. Isto permite-lhe correr aplicações de ambiente de trabalho do Debian unstable e testing sem os riscos usuais associados a elas.

Como o QEMU puro é muito lento, é recomendado acelerá-lo com KVM quando o sistema da máquina o suporta.

A imagem de disco virtual "virtdisk.qcow2" que contem um sistema Debian para o QEMU pode ser criada usando o instalador de debian em pequenos CDs como se segue.

$ 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 Fedra 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.