Я клонировал диск (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
Новое значение совпадает со старым значением.
machine-id
?Ответы:
Хотя
systemd-machine-id-setup
иsystemd-firstboot
отлично/etc/machine-id
подходит для систем, использующих systemd, это не системный файл, несмотря на тег. Он также используется в системах, которые не используют systemd. В качестве альтернативы вы можете использоватьdbus-uuidgen
инструмент:а потом
Как упомянул Стивен Китт, системы Debian могут иметь как файл , так
/etc/machine-id
и/var/lib/dbus/machine-id
файл. Если оба существуют как обычные файлы, их содержимое должно совпадать, поэтому там также удалите/var/lib/dbus/machine-id
:и воссоздайте его:
Эта последняя команда неявно использует в
/var/lib/dbus/machine-id
качестве имени файла и будет копировать идентификатор машины из уже созданного/etc/machine-id
.dbus-uuidgen
Вызов может или не может уже быть частью обычной последовательности загрузки. Если это часть последовательности загрузки, то удаления файла и перезагрузки должно быть достаточно. Если вам нужно запуститьdbus-uuidgen
себя, обратите внимание на предупреждение в справочной странице:Поэтому после этого определенно не продолжайте использовать систему без перезагрузки. В качестве дополнительной меры предосторожности вы можете вместо этого сначала перезагрузиться в режиме восстановления (или, как вы предложили, загрузить с USB-флешки), но, по моему опыту, в этом нет необходимости. Может случиться что-то плохое, но все равно плохие вещи исправляются перезагрузкой.
источник
/var/lib/dbus/machine-id
и/etc/machine-id
является системным (совместимым с D-Bus)./etc
напрямую (символическая ссылка не нужна), его можно поместить туда просто для простоты: существует больше кода, который только проверяет,/etc
чем только проверяет/var/lib/dbus
.systemd-machine-id-setup
найти копию оригинального значения. Это в основном поведение по умолчанию, если дистрибутив специально не создает символическую ссылку.Самый простой вариант - удалить
/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). Это вариант 1 на странице руководства, на которую вы ссылаетесь. Удаление файла (ов) и перезагрузка осуществят вариант 4.В интересах читателей, планирующих клонировать диск таким способом, рекомендуемый подход с systemd, по крайней мере в тех системах, где
systemd-firstboot
он доступен, состоит в том, чтобы использовать вместо этого:/mnt
);инициализировать идентификатор машины:
Вы можете использовать
systemd-firstboot
для настройки других параметров, пока вы находитесь на нем (имя хоста, пароль root и т. Д.).источник
/etc/machine-id
он не воссоздается автоматически, если он удален, и неsystemd-firstboot
доступен. Поэтому, как только вы удалите этот файл, вы должны вручную восстановить его, используяsystemd-machine-id-setup
(и, возможно, перезагрузить также)./var/lib/dbus/machine-id
это просто символическая ссылка/etc/machine-id
, поэтому нет необходимости копировать содержимое из одного файла в другой.machine-id
D-Bus, поскольку D-Bus является только внутрисистемным механизмом IPC?