O que é o mdev e como os nós / dev / * são criados no Linux?

11

Nosso kernel Linux é 2.6.31 sendo executado em um processador MIPS incorporado com busybox.

O script de inicialização (rcS) inicia o mdev com:

echo "/sbin/stbhotplug" > /proc/sys/kernel/hotplug
mdev -s

Alguém pode me dizer o que o utilitário Linux mdev faz?

Parece que ele faz plug-in automático a quente, já que o stbhotplug é um script que lida com interfaces Ethernet.

Além disso, o rootfs que recebemos possui apenas um dispositivo de console, ou seja, /dev/consoleé o único arquivo /dev.

No entanto, quando o sistema está em execução, o /devdiretório está cheio de arquivos de dispositivo (por exemplo /dev/mtd, etc.).

A razão pela qual pergunto é que, ocasionalmente, recebemos um erro pelo qual é relatado que /dev/ubi_ctrlnão foi encontrado ou /dev/ubi1não foi encontrado.

Como ou quando o Linux cria esses dispositivos?

Obrigado.

user626201
fonte

Respostas:

6

O mdev é uma alternativa leve ao udev para uso em dispositivos incorporados. Ambos lidam com a criação de arquivos de dispositivo /deve o início de ações quando certos eventos acontecem.

Daniel Böhmer
fonte
Portanto, se os /devdispositivos não estiverem sendo criados, pode haver um problema mdevou um problema de tempo?
Sim, tanto quanto eu entendo, ambos podem ser verdade. Mas eu só escrevi a resposta porque tinha acabado de ler sobre o mdev em um artigo de notícias ontem. Geralmente, não tenho experiência com isso e não posso dar mais assistência. Foi por isso que publiquei minha resposta como um pontapé inicial para uma resposta de wiki da comunidade.
1

mdevbasicamente exige mknodum conjunto de arquivos de dispositivo pré-configurados.

Se você tiver uma escolha, use:

CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

que monta automaticamente o sistema de arquivos devtmpfs especial /deve permite que os módulos criem automaticamente seus próprios arquivos de dispositivo insmod, conforme mostrado em: /programming/5970595/how-to-create-a-device-node-from O código do módulo init do módulo linux-kernel / 45531867 # 45531867

É o que o Buildroot e a maioria das distros atualmente fazem por padrão.

Ciro Santilli adicionou uma nova foto
fonte