在 ubuntu-minimal-cloudimg 中刪除 proxmox 模板的 /etc/machine-id
我正在嘗試為我的 Ubuntu 虛擬機製作一個模板,主要是按照這裡的 Techno Tim 的說明進行操作。我與 Tim 的不同之處在於我還想安裝 qemu-guest-agent,這樣我就可以獲取 vm 的 IP,而無需手動進行。我在使用命令導入 .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 期間,系統啟動時出現許多錯誤,因為 machine-id 不存在,並且由於某種原因 /etc 被掛載為只讀。有沒有什麼辦法解決這一問題?我可以通過而不是使用 virt-customize 刪除來解決這個問題,我可以通過 virt-customize 放入一個 firstboot 腳本,該腳本通過重新啟動刪除並重新生成機器 ID 以使其生效,但這似乎不太理想方法來做到這一點。有沒有更好的辦法?
不要刪除
/etc/machine-id
. 相反,使用類似的命令截斷它truncate -s 0 /etc/machine-id /var/lib/dbus/machine-id
。machine-id
如果文件被刪除,則不會創建該文件,但如果它為空,它將填充一個新值。連結
實際上 /etc/machine-id 必須至少存在(空的也可以)才能重新生成它——然後 systemd 將在 /run 的臨時位置創建一個新的,綁定掛載 /etc/machine-id 到它,一旦 fs 變為可讀寫,systemd-machine-id-commit.service 會將其寫入 /etc/machine-id