Initramfs प्रॉम्प्ट में बूट को कैसे ठीक करें और "माउंट: नहीं पढ़ सकते हैं '/ etc / fstab': ऐसी कोई फ़ाइल या निर्देशिका नहीं है" और "नहीं init मिला"?


25

एक एकल विभाजन के लिए समर्पित GPT विभाजन वाली डिस्क, ext4 स्वरूपित, extlinux (संस्करण 4.05) को बूटलोडर के रूप में, उबंटू कोर संस्करण 13.10 amd64 को रूटफिश के रूप में और उबंटू लिनक्स-छवि-3.11.0-18-जेनेरिक को कर्नेल के रूप में उपयोग करके एक नई प्रणाली स्थापित करना । और बूटलोडर विन्यास उत्पन्न करने के लिए एक्स्टलिनक्स-अपडेट।

रिबूट (अभी भी एक KVM आधारित वर्चुअल मशीन के अंदर) के बाद परिणाम एक (initramfs) संकेत और ये संदेश हैं:

mount: can't read '/etc/fstab': No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.

बिजीबॉक्स v1.20.2 है।

प्रतिगमन:

  • फ़ाइल सिस्टम के साथ जाँच की गई है fsck.ext4

जड़ अस्तित्व की जाँच करें

(initramfs) ls -l /dev/[hs]da*
ls: /dev/[hs]da*: No such file or directory

रूट बूट तर्क

(initramfs) cat /proc/cmdline
initrd=/boot/initrd.img-3.11.0-18-generic ro quiet BOOT_IMAGE=/boot/vmlinuz-3.11.0-18-generic

लोड किए गए मॉड्यूल की जाँच करें

(initramfs) cat /proc/modules
e1000 145368 0 - Live 0xffffffffa0000000

/ बूट फ़ोल्डर सामग्री

$ sudo ls -l boot
-rw------- 1 root root 3296162 Feb 18 22:37 System.map-3.11.0-18-generic
-rw-r--r-- 1 root root 1007681 Feb 18 22:37 abi-3.11.0-18-generic
-rw-r--r-- 1 root root  163258 Feb 18 22:37 config-3.11.0-18-generic
drwxr-xr-x 2 root root    4096 Mar 17 20:13 extlinux
-rw-r--r-- 1 root root 4995000 Mar 16 23:35 initrd.img-3.11.0-18-generic
-rw------- 1 root root 5634192 Feb 18 22:37 vmlinuz-3.11.0-18-generic

इस सिस्टम को अपेक्षित डिफॉल्ट बैश प्रॉम्प्ट पर बूट कैसे करें?


दो init इमेज क्यों? क्या आप कृपया इसे एक वास्तविक डिस्क पर रख सकते हैं और इसे बूट करने का प्रयास कर सकते हैं? Qemu और EFI के मुद्दे हैं - उदाहरण के लिए, यदि आप EFI बूट फ़र्मवेयर छवि का उपयोग नहीं करते हैं, तो आप बहुत दूर नहीं जाएंगे।
मोकेसर

और अगर आप चाहते हैं कि एक बैश प्रॉम्प्ट हो, तो आप हमेशा अपने
इनट्राम्राम्स

वास्तव में, मैं उबंटू में बड़े GPT विभाजन को देखकर याद कर रहा हूं और उन्हें पूरी तरह से खाली कर रहा हूं। जब मैंने अपनी लाइव डिस्क के लिए ग्रब का चयन करने के लिए रिबूट पर शिफ्ट किया तो मैं Efi विकल्प का चयन करने में सक्षम था, जिसके बाद मेरे पास एक डिस्क थी।
मिकसेर

जवाबों:


11

root=/dev/sdaXविकल्प सेट करके अपने कर्नेल बूट पैरामीटर को संशोधित करें । sdaXआपका /या rootविभाजन होगा। अगली बार बूट करने पर, आप देखेंगे कि फ़ाइल सिस्टम initramfsको एक्सेस /etc/fstabऔर माउंट करने से पहले विभाजन को माउंट करने की कोशिश करता है ।

अधिक विवरण के लिए प्रश्न " initramfs का उपयोग करता है / etc / fstab? "


