기본적으로 Techno Tim의 지침에 따라 Ubuntu VM용 템플릿을 만들려고 합니다.여기.나와 Tim의 차이점은 수동으로 설치하지 않고도 가상 머신의 IP를 얻을 수 있도록 qemu-guest-agent도 설치하고 싶다는 것입니다. .img 명령을 사용하여 .img를 가져오기 전에 이 작업을 수행합니다 virt-customize -a focal-minimal-cloudimg-amd64.img --install qemu-guest-agent
. 그러나 불행하게도 이것은 내 템플릿에 설정하고 싶지 않은 컴퓨터 ID를 설정하는 데 유리합니다. 이제 virt-customize -a focal-minimal-cloudimg-amd64.img --delete /etc/machine-id
/var/lib/dbus/machine-id에서도 실행할 수 있으며 작업을 수행하고 제거합니다. 그러나 불행하게도 이 VM에서 새 VM을 부팅하는 동안 machine-id가 존재하지 않고 어떤 이유로 /etc가 읽기 전용으로 마운트되었기 때문에 시스템이 많은 오류와 함께 부팅됩니다. 이 문제를 해결할 방법이 있나요?
virt-customize를 통해 이 문제를 해결할 수 있었고, virt-customize를 사용하여 삭제하는 대신 컴퓨터 ID를 삭제 및 재생성하고 재부팅하여 적용하는 최초 부팅 스크립트를 virt-customize를 통해 넣었습니다. 하지만 이는 이상적인 방법이 아닌 것 같습니다. 더 좋은 방법이 있나요?
답변1
삭제하지 마세요 /etc/machine-id
. 대신 비슷한 명령을 사용하여 잘라냅니다 truncate -s 0 /etc/machine-id /var/lib/dbus/machine-id
. machine-id
파일이 삭제되면 생성되지 않지만, 비어 있으면 새로운 값으로 채워집니다.
링크
실제로 /etc/machine-id를 다시 생성하려면 최소한 존재해야 합니다(비어 있어도 좋음). 그런 다음 systemd는 /run의 임시 위치에 새 ID를 생성하고 /etc/machine-id를 바인드 마운트합니다. , systemd-machine-id-commit.service는 fs가 읽기-쓰기 상태가 된 후 /etc/machine-id에 이를 기록합니다.