
저는 임베디드 Linux 시스템에서 작업 중입니다. 제 목표는 부팅 시 이더넷 인터페이스를 활성화하는 것입니다. 저는 u-boot를 부트로더로 사용하고 있습니다. ip= 및 eth= u-boot 환경 변수를 Linux 커널에 bootargs로 전달하고 Linux 커널을 IP:kernel level autoconfiguration으로 구성하고 활성화했습니다. 그러나 "ifconfig eth0 up"처럼 네트워크 인터페이스가 작동되지는 않았습니다.
그렇다면 사용자 공간 스크립트(ifup 및 ifconfig)를 사용하지 않고 eth0 인터페이스를 활성화하도록 Linux 커널에 지시할 수 있는지 궁금합니다.
답변1
예, Linux 커널은 사용자 공간 스크립트를 사용하지 않고도 eth0 인터페이스를 활성화할 수 있습니다. 커널 부팅 매개변수를 사용하여 고정 IP 주소로 네트워크 인터페이스를 초기화
할 수 있습니다 . 예를 들면 다음과 같습니다.ip=
ip=192.168.1.100:::255.255.255.0:myboard:eth0:on
물론,eth0드라이버가 초기화/설치될 때까지( __init
메모리 섹션이 해제된 것으로 표시됨) 인터페이스를 활성화할 수 없습니다.
네트워크 인터페이스가 활성화될 때 표시되는 시스템 로그는 다음과 같습니다.
eth0: link down
IP-Config: Complete:
device=eth0, addr=192.168.1.100, mask=255.255.255.0, gw=255.255.255.255,
host=myboard, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
Freeing init memory: 564K
remounting / read-write... done.
mounting /proc... done.
mounting /sys... done.
Creating device nodes manually, running /sbin/makenodes-2.6
eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
Done.
mounting /home... MTDSB: dev_name "/dev/mtdblock3"
부팅 매개변수 구문에 대한 자세한 내용은 ip=
다음을 참조하세요.문서/filesystems/nfs/nfsroot.txt. 이 기능의 원래 목적이 네트워크 루트 파일 시스템을 용이하게 하는 것이라는 사실을 무시하십시오.
ip= 및 eth= u-boot 환경 변수를 bootargs로 Linux 커널에 전달했습니다.
eth=
유효한 부팅 매개변수가 아니며 커널에서 무시될 수 있습니다.
참고 Atmel의 드라이버를 사용하는 경우 macb.c
U-Boot가 PHY에 대한 MAC 주소를 설치하는지 확인하세요.