जोड़ने root=/dev/sdaX से स्थिति में सुधार होता है, अब इसके बजाय (initramfs)एक bashलॉगिन प्रॉम्प्ट नहीं है।
प्रो बैकअप

1
root=/dev/sdaXकर्नेल बूट में मैन्युअल रूप से जोड़ने के अलावा , मुझे अपडेट करने और सुझाए गए और फिर से चलाने के लिए /mnt/etc/default/extlinuxबदलने की आवश्यकता है । EXTLINUX_ROOT=""EXTLINUX_ROOT="/dev/sdaX"extlinux-update
प्रो बैकअप

10

आपको इसके बारे initramfsमें समझने की जरूरत है कि यह एक फाइलसिस्टम है। कर्नेल 2.6 के बाद से, यह मूल रूप से, एकमात्र कर्नेल-थोपा हुआ फाइल सिस्टम है (वीएफएस को छोड़कर, जो यकीनन आपकी फाइल पर भी है)। आपकी initramfs imageडिस्क छवि है।

भीतर अपने initramfs imageजो कुछ फ़ाइलें आपके वितरण का फैसला महत्वपूर्ण पर्याप्त से पहले अपने जड़ डिस्क पाया जाता है की आवश्यकता के लिए थे हो जाएगा। आमतौर पर वह बिजीबॉक्स और जो भी कर्नेल मॉड्यूल आपको अपने रूट डिवाइस को खोजने और माउंट करने की आवश्यकता होती है। यह आपके लिए काम नहीं कर रहा है।

हालांकि यहां कोई वास्तविक रहस्य नहीं है, सभी चीजों पर विचार किया गया है। यदि आप एक टर्मिनल प्रॉम्प्ट के आसपास अपना रास्ता पा सकते हैं, तो आप initramfs.पहले नेविगेट कर सकते हैं, लेकिन आपने इसे ध्वस्त कर दिया है।

सबसे पहले और एक बार फिर - यह सिर्फ /.लिनक्स रूट है जो लिनक्स रूट टाइप चीजें कर रहा है। वास्तव में, यदि यह आपके कर्नेल से अलग फाइल में है, तो यह वास्तव में आपका दूसरा रूट डिवाइस है। हर लिनक्स कर्नेल में मूल रूप से/ अपना सबकुछ खाली होता है जिसे वह पहली बार खींचता हैinitramfs.

इतना ही नहीं initramfsहै असली जड़। यह वह जगह है जहाँ लिनक्स कर्नेल यूज़र्सस्पेस को एग्जीक्यूट करता है initऔर बाद में किसी भी समस्या के लिए सभी जिम्मेदारी को त्याग देता है। आपका initव्यस्त होना प्रतीत होता है, जैसे कि कई हैं, जिसका अर्थ है कि इसके कार्यों को नियंत्रित करना इसके साथ-साथ शेल स्क्रिप्ट को संपादित करने के समान सरल होना चाहिए।

फिर init?लगभग निश्चित रूप से नहीं मिलने के बारे में त्रुटि क्यों यह एक कार्यक्रम का उल्लेख है जिसका नाम initआपके initस्क्रिप्ट में खुद को निष्पादित करने के लिए शेल स्क्रिप्ट के माध्यम से निर्देश दिया गया है।

मेरे लिए सबसे महत्वपूर्ण यह है कि कर्नेल छद्म फाइल सिस्टम - dev sys proc- माउंट न करें। यह या तो बहुत परेशान करने वाला है या बहुत अच्छा सुराग है। आप केवीएम का उल्लेख करते हैं जो मुझे कर्नेल क्षमताओं पर सवाल उठाता है, लेकिन इससे पहले कि हम उस अंधेरे और उबड़-खाबड़ सड़क पर जाएं, क्या हम पहले कुछ और कोशिश कर सकते हैं?

cd /root || mkdir /root

यह मुझे बताता है कि त्रुटि संदेश बार-बार है:

ऐसी कोई फ़ाइल या डायरेक्टरी नहीं है

