/ etc / machine-id를 변경해도 괜찮습니까?


33

디스크 (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
D-Bus는 호스트 간 메커니즘이 아니기 때문에 호스트가 동일한 지 어떤 차이가 machine-id있습니까?
fpmurphy

답변:


28

비록 systemd-machine-id-setupsystemd-firstbootsystemd를 사용하여 시스템을 위해 중대하다, /etc/machine-id태그에도 불구하고 systemd 파일이 아닙니다. systemd를 사용하지 않는 시스템에서도 사용됩니다. 대안으로 dbus-uuidgen도구를 사용할 수 있습니다 .

rm -f /etc/machine-id

그리고

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

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

rm /var/lib/dbus/machine-id

그것을 다시 만드십시오 :

dbus-uuidgen --ensure

이 마지막 명령은 내재적 /var/lib/dbus/machine-id으로 파일 이름으로 사용 되며 이미 새로 생성 된에서 컴퓨터 ID를 복사합니다 /etc/machine-id.

dbus-uuidgen호출은 이미 일반 부팅 순서의 일부가 될 수도 있고 그렇지 않을 수도 있습니다. 부팅 순서의 일부인 경우 파일을 제거하고 재부팅하면 충분합니다. dbus-uuidgen자신 을 실행해야하는 경우 매뉴얼 페이지의 경고에주의하십시오.

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

따라서 이렇게 한 후에는 재부팅하지 않고 시스템을 계속 사용하지 마십시오. 추가 예방 조치로, 대신 먼저 복구 모드 (또는 제안한대로 라이브 USB 스틱으로 부팅)로 재부팅 할 수 있지만 내 경험으로는 필요하지 않습니다. 나쁜 일이 발생할 수 있지만, 발생하는 나쁜 일은 재부팅으로 수정됩니다.


2
I는 것을 이해 된 바와 같이, D-버스 시스템 이드 /에 저장하고 /var/lib/dbus/machine-id, 그리고 /etc/machine-id(D-버스와 호환되는)는 systemd 이즘이다.
Stephen Kitt

2
@StephenKitt 난 당신이 바로 역사적으로하지만, 주어진 D-버스를 받아들이는 것 생각 /etc(더 심볼릭 링크가 필요 없음) 직접 요즘, 그것은 단지 단순 거기에 넣어 될 수 있습니다 더 많은 코드 만 검사가 /etc만 검사 이상은 /var/lib/dbus.
hvd

이 경우 최소한 두 파일에 다른 값이 포함되어 있지 않아야합니다.
grawity

@grawity 가장 쉬운 방법은 처음에 두 개의 별도 파일이없는 것입니다. 별도의 파일 (즉, 하나의 일반 파일과 하나의 심볼릭 링크가 아닌 두 개의 일반 파일)이있는 배포판에 대해 알고 있습니까?
hvd

원래 게시물 systemd-machine-id-setup이 원래 값의 사본을 찾는 것처럼 OP가 사용하는 모든 배포판은 분명 합니다. distro가 특별히 심볼릭 링크를 만들지 않는 한 기본적으로 기본 동작 입니다.
grawity

29

가장 쉬운 옵션은 /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-firstboot사용 가능한 시스템에서 systemd 를 사용하는 것이 좋습니다.

  1. 디스크를 복제하십시오.
  2. 복제 된 루트 파티션을 어딘가에 마운트하십시오 ( :) /mnt;
  3. 컴퓨터 ID를 초기화하십시오.

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

systemd-firstboot다른 매개 변수를 설정 하는 데 사용할 수 있습니다 (호스트 이름, 루트 암호 등).


Ubuntu 16.04 및 17.10 /etc/machine-id에서는 제거해도 자동으로 다시 생성되지 않으며 systemd-firstboot사용할 수 없습니다. 따라서 해당 파일을 제거한 후에는 수동으로 다시 작성해야합니다 systemd-machine-id-setup(재부팅도 가능).
gerlos

또 다른 요점 /var/lib/dbus/machine-id은 종종 에 대한 심볼릭 링크 /etc/machine-id이므로 한 파일에서 다른 파일로 내용을 복사 할 필요가 없습니다.
gerlos

1
@gerlos 그렇기 때문에“필요할 것”; 그러나 나는 그것을 다시 명시 적으로 만들었습니다.
Stephen Kitt

machine-idD-Bus는 시스템 내 IPC 메커니즘 일 뿐이므로 D-Bus에 고유 한 기능이 필요한 이유는 무엇 입니까?
fpmurphy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.