Capítulo 32. O sistema hotplug

Índice

32.1. Dispositivos e interfaces
32.2. Eventos hotplug
32.3. Configuração do dispositivo hotplug
32.4. Carregamento de módulo automático
32.5. O Script de boot coldplug
32.6. Análise de erro

Resumo

O sistema hotplug controla a inicialização da maioria dos dispositivos em um computador. Ele não é usado para dispositivos que podem ser inseridos e removidos durante a operação, mas para todos os dispositivos detectados enquanto o sistema está inicializando. Ele trabalha junto com o sistema de arquivos sysfs e udev, que estão descritos em Capítulo 33, Nós de dispositivo dinâmicos com udev.

Até que o kernel tenha sido inicializado, somente dispositivos que são absolutamente necessários, como o sistema de barramento, discos de inicialização e teclado, são inicializados. O kernel aciona eventos hotplug para todos os dispositivos detectados. O daemon udevd ouve esses eventos e executa o udev para criar o nó de dispositivos e configurar o dispositivo. Para dispositivos que não podem ser detectados automaticamente, como cartões ISA antigos, uma configuração estática é utilizada.

Fora algumas exceções históricas, a maioria dos dispositivos é inicializada imediatamente assim que estão acessíveis, durante a inicialização do sistema ou quando os dispositivos estão conectados por hotplug. Durante a inicialização, as interfaces são registradas com o kernel. Este registro aciona mais eventos hotplug que causam uma configuração automática da respectiva interface.

Em versões anteriores do SUSE Linux, um conjunto estático de dados de configuração era usado como a base para os dispositivos de inicialização. Quaisquer eventos hotplug eram tratados por scripts separados, chamados agentes. Com este lançamento do SUSE Linux, o subsistema hotplug é integrado ao udev, com udev, as regras fornecem a funcionalidade dos antigos agentes hotplug.

As configurações gerais para o subsistema hotplug podem ser encontradas em /etc/sysconfig/hotplug. Todas as variáveis são comentadas. A configuração geral do dispositivo é realizada dependendo de regras correspondentes encontradas em /etc/udev/rules.d (consulte Capítulo 33, Nós de dispositivo dinâmicos com udev). Arquivos de configuração para dispositivos específicos estão localizados em /etc/sysconfig/hardware. A rechamada do evento hotplug usada na versão anterior do SUSE Linux, /proc/sys/kernel/hotplug, é geralmente vazia pois udevd recebe mensagens hotplug através de um soquete de netlink.

32.1. Dispositivos e interfaces

O sistema hotplug configura dispositivos e interfaces. Um dispositivo é em geral conectado a um barramento e fornece a funcionalidade necessária para uma interface. Uma interface representa a abstração visível ao usuário de todo o dispositivo ou de um determinado subconjunto. Um dispositivo em geral exige um driver de dispositivos na forma de módulos de kernel para funcionar de forma adequada. Além disso, algum driver e nível superior pode ser necessário para fornecer a interface ao usuário. Interfaces são em geral representadas por nós de dispositivo criados por udev. A distinção entre dispositivos e interfaces é importante para compreender o conceito geral.

Dispositivos inseridos no sistema de arquivos sysfs são encontrados sob /sys/devices. Interfaces estão localizadas sob /sys/class ou /sys/block. Todas as interfaces em sysfs devem ter um link a seus dispositivos. Porém, há ainda alguns drivers que não são adicionados automaticamente a este link. Sem este link, não é possível saber a qual dispositivo pertence esta interface e uma configuração adequada não poderá ser localizada.

Dispositivos tratados através de uma descrição de dispositivo. Esse pode ser o caminho do dispositivo em sysfs (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0), uma descrição do ponto de conexão (bus-pci-0000:02:00.0), um ID individual (id-32311AE03FB82538), ou algo similar. No passado, interfaces eram tratadas através de seus nomes. Esses nomes representavam uma numeração simples dos dispositivos existentes e pode ter sido alterada quando dispositivos foram adicionados ou removidos.

Interfaces também podem ser tratadas através de uma descrição do dispositivo associado. Em geral, o contexto indica se a descrição refere-se ao próprio dispositivo ou à sua interface. Exemplos típicos de dispositivos, interfaces e descrições incluem:

Placa de rede PCI

Um dispositivo que é conectado ao barramento PCI (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0 ou bus-pci-0000:02:00.0) e tem uma interface de rede (eth0, id-00:0d:60:7f:0b:22 ou bus-pci-0000:02:00.0). A interface de rede é usada por serviços de rede ou conectada a um dispositivo de rede virtual, como um túnel ou VLAN, que por sua vez tem uma interface.

Controlador PCI SCSI

Um dispositivo (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 ou bus-scsi-1:0:0:0) que torna disponíveis várias interfaces físicas na forma de um barramento (/sys/class/scsi_host/host1).

Disco rígido SCSI

Um dispositivo (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 ou bus-scsi-1:0:0:0) com várias interfaces (/sys/block/sda*).