असफल होना जो आपको अपनी initramfsछवि के पुनर्निर्माण की आवश्यकता है । ऐसा करने के लिए एक लाइव डिस्क को बूट करें और उस वितरण को पूरा करने के लिए जो भी उपकरण आपका वितरण प्रदान करता है उसे चलाएं। ओह, और कृपया सुनिश्चित करें कि यह लाइव डिस्क EFI मोड में भरी हुई है।

तो यहाँ के बारे में केवल एक सामान्य बात है initramfs - switchroot.

लिनक्स कर्नेल एक बहुत ही विशेष syscall प्रदान करता है जो शुरुआती उपयोगकर्ताओं के लिए और initramfsअपने रूट डिस्क डिवाइस से मूव को हैंडल करने के लिए है। यह पहले आपके रूट डिस्क को माउंटपॉइंट में माउंट करके initramfsऔर फिर रूट फाइल सिस्टम को इसमें डालकर काम करता है । मुझे लगता है कि आपका initramfs'sलक्ष्य माउंट बिंदु rootउस तरीके पर आधारित है जो इसके बारे में विलाप करता रहता है। क्यों नहीं सुनिश्चित करें कि यह वहाँ है?

आगे की जांच के लिए आपको थोड़ा सा किरकिरा होना चाहिए। पास करने के लिए अपने बूटलोडर को समायोजित करें ...

init=/bin/sh

... कर्नेल पैरामीटर के रूप में।


... लक्ष्य आरोह बिंदु जड़ है ... क्यों नहीं सुनिश्चित करें कि यह वहाँ है? मुझे यह पता नहीं चला कि यह कैसे सत्यापित किया जाए।
प्रो बैकअप

तुम अब और की जरूरत नहीं है। Youve बैश मिला जिसका मतलब है कि आप पिछले initramfs हैं। लेकिन क्या आप अभी भी kvm में हैं?
मोकेसर

हां, मैं अभी भी kvm में हूं।
प्रो बैकअप

@ProBackup यदि आपने इसे वहाँ बनाया है तो आपको दूसरे आदमी को अपना इनाम देने की आवश्यकता है - जो आपने कहा था वह आपका लक्ष्य था, वैसे भी। कोई बात नहीं - आप जाहिरा तौर पर पहले से ही ऐसा किया है। यह जानने के लिए उत्सुक हूं कि आपको दो init छवियों को निर्दिष्ट करने की आवश्यकता क्यों है - initrd और boot क्यों? वो क्या है? मुझे यह भी जानना पसंद है कि क्या, अगर कुछ भी हो, तो आप efibootmgrअपने वर्चुअल मशीन में अपने प्रॉम्प्ट पर चलने से बाहर निकल सकते हैं ।
मोकेसर

मैंने एक नया SE प्रश्न क्यों बनाया है: unix.stackexchange.com/questions/120999/… नोट: मुझे लगता है कि इस KVM (समानताएं डेस्कटॉप v8) में केवल BIOS बूट संदेश के कारण BIOS (UEFI नहीं) है।
प्रो बैकअप

0

मुझे भी यही समस्या थी। एलेक्स ने जो कहा वह सही है। पहले मैंने अपने fstab को समायोजित किया, लेकिन इससे कोई मदद नहीं मिली। इसलिए, मैंने अपना ग्रब चेक किया। यदि आपके पास ग्रब मेनू तक पहुंचने की संभावना है।

  • लिनक्स का चयन करें, जिसे आप शुरू करना चाहते हैं और जो परेशानी पैदा करता है।
  • 'E' दबाएं और 'boot_image' या 'boot ... root' देखें।
  • ' Uuid ' की जाँच करें ।
  • मेरे मामले में, यह गलत था। मैं 'ब्लकीड' लिखकर इनट्रामेफ़्स में एक चित्र बनाता हूं और वह यूआईडी लेता हूं जिस पर मेरा लिनक्स स्थापित है।
  • पिछले यूडिड को ब्लकिड से ग्रब -> बूट_इमेज में पेस्ट करें।

इससे मेरी समस्या हल हो गई। रिबूट के बाद डिस्क को चेक करने के लिए मेरे लाइनक्स को शुरू करने के लिए अधिक समय चाहिए। लेकिन अब यह फिर से काम करता है।

मुझे आशा है मैं आपकी मदद कर सकता हूं।

सादर

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