알고 보니 어떤 종류의 하드웨어 장애에도 대비하면서 이식 가능한 배포판을 만들려고 하는 것이었습니다.
나는 Debian 배포판을 생성(또는 복원)하고 있습니다.다중 벨트(또는 내 백업에서) 결과 디스크가 다음을 포함하여 새(대부분 호환되는) 하드웨어에서 부팅 가능해야 합니다.VirtualBox 머신.
나처럼이전에 질문함, "이동식 배포판"에 필요한 몇 가지 사항 중 하나는 네트워크 인터페이스의 이름을 처리하는 것입니다.
예를 들어 실제 시스템에서 첫 번째 이더넷 장치의 이름은 이고 enp2s0
VirtualBox에서는 이름이 입니다 enp0s3
. /etc/network/interfaces
시작 시 파일을 어떻게 생성해야 합니까 ?
네트워크 인터페이스 이름을 다시 매핑하고(아마도 심볼릭 링크를 통해) 기본 하드웨어의 실제 네트워크 인터페이스 이름을 알지 못한 채 각 애플리케이션에서 해당 이름(역할 이름)을 사용하도록 하는 보다 일반적인 방법이 있습니까?
답변1
이 문제를 해결하는 방법에는 여러 가지가 있습니다.
가장 친숙한 방법은 아마도 부팅 옵션을 사용하거나 net.ifnames=0
재정의를 사용하거나 /lib/systemd/network/99-default.link
실제로 ln -s /dev/null /etc/systemd/network/99-default.link
새로운 스타일 이름을 구현하는 udev 규칙 파일을 마스킹하여 새로운 네트워크 인터페이스 명명 체계를 비활성화하는 것입니다 ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
.데비안 위키클래식 명명 체계를 복원하는 다양한 방법에 대한 추가 정보. 그런 /etc/network/interfaces
다음 eth0
.
가장 유연한 접근 방식은 아마도 정적 사용을 중단 /etc/network/interfaces
하고 NetworkManager로 전환하는 것입니다. 추가 구성이 없으면 자동으로 기본적으로 활성 링크가 있는 네트워크 인터페이스에서 DHCP를 사용하게 됩니다. 이는 여러 개의 NIC가 있지만 실제로 하나만 연결되어 있는 경우에도 상황을 자동으로 처리합니다(반드시 첫 번째 것은 아님).
ip link show
또는 출력(또는 의 링크 /sys/class/network
) 을 읽고 그에 /etc/network/interfaces
맞게 다시 쓰는(또는 실제 네트워크 구성 파일이 무엇이든) 사용자 정의 스크립트를 작성하여 원하는 작업을 수행할 수 있습니다 . 그런 다음 스크립트를 시스템 서비스로 사용하고 Wants=network-pre.target
추가 할 수 있습니다 . 이를 통해 모든 모듈이 로드된 후 네트워크 구성이 시작되기 전에 초기 시스템 설정의 일부로 스크립트를 실행할 수 있습니다.Before=network-pre.target
After=module-init-tools.service
DefaultDependencies=no