나는 Linux 6.4.0 커널을 직접 컴파일하고 busybox를 사용하여 루트 파일 시스템을 만들었습니다. 나는 내 자신의 Linux 시스템을 사용자 정의하고 다음을 사용하여 4개의 네트워크 포트가 있는 임베디드 보드에 설치했습니다.도끼 88772칩.
지금 문제가 생겼습니다. 주소가 변경 enx000ec6942ec5
되면 시스템에서 인식하는 네트워크 포트 이름도 변경됩니다. MAC
그러나 네트워크 포트 이름을 eth
. 또한 이더넷 포트 1을 에 eth0
, 이더넷 포트 2를 에 eth1
, 이더넷 포트 3을 에 eth2
, 이더넷 포트 4를 에 고정할 수도 있습니다 eth3
. 커널의 rename 속성을 취소하면 가능하다고 인터넷에서 보았는데, 다음 두 가지 방법을 시도했지만 문제가 해결되지 않았습니다.
그런데 내 사용자 정의 시스템은 M
커널 소스 코드를 수정하지 않고 Linux에서만 변경되었습니다.Y
menuconfig
N
Closed
grub.cfg
이지만 효과가 없습니다.set default=0 set timeout=4 set root=(hd0,gpt3) menuentry "GNU/Linux, Dobot-6.4.0-rt" { linux /bzImage rw root=/dev/mmcblk0p3 noprompt initrd /initrd.img-6.4.0-rt8 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" }
그래서, MAC을 고정해야 하는데 여러 기기에서 사용해야 하는데 MAC이 고정되어 있지 않습니다.
다른 방법이 있나요?
답변1
biosdevname
Dell의 레거시 네트워크 인터페이스 이름 변경 스크립트를 사용하지 않는 경우 이 매개변수를 사용해도 소용이 없습니다. (당신은 아마 그렇지 않을 것입니다.)
net.ifnames
udev/systemd 지시문을 사용하여 이름 변경을 중지할 수 있습니다.
하지만 나는매우여기에서 자신에게 해를 끼치고 있다고 걱정하십시오. "고정되었으면 좋겠습니다 ethX
"라고 말했는데, 이는 여러 이더넷 인터페이스가 존재할 것으로 예상했음을 나타냅니다( 를 호출할 필요가 없었고 을 ethX
호출하기만 하면 되었습니다 eth0
). 그건정확히당신의 상황필요소위 "예측 가능한 인터페이스 이름": 이러한 X
이름은 ethX
다음과 같이 지정됩니다.탐지 순서. 이는 완전히 무작위일 수 있으며 종종 그렇습니다. 따라서 eth0
이 부츠가 eth1
다음 부츠가 될 수 있습니다. 그래서 이름이 바뀌었어요!
따라서 귀하는이름 바꾸기를 비활성화하고 싶지 않습니다(!), 신뢰할 수 없는 ethX
이름은 신뢰할 수 없기 때문입니다. 대신 net.ifname-policy=onboard,path,slot
MAC에 관계없이 이름을 동일하게 유지할 수 있습니다 . 고대 ethX
관습을 전혀 사용하지 마십시오 ! (그것진짜컴퓨터에는 여러 네트워크 카드가 다양한 방식으로 연결되어 있을 수 있으므로 처음에는 이는 좋은 생각이 아닙니다. 이 접근 방식은 일반적으로 컴퓨터에 다중 인터페이스나 카드 연결을 위한 다중 버스 또는 PCI Express가 없었던 시대에 나온 것입니다. 기본적으로 1996년에 USB가 등장하면서 이러한 접근 방식은 PC에서는 더 이상 사용되지 않게 되었습니다. 20년 전 PCI Express가 PC 시장에 진출하면서 ethX
솔루션이 실질적인 문제가 되면서 Linux를 올바르게 설정하는 것이 어려워졌습니다. 따라서 "우리"는 무작위 감지 순서가 아닌 고정된 기능을 기반으로 하는 이름 변경을 사용하여 이 문제를 해결했습니다. 어떤 이유에서는 여전히 튜토리얼과 가이드를 괴롭히기 때문에 기본 소프트웨어에 대한 일반적인 오해입니다. )