É inteligente para si como o administrador do sistema ter uma ideia como o sistema Debian é arranca e é configurado. Apesar dos detalhes exactos estarem nos ficheiros de código-fonte dos pacotes instalados e nas suas documentações, é um pouco exagerado para a maioria de nós.
Fiz o meu melhor para disponibilizar uma visão geral breve dos pontos chave do sistema Debian e a configuração dele para a sua referência, a basear-me em conhecimentos atuais e anteriores dos meus e de outros. Como o sistema Debian é um alvo em movimento, a situação sobre o sistema pode ter mudado. Antes da fazer quaisquer alterações ao sistema, deve consultar a documentação mais recente de cada pacote.
![]() |
Dica |
---|---|
bootup(7)
descreve o processo de arranque do sistema baseado no
|
![]() |
Dica |
---|---|
boot(7) descreve o processo de arranque do sistema baseado em UNIX System V Release 4. (Debian Antiga) |
O sistema do computador passa por várias fases de processos de arranque desde o ligar da energia até que oferece, ao utilizador, o sistema operativo (SO) totalmente funcional.
Para simplicidade, limito a discussão à plataforma PC típico com a instalação por omissão.
O processo típico de arranque é como um foguete de quatro etapas. Cada etapa do foguete entrega o controle do sistema à próxima etapa.
É claro que, estes podem ser configurados de modo diferente. Por exemplo, se compilou o seu próprio kernel, pode estar a saltar o passo com o mini sistema Debian. Portanto por favor não assuma que é este o caso para o seu sistema até que o verifique por si próprio.
![]() |
Nota |
---|---|
Para uma plataforma de PC não-legacy como o sistema SUN ou o Macintosh, a BIOS em ROM e o particionamento do disco podem ser bastante diferentes (Secção 9.5.2, “Configuração das partições do disco”). Por favor procure noutro lado a documentação específica da plataforma para tais casos. |
A BIOS é o 1ª etapa do processo de arranque que é iniciado com o evento de ligar a energia. A BIOS que reside na read only memory (ROM) é executada a partir de um endereço de memória particular no qual o contador de programa da CPU é inicializado pelo evento de ligar a energia.
Esta BIOS executa a inicialização básica do hardware (POST: power on self test) e entrega o controle do sistema ao próximo passo que disponibiliza. A BIOS é normalmente disponibilizada com o hardware.
O ecrã de arranque da BIOS geralmente indica que tecla(s) pressionar para entrar no ecrã de configuração da BIOS para configurar o comportamento da BIOS. As teclas populares são F1, F2, F10, Esc, Ins e Del. Se o seu ecrã de arranque da BIOS está escondido por um vistoso ecrã gráfico, pode pressionar algumas teclas como a Esc para o desativar. Estas teclas dependem fortemente do hardware.
A localização do hardware e prioridade do código iniciado pela BIOS pode ser selecionado no ecrã de configuração da BIOS. Tipicamente, os primeiros poucos sectores do primeiro aparelho selecionado encontrado (disco rígido, disquete, CD-ROM, ...) são carregados à memória e este código inicial é executado. Este código inicial pode ser um dos seguintes:
O código do gestor de arranque
O código de kernel do SO da idade da pedra como o FreeDOS
O código do kernel do SO de destino se ele couber neste pequeno espaço
Tipicamente, o sistema é arrancado a partir da partição especificada das partições do disco rígido principal. Os primeiros 2 sectores do disco rígido em PCs legacy contêm o master boot record (MBR). A informação de partições do disco incluindo a seleção de arranque é gravada no final deste MBR. O código do primeiro gestor de arranque executado pela BIOS ocupa o resto deste MBR.
O gestor de arranque é o 2º estágio do processo de arranque que é iniciado pela BIOS. Ele carrega a imagem de kernel do sistema e a imagem initrd na memória e passa-lhes o controle. Esta imagem initrd é a imagem do sistema de ficheiros raiz e o suporte dele depende do gestor de arranque utilizado.
O sistema Debian normalmente usa o kernel Linux como kernel predefinido do sistema. A imagem initrd para o kernel Linux 2.6/3.x atual é tecnicamente a initramfs (sistema de ficheiros de RAM inicial). A imagem básica initrd é um arquivo comprimido cpio de ficheiros no sistema de ficheiros raiz. O kernel pode atualizar micro código muito cedo durante o arranque antes de carregar esta imagem básica initrd. Isto é facilitado pela combinação da imagem initrd que é uma gota de micro código binário em formato cpio não comprimido seguido pela imagem básica initrd.
![]() |
Dica |
---|---|
Pode inspeccionar o conteúdo do ficheiro imagem initrd a utilizar
lsinitramfs(8)
e
unmkinitramfs(8)
do pacote |
A instalação predefinida do sistema Debian coloca código da primeira etapa do gestor de arranque GRUB no MBR para a plataforma PC. Existem muitos gestores de arranque e opções de configuração disponíveis.
Tabela 3.1. Lista de gestores de arranque
pacote | popcon | tamanho | initrd | gestor de arranque | descrição |
---|---|---|---|---|---|
grub-legacy | V:0, I:2 | 735 | Suportado | GRUB Legacy | É suficientemente inteligente para compreender partições de disco e sistemas de ficheiros como vfat, ext3, ... |
grub-pc | V:28, I:774 | 533 | Suportado | GRUB 2 | É suficientemente inteligente para compreender partições de disco e sistemas de ficheiros como vfat, ext4, ... (predefinição) |
grub-rescue-pc | V:0, I:1 | 6367 | Suportado | GRUB 2 | Isto são imagens de arranque de recuperação do GRUB 2 (CD ou disquete) (Versão PC/BIOS) |
lilo | V:0, I:2 | 697 | Suportado | Lilo | Isto baseia-se nas localizações de sectores de dados no disco rígido. (Antigo) |
syslinux | V:4, I:48 | 343 | Suportado | Isolinux | Isto compreende o sistema de ficheiros ISO9660. É utilizado pelo CD de arranque. |
syslinux | V:4, I:48 | 343 | Suportado | Syslinux | Isto compreende o sistema de ficheiros MSDOS (FAT). É utilizado pela disquete de arranque. |
loadlin | V:0, I:1 | 90 | Suportado | Loadlin | Novo sistema é iniciado a partir do sistema FreeDOS/MSDOS. |
mbr | V:0, I:7 | 50 | Não suportado | MBR por Neil Turton | Isto é software livre que substitui o MBR do MSDOS. Apenas compreende partições de disco. |
![]() |
Atenção |
---|---|
Não brinque com os gestores de arranque sem ter discos de arranque de
recuperação (caneta USB, CD ou disquete) criados a partir de imagens do
pacote |
Para o GRUB Legacy, o ficheiro de configuração do menu está localizado em
"/boot/grub/menu.lst
". Por exemplo, tem entradas como a
seguinte.
title Debian GNU/Linux root (hd0,2) kernel /vmlinuz root=/dev/hda3 ro initrd /initrd.img
Para o GRUB 2, o ficheiro de configuração do menu está localizado em
"/boot/grub/grub.cfg
". É gerado automaticamente pelo
"/usr/sbin/update-grub
" a utilizar modelos de
"/etc/grub.d/*
" e definições de
"/etc/default/grub
". Por exemplo, tem entradas como as a
seguir:
menuentry "Debian GNU/Linux" { set root=(hd0,3) linux /vmlinuz root=/dev/hda3 initrd /initrd.img }
Para estes exemplos, estes parâmetros do GRUB significam o seguinte.
Tabela 3.2. O significado dos parâmetros do GRUB
Parâmetro do GRUB | significado |
---|---|
root
|
utiliza a 3ª partição no disco primário ao defini-la como
"(hd0,2) " no GRUB Legacy ou como
"(hd0,3) " no GRUB 2
|
kernel
|
utiliza o kernel localizado em "/vmlinuz " com parâmetro
de kernel: "root=/dev/hda3 ro "
|
initrd
|
utiliza a imagem initrd/initramfs
localizada em "/initrd.img "
|
![]() |
Nota |
---|---|
O valor do número de partição utilizado pelo programa GRUB legacy é menos um que o normal usado pelo kernel Linux e ferramentas utilitárias. O programa GRUB 2 corrige este problema. |
![]() |
Dica |
---|---|
Pode ser utilizado o UUID (veja Secção 9.5.3, “Aceder a partição a usar UUID”) para identificar um aparelho
especial de bloco em vez do nome de ficheiro dele como
" |
![]() |
Dica |
---|---|
Se for usado o GRUB, o parâmetro de arranque do
kernel é definido em |
![]() |
Dica |
---|---|
Pode iniciar um gestor de arranque a partir de outro gestor de arranque a utilizar técnicas chamadas chain loading. |
Veja "info grub
" e
grub-install(8).
O mini-sistema Debian é o 3º estágio do processo de arranque que é iniciado pelo gestor de arranque. Corre o kernel do sistema com o sistema de ficheiros raiz dele na memória. Este é um estágio preparatório opcional do processo de arranque.
![]() |
Nota |
---|---|
O termo "mini-sistema Debian" é cunhado pelo autor para descrever este 3º estágio do processo de arranque para este documento. Este sistema é geralmente referido como o initrd ou sistema initramfs. É utilizado pelo Instalador de Debian um sistema semelhante em memória . |
O programa "/init
" é executado como o primeiro programa
neste sistema de ficheiros raiz em memória. É um programa que inicializa o
kernel no espaço de utilizador e entrega o controle ao próximo estágio. Este
mini-sistema Debian oferece flexibilidade ao processo de arranque tal como
adicionar módulos de kernel antes do processo de arranque principal ou
montar o sistema de ficheiros raiz como um encriptado.
O programa "/init
" é um programa de script de shell se a
initramfs for criada pelo initramfs-tools
.
Pode interromper esta parte do processo de arranque para obter a shell de
root ao fornecer "break=init
" etc. ao parâmetro de
arranque do kernel. Veja o script "/init
" para mais
condições de interrupção. Este ambiente shell é suficientemente sofisticado
para fazer uma boa inspecção do hardware da sua máquina.
Os comandos disponíveis neste mini-sistema Debian são versões reduzidas e disponibilizados principalmente por uma ferramenta GNU chamada busybox(1).
O programa "/init
" é um programa binário do
systemd
se a initramfs for criada pelo
dracut
.
Os comandos disponíveis neste mini-sistema Debian são versões reduzidas do ambiente systemd(1).
![]() |
Cuidado |
---|---|
Precisa de utilizar a opção " |
O sistema Debian normal é o 4º estágio do processo de arranque que é iniciado pelo mini-sistema Debian. O kernel do sistema para o mini-sistema Debian continua a correr nesse ambiente. O sistema de ficheiros raiz é mudado daquele na memória para o que está no sistema de ficheiros do disco rígido real.
O programa init é executado como o primeiro
programa com PID=1 para executar o processo de arranque principal de
arrancar muitos programas. O caminho de ficheiro predefinido ao programa
init é "/sbin/init
" mas pode ser alterado pelo parâmetro
de arranque do kernel como "init=/path/to/init_program
".
O programa de iniciação predefinido tem sido alterado:
Debian antes de squeeze
a iniciação de estilo SysV simples.
Debian wheezy
melhora a iniciação de estilo SysV ao
ordenar a sequência de arranque com cabeçalho LSB e a arrancar scripts de
arranque em paralelo.
Debian jessie
muda o init predefinido dele ao systemd para a inicialização em paralelo e gerida
por eventos.
![]() |
Dica |
---|---|
O comando de iniciação atual do seu sistema pode ser verificado pelo comando
" |
![]() |
Dica |
---|---|
" |
Tabela 3.3. Lista de utilitários de arranque para o sistema Debian
pacote | popcon | tamanho | descrição |
---|---|---|---|
systemd
|
V:810, I:916 | 15998 |
daemon de eventos baseado em
init(8)
para a concorrência (alternativa a sysvinit )
|
systemd-sysv
|
V:802, I:914 | 138 |
os manuais e ligações necessárias pelo systemd para
substituir o sysvinit
|
systemd-cron
|
V:1, I:1 | 143 | unidades do systemd para disponibilizar o daemon
cron e a funcionalidade anacron
|
init-system-helpers
|
V:675, I:930 | 131 |
ferramentas de ajuda para mudar entre sysvinit e
systemd
|
initscripts
|
V:91, I:323 | 176 | scripts para inicializar e desligar o sistema |
sysvinit-core
|
V:7, I:9 | 276 | utilitários de init(8) estilo System-V |
sysv-rc
|
V:183, I:335 | 81 | mecanismo de mudança de runlevel estilo System-V |
sysvinit-utils
|
V:494, I:999 | 79 | utilitários estilo System-V (startpar(8), bootlogd(8), …) |
lsb-base
|
V:881, I:999 | 49 | Linux Standard Base funcionalidade de script de init 3.2 |
insserv
|
V:210, I:330 | 150 | ferramenta para organizar a sequência de arranque a usar dependências dos scripts init.d LSB |
uswsusp
|
V:3, I:8 | 714 | ferramentas disponibilizadas pelo Linux para utilizar a suspensão de software no espaço de utilizador |
kexec-tools
|
V:1, I:8 | 278 | ferramenta kexec para re-arranques kexec(8) (re-arranque a quente) |
systemd-bootchart
|
V:0, I:1 | 128 | analisador de performance do processo de arranque |
bootchart2
|
V:0, I:0 | 94 | analisador de performance do processo de arranque |
pybootchartgui
|
V:0, I:0 | 177 | analisador de performance do processo de arranque (visualização) |
mingetty
|
V:0, I:3 | 38 | getty(8) apenas de consola |
mgetty
|
V:0, I:1 | 315 | substituto inteligente de modem getty(8) |
![]() |
Dica |
---|---|
Veja Debian wiki: BootProcessSpeedup para as dicas mais recentes em como acelerar o processo de arranque. |
Esta secção descreve como o sistema é arrancado pelo programa
systemd(1)
com PID=1
(i.e., processo init).
O processo init do systemd
espalha processos em paralelo
com base nos ficheiros de configuração de unit (veja
systemd.unit(5))
os quais são escritos em estilo declarativo em vez do estilo processual tipo
SysV. Estes são carregados a partir de um conjunto de localizações (veja
systemd-system.conf(5))
como a seguir:
"/lib/systemd/system
": Ficheiros de configuração
predefinidos do Sistema Operativo
"/etc/systemd/system
": ficheiros de configuração do
administrador do sistema que se sobrepõem aos ficheiros de configuração
predefinidos do Sistema Operativo
"/run/systemd/system
": ficheiros de configuração gerados
em run-time que se sobrepõem aos ficheiros de configuração instalados
As suas inter-dependências são especificadas pelas directivas
"Wants=
", "Requires=
",
"Before=
", "After=
", … (veja "MAPPING
OF UNIT PROPERTIES TO THEIR INVERSES" em
systemd.unit(5)).
Os controlos de recursos estão também definidos (veja
systemd.resource-control(5)).
O sufixo do ficheiro de configuração da unidade codifica os seus tipos como:
*.service descreve o processo controlado
e supervisionado pelo systemd
. Veja
systemd.service(5).
*.device descreve o aparelho exposto em sysfs(5) como uma árvore de aparelhos do udev(7). Veja systemd.device(5).
*.mount descreve o ponto de montagem do
sistema de ficheiros controlado e supervisionado pelo
systemd
. Veja
systemd.mount(5).
*.automount Descreve o ponto de montagem
automático do sistema de ficheiros controlado e supervisionado pelo
systemd
. Veja
systemd.automount(5).
*.swap descreve o aparelho ou ficheiro de
memória virtual (swap) controlado e supervisionado pelo
systemd
. Veja
systemd.swap(5).
*.path descreve o caminho monitorizado
pelo systemd
para activação baseada-no-caminho. Veja
systemd.path(5).
*.socket descreve o socket controlado e
supervisionado pelo systemd
para activação
baseada-em-socket. Veja
systemd.socket(5).
*.timer descreve o temporizador
controlado e supervisionado pelo systemd
para activação
baseada-em-temporização. Veja
systemd.timer(5).
*.slice gere recursos com cgroups(7). Veja systemd.slice(5).
*.scope é criado programaticamente a usar
as interfaces de barramento do systemd
para gerir um
conjunto de processos do sistema. Veja
systemd.scope(5).
*.target agrupa outros ficheiros de configuração de unit para criar o ponto de sincronização durante o arranque. Veja systemd.target(5).
Após o arranque do sistema (o, init), o processo systemd
tenta arrancar o "/lib/systemd/system/default.target
(que
normalmente é uma ligaö#ao simbólica para
"graphical.target
"). Primeiro, algumas unidades alvo
especiais (veja
systemd.special(7))
tais como "local-fs.target
",
"swap.target
" e "cryptsetup.target
"
são puxadas para montar os sistemas de ficheiros. Depois, outras unidades
alvo são também puxadas pelas dependências da unidade alvo. Para mais
detalhes. leia
bootup(7).
O systemd
oferece funcionalidades de compatibilidade
regressiva. Os scripts de arranque estilo SysV em
"/etc/init.d/rc[0123456S].d/[KS]<name>
" são ainda
analisados e
telinit(8)
é traduzido em pedidos activação de unidade do systemd.
![]() |
Cuidado |
---|---|
Os runlevel 2 a 4 emulados são todos direccionados por uma ligação simbólica
ao mesmo " |
O kernel mantém o nome-de-máquina do
sistema. A unidade do sistema arrancado por
systemd-hostnamed.service
define o nome de máquina do
sistema durante o arranque ao nome armazenado em
"/etc/hostname
". Este ficheiro deve conter apenas o nome de máquina do sistema e não um nome
de domínio totalmente qualificado.
Para escrever o nome de máquina atual corra hostname(1) sem argumentos.
As opções de montagem de sistemas de ficheiros de discos normais e de rede
são definidas em "/etc/fstab
". Veja
fstab(5)
e Secção 9.5.7, “Optimização do sistema de ficheiros por opções de montagem”.
A configuração do sistema de ficheiros encriptado é definida em
"/etc/crypttab
". Veja
crypttab(5)
A configuração do software RAID com
mdadm(8)
é definida em "/etc/mdadm/mdadm.conf
". Veja
mdadm.conf(5).
![]() |
Atenção |
---|---|
Após montar todos os sistemas de ficheiros, os ficheiros temporários em
" |
As interfaces de rede são tipicamente iniciadas em
"networking.service
" para a interface
lo
e "NetworkManager.service
" para as
outras interfaces em sistemas Debian modernos sob
systemd
.
Veja Capítulo 5, Configuração de rede para saber como os configurar.
As mensagens de erros do kernel mostradas na consola podem ser configuradas ao definir o nível de limiar dele.
# dmesg -n3
Tabela 3.4. Lista de níveis de erro do kernel
valor de nível de erro | nome de nível de erro | significado |
---|---|---|
0 | KERN_EMERG | sistema está inutilizável |
1 | KERN_ALERT | acção tem de ser tomada imediatamente |
2 | KERN_CRIT | condições críticas |
3 | KERN_ERR | condições de erro |
4 | KERN_WARNING | condições de aviso |
5 | KERN_NOTICE | condição normal mas significante |
6 | KERN_INFO | informativa |
7 | KERN_DEBUG | mensagens de nível de depuração |
Sob systemd
, ambas mensagens de kernel e sistema são
registadas pelo serviço journal systemd-journald.service
(também conhecido por journald
) seja em dados binários
persistentes em "/var/log/journal
" ou em dados binários
voláteis em "/run/log/journal/
". Estes dados de relatório
binários são acedidos pelo comando
journalctl(1).
Sob systemd
, o utilitário de relatórios do sistema
rsyslogd(8)
muda o comportamento dele para ler os dados de relatório binários voláteis
(em vez do predefinido pre-systemd "/dev/log
") e para
criar dados de relatório do sistema em ASCII tradicional permanente.
A mensagem do sistema pode ser personalizada em
"/etc/default/rsyslog
" e
"/etc/rsyslog.conf
" quer para o ficheiro de registo quer
para as mensagens no ecrã. Veja
rsyslogd(8)
e
rsyslog.conf(5).
Veja também Secção 9.2.2, “Analisador de relatório (Log)”.
O systemd
oferece não apenas um sistema de arranque mas
também funcionalidades genéricas de gestão de sistema tais como relatórios
de journal, gestão de login, gestão de horas, gestão de rede, etc...
O systemd(1) é gerido por vários comandos:
o comando
systemctl(1)
controla o sistema systemd
e o gestor de serviço (CLI),
o
comandosystemsdm(1)
controla o sistema systemd
e o gestor de serviço (GUI),
O comando
journalctl(1)
consulta o journal do systemd
,
o comando
loginctl(1)
controla o gestor de login do systemd
e
o systemd-analyze(1) analisa a performance do arranque do sistema.
Aqui está uma lista dos comandos típicos do systemd
. Para
os significados exactos, por favor leia os manuais relevantes.
Tabela 3.5. Lista de trechos de comandos típicos de gestão do systemd
Operação | Tipo | Fragmentos de comando |
---|---|---|
GUI para gestão do serviço | GUI |
"systemadm " (systemd-ui pacote)
|
Lista toda a configuração da unidade alvo | Unidade |
"systemctl list-units --type=target "
|
Lista toda a configuração da unidade de serviço | Unidade |
"systemctl list-units --type=service "
|
Lista todos os tipos de configuração da unidade | Unidade |
"systemctl list-units --type=help "
|
Lista todas unidades de socket em memória | Unidade |
"systemctl list-sockets "
|
Lista todas as unidades de temporizador em memória | Unidade |
"systemctl list-timers "
|
Iniciar o "$unit "
|
Unidade |
"systemctl start $unit "
|
Parar o "$unit "
|
Unidade |
"systemctl stop $unit "
|
Recarregar configuração específica do serviço | Unidade |
"systemctl reload $unit "
|
Parar e iniciar todo "$unit "
|
Unidade |
"systemctl restart $unit "
|
Iniciar o "$unit " e parar todos os outros
|
Unidade |
"systemctl isolate $unit "
|
Mudar para "gráfico " (sistema GUI)
|
Unidade |
"systemctl isolate graphical "
|
Mudar para "multi-utilizador " (sistema CLI)
|
Unidade |
"systemctl isolate multi-user "
|
Mudar para "recuperação " (sistema CLI de único
utilizador)
|
Unidade |
"systemctl isolate rescue "
|
Enviar sinal kill ao "$unit "
|
Unidade |
"systemctl kill $unit "
|
Verificar se o serviço "$unit " está ativo
|
Unidade |
"systemctl is-active $unit "
|
Verificar se o serviço "$unit " falhou
|
Unidade |
"systemctl is-failed $unit "
|
Verifica o estado de "$unit|$PID|aparelho "
|
Unidade |
"systemctl status $unit|$PID|$device "
|
Mostra propriedades de 1"$unit|$job "
|
Unidade |
"systemctl show $unit|$job "
|
Reinicia um "$unit " falhado
|
Unidade |
"systemctl reset-failed $unit"
|
List dependências de todos os serviços unit | Unidade |
"systemctl list-dependencies --all "
|
Lista ficheiros unit instalados no sistema | Ficheiro unit |
"systemctl list-unit-files "
|
Ativa "$unit " (adicionar ligação simbólica)
|
Ficheiro unit |
"systemctl enable $unit "
|
Desactiva "$unit " (remove ligação simbólica)
|
Ficheiro unit |
"systemctl disable $unit "
|
Desmascara "$unit " (remove ligação simbólica para
"/dev/null ")
|
Ficheiro unit |
"systemctl unmask $unit "
|
Mascara "$unit " (adicionar ligação simbólica para
"/dev/null ")
|
Ficheiro unit |
"systemctl mask $unit "
|
Obter definição de alvo-predefinido | Ficheiro unit |
"systemctl get-default "
|
Define alvo-predefinido para "graphical " (sistema GUI)
|
Ficheiro unit |
"systemctl set-default graphical "
|
Define alvo-predefinido para "multi-user " (sistema CLI)
|
Ficheiro unit |
"systemctl set-default multi-user "
|
Mostra ambiente da função | Ambiente |
"systemctl show-environment "
|
Define "variável " de ambiente de função para
"valor "
|
Ambiente |
"systemctl set-environment variável=valor "
|
Remove a definição da "variável " de ambiente de função
|
Ambiente |
"systemctl unset-environment variável "
|
Reinicia todos os ficheiros unit e os daemons | Ciclo de vida |
"systemctl daemon-reload "
|
Desligar o sistema | Sistema |
"systemctl poweroff "
|
Desligar e reiniciar o sistema | Sistema |
"systemctl reboot "
|
Suspender o sistema | Sistema |
"systemctl suspend "
|
Hibernar o sistema | Sistema |
"systemctl hibernate "
|
Ver o log de trabalho do "$unit "
|
Journal |
"journalctl -u $unit "
|
Visualizar relatório de função de "$unit " (estilo
"tail -f ")
|
Journal |
"journalctl -u $unit -f "
|
Mostra o tempo gasto em cada passo de inicialização | Analisar |
"systemd-analyze time "
|
Lista de todas as unidades pelo tempo de inicialização | Analisar |
"systemd-analyze blame "
|
Carrega e detecta erros no ficheiro "$unit "
|
Analisar |
"systemd-analyze verify $unit "
|
Segue os processos de arranque pelo cgroups(7) | Cgroup |
"systemd-cgls "
|
Segue os processos de arranque pelo cgroups(7) | Cgroup |
"ps xawf -eo pid,user,cgroup,args "
|
Segue os processos de arranque pelo cgroups(7) | Cgroup |
Lê sysfs sob
"/sys/fs/cgroup/systemd/ "
|
Aqui, "$unit
" nos exemplos em cima pode ser um único nome
de unidade (sufixos como .service
e
.target
são opcionais) ou, em muitos casos,
especificações de múltiplas unidades (a simbologia da shell
"*
", "?
", "[]
" a
utilizar
fnmatch(3)
serão correspondidos aos nomes primários de todas as unidades presentemente
em memória).
Os comandos de alteração do estado do sistema nos exemplos em cima são
tipicamente precedidos por "sudo
" para obter os
privilégios administrativos necessários.
Os resultados de "systemctl status $unit|$PID|$aparelho
"
usam cores no ponto ("●") para sumarizar rapidamente o estado da unidade.
Ponto "●" branco indica estado "inativo" ou "desactivado".
Ponto "●" vermelho indica um estado de "falha" ou "erro".
Ponto "●" verde indica um estado "ativo", "a reiniciar" ou "a ativar".
Com uma instalação predefinida, muitos serviços de rede (veja Capítulo 6, Aplicações de rede) são arrancados como processos daemon após
network.target
durante o arranque do sistema pelo
systemd
. O "sshd
" não é excepção.
Vamos mudar isto para arranque a-pedido do "sshd
" como um
exemplo de personalização.
Primeiro, desativar a unidade de serviço instalada no sistema.
$ sudo systemctl stop sshd.service $ sudo systemctl mask sshd.service
O sistema de activação de socket a-pedido dos serviços clássicos de Unix
acontecia através do super-servidor indetd
. Sob o
systemd
, pode ser activado o equivalente ao adicionar
ficheiros de configuração de unidade *.socket e *.service.
sshd.socket
para especificar um socket onde escutar
[Unit] Description=SSH Socket for Per-Connection Servers [Socket] ListenStream=22 Accept=yes [Install] WantedBy=sockets.target
sshd@.service
como o ficheiro de serviço correspondente
do sshd.socket
[Unit] Description=SSH Per-Connection Server [Service] ExecStart=-/usr/sbin/sshd -i StandardInput=socket
Depois reinicie.
$ sudo systemctl daemon-reload
Para o kernel Linux 2.6 e mais recentes, o sistema udev disponibiliza um mecanismo para a descoberta automática de hardware e inicialização (veja udev(7)). Após a descoberta de cada aparelho pelo kernel, o sistema udev arranca um processo de utilizador que usa informação a partir do sistema de ficheiros sysfs (veja Secção 1.2.12, “procfs e sysfs”), carrega os módulos de kernel necessários para o suportar a usar o programa modprobe(8) (veja Secção 3.3.1, “A inicialização de módulos do kernel”), e cria os nós correspondentes do aparelho.
![]() |
Dica |
---|---|
Se " |
Os nomes dos nós de aparelhos podem ser configurados pelos ficheiros de
regras do udev em "/etc/udev/rules.d/
". As regras
predefinidas atuais tentem a criar nomes gerados dinamicamente a resultar em
nomes de aparelhos não estáticos excepto para aparelhos de cd e de rede. Ao
adicionar os seus ficheiros personalizados de modo semelhante ao que é feito
pelos aparelhos de cd e rede, também pode gerar nomes estáticos para
aparelhos para outros aparelhos como pens USB de memória. Veja "Escrever regras do udev" ou
"/usr/share/doc/udev/writing_udev_rules/index.html
".
Como o sistema udev é de certa forma um alvo em movimento, deixo os detalhes para outras documentações e descrevo a informação mínima aqui.
![]() |
Dica |
---|---|
Para regras de montagem em " |
O programa modprobe(8) permite-nos configurar o kernel Linux em execução a partir do processo de utilizador ao adicionar e remover módulos do kernel. O sistema udev (veja Secção 3.3, “O sistema udev”) automatiza a invocação dele para ajudar na inicialização dos módulos de kernel.
Existem módulos de não-hardware e módulos driver de hardware especial como
os seguintes que precisam de ser pré-carregados ao listá-los no ficheiro
"/etc/modules
" (veja
modules(5)).
módulos TUN/TAP que disponibilizam aparelhos de rede Point-to-Point virtuais (TUN) e aparelhos de rede Ethernet virtuais (TAP),
módulos netfilter que disponibilizam capacidades de firewall netfilter (iptables(8), Secção 5.10, “Infraestrutura netfilter”) e
módulos de driver watchdog timer.
Os ficheiros de configuração para o programa
modprobe(8)
estão localizados sob o diretório "/etc/modprobes.d/
"
como explicado em
modprobe.conf(5).
(Se deseja evitar que alguns módulos do kernel sejam carregados
automaticamente, considere metê-los em lista negra no ficheiro
"/etc/modprobes.d/blacklist
".)
O ficheiro "/lib/modules/<version>/modules.dep
"
gerado pelo programa
depmod(8)
descreve as dependências dos módulos usados pelo programa
modprobe(8).
![]() |
Nota |
---|---|
Se tiver problemas com o carregamento de módulos durante o arranque ou com o
modprobe(8),
" |
O programa modinfo(8) mostra informação sobre um módulo do kernel Linux.
O programa
lsmod(8)
formata lindamente o conteúdo de "/proc/modules
" e mostra
que módulos do kernel que estão atualmente carregados.
![]() |
Dica |
---|---|
Pode identificar o hardware exacto no seu sistema. Veja Secção 9.4.3, “Identificação do hardware”. |
![]() |
Dica |
---|---|
Pode configurar o hardware durante o arranque para ativar as funcionalidades esperadas do hardware. Veja Secção 9.4.4, “Configuração do hardware”. |
![]() |
Dica |
---|---|
Pode provavelmente adicionar suporte para o seu aparelho especial ao recompilar o kernel. Veja Secção 9.9, “O kernel”. |