/etc/machine-id를 변경할 수 있습니까?

/etc/machine-id를 변경할 수 있습니까?

디스크(SSD)를 복제하고 복제된 디스크를 다른 컴퓨터에 넣었습니다. 이제 두 시스템 모두에서 동일한 값을 갖습니다 /etc/machine-id. 단순히 값을 변경하기 위해 편집하는 것에 /etc/machine-id는 문제가 없나요 ? 시스템이 실행되는 동안 이 작업을 수행할 수 있습니까(또는 Live USB에서 부팅해야 합니까)?

systemd-machine-id-setup더 나은 선택?

순진한 사용은 systemd-machine-id-setup작동하지 않습니다. 다음 단계를 시도했습니다.

nano /etc/machine-id (to remove the existing value)
systemd-machine-id-setup
> Initializing machine ID from D-Bus machine ID.
cat /etc/machine-id

새 값은 이전 값과 동일합니다.

답변1

systemd를 사용하는 시스템에 적합 하지만 레이블 systemd-machine-id-setup에도 불구하고 systemd 파일은 아닙니다. systemd를 사용하지 않는 시스템에서도 사용됩니다. 따라서 대안으로 다음 도구를 사용할 수 있습니다.systemd-firstboot/etc/machine-iddbus-uuidgen

rm -f /etc/machine-id

그런 다음

dbus-uuidgen --ensure=/etc/machine-id

Stephen Kitt가 언급했듯이 데비안 시스템에는 a /etc/machine-id와 a /var/lib/dbus/machine-id파일이 모두 있을 수 있습니다. 둘 다 일반 파일로 존재하는 경우 해당 내용이 일치해야 하므로 해당 항목도 제거하십시오 /var/lib/dbus/machine-id.

rm /var/lib/dbus/machine-id

다시 만들어 보세요.

dbus-uuidgen --ensure

마지막 명령은 암시적으로 /var/lib/dbus/machine-id파일 이름으로 사용되며 이미 새로 생성된 /etc/machine-id.

dbus-uuidgen호출은 일반 부팅 시퀀스의 일부일 수도 있고 아닐 수도 있습니다. 부팅 순서의 일부인 경우 파일을 삭제하고 재부팅하면 충분합니다. 직접 실행 해야 하는 경우 dbus-uuidgen매뉴얼 페이지의 경고에 주의하세요.

실행 중인 시스템에서 기존 컴퓨터 ID를 변경하려고 하면 나쁜 일이 발생할 수 있습니다. 이 파일을 변경하려고 시도하지 마십시오. 또한 두 개의 다른 시스템에서 동일하게 만들지 마십시오. 두 개의 다른 커널이 실행될 때마다 달라야 합니다.

따라서 이 작업을 완료한 후에는 재부팅하지 않고 시스템을 계속 사용하지 마십시오. 추가 예방 조치로 먼저 복구 모드로 재부팅할 수 있습니다(또는 제안한 대로 라이브 USB 스틱에서 부팅). 그러나 제 경험으로는 이것이 필요하지 않습니다. 나쁜 일이 일어날 수 있지만, 어쨌든 일어난 나쁜 일은 다시 시작하면 해결됩니다.

답변2

가장 쉬운 옵션은 /etc/machine-id복제 디스크를 삭제하고 재부팅하는 것입니다. systemd-machine-id-setup새 디스크가 생성됩니다(이 작업이 자동으로 발생하지 않으면 수동으로 실행해야 합니다). /var/lib/dbus/machine-id심볼릭 링크가 없으면 삭제해야 할 수도 있습니다 /etc/machine-id. 이 경우 새 파일이 실제로 새 파일인지 확인 하고 동일한 값을 포함 하도록 machine-id파일을 복사하세요 ./etc/machine-id/var/lib/dbus/machine-id

발견한 바와 같이, systemd-machine-id-setup파일에서 부팅된 시스템에서 실행하면 /etc/machine-id부팅 시 사용된 식별자(D-Bus 컴퓨터 ID에서)만 복원됩니다. 이것은 링크한 맨페이지의 옵션 1입니다. 파일을 삭제하고 다시 시작하면 옵션 4가 실행됩니다.

독자들의 이익을 위해계획이런 방식으로 디스크를 복제할 때는 최소한 다음 시스템에서는 systemd 방법을 사용하는 것이 좋습니다.systemd-firstboot사용 가능합니다. 대신 사용하세요.

  1. 복제 디스크;
  2. 복제된 루트 파티션을 어딘가에 마운트합니다(예를 들어 /mnt);
  3. 머신 ID 초기화:

    systemd-firstboot --root=/mnt --setup-machine-id
    

systemd-firstboot사용할 때 다른 매개변수(호스트 이름, 루트 비밀번호 등)를 설정할 수 있습니다 .

답변3

다음 단계가 도움이 될 수 있습니다.

  • 컴퓨터 ID 삭제
    rm /etc/machine-id
    rm /var/lib/dbus/machine-id
    init 6
    
  • 컴퓨터 ID 재생성
    dbus-uuidgen --ensure
    systemd-machine-id-setup
    
  • 확인하다
    cat /etc/machine-id
    hostnamectl
    

답변4

임베디드 산업용 장치의 다양한 디스크가 복제되어 모든 디스크가 동일해지고 나중에 장치에 있지 않기 machine-id때문에 로컬 네트워크에서 충돌이 발생하는 비슷한 상황에 직면했습니다 .MACbridgeethernet

가장 간단한 해결책은 machine-id컴퓨터가 사용하는 것과 컴퓨터가 사용하는 것을 각 컴퓨터에서 다시 시작하는 것 입니다 systemd.

rm /etc/machine-id
systemd-machine-id-setup

관련 정보