डेबियन / Grub2: नई ड्राइव में रूट विभाजन चल रहा है?


30

क्या किसी के पास यह सुझाव है कि रूट विभाजन को एक नई ड्राइव पर कैसे ले जाएं और उस ड्राइव पर बूट करने के लिए grub2 सेट करें? मुझे लगता है कि यह क्या मैं करना चाहता हूँ grub-mkconfig का निर्देशन करने के लिए कोई किस्मत नहीं है (जैसे मेरे नए रूट में chroot'int बस सभी लिपियों को भ्रमित करता है)।

बैकग्राउंड मैं डेबियन स्क्वीज एक हेडलेस लो-पावर एनएएस पर चल रहा है। मेरे मौजूदा सेटअप है /पर sda0और /bootपर sde0(एक CF कार्ड): मैं अलग की जरूरत /bootहै क्योंकि sd[a-d]एक देरी स्पिन-अप करने के लिए की जरूरत है। अब मुझे एक पुरानी 2.5 "आईडीई डिस्क का उपयोग करने के लिए मिला है /जिसमें /bootमुझे सभी बड़े डिस्क को स्पिन करने की अनुमति शामिल है।

मैंने मूल रूप से जो कोशिश की है, मैं गया

mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot

फिर मैंने कोशिश की

chroot /mnt/newroot
update-grub

लेकिन यह पूछने में असफल रहा कि ग्रब रूट था या नहीं। फिर मैंने /mnt/newroot/grub/grub.cfgकर्नेल छवि को खोजने के लिए एक आधा-अधूरा प्रयास sdf5किया, उसके बाद a grub-install --root-directory=/mnt/newroot /dev/sdf। लेकिन यह सिर्फ मुझे एक ग्रब बचाव शीघ्र उतरा जब मैं से बूटिंग की कोशिश की sdf

मेरी बैकअप योजना बस को पुनर्स्थापित करना है, इसलिए एक बोनस प्रश्न (इस के लिए कोई चेकमार्क नहीं): मुझे अपना lvm2 और mdadm कॉन्फिगर करने के लिए क्या करना होगा? क्या यह सब फाइलसिस्टम में संग्रहीत है (और क्या यह स्वचालित रूप से खोजा जाएगा), या क्या मुझे इसे स्वयं लेने की आवश्यकता है?

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

janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot

सभी फाइलें अब कॉपी की जाती हैं ( कॉपी रणनीतियों की चर्चा के लिए यहां देखें )। etc/fstabनई रूट को इंगित करने के लिए नया ठीक करें :

janus@nasguld:/mnt/newroot$ diff -u etc/fstab.old  etc/fstab
    -UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 /     ext3 errors=remount-ro         0 1
    -UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults                  0 2
    +UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 /     ext3 noatime,errors=remount-ro 0 1

अंत में, माउंट dev, sysऔर procनई रूट और चेरोट के लिए:

janus@nasguld:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ sudo mount -t proc none  /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on 
janus@nasguld:/mnt/newroot$ sudo chroot .

अब हम भविष्य की जड़ को ठीक उसी तरह से काट रहे हैं जैसे यह दिखेगा। Maciej के अनुसार, बस कॉल करना ठीक होना चाहिए grub-install, लेकिन मैंने बूटलोडर को स्थापित करने से पहले update-grubउत्पन्न पर एक नज़र पाने के लिए सबसे पहले किया /boot/grub/grub.cfg। मुझे यकीन नहीं है कि यह स्वचालित रूप से अपडेट हो जाएगा?

root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb

की सामग्री /etc/default/grub, और सटीक प्रतिलेख से पोस्ट करें update-grub
गाइल्स का SO-

(समाधान जोड़ने के बाद विचार): यह वास्तव में हो सकता है कि समस्या यह है कि मैं अद्यतन नहीं किया था /etc/fstabमें chroot(इस के साथ संगत होगा update-grubशिकायत की कि "\ माउंट नहीं किया गया")। क्या मैं फिर से ऐसा करने की कोशिश कर रहा था, मैं चेरोट में विशेष फ़ाइल सिस्टम को माउंट करने के लिए परेशान किए बिना पहले कोशिश करूंगा।
Janus

बस एक नोट: रिबूट करने से पहले अनमाउंट / mnt / newroot करना न भूलें!
जियाकोमो टेसियो

यहां निर्देश दिए गए हैं कि HDD पर / होम रखते समय, अपने रूट पार्टीशन को नए nvme ड्राइव में कैसे स्थानांतरित करें। lucasmanual.com/blog/…
लुकास

जवाबों:


20

माउंट बुनियादी फाइल सिस्टम और कॉपी / फ़ाइलों को संशोधित करते हुए जैसे चुरोटिंग:

  • / देव ( mount -o bind /dev/ /path/to/chroot/dev)
  • / खरीद ( mount -t proc none /path/to/chroot/proc)
  • / sys ( mount -t sysfs none /path/to/chroot/sys)

IIRC जिसने आर्क में ग्रब 2 और गेंटू पर कई बार स्थापित करते समय मेरे लिए काम किया। उसके बाद चेरोट को /path/to/chrootकमांड देना था:

grub-install /dev/<boot_disk>

Lvm2 के रूप में (और मैं पागल मानता हूं लेकिन मैंने इसका इस्तेमाल नहीं किया है) कॉन्फ़िगरेशन डिस्क पर संग्रहीत है। उपकरणों को खोजने के लिए क्या पढ़ा जाना चाहिए, इसका विन्यास है। मान लें कि आपके उपकरण मानक स्थानों पर हैं ( /dev/sd*या /dev/hd*) कोई समस्या नहीं होनी चाहिए।


पुनश्च। मुझे लाइव सिस्टम के सरल cp पर भरोसा नहीं होगा क्योंकि कई जगह हैं जहां यह गलत हो सकता है:

  • बदलना /etc/fstabऔर अन्य उपयोगी फाइलें भूल गए
  • एक्सेस के दौरान फाइलें बदल गईं
  • कूड़ा कचरा ( /tmpआदि)

धन्यवाद। तो मूल रूप से, आप कह रहे हैं कि मैं एक मैला चूरू करता हूं :) मैं इसे उचित चुरोट के साथ आजमाऊंगा। cp -axइस पुराने हॉवटो के अनुसार ठीक होना चाहिए (शायद सिंगल यूजर रनलेवल छोड़ने के बाद): tldp.org/HOWTO/Hard-Disk-Upgrad/copy.html
Janus

