Sklonowałem dysk (SSD) i umieściłem sklonowany dysk w innej maszynie. Teraz oba systemy mają tę samą wartość /etc/machine-id
. Czy po prostu edytujesz, /etc/machine-id
żeby zmienić wartość? Czy mogę to zrobić, gdy system jest uruchomiony (czy muszę uruchomić system z Live USB)?
Czy systemd-machine-id-setup
lepsza alternatywa?
Naiwne użycie systemd-machine-id-setup
nie działa. Próbowałem tych kroków:
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
Nowa wartość jest taka sama jak stara wartość.
machine-id
?Odpowiedzi:
Chociaż
systemd-machine-id-setup
isystemd-firstboot
są świetne dla systemów korzystających z systemd,/etc/machine-id
nie jest plikiem systemowym, pomimo znacznika. Jest również używany w systemach, które nie używają systemd. Alternatywnie możesz użyćdbus-uuidgen
narzędzia:i wtedy
Jak wspomniano Stephen Kitt, systemy Debian mogą mieć zarówno plik, jak
/etc/machine-id
i/var/lib/dbus/machine-id
plik. Jeśli oba istnieją jako zwykłe pliki, ich zawartość powinna się zgadzać, dlatego też usuń/var/lib/dbus/machine-id
:i utwórz go ponownie:
To ostatnie polecenie domyślnie używa
/var/lib/dbus/machine-id
jako nazwy pliku i kopiuje identyfikator komputera z nowo wygenerowanego/etc/machine-id
.dbus-uuidgen
Inwokacja może lub nie może być już częścią zwykłej sekwencji rozruchowej. Jeśli jest to część sekwencji rozruchowej, usunięcie pliku i ponowne uruchomienie powinno wystarczyć. Jeśli musiszdbus-uuidgen
sam uruchomić , zwróć uwagę na ostrzeżenie na stronie podręcznika:Po wykonaniu tej czynności zdecydowanie nie kontynuuj korzystania z systemu bez ponownego uruchamiania. Jako dodatkowy środek ostrożności możesz zamiast tego ponownie uruchomić komputer w trybie ratunkowym (lub, jak sugerowałeś, uruchomić komputer z pamięci USB na żywo), ale z mojego doświadczenia nie jest to konieczne. Złe rzeczy mogą się zdarzyć, ale i tak złe rzeczy są naprawiane przez restart.
źródło
/var/lib/dbus/machine-id
i/etc/machine-id
jest systemd-ism (który jest zgodny z D-Bus)./etc
teraz bezpośrednio (nie jest potrzebne łącze symboliczne), można go tam umieścić tylko dla uproszczenia: jest więcej kodu, który tylko sprawdza/etc
niż tylko sprawdza/var/lib/dbus
.systemd-machine-id-setup
znalezienie w nim kopii oryginalnej wartości. Jest to w zasadzie zachowanie domyślne, chyba że dystrybucja specjalnie tworzy dowiązanie symboliczne.Najłatwiejszą opcją jest usunięcie
/etc/machine-id
na sklonowanym dysku i ponowne uruchomienie;systemd-machine-id-setup
wygeneruje dla Ciebie nowy (musisz uruchomić go ręcznie, jeśli nie nastąpi to automatycznie). Być może trzeba będzie usunąć/var/lib/dbus/machine-id
(jeśli nie jest to dowiązanie symboliczne/etc/machine-id
); w takim przypadku należy upewnić się, że nowymachine-id
naprawdę jest nowy i kopiowanie plików, tak że/etc/machine-id
i/var/lib/dbus/machine-id
zawierają tę samą wartość.Jak się dowiedziałeś, uruchomienie
systemd-machine-id-setup
w systemie, który został uruchomiony z/etc/machine-id
plikiem, po prostu przywróci identyfikator, z którego został uruchomiony (z identyfikatora komputera D-Bus). Jest to opcja 1 na stronie podręcznej, z którą masz link. Usunięcie pliku (ów) i ponowne uruchomienie spowoduje wykonanie opcji 4.Z korzyścią dla czytelników planujących klonowanie dysku w ten sposób, zalecane podejście z systemd, przynajmniej na systemach, gdzie
systemd-firstboot
jest on dostępny, to użycie tego zamiast:/mnt
);zainicjuj identyfikator komputera:
Możesz użyć,
systemd-firstboot
aby ustawić inne parametry, gdy jesteś przy nim (nazwa hosta, hasło roota itp.).źródło
/etc/machine-id
nie jest automatycznie odtwarzany, jeśli zostanie usunięty, żadne niesystemd-firstboot
jest dostępne. Po usunięciu tego pliku należy ręcznie ponownie go utworzyć za pomocąsystemd-machine-id-setup
(i być może również zrestartować komputer)./var/lib/dbus/machine-id
jest tylko dowiązaniem symbolicznym/etc/machine-id
, więc nie ma potrzeby kopiowania zawartości z jednego pliku do drugiego.machine-id
dla D-Bus, skoro D-Bus jest tylko wewnątrzsystemowym mechanizmem IPC?