(Raspberry Pi Zero W, 커널 4.14y) 무선 어댑터 칩은 /dev fs에 있는 장치가 아닌 ifconfig가 알고 있는 것의 이름인 것 같습니다. 내가 아는 한 이것은 Berkley Sockets의 인공물입니다.
그것은 하드웨어이므로 장치 트리에서 언급해야 한다고 가정합니다. 일부 드라이버를 로드하지만 /dev(devfs)에 항목을 생성할 수는 없습니다.
소켓은 장치가 아닌 이 장치를 어디서/어떻게 찾나요?
답변1
/dev
Linux에서는 네트워크 인터페이스에 장치 노드가 전혀 없습니다.
사용 가능한 네트워크 인터페이스 목록(예: 스크립트)이 필요한 경우 /sys/class/net/
디렉터리를 보면 각 인터페이스에 대한 기호 링크가 표시됩니다. 로드된 드라이버가 있는 각 네트워크 인터페이스가 나열됩니다.
if_nameindex()
프로그래밍 방식으로 시스템 호출을 사용할 수 있습니다 .Stack Overflow에서 이 답변을 참조하세요.
또한, /dev
이는장치 파일 시스템.
이것장치 트리구체적으로 다른 의미를 가집니다. 즉, 시스템의 하드웨어 구성 요소에 대한 기계 판독 가능한 설명입니다. 플러그 앤 플레이 기능이 없는 하드웨어 버스나 자동으로 검색할 수 없는 하드웨어가 있는 시스템에서 사용됩니다. 예를 들어 Raspberry Pi와 같은 ARM SoC의 Linux는 장치 트리를 사용합니다.
RasPi의 시작 순서는 매우 흥미롭습니다.RasPi.SE에서 이 질문을 참조하세요.
즉, 시작 시 /boot/start.elf
파일의 제어에 따라 GPU는 /boot/*.dtb
기본 ARM CPU가 시작되기 전에 해당 파일과 /boot/overlay/*.dtbo 파일을 로드합니다. 파일 *.dtb
은컴파일된 장치 트리바이너리 형식으로. 각 특정 RasPi 모델에서 찾을 수 있는 하드웨어에 대해 설명하며 다음과 같이 표시됩니다.장치 트리 소스 코드파일(.dts`)은 특정 방식으로 형식이 지정된 텍스트일 뿐입니다.
장치 트리의 커널 라이브 이미지는 /sys/firmware/devicetree/base에서 볼 수 있습니다. 퍼실로 산틸리, 다음을 통해 .dts 형식으로 표시할 수 있습니다.
sudo apt-get install device-tree-compiler
dtc -I fs -O dts /sys/firmware/devicetree/base
장치 트리 파일 형식에 대한 사양은 여기에서 확인할 수 있습니다.이 사양은 운영 체제 독립적으로 작성되었습니다. 당신은 또한 필요할 수 있습니다장치 트리 참조일부 세부 사항을 설명합니다.
따라서 원래 질문에 대한 답변은 다음과 같습니다.
- Berkeley Sockets API 커널에서 네트워크 인터페이스 가져오기
- 커널은 장치 트리 파일에서 필요한 하드웨어 정보를 얻습니다.
- 장치 트리 파일은 구성 에 따라 GPU에 의해
/boot/start.elf
로드됩니다 ./boot/config.txt
- 장치 트리 파일은 초기에 각 RasPi 모델의 하드웨어 사양을 기반으로 생성되고 적절한 바이너리 형식으로 컴파일됩니다.
장치 트리 검색 코드는 주로 각 하드웨어에 대한 유효한 드라이버를 찾는 것과 관련이 있습니다. 각 장치에 대해 크게 신경 쓰지 않습니다.목적: 이것이 운전자의 일이다.
드라이버는 적절한 *_register_driver()
커널 기능을 사용하여 자신의 존재를 기록하고 장치 트리 정보의 적절한 부분을 사용하여 실제 하드웨어를 찾은 다음 다른 기능을 사용하여 해당 하드웨어를 제어할 수 있도록 등록합니다. 드라이버가 하드웨어를 초기화하면 register_netdev()
커널 기능을 사용하여 자신을 새 하드웨어로 등록합니다.네트워크 인터페이스, 무엇보다도 이렇게 하면 소켓 API(별도의 엔터티가 아닌 커널에 대한 또 다른 인터페이스임)가 네트워크 인터페이스의 존재를 인식하게 됩니다.
ethtool
드라이버는 또한 다른 일을 위해 자신을 등록할 수도 있습니다. 링크 상태 모니터링, 트래픽 통계 및 기타 하위 수준 기능을 위해 지원하는 많은 작업을 나열 하고 무선 카드 드라이버는 register_wiphy()
이를 사용하여 다음과 같이 선언합니다.무선 전화특정 Wi-Fi 기능을 갖춘 네트워크 인터페이스입니다.
Linux TCP/IP 스택에는 많은 인터페이스가 있습니다. Berkeley Sockets API는 애플리케이션 프로그래머에게 가장 친숙합니다. netdev API는 본질적으로 드라이버에 있어서 동일한 코인의 반대편입니다.
답변2
wlan0은 인터페이스에 의해 생성된 인터페이스이며 /etc/network/에 있습니다. 장치 자체는 해당 인터페이스에 대해 로드된 펌웨어의 구조입니다. wlan0이 실제 하드웨어의 위치가 아니기 때문에 이렇게 말하는 것입니다. 이는 실제 장치의 펌웨어 정의를 통해 운영 체제가 하드웨어와 통신할 수 있는 방법을 제공하는 소프트웨어 기반 인터페이스입니다. 실제 하드웨어의 작동 방식을 수정하기 위해 펌웨어를 변경할 수 있으므로 기능을 추가/제거하면 주파수 등이 변경됩니다.
O와 ifup과 ifdown은 기본적으로 스위치입니다 헤헤헤...
바라보다: https://manpages.debian.org/stretch/ifupdown/interfaces.5.en.html
답변3
-예! 무선 네트워크 카드 장치로, eth0
이 점을 제외하고는 일반 네트워크 장치와 동일합니다./무선 장치를 지칭합니다...