/ Etc / machine-id dosyasında değişiklik yapılabilir mi?


33

Bir diski (SSD) klonladım ve klonlanmış diski başka bir makineye yerleştirdim. Şimdi her iki sistem de aynı değere sahip /etc/machine-id. /etc/machine-idDeğeri değiştirmek için basitçe düzenlemek herhangi bir sorun mu? Sistem çalışırken bunu yapabilir miyim (veya bir Canlı USB'den başlatmam gerekir mi)?

systemd-machine-id-setupdaha iyi bir alternatif?

Naif kullanımı systemd-machine-id-setupişe yaramaz. Bu adımları denedim:

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

Yeni değer, eski değerle aynıdır.


tamam gibi görünüyor
Ben

1
D-Bus bir ana bilgisayar mekanizması olmadığından, ana bilgisayarların aynı olup olmadığına ne fark eder machine-id?
fpmurphy

Yanıtlar:


28

Her ne kadar systemd-machine-id-setupve systemd-firstbootsystemd kullanan sistemler için mükemmel /etc/machine-idolsa da, etikete rağmen, bir systemd dosyası değildir. Ayrıca systemd kullanmayan sistemlerde de kullanılır. Alternatif olarak, dbus-uuidgenaracı kullanabilirsiniz :

rm -f /etc/machine-id

ve sonra

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

Stephen Kitt'in dediği gibi, Debian sistemleri hem bir hem de /etc/machine-idbir /var/lib/dbus/machine-iddosyaya sahip olabilir . Her ikisi de normal dosyalar olarak mevcutsa, içerikleri eşleşmelidir, bu yüzden orada da kaldırın /var/lib/dbus/machine-id:

rm /var/lib/dbus/machine-id

ve yeniden oluşturun:

dbus-uuidgen --ensure

Bu son komut örtük /var/lib/dbus/machine-idolarak dosya adı olarak kullanır ve makine kimliğini önceden oluşturulmuş olandan kopyalar /etc/machine-id.

Başvuru dbus-uuidgen, normal önyükleme sırasının bir parçası olabilir veya olmayabilir. Önyükleme sırasının bir parçasıysa, dosyayı kaldırmak ve yeniden başlatmak yeterli olacaktır. Çalıştırmak gerekiyorsa dbus-uuidgenkılavuz sayfasında uyarıya, ödeme dikkat kendinizi:

Çalışan bir sistemde mevcut bir makine kimliğini değiştirmeye çalışırsanız, muhtemelen kötü şeylerin olmasına neden olacaktır. Bu dosyayı değiştirmeye çalışmayın. Ayrıca, iki farklı sistemde aynı yapmayın; çalışan iki farklı çekirdeğin olduğu her zaman farklı olması gerekir.

Bu yüzden, bunu yaptıktan sonra, sistemi yeniden başlatmadan kesinlikle kullanmaya devam etmeyin. Ek bir önlem olarak, bunun yerine ilk önce kurtarma moduna (veya önerdiğiniz gibi, canlı bir USB çubuğundan önyükleme) başlayabilirsiniz, ancak benim deneyimimden bu gerekli değildir. Kötü şeyler olabilir, ancak gerçekleşen kötü şeyler yine de yeniden başlayarak sabitlenir.


2
Anladığım kadarıyla, D-Bus makine kimliği saklandı / saklandı /var/lib/dbus/machine-idve /etc/machine-idbir systemd-ism (D-Bus ile uyumlu).
Stephen Kitt

2
@StephenKitt Tarihsel olarak haklı olduğuna inanıyorum, ancak D-Bus'ın /etcbugünlerde doğrudan kabul ettiği göz önüne alındığında (sembolik bağlantı gerekli değil), sadece basitlik için oraya yerleştirilebilir: sadece kontrollerden /etcdaha fazla kod var /var/lib/dbus.
hvd

Bu durumda, en azından iki dosyanın farklı değerler içermediğinden emin olmalısınız.
yerçekimi

@grawity Bunu yapmanın en kolay yolu, ilk önce iki ayrı dosyaya sahip olmamaktır. Ayrı dosyaları olan (yani, normal bir dosya ve bir sembolik link değil, iki normal dosya) olan dağıtımları biliyor musunuz?
hvd

Ne gibi bir dağıtım OP kullanırsa, görünüşe göre orijinal yazı systemd-machine-id-setuporadaki orijinal değerin bir kopyasını bulurken gösteriyor . Temel olarak, bir dağıtım özel olarak sembolik bağlantı oluşturmadıkça varsayılan davranış budur .
Gravity

29

En kolay seçenek /etc/machine-idklonlanmış diski silmek ve yeniden başlatmak; systemd-machine-id-setupSizin için yeni bir tane üretecektir (eğer otomatik olarak gerçekleşmezse elle çalıştırmanız gerekir). Ayrıca silmeniz gerekebilir /var/lib/dbus/machine-id(eğer bir bağlantı değilse /etc/machine-id); bu durumda, yeni emin olun machine-idgerçekten yeni olduğunu ve böylece dosyaları kopyalamak /etc/machine-idve /var/lib/dbus/machine-idaynı değeri içerir.

systemd-machine-id-setupÖğrendiğiniz gibi, bir /etc/machine-iddosyayla başlatılmış bir sistemde çalıştırmak , başlatıldığı tanımlayıcıyı (D-Bus makine kimliğinden) geri yükleyecektir. Bu, bağlandığınız manpage'deki seçenek 1'dir. Dosyaların silinmesi ve yeniden başlatılması seçenek 4'ü kullanacaktır.

Bir diski bu şekilde klonlamayı planlayan okuyucuların yararı için , en azından systemd-firstbootmevcut olan sistemlerde systemd ile önerilen yaklaşım , bunun yerine kullanmaktır:

  1. diski klonla;
  2. klonlanmış kök bölümünü bir yere monte etmek ( örneğin /mnt );
  3. makine kimliğini başlat:

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

Bulunduğunuz sırada systemd-firstbootdiğer parametreleri ayarlamak için kullanabilirsiniz (ana bilgisayar adı, kök şifre vb.).


Ubuntu 16.04 ve 17.10'da /etc/machine-id, çıkarıldıklarında ikisinin systemd-firstbootde mevcut olmadığını otomatik olarak yeniden oluşturmadığına dikkat etmek gerekir . Bu nedenle, o dosyayı kaldırdığınızda, elle kullanarak yeniden oluşturmanız gerekir systemd-machine-id-setup(ve belki de yeniden başlatmanız).
gerlos,

Başka bir nokta: çoğu zaman /var/lib/dbus/machine-idsadece bir sembolik bağlantıdır /etc/machine-id, bu yüzden bir dosyadan diğerine içerik kopyalamaya gerek yoktur.
gerlos

1
@gerlos evet, bu nedenle “gerekebilir”; ama ben de açık yaptım, tekrar teşekkürler.
Stephen Kitt

machine-idD-Bus sadece bir sistem içi IPC mekanizması olduğundan, neden D-Bus için benzersiz bir ihtiyaç bile var ?
fpmurphy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.