Mặc dù systemd-machine-id-setup
và systemd-firstboot
rất tốt cho các hệ thống sử dụng systemd, nhưng /etc/machine-id
không phải là tệp systemd, mặc dù có thẻ. Nó cũng được sử dụng trên các hệ thống không sử dụng systemd. Vì vậy, để thay thế, bạn có thể sử dụng dbus-uuidgen
công cụ:
rm -f /etc/machine-id
và sau đó
dbus-uuidgen --ensure=/etc/machine-id
Như Stephen Kitt đã đề cập, các hệ thống Debian có thể có cả tệp /etc/machine-id
và /var/lib/dbus/machine-id
tệp. Nếu cả hai tồn tại dưới dạng tệp thông thường, nội dung của chúng phải khớp, do đó, cũng xóa /var/lib/dbus/machine-id
:
rm /var/lib/dbus/machine-id
và tạo lại nó:
dbus-uuidgen --ensure
Lệnh cuối cùng này hoàn toàn sử dụng /var/lib/dbus/machine-id
làm tên tệp và sẽ sao chép ID máy từ tên mới được tạo /etc/machine-id
.
Lệnh dbus-uuidgen
gọi có thể hoặc không phải là một phần của chuỗi khởi động thông thường. Nếu nó là một phần của trình tự khởi động, thì việc xóa tệp và khởi động lại là đủ. Nếu bạn cần tự chạy dbus-uuidgen
, hãy chú ý đến cảnh báo trong trang man:
Nếu bạn cố gắng thay đổi id máy hiện có trên một hệ thống đang chạy, nó có thể sẽ dẫn đến những điều tồi tệ xảy ra. Đừng cố gắng thay đổi tập tin này. Ngoài ra, đừng làm cho nó giống nhau trên hai hệ thống khác nhau; nó cần phải khác nhau bất cứ lúc nào có hai hạt nhân khác nhau đang chạy.
Vì vậy, sau khi làm điều này, chắc chắn không tiếp tục sử dụng hệ thống mà không khởi động lại. Để phòng ngừa thêm, trước tiên bạn có thể khởi động lại vào chế độ cứu hộ (hoặc như bạn đề xuất, khởi động từ thanh USB trực tiếp), nhưng theo kinh nghiệm của tôi, điều đó là không cần thiết. Những điều tồi tệ có thể xảy ra, nhưng những điều tồi tệ xảy ra vẫn được khắc phục bằng cách khởi động lại.