एक आकर्षण काम किया! मदद के लिए बहुत - बहुत धन्यवाद।
Janus

1
@ जानूस: मैं लाइव डिस्ट्रो के डेटा को सुरक्षित साइड पर रखना चाहूंगा। मुझे खुशी है कि हालांकि इसने काम किया।
मैकीज पीचोटका

मुझे update-grubपहले करना था install-grub
आर्येह लीब तौरोग

3

आप चुरोटिंग के बिना लाइव डिस्ट्रो से ग्रब स्थापित कर सकते हैं:

grub-install /dev/hda --root-directory=/mnt/guest/

धन्यवाद। मुझे यकीन नहीं है कि यह यहां काम करेगा: जैसा कि मैं इसे समझता हूं, grub-installकेवल ग्रब छवि फ़ाइलों को अपडेट करता है और एमबीआर लिखता है: विशेष रूप से, grub.cfgअपडेट नहीं किया गया है। जैसा कि मैंने ऊपर टिप्पणी की है, विशेष डायर बढ़ते हुए ओवरकिल हो सकता है, लेकिन मुझे अभी भी लगता है कि चेरोट grub.cfgएक सरल तरीके से अपडेट करने का तरीका है?
Janus

हाँ, यह मेरे लिए भी काम नहीं किया। आपको update-grubकाम करना है और वह है जिसके पास --root-directoryकुछ है या नहीं , नहीं?
मीत

0

BTW अगर आप एक विभाजन (एक विंडोज़ की तरह) जोड़ रहे हैं, जिस पर आप बूट सेक्टर में लिखने के लिए ग्रब नहीं चाहते हैं, लेकिन आप चाहते हैं कि ग्रब आपके कंप्यूटर बूट होने पर इसके बारे में जाने, तो आप विभाजन को स्कैन कर सकते हैं और उत्पन्न कर सकते हैं टर्मिनल सत्र में निम्नानुसार grub_mkconfig कमांड का उपयोग करके एक नई grub.cfg फ़ाइल

सीडी / बूट / ग्रब

sudo cp grub.cfg ./grub.cfg.old

sudo grub_mkconfig -o/grub.cfg

अब जब आप अपने वर्तमान लिनक्स विभाजन से बूट करते हैं (जो कि इसे ग्रब बूट कर रहा था) तो अब इसे दूसरे विभाजन के बारे में पता चलेगा।

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