बदलना ठीक है / आदि / मशीन-आईडी?


33

मैंने एक डिस्क (SSD) को क्लोन किया और क्लोन की गई डिस्क को दूसरी मशीन में डाल दिया। अब दोनों प्रणालियों में समान मूल्य है /etc/machine-id। क्या यह केवल /etc/machine-idमूल्य बदलने के लिए संपादित करने के लिए कोई समस्या है ? क्या मैं ऐसा कर सकता हूं जब सिस्टम चल रहा हो (या मुझे लाइव यूएसबी से बूट करने की आवश्यकता है)?

है 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

नया मूल्य पुराने मूल्य के समान है।


ऐसा लगता है कि यह ठीक है
मैं

1
चूंकि डी-बस एक अंतर-मेजबान तंत्र नहीं है, इसलिए क्या फर्क पड़ता है कि मेजबान एक ही है machine-id?
fpmurphy

जवाबों:


28

हालांकि systemd-machine-id-setupऔर systemd-firstbootsystemd का उपयोग कर सिस्टम के लिए महान हैं, /etc/machine-idएक systemd फ़ाइल, टैग के बावजूद नहीं है। इसका उपयोग उन प्रणालियों पर भी किया जाता है जो सिस्टमड का उपयोग नहीं करते हैं। एक विकल्प के रूप में, आप dbus-uuidgenउपकरण का उपयोग कर सकते हैं :

rm -f /etc/machine-id

और फिर

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

जैसा कि स्टीफन किट ने उल्लेख किया है, डेबियन सिस्टम में फाइल /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, तो मैन पेज में चेतावनी पर ध्यान दें:

यदि आप किसी मौजूदा मशीन-आईडी को रनिंग सिस्टम पर बदलने की कोशिश करते हैं, तो यह संभवत: खराब चीजों के रूप में होगा। इस फ़ाइल को बदलने का प्रयास न करें। इसके अलावा, इसे दो अलग-अलग प्रणालियों पर समान न करें; इसे कभी भी अलग करने की आवश्यकता है, दो अलग-अलग गुठली चल रही हैं।

ऐसा करने के बाद, रिबूट किए बिना सिस्टम का उपयोग करना जारी न रखें। एक अतिरिक्त सावधानी के रूप में, आप इसके बजाय बचाव मोड में पहले रिबूट कर सकते हैं (या जैसा कि आपने सुझाव दिया है, एक लाइव यूएसबी स्टिक से बूट करें), लेकिन मेरे अनुभव से, यह आवश्यक नहीं है। बुरी चीजें हो सकती हैं, लेकिन जो बुरी चीजें होती हैं वे वैसे भी रिबूट द्वारा तय की जाती हैं।


2
जैसा कि मैंने चीजों को समझा, डी-बस मशीन आईडी / में संग्रहीत किया गया था /var/lib/dbus/machine-idऔर /etc/machine-idएक सिस्टमड-इस्म (जो डी-बस के साथ संगत है)।
स्टीफन किट

2
@StephenKitt मेरा मानना ​​है कि आप ऐतिहासिक रूप से सही हैं, लेकिन यह देखते हुए कि डी-बस इसे /etcआजकल सीधे स्वीकार करता है (कोई सिम्बलिन की आवश्यकता नहीं है), इसे सिर्फ सादगी के लिए वहाँ रखा जा सकता है: वहाँ अधिक कोड है जो केवल चेक /etcसे ही जाँच करता है /var/lib/dbus
hvd

उस स्थिति में आपको कम से कम यह सुनिश्चित करना चाहिए कि दोनों फाइलों में अलग-अलग मूल्य नहीं हैं।
विशालकाय

@grawity ऐसा करने का सबसे आसान तरीका है कि पहली जगह में दो अलग-अलग फाइलें न हों। क्या आप डिस्ट्रोस के बारे में जानते हैं जिनके पास अलग-अलग फाइलें हैं (मतलब, दो नियमित फाइलें, न कि एक नियमित फाइल और एक सिमलिंक)?
hvd

जो भी डिस्ट्रिक्ट ओपी उपयोग करता है, जाहिर है, मूल पोस्ट से पता चलता है systemd-machine-id-setupकि वहां मूल मूल्य की एक प्रति है। यह मूल रूप से डिफ़ॉल्ट व्यवहार है जब तक कि एक डिस्ट्रो विशेष रूप से सिमलिंक नहीं बनाता है।
ग्रेविटी

29

सबसे आसान विकल्प /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फ़ाइल के साथ बूट किया गया था बस पहचानकर्ता को पुनर्स्थापित करेगा जो कि डी-बस मशीन आईडी से बूट किया गया था। यह आपके द्वारा लिंक किए गए मैनपेज में विकल्प 1 है। फ़ाइल को हटाना और रिबूट करना विकल्प 4 का प्रयोग करेगा।

इस तरह से डिस्क को क्लोन करने की योजना बनाने वाले पाठकों के लाभ के लिए , सिस्टमड के साथ अनुशंसित दृष्टिकोण, कम से कम सिस्टम पर जहां systemd-firstbootउपलब्ध है, इसके बजाय इसका उपयोग करना है:

  1. डिस्क को क्लोन करना;
  2. क्लोन रूट विभाजन को कहीं माउंट करें ( जैसे /mnt );
  3. मशीन आईडी को इनिशियलाइज़ करें:

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

आप systemd-firstbootइसे (होस्टनाम, रूट पासवर्ड इत्यादि) के दौरान अन्य मापदंडों को सेट करने के लिए उपयोग कर सकते हैं ।


यह ध्यान देने योग्य है कि उबंटू 16.04 और 17.10 पर /etc/machine-idइसे स्वचालित रूप से फिर से तैयार नहीं किया गया है, न systemd-firstbootही उपलब्ध है। तो एक बार जब आप उस फ़ाइल को हटा देते हैं, तो आपको इसे मैन्युअल रूप से उपयोग करके फिर से बनाना चाहिएsystemd-machine-id-setup (और शायद रिबूट, भी) ।
gerlos

एक और बिंदु: अक्सर /var/lib/dbus/machine-idकेवल एक सिम्लिंक होता है /etc/machine-id, इसलिए एक फ़ाइल से दूसरे में सामग्री को कॉपी करने की कोई आवश्यकता नहीं है।
जेरलोस

1
@gerlos हाँ, इसलिए "की आवश्यकता हो सकती है"; लेकिन मैंने यह भी स्पष्ट कर दिया है, फिर से धन्यवाद।
स्टीफन किट

machine-idडी-बस के लिए एक विशिष्ट की आवश्यकता क्यों है क्योंकि डी-बस केवल एक इंट्रा-सिस्टम आईपीसी तंत्र है?
fpmurphy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.