udev
udev (userspace /dev) é um gerenciador de dispositivo para o núcleo do Linux. Como o sucessor do devfsd e hotplug, o udev primeiramente gerencia nós de dispositivo no diretório /dev. Ao mesmo tempo, o udev também manipula todos os eventos de espaço de usuário lançados quando dispositivos de hardware são adicionados no sistema ou removidos dele, incluindo carga de firmware, como requerido por certos dispositivos.
Desenvolvedor | Greg Kroah-Hartman e Kay Sievers |
Lançamento | novembro de 2003 (20–21 anos) |
Versão estável | 255 (6 de dezembro de 2023 | )
Versão em teste | [+/-] |
Escrito em | C |
Sistema operacional | Núcleo do Linux |
Gênero(s) | Nó de dispositivo |
Licença | GPL v2 |
Fundamentação lógica
editarÉ o núcleo de um sistema operacional que é responsável por fornecer uma interface abstrata do hardware para o restante do software. Sendo um núcleo (kernel) monolítico, o núcleo (kernel) do Linux faz exatamente isso, e os controladores (drivers) de dispositivo fazem parte do núcleo do Linux, que compõe mais de 50% de seu código-fonte.[1] O hardware pode ser acessado por meio de chamadas do sistema ou por meio de seus nós de dispositivos.
Para ser capaz de lidar com dispositivos periféricos que são capazes de fazer hotplug de uma maneira amigável, uma parte do tratamento de todos esses dispositivos de hardware compatíveis com o hotplug foi transferida do núcleo para um daemon em execução no espaço do usuário. A execução no espaço do usuário serve para fins de segurança e estabilidade.
Operação
editarudev é um gerenciador de dispositivos genérico que executa como um daemon em um sistema Linux e que escuta (através de um soquete netlink) os uevents que o kernel envia se um novo dispositivo for inicializado ou um dispositivo for removido do sistema. O pacote udev vem com um extenso conjunto de regras que correspondem aos valores exportados do evento e às propriedades do dispositivo descoberto. Uma regra de correspondência possivelmente nomeará e criará um nó de dispositivo e executará programas configurados para instalar e configurar o dispositivo.
As regras do udev podem corresponder a propriedades como o subsistema do kernel, o nome do dispositivo do kernel, a localização física do dispositivo ou propriedades como o número de série do dispositivo. As regras também podem solicitar informações de programas externos para nomear um dispositivo ou especificar um nome personalizado que sempre será o mesmo, independentemente da ordem em que os dispositivos são descobertos pelo sistema.
No passado, uma maneira comum de usar o udev em sistemas Linux era deixá-lo enviar eventos por meio de um soquete para o HAL, que executaria outras ações específicas do dispositivo. Por exemplo, a HAL notificaria outro software em execução no sistema que o novo hardware havia chegado, emitindo uma mensagem de difusão no sistema D-Bus IPC para todos os processos interessados. Dessa forma, desktops como GNOME ou K Desktop Environment 3 poderiam iniciar o navegador de arquivos para navegar nos sistemas de arquivos de unidades flash USB e de cartões SD recém-conectados.[3]
Em meados de 2011, o HAL foi preterido pela maioria das distribuições Linux, bem como pelos ambientes de desktop KDE, GNOMEref>«HALRemoval». 28 de junho de 2011. Consultado em 13 de setembro de 2011</ref> e Xfce,[4] entre outros. A funcionalidade anteriormente incorporada ao HAL foi integrada ao próprio udev ou movida para software separado, como udisks e upower.
- udev fornece acesso de baixo nível à árvore de dispositivos linux. Permite que os programas enumerem os dispositivos e suas propriedades e recebam notificações quando os dispositivos entram e saem.
- dbus é um framework para permitir que programas se comuniquem entre si, de forma segura, confiável e com uma interface de programação orientada a objetos de alto nível.
- udisks (anteriormente conhecido como DeviceKit-disks) é um daemon que fica no topo do libudev e outras interfaces do kernel e fornece uma interface de alto nível para dispositivos de armazenamento e é acessível via dbus para aplicativos.
- upower (anteriormente conhecido como DeviceKit-power) é um daemon que fica no topo do libudev e outras interfaces do kernel e fornece uma interface de alto nível para gerenciamento de energia e é acessível via dbus para aplicativos.
- NetworkManager é um daemon que fica no topo do libudev e outras interfaces do kernel (e alguns outros daemons) e fornece uma interface de alto nível para configuração e configuração de rede e é acessível via dbus para aplicativos.[5]
O udev recebe mensagens do kernel e as passa para daemons do subsistema, como o Network Manager. Os aplicativos conversam com o Network Manager por meio de D-Bus.
HAL é obsoleto e usado apenas por código legado. Ubuntu 10.04 enviado sem HAL. Inicialmente, um novo daemon DeviceKit foi planejado para substituir certos aspectos do HAL, mas em março de 2009, DeviceKit foi preterido em favor de adicionar o mesmo código ao udev como um pacote: udev-extras, e algumas funções agora foram movidas para o udev propriamente dito.
Referências
- ↑ Marti, Don (2 de julho de 2007). «Are top Linux developers losing the will to code?». Computerworld UK (em inglês). Consultado em 30 de outubro de 2020. Arquivado do original em 8 de janeiro de 2017
- ↑ «systemd/systemd». GitHub. Consultado em 21 de agosto de 2016
- ↑ «Dynamic Device Management in Udev» (PDF). Linux Magazine. 1 de outubro de 2006. Consultado em 14 de julho de 2008
- ↑ «Thunar-volman and the deprecation of HAL in Xfce». 17 de janeiro de 2010. Consultado em 25 de dezembro de 2017
- ↑ Lennart Poettering (25 de abril de 2010). «Relationship between udev, hal, Dbus and DeviceKit?»
Ligações externas
editar- pub/linux/utils/kernel/hotplug (kernel.org)
- Writing udev rules (reactivated.net)
- udev e suas regras maravilhosas (tiagomadeira.net)
- Acessando dispositivos USB escrevendo regras / Entendendo UDEV (guiadohardware.net)