डेस्कटॉप LiveCD से LVM रूट पर अप्राप्य स्थापना को ठीक करना


9

मैंने सिर्फ 10.10 डेस्कटॉप लाइवसीडी से एक इंस्टॉलेशन किया था, जो रूट वॉल्यूम को LVM LV बनाता है।

जाहिर है यह समर्थित नहीं है; मैंने GUI इंस्टॉलर ऐप शुरू करने से पहले ये कदम उठाकर इसे प्रबंधित किया:

  • lvm2रनिंग सिस्टम पर पैकेज स्थापित करना
  • सिस्टम हार्ड ड्राइव पर LVM- प्रकार विभाजन बनाना
  • LVM टूल का उपयोग करके एक भौतिक आयतन, एक आयतन समूह और एक रूट LV बनाना। मैंने एक दूसरा LV भी बनाया /var; मुझे नहीं लगता कि यह प्रासंगिक है।
  • प्रत्येक दो LVs पर एक फाइलसिस्टम (ext4) बनाना।

इन चरणों को लेने के बाद, GUI इंस्टॉलर ने दो LVs को स्थापना लक्ष्य के रूप में पेश किया; मैंने सहर्ष स्वीकार किया, /bootLVM विभाजन से अलग एक प्राथमिक विभाजन पर भी ।

स्थापना आसानी से जाने लगती थी, और मैंने सत्यापित किया है कि रूट और var वॉल्यूम दोनों में स्वीकार्य-दिखने वाली निर्देशिका संरचनाएँ हैं।

हालाँकि, बूटिंग विफल रहता है; अगर मुझे सही से समझ में आ गया कि क्या हुआ है, तो मुझे initrd फाइलसिस्टम में चल रहे एक व्यस्त बॉक्स में छोड़ दिया गया।

हालाँकि मैंने अभी तक grub2 डॉक्स की संपूर्णता के माध्यम से काम नहीं किया है, लेकिन यह प्रविष्टि की तरह दिखता है जो मेरे नए सिस्टम को बूट करने की कोशिश करता है:

menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos3)'
    search --no-floppy --fs-uuid --set $UUID_OF_BOOT_FILESYSTEM
    linux   /vmlinuz-2.6.35-22-generic root=/dev/mapper/$LVM_VOLUME_GROUP-root ro   quiet splash
    initrd  /initrd.img-2.6.35-22-generic
}

ध्यान दें कि वास्तविक रूप में $ VARS को grub.cfgउनके संबंधित मूल्यों के साथ बदल दिया जाता है ।

मैंने लाइव एलसीडी में रीबूट किया और एक टेंपर्ड डायरेक्टरी में इनट्रेड इमेज को अनपैक किया। ऐसा लगता है कि initrd छवि में LVM कार्यक्षमता का अभाव है। उदाहरण के लिए, यदि मैं पढ़ रहा हूं /usr/share/initramfs-tools/hooks/lvm2( lvm2लाइव-बूट सिस्टम पर स्थापित है, स्थापित पर मौजूद नहीं है) सही ढंग से, एक lvmनिष्पादन योग्य में स्थित होना चाहिए /sbin; बात वह नहीं है।

इस स्थिति को मापने का सबसे अच्छा तरीका क्या है? मुझे पता है कि वैकल्पिक रूप से स्थापित सीडी का उपयोग करना आसान होगा, जो जाहिरा तौर पर LVM का समर्थन करता है, लेकिन मैं इसे डाउनलोड करने के लिए इंतजार नहीं करना चाहता और फिर पुनर्स्थापित करना होगा।

जवाबों:


9

