Можно ли изменить /etc /machine-id?

Я клонировал диск (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

Новое значение совпадает со старым значением.

27 голосов | спросил MountainX 7 22017vEurope/Moscow11bEurope/MoscowTue, 07 Nov 2017 11:13:55 +0300 2017, 11:13:55

2 ответа


16

Хотя systemd-machine-id-setup и systemd-firstboot являются отлично подходит для систем, использующих systemd, /etc/machine-id не является файлом systemd, несмотря на тег. Он также используется в системах, которые не используют systemd. В качестве альтернативы вы можете использовать инструмент dbus-uuidgen:

rm -f /etc/machine-id

, а затем

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

Как уже упоминалось Стивеном Киттом, системы Debian могут иметь как /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 в качестве имени файла и скопирует идентификатор машины из уже созданного /etc/machine-id

Вызов dbus-uuidgen может быть или не быть частью обычной последовательности загрузки. Если это часть последовательности загрузки, то удаление файла и перезагрузка должны быть достаточными. Если вам нужно запустить dbus-uuidgen самостоятельно, обратите внимание на предупреждение на странице руководства:

  

Если вы попытаетесь изменить существующий идентификатор машины в запущенной системе, это, вероятно, приведет к плохим вещам. Не пытайтесь изменить этот файл. Кроме того, не делайте то же самое на двух разных системах; он должен быть другим в любое время, когда работают два разных ядра.

Поэтому, после этого, определенно не продолжайте использовать систему без перезагрузки. В качестве дополнительной меры предосторожности вы можете сначала перезагрузиться в режим спасения (или, как вы сказали, загрузитесь с живого USB-накопителя), но из моего опыта это не является необходимым. Плохие вещи могут случиться, но плохие вещи, которые происходят, фиксируются перезагрузкой в ​​любом случае.

ответил hvd 7 22017vEurope/Moscow11bEurope/MoscowTue, 07 Nov 2017 15:32:17 +0300 2017, 15:32:17
27

Самый простой вариант - удалить /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 в man-странице, с которой вы связаны. При удалении файла (ов) и перезагрузки будет выполняться опция 4.

В интересах читателей планирование при клонировании диска таким образом рекомендуется использовать метод systemd, по крайней мере, в системах, где systemd-firstboot доступно, это используйте это вместо:

  1. клонировать диск;
  2. монтируйте клонированный корневой раздел где-нибудь (, например. /mnt);
  3. инициализировать идентификатор машины:

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

Вы можете использовать systemd-firstboot, чтобы установить другие параметры, пока вы на нем (имя хоста, пароль root и т. д.).

ответил Stephen Kitt 7 22017vEurope/Moscow11bEurope/MoscowTue, 07 Nov 2017 11:17:59 +0300 2017, 11:17:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132