(No raspberry pi zero w, kernel 4.14y) Parece que o chip adaptador sem fio não é um dispositivo no /dev fs, mas é o nome de algo que 'ifconfig' conhece. Eu entendo que este é um artefato de Berkley Sockets.
É hardware, suponho que deve ser mencionado na árvore de dispositivos -- para fazer com que algum driver seja carregado, mas não deve criar uma entrada em /dev (devfs).
Onde/como o Sockets encontra este dispositivo que não é um dispositivo?
No Linux, as interfaces de rede não possuem um nó de dispositivo
/dev
.Se você precisar da lista de interfaces de rede utilizáveis, por exemplo, em um script, procure no
/sys/class/net/
diretório; 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 diferente específico: é 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, de outra forma, possuem hardware que não pode ser descoberto automaticamente. Como exemplo, Linux em SoCs ARM como Raspberry Pi usa uma árvore de dispositivos.
A sequência de inicialização de um RasPi é bastante interessante: veja esta pergunta no RasPi.SE.
Resumindo, no momento da inicialização, sob controle do
/boot/start.elf
arquivo, a GPU carrega os/boot/*.dtb
arquivos apropriados e /boot/overlay/*.dtbo antes que a CPU ARM principal seja iniciada. O*.dtb
arquivo é a árvore de dispositivos compilada em formato binário. Ele descreve o hardware que pode ser encontrado em cada modelo específico de RasPi, e é produzido a partir de um arquivo fonte de á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 Por Ciro Santilli , ela pode ser exibida no formato .dts por:
Você pode encontrar a especificação do formato do arquivo da árvore do dispositivo aqui. A especificação destina-se a ser independente do sistema operacional. Você também pode precisar da Referência da Árvore de Dispositivos como esclarecimento de alguns detalhes.
Então, a resposta para sua pergunta original é assim:
/boot/start.elf
acordo com a configuração em/boot/config.txt
O código de varredura da árvore de dispositivos está principalmente preocupado em encontrar um driver válido para cada peça de hardware. Não vai se importar muito com a finalidade de cada dispositivo : esse é o trabalho do driver.
O driver usa a
*_register_driver()
função de kernel apropriada para documentar sua própria existência, pega a parte apropriada das informações da árvore de dispositivos para encontrar o hardware real e, em seguida, usa outras funções para registrar esse hardware como estando sob seu controle. Uma vez que o driver inicializou o hardware, ele usa aregister_netdev()
função do kernel para se registrar como uma nova interface de rede , o que, entre outras coisas, fará a API Sockets (que é apenas mais uma interface do kernel, não uma entidade independente como tal) ciente de que a interface de rede existe.O driver provavelmente se registrará para outras coisas também: ele listará várias
ethtool
operações que ele suporta para monitoramento de status de link, estatísticas de tráfego e outras funções de baixo nível, e um driver para uma NIC sem fio também usaráregister_wiphy()
para se declarar como um interface de rede sem fio com recursos específicos de Wi-Fi.A pilha TCP/IP do Linux tem muitas interfaces: a API Berkeley Sockets é o lado dela que será mais familiar para os programadores de aplicativos. A API netdev é essencialmente o outro lado voltado para o driver da mesma moeda.
wlan0 é uma interface criada por interfaces, em /etc/network/. O próprio dispositivo é uma construção do firmware que é carregado, para a referida interface. Digo isso porque wlan0 não é a localização do hardware real. É uma interface construída por software, para fornecer uma maneira para o sistema operacional se comunicar com o hardware através da definição de firmware do dispositivo real. Como você pode alterar o firmware para modificar a maneira como o hardware real se comporta, as funções de adicionar/remover alteram as frequências e tal.
O e ifup e ifdown são basicamente os interruptores de liga e desliga HeHehe...
Veja: https://manpages.debian.org/stretch/ifupdown/interfaces.5.en.html
-Sim! é um dispositivo, o dispositivo da placa wireless, como o dispositivo de rede normal
eth0
, só que isso aponta/refere-se ao dispositivo wireless...