No Linux, as interfaces de rede não possuem um nó de dispositivo em /dev
.
Se você precisar da lista de interfaces de rede utilizáveis, por exemplo, em um script, procure no diretório /sys/class/net/
; você verá um link simbólico por interface. Cada interface de rede que possui um driver carregado será listada.
Programaticamente, você pode usar o if_nameindex()
syscall: veja esta resposta no Stack Overflow.
Além disso, observe que /dev
é o sistema de arquivos do dispositivo .
A árvore de dispositivos tem um significado específico diferente: é uma descrição legível por máquina da composição de hardware de um sistema. Ele é usado em sistemas que não possuem barramentos de hardware compatíveis com Plug-and-Play ou que possuem hardware que não pode ser descoberto automaticamente. Por exemplo, o Linux em SoCs ARM, como o Raspberry Pi, usa uma árvore de dispositivos.
A seqüência de inicialização de um RasPi é bastante interessante: veja esta pergunta no RasPi.SE.
Em suma, no momento da inicialização, sob o controle do arquivo /boot/start.elf
, a GPU carrega os arquivos /boot/*.dtb
e /boot/overlay/*.dtbo apropriados antes que a CPU principal do ARM seja iniciada. O arquivo *.dtb
é a árvore de dispositivos compilada em formato binário. Ele descreve o hardware que pode ser encontrado em cada modelo RasPi específico e é produzido a partir de um arquivo fonte da árvore de dispositivos (.dts '), que é apenas texto, formatado de uma maneira específica.
A imagem ao vivo do kernel da árvore de dispositivos pode ser vista em: / sys / firmware / devicetree / base Per Ciro Santilli , pode ser exibido em formato .dts por:
sudo apt-get install device-tree-compiler
dtc -I fs -O dts /sys/firmware/devicetree/base
Você pode encontrar a especificação do formato de arquivo da árvore de dispositivos aqui. A especificação destina-se a ser independente do sistema operacional. Você também pode precisar da Referência de árvore de dispositivos para esclarecer alguns detalhes.
Então, a resposta à sua pergunta original é assim:
- a API do Berkeley Sockets obtém a interface de rede do kernel
- o kernel obtém as informações essenciais de hardware do arquivo da árvore de dispositivos
- o arquivo da árvore de dispositivos é carregado pela GPU com
/boot/start.elf
de acordo com a configuração em/boot/config.txt
- o arquivo de árvore de dispositivos foi originalmente criado de acordo com as especificações de hardware de cada modelo RasPi e compilado no formato binário apropriado.