Capítulo 3. A inicialização do sistema

Índice

3.1. Uma visão geral do processo de arranque
3.1.1. Estágio 1: a BIOS
3.1.2. Estágio 2: o gestor de arranque
3.1.3. Estágio 3: o mini-sistema Debian
3.1.4. Estágio 4: o sistema Debian normal
3.2. init do Systemd
3.2.1. O nome da máquina
3.2.2. O sistema de ficheiros
3.2.3. Inicialização da interface de rede
3.2.4. A mensagem do kernel
3.2.5. A mensagem do sistema
3.2.6. Gestão do sistema sob systemd
3.2.7. Personalizar o systemd
3.3. O sistema udev
3.3.1. A inicialização de módulos do kernel

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

Eu fiz o meu melhor para disponibilizar uma visão geral breve dos pontos chave do sistema Debian a da sua configuração para sua referência, baseando-me em conhecimentos actuais e anteriores 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, você deve consultar a documentação mais recente de cada pacote.

[Dica] Dica

bootup(7) descreve o processo de arranque do sistema baseado no systemd . (Debian Recente)

[Dica] 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, eu 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 você compilou o seu próprio kernel, você 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] 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 você 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, você pode pressionar algumas teclas como a Esc para o desactivar. Estas teclas dependem fortemente do hardware.

A localização do hardware e prioridade do código iniciado pela BIOS pode ser seleccionado no ecrã de configuração da BIOS. Tipicamente, os primeiros poucos sectores do primeiro dispositivo seleccionado encontrado (disco rígido, disquete, CD-ROM, ...) são carregados para a 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 selecçã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 para a memória e passa o controle para eles. Esta imagem initrd é a imagem do sistema de ficheiros raiz e o seu suporte 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 actual é 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 actualizar 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] Dica

Você pode inspeccionar o conteúdo do ficheiro imagem initrd utilizando lsinitramfs(8) e unmkinitramfs(8) do pacote initramfs-tools-core. Saiba mais em https://wiki.debian.org/initramfs.

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.


