Existem várias alternativas para udev
lá fora. Aparentemente, o Gentoo pode usar algo chamado mdev
. Outra opção seria tentar usar udev
o antecessor devfsd
. Por fim, você sempre pode criar todos os arquivos de dispositivo necessários mknod
.
Observe que, com o último, não há necessidade de criar tudo no momento da inicialização, pois os nós podem ser criados no disco e não em um sistema de arquivos temporário, como nas outras opções. Obviamente, você perde a flexibilidade de criar arquivos de dispositivos dinamicamente quando um novo hardware é conectado (por exemplo, um pen drive). Acredito que a abordagem padrão nesta época era ter todos os arquivos de dispositivos nos quais você poderia razoavelmente precisar já criados /dev
(ou seja, muitos arquivos de dispositivos).
É claro que a dificuldade em conseguir que qualquer uma dessas abordagens funcione em uma distribuição moderna é provavelmente bastante alta. O wiki do Gentoo menciona dificuldades em mdev
trabalhar com um ambiente de área de trabalho (muito menos fora do Gentoo). O último devfsd
lançamento foi 2002, não tenho idéia se ele funcionará com os kernels modernos. Criar os nós manualmente é provavelmente a abordagem mais viável, mas até a desativação udev
pode ser um desafio, principalmente no uso de distos systemd
( udev
agora faz parte systemd
, o que sugere uma forte dependência).
Meu conselho é ficar com udev
;)
udev
deve funcionar perfeitamente semsystemd
- ambos são desenvolvidos apenas na mesma base de código, masudev
podem ser criados + executados independentemente dele.udev
já existe há muito temposystemd
. A questão é: podesystemd
trabalhar semudev
? Meu palpite é que você teria pelo menos que recompilar com algum tipo de--without-udev
opção.Os kernels modernos do Linux suportam o
devtmpfs
sistema de arquivos (não confunda com o antigodevfs
) , que cria todos os nós de dispositivos dinamicamente assim que o kernel os descobre. (De fato, asudev
versões mais recentes exigem isso; você descobrirá que o udev não cria mais nós de dispositivos, apenas links simbólicos.)Da mesma forma, o carregamento do firmware também foi movido para o kernel; portanto, as únicas tarefas restantes
udev
executadas são o carregamento do módulo (de acordo com as modaliases) e a aplicação de permissões do dispositivo e outras regras do udev.Portanto, em teoria, um kernel totalmente monolítico deve inicializar perfeitamente sem o udev.
No entanto, o verdadeiro problema aqui é o que acontece mais tarde.
Muitos programas de espaço do usuário dependem do udev manter seu banco de dados do dispositivo, acessível através
libudev
. Embora a enumeração de dispositivos e a escuta de eventos adicionados / removidos possam ser feitos diretamente usando as interfaces do kernel (sysfs e netlink), você ainda ficará sem todos os metadados anexados por várias regras do udev.udev regras também mantêm vários links simbólicos "persistentes" em
/dev/disk/by-*
,/dev/mapper
,/dev/input/by-path
,/dev/snd/by-path
, e assim por diante. Por exemplo, se você tiver dois discos conectados, não há garantia de que o primeiro seja sempresda
ousdb
, mas o udev garante que os links simbólicos/dev/disk/by-uuid
continuem apontando para o caminho certo.Embora os nós de dispositivos agora sejam criados pelo kernel e, portanto, não sejam mais sua preocupação, ainda é importante observar que alguns tipos de dispositivos começaram a usar números principais / secundários atribuídos dinamicamente, portanto, mesmo que você tenha
/dev/fuse
10.228 e/dev/hpet
10.229 hoje, eles serão tenha números diferentes após cada reinicialização; portanto,devtmpfs
ou (em sistemas mais antigos), é necessário um programa que ouça eventos .Muitas dessas coisas poderiam ser facilmente executadas por outros programas, como
mdev
, é claro. Meu argumento é que um/etc/MAKEDEV
script estático não funcionará mais ...Portanto, basicamente, quando se trata de complexidade de inicialização, o udev é provavelmente a menor das suas preocupações.
fonte
Existem várias alternativas:
chmod
,chown
,ln
, e comandos afins em um script que é executado como parte da inicialização.systemd-udev
, o gerenciador de plug-and-play que faz parte do projeto systemd.eudev
, que é uma bifurcação dasystemd-udev
qual o systemd agora divergiu significativamente.vdev
, um gerenciador plug-and-play desenvolvido por Jude Nelson, que faz parte do Devuan.mdev
, que ao contrário de outra resposta não é uma coisa do Gentoo. É o gerenciador plug-and-play integrado ao BusyBox .mdev
um gerenciador de plug-and-play desenvolvido por Dimitris Papastamos.mdevd
, que é compatível com o BusyBox,mdev
mas manipula soquetes e não entende o protocolo LISTEN.Tudo isso, além do primeiro, requer conjuntos de regras que descrevem como reagir a eventos de notificação do kernel sobre dispositivos. Obviamente.
Também existem ferramentas que adotam programas projetados para
/proc/sys/kernel/hotplug
, como os doismdev
se adaptam e serializam, ouvindo um soquete de netlink e gerando esses programas:s6-netlink-listener
e velhos de Laurent Bercots6-uevent-spawner
netlink-datagram-socket-listen
eplug-and-play-event-handler
do conjunto de ferramentas noshfonte
udev? A melhor alternativa é não usá-lo. E aprendendo como não usá-lo, o Linux e o mundo * NIX começarão a fazer mais sentido lógico.
A melhor alternativa a longo prazo é usar dispositivos estáticos (consulte a nota). Se você possui o driver, o kernel do Linux gerencia o hot plug. Prefiro nunca ter o udevd em execução.
dbus é outra questão. Isso diminui a velocidade do seu sistema, mas o mundo em constante mudança do pessoal do script o ama. Portanto, muitas coisas a que você está acostumado, como navegadores da Web ou aplicativos com back-end de script, precisam ser corrigidas (iniciadas ou reconstruídas sem essas coisas ou descartadas para outra aplicação).
Nota: Se você estiver apenas conectando uma unidade flash ou dispositivo de DVD, use
dmesg|tail
para ver o nome do dispositivo a ser montado. Aprender quando um dispositivo é um dispositivo de caractere ou bloco é um conhecimento fundamental do sistema no mundo do hardware de computador. No Linux, é de código aberto, confira muito sobre o Linux, não apenas incorporado . É o melhor para um entendimento mais amplo da lógica direta (não da filosofia) de todos os * NIXs, como Linux (Solaris, HPUX, AIX, etc).O Udev, o dbus, o gconf / dconf, o systemd, o gnome-shell, o Gnome, o Glib, o mono e o Fedora são para pessoas com muito tempo disponível e que não podem usar o RTFM, ou que desejam uma atualização realmente automática, mas lenta do que melaço, buggy, Linux a meio caminho. (Um lugar realmente horrível, procure na web toneladas de experiências semelhantes).
O sistema inicializa e executa o udevd. Mas, afirma-se que o udev é necessário porque, números menores do dispositivo
will change
na reinicialização. A raison d'être de Udev parece se contradizer a cada momento. E onde estão os arquivos parece sempre errado, não importa quem você consulte. Não confie no freedesktop.org.Além do udev estar sendo absorvido pelo horror conhecido como systemd, então não sei o que fazer com o arquivo / etc / udev junk. E, é absurdo dizer que escrever regras do udev é de alguma forma melhor do que qualquer coisa. O pessoal do gentoo parece querer se apegar a ele e não precisa ter o systemd, então eles o bifurcaram no eudev.
Se você deseja um sistema ridiculamente rápido, sem surpresas desagradáveis, use o básico do Linux.
fonte
udev
funcionalidade. Também é certo ressaltar os pontos fortes dessa abordagem alternativa .