आप समस्या को सिर पर मारते हैं: इनट्रामेफ़्स में एलवीएम समर्थन नहीं है। इसे ठीक करने का तरीका यहां दिया गया है:

  1. LiveCD को फिर से बूट करें
  2. lvm2लाइव वातावरण में फिर से स्थापित करें
  3. वॉल्यूम समूह को लाएं (यदि -ay काम नहीं करता है-हां हां)

    vgchange -a y
    
  4. अलग पेड़ के नीचे रूट एलवी, / बूट, और / डेव माउंट करें

    mkdir /newroot
    mount /dev/yourVG/rootLV /newroot
    mount /dev/yourbootpartition /newroot/boot
    mount -o bind /dev /newroot/dev
    
  5. / Newroot ट्री में आवश्यक पैकेज कॉपी करें

    cp /var/cache/apt/archives/*deb /newroot/tmp/
    
  6. नए पेड़ में काटें और संकुल स्थापित करें

    chroot /newroot
    cd /tmp
    dpkg -i *.deb
    

इस बिंदु पर, चीजें वापस सामान्य होनी चाहिए (चूंकि आईवीआरएमएफ को पुनर्जीवित किया जाएगा जब lvm2 स्थापित हो)। यदि नहीं, तो आप update-initramfs -uचुरोट के अंदर दौड़ने के साथ खेल सकते हैं ।


बाँध-वृद्धि / देव का क्या कारण है?
intuited

मैंने जोड़ा / देव मामले में ग्रब फिर से चला गया और यह पता लगाना चाहता था कि बूट ड्राइव कहाँ स्थित थे। मैंने इस मामले में dpkg का उपयोग किया है कि नेटवर्किंग ऊपर या अन्यथा chroot के अंदर अजीब नहीं है। यदि नेटवर्किंग काम करती है, तो मैं "एप्टीट्यूड" को "एप्टीट्यूड" से अधिक करने की सलाह देता हूं, क्योंकि यह इन दिनों बेहतर डिप्लॉय रिज़ॉल्यूशन करता है।
कीस कुक

apt-getइसके बारे में टिप के लिए धन्यवाद , यह क्या है का ट्रैक रखने के लिए मुश्किल है। क्या आपके पास उस पर अधिक जानकारी के लिए लिंक है?
intuited

1

सिस्टम को हार्ड डिस्क पर स्थापित करने के बाद, आपको बूट करने से पहले उस सिस्टम में lvm2 इंस्टॉल करना होगा। यदि आपने लाइव एलसीडी पर lvm2 स्थापित किया है, तो पैकेज अभी भी / var / cache / apt / archives में होंगे। उस निर्देशिका में बदलें, हार्ड डिस्क को माउंट करें, और dpkg --root = / mnt * .deb का उपयोग करके हार्ड डिस्क पर पैकेज स्थापित करें। आपके मामले में, आपको रूट fs को / mnt पर माउंट करने की आवश्यकता है, और var fs को / mnt / var में भी।

इसके अलावा आपको अलग / बूट विभाजन की आवश्यकता नहीं है, और एक अलग / var विभाजन संदिग्ध है।


अच्छा .. यह आसान से अधिक है chroot। मुझे लगता है कि यह उन aptitudeपैकेजों में दर्ज नहीं होगा जो स्पष्ट रूप से स्थापित किए गए थे, इसलिए मुझे शायद बस स्थापित करना चाहिए lvm2और इस तरह से इसकी निर्भरताएं। कोई भी एक अलग का उपयोग करने के लिए downsides /var? अतिरिक्त 'सुस्त' स्थान आवंटित करने के मुद्दे के अलावा? मैं इसे स्नैपशॉट करने में सक्षम होना चाहता हूं, इसलिए मैं इसे अन्य बड़ी चर फ़ाइलों के साथ मिश्रण नहीं करना चाहता; मैं अपने होम डायरेक्टरी को एक अलग /dataवॉल्यूम में एक निर्देशिका में सिमिलिंक या बाइंड-माउंट करने की योजना बना रहा हूं जो मैं सिस्टम के ऊपर और चलने के बाद, संगीत और इस तरह के आयोजन के लिए बनाऊंगा।
intuited

भी: मैं भी बूट fs माउंट करने की आवश्यकता होगी /mnt/boot, नहीं? मैं इकट्ठा करता हूं कि lvm2स्थापना पर एक नया initrd बनाता है।
intuited

@ नहीं, यह हमेशा की तरह मैन्युअल रूप से स्थापित के रूप में दर्ज किया जाएगा। यदि आपके पास इनमें से एक है तो हाँ, आपको भी बूट / माउंटेड की आवश्यकता है। एक अलग / var होने से स्नैपशॉट बनाने में मदद नहीं मिलती है।
psusi

एक अलग /varविभाजन स्नैपशॉट के साथ मदद नहीं करेगा, नहीं, लेकिन यह, उदाहरण के लिए, रूट एफएस को अप्रत्याशित रूप से भरने से रोकने में मदद करेगा। क्या आप कह रहे हैं कि यह स्नैपशॉट लेने में समस्याएं पेश करेगा? ओह, रुको, कि आप अन्य प्रश्न टिप्पणी धागा पर हैं। कोई बात नहीं ..
intuited

1

मैंने इस वॉकथ्रू के अंतिम खंड से कुछ मदद के साथ, ज्यादातर क्या कीस कुक अच्छी तरह से देता है, समाप्त कर दिया । तथापि:

  • मैंने बाँध-माउंट नहीं किया /dev। यह इस तरह दिखता है कि बाद में कुछ त्रुटि संदेश आए; निचे देखो।
  • मैंने /varइसके अलावा नई रूट पर अपना वॉल्यूम बढ़ाया /boot
  • मैंने /tmpनए रूट में डेब्स की नकल नहीं की । इसके बजाय, मैं आईएनजी के # apt-get install aptitude; aptitude install lvm2बाद भाग गया chroot

    • मैंने इन क्रियाओं को उपयुक्त डेटाबेस में दर्ज करने के लिए ऐसा किया था: उदाहरण के लिए aptitude, और शायद यह भी apt-get, ट्रैक करेगा कि कौन से पैकेज स्पष्ट रूप से स्थापित किए गए थे और जो स्वचालित रूप से निर्भरता के रूप में स्थापित किए गए थे।
    • चूंकि मैं वास्तव में स्थानीय उपयुक्त प्रॉक्सी (चल रहा है apt-cacher-ng) के माध्यम से अपने पैकेज प्राप्त कर रहा हूं, इसलिए मुझे उन्हें फिर से डाउनलोड करने के लिए इंतजार नहीं करना पड़ा। मैं एक फ़ाइल बनाने की क्या ज़रूरत थी /etc/apt/apt.conf.d/02proxyयुक्त Acquire::http::Proxy "http://local-apt-proxy-server:3142";चलाने से पहले apt-get। मैंने इंस्टाल करने से पहले LiveCD को बंद करते समय संकुल को शुरू करने से पहले एक ही काम किया था।
    • मुझे एक त्रुटि संदेश मिला या एक-दो बार चेतावनी देते हुए कहा

      Can not write log, openpty() failed (/dev/pts not mounted?)
      

** माउंट -ओ बाँध / देव / पीटीएस / एमएनटी / यूएननेम / देव / पीटीएस

    This did not prevent the appropriate lines from being added to `/var/log/dpkg.log`.

    I suspect that this issue could have been averted by bind-mounting `/dev`, but I don't really understand what it means, i.e. I don't know what log it's referring to, or why it would need to access a pty in order to write to a log.

मैं अपना जवाब स्वीकार कर रहा हूं क्योंकि इसने मेरे लिए अच्छा काम किया है; एक समान समाधान के लिए Kees का उत्तर देखें जो कुछ स्थितियों में अधिक विश्वसनीय हो सकता है।
intuited
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.