[Atenção] 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 grub-rescue-pc. Torna-o capaz de arrancar o seu sistema mesmo sem um gestor de arranque funcional no disco rígido.

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" utilizando modelos de "/etc/grub.d/*" e definições de "/etc/default/grub". Por exemplo, tem entradas como as que se seguem:

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.


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

Pode ser utilizado o UUID (veja Secção 9.5.3, “Aceder a partição usando UUID”) para identificar um dispositivo especial de bloco em vez do seu nome de ficheiro como "/dev/hda3", ex. "root=UUID=81b289d5-4341-4003-9602-e254a17ac232 ro".

[Dica] Dica

Se for usado o GRUB, o parâmetro de arranque do kernel é definido em /boot/grub/grub.cfg. No sistema Debian, não se deve editar o /boot/grub/grub.cfg directamente. Deve editar o valor de GRUB_CMDLINE_LINUX_DEFAULT em /etc/default/grub e correr update-grub(8) para actualizar o /boot/grub/grub.cfg.

[Dica] Dica

Você pode iniciar um gestor de arranque a partir de outro gestor de arranque utilizando 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 seu sistema de ficheiros raiz na memória. Este é um estágio preparatório opcional do processo de arranque.

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

    • Você 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] Cuidado

Você precisa de utilizar a opção "-n" para o comando mount quando está no sistema de ficheiros raiz apenas de leitura.

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 no seu ambiente. O sistema de ficheiros raiz é mudado daquele em 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 para o 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 arrancando scripts de arranque em paralelo.

  • Debian jessie muda o seu init predefinido para o systemd para a inicialização em paralelo e gerida por eventos.

[Dica] Dica

O comando de iniciação actual do seu sistema pode ser verificado pelo comando "ps --pid 1 -f"

[Dica] Dica

"/sbin/init" é um link simbólico para "/lib/systemd/systemd" após Debian jessie.

Tabela 3.3. Lista de utilitários de arranque para o sistema Debian

pacote popcon tamanho descrição
systemd V:750, I:858 13484 daemon de eventos baseado em init(8) para a concorrência (alternativa a sysvinit)
systemd-sysv V:733, I:852 122 os manuais e links necessários pelo systemd para substituir o sysvinit
systemd-cron V:0, I:1 139 unidades do systemd para disponibilizar o daemon cron e a funcionalidade anacron
init-system-helpers V:745, I:876 133 ferramentas de ajuda para mudar entre sysvinit e systemd
initscripts V:188, I:509 213 scripts para inicializar e desligar o sistema
sysvinit-core V:10, I:13 263 utilitários de init(8) estilo System-V
sysv-rc V:334, I:520 121 mecanismo de mudança de runlevel estilo System-V
sysvinit-utils V:729, I:999 131 utilitários estilo System-V (startpar(8), bootlogd(8), …)
lsb-base V:886, I:999 49 Linux Standard Base funcionalidade de script de init 3.2
insserv V:403, I:510 148 ferramenta para organizar a sequência de arranque usando dependências dos scripts init.d LSB
uswsusp V:5, I:10 714 ferramentas disponibilizadas pelo Linux para utilizar a suspensão de software no espaço de utilizador
kexec-tools V:1, I:7 271 ferramenta kexec para re-arranques kexec(8) (re-arranque a quente)
systemd-bootchart V:0, I:0 123 analisador de performance do processo de arranque
bootchart2 V:0, I:1 94 analisador de performance do processo de arranque
pybootchartgui V:0, I:1 177 analisador de performance do processo de arranque (visualização)
mingetty V:0, I:3 35 getty(8) apenas de consola
mgetty V:0, I:1 319 substituto inteligente de modem getty(8)

[Dica] 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 se segue:

  • "/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 dispositivo exposto em sysfs(5) como uma árvore de dispositivos 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 dispositivo 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 usando 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 é um link simbólico 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] Cuidado

Os runlevel 2 a 4 emulados são todos direccionados por link simbólico para o mesmo "alvo de multi-utilizador".

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

Após montar todos os sistemas de ficheiros, os ficheiros temporários em "/tmp", "/var/lock", e "/var/run" são limpos para cada arranque.

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 para o "$unit" Unidade "systemctl kill $unit"
Verificar se o serviço "$unit" está activo Unidade "systemctl is-active $unit"
Verificar se o serviço "$unit" falhou Unidade "systemctl is-failed $unit"
Verifica o estado de "$unit|$PID|dispositivo" 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"
Activa "$unit" (adiciona link simbólico) Ficheiro unit "systemctl enable $unit"
Desactiva "$unit" (remove link simbólico) Ficheiro unit "systemctl disable $unit"
Desmascara "$unit" (remove link simbólico para "/dev/null") Ficheiro unit "systemctl unmask $unit"
Mascara "$unit" (adiciona link simbólico 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 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 "*", "?", "[]" utilizando 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|$dispositivo" usam cores no ponto ("●") para sumarizar rapidamente o estado da unidade.

  • Ponto "●" branco indica estado "inactivo" ou "desactivado".

  • Ponto "●" vermelho indica um estado de "falha" ou "erro".

  • Ponto "●" verde indica um estado "activo", "a reiniciar" ou "a activar".

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, desactivar 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 sua inicialização (veja udev(7)). Após a descoberta de cada dispositivo 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 usando 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 dispositivo.

[Dica] Dica

Se "/lib/modules/<versão-de-kernel>/modules.dep" não foi gerado de modo apropriado pelo depmod(8) por alguma razão, os módulos podem não carregar como esperado pelo sistema udev. Execute "depmod -a" para o corrigir.

Os nomes dos nós de dispositivos podem ser configurados pelos ficheiros de regras do udev em "/etc/udev/rules.d/". As regras predefinidas actuais tentem a criar nomes gerados dinamicamente resultando em nomes de dispositivos não estáticos excepto para dispositivos de cd e de rede. Ao adicionar os seus ficheiros personalizados de modo semelhante ao que é feito pelos dispositivos de cd e rede, você também pode gerar nomes estáticos para dispositivos para outros dispositivos 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, eu deixo os detalhes para outras documentações e descrevo a informação mínima aqui.

[Dica] Dica

Para regras de montagem em "/etc/fstab", os nós de dispositivo não precisam de ser os estáticos. Você pode usar o UUID para montar os dispositivos em vez dos nomes de dispositivo como "/dev/sda". Veja Secção 9.5.3, “Aceder a partição usando UUID”.

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 sua invocação 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)).

Os ficheiros de configuração para o programa modprobe(8) estão localizados sob o directório "/etc/modprobes.d/" como explicado em modprobe.conf(5). (Se você 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] Nota

Se tiver problemas com o carregamento de módulos durante o arranque ou com o modprobe(8), "depmod -a" pode resolver esses problemas ao reconstruir "modules.dep".

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 actualmente carregados.

[Dica] Dica

Você pode identificar o hardware exacto no seu sistema. Veja Secção 9.4.3, “Identificação do hardware”.

[Dica] Dica

Você pode configurar o hardware durante o arranque para activar as funcionalidades esperadas do hardware. Veja Secção 9.4.4, “Configuração do hardware”.

[Dica] Dica

Você pode provavelmente adicionar suporte para o seu dispositivo especial ao recompilar o kernel. Veja Secção 9.9, “O kernel”.