बढ़ते mmcblk0p1 अमान्य तर्क के साथ विफल हुआ


9

जब मैं एसडी कार्ड से लिनक्स चला रहा हूं और एसडी कार्ड की समस्या को दूर करने की कोशिश करता हूं, ठीक काम करता है। लेकिन जब मैं फ्लैश मेमोरी से लिनक्स चला रहा हूं तो मैं अपना एसडी कार्ड माउंट करने में असमर्थ हूं:

# mount /dev/mmcblk0p1 /mnt/ 
mount: mounting /dev/mmcblk0p1 on /mnt/ failed: Invalid argument

इस त्रुटि का मूल कारण क्या हो सकता है?

अतिरिक्त जानकारी

root@Xilinx-ZC702-14_7:/# mount -t /dev/mmcblk0p1 /mnt
mount: can't find /mnt in /etc/fstab 

root@Xilinx-ZC702-14_7:/var/volatile/log# ls
wtmp

root@Xilinx-ZC702-14_7:/var/volatile/log# dmesg
dmesg: klogctl: Function not implemented

1
कृपया पूर्ण कमांड ( -t ...) का प्रयास करें ताकि fstabप्रविष्टि का उपयोग न हो।
हॉके लैगिंग

1
क्या उपयोगी कुछ लिखा है /var/log/messages? कैसे के बारे में dmesg | tail?
फ्लॉप

@Flup i ने मेरे सवाल को ऊपर अद्यतन किया
gpuguy

4
mount -t /dev/mmcblk0p1 /mntएक पूर्ण आदेश नहीं है। यदि आप filesytem प्रकार जानते हैं, तो आपको इसे -t तर्क (जैसे mount -t vfat /dev/mmcblk0p1 /mnt) या पूरी तरह से छोड़ देने के बाद निर्दिष्ट करना चाहिए ।
जेम्स हेबडेन

छोड़ने से काम नहीं चला जैसा कि आप ऊपर देख सकते हैं
gpuguy

जवाबों:


10

जैसा कि गोल्डीलॉक्स द्वारा टिप्पणी की गई है , mount -tउम्मीद है कि फाइलसिस्टम प्रकार बाद में आएगा -t, इसलिए यह काम नहीं करेगा। अन्यथा ऐसा लगता है कि आपको केवल फ़ाइल प्रकार को निर्दिष्ट करने की आवश्यकता है। यदि आप फ़ाइल सिस्टम प्रकार नहीं जानते हैं, तो इस उत्तर में पता लगाने के तरीकों की एक सूची है । यदि fileकमांड उपलब्ध है, तो यह संभवतः सबसे अच्छा तरीका है। जड़ के रूप में आप क्या करेंगे:

file -s /dev/mmcblk0p1

यह भी ध्यान दें कि यदि फाइलसिस्टम का प्रकार सूचीबद्ध नहीं है /proc/filesystems, तो ड्राइवर को कर्नेल में संकलित नहीं किया जाता है और इसलिए इसे बाहरी मॉड्यूल के रूप में उपलब्ध होना चाहिए। एक बार आपके पास सही प्रकार होने के बाद, आप कोशिश कर सकते हैं:

mount -t correct_type /dev/mmcblk0p1 /mnt

अंतिम विचार के रूप में, यह भी सुनिश्चित करें कि /mntनिर्देशिका मौजूद है! अगर इसके साथ नहीं बना mkdir /mnt


mounts sudo की आवश्यकता है?
फेरोआओ

@ फ़ेरोआओ, हाँ माउंटिंग को विशेषाधिकारों की आवश्यकता है।
ग्रीम

अगर मुझे संशोधित करने की आवश्यकता है, तो उस एसडी में फाइलें बनाएं क्या मुझे sudo की आवश्यकता होगी?
फेरो

@ फ़ेरोआओ, जो उस फ़ाइल सिस्टम पर निर्भर करता है जिसे आप माउंट करने की कोशिश कर रहे हैं। लिनक्स फाइल सिस्टम के लिए प्रत्येक फ़ाइल / निर्देशिका पर अनुमतियाँ / मालिक / समूह निर्धारित करते हैं कि कौन पढ़ / लिख सकता है।
ग्रीम

3

मूल कारण: (अद्यतन)

1) आपका सिस्टम (ठीक से?) आरंभीकरण नहीं करता है या एसडी को पहचानता नहीं है जब फ्लैश से बूट होता है। वहाँ है /dev/mmcblk0डिवाइस के बाद आप फ्लैश से बूट? क्या fdisk -l /dev/mmcblk0कहता है?

2) / dev / mmcblk0p1 पर कोई फ़ाइल सिस्टम नहीं है, आपको पहले एक फ़ाइल सिस्टम बनाने की आवश्यकता है ( mkfs ...)। इससे जाँच करेंfile -s /dev/mmcblk0p1

3) / dev / mmcblk0p1 पर फ़ाइल सिस्टम दूषित है, आपको इसे जाँचने / मरम्मत करने, प्रयास करने fsck /dev/mmcblk0p1या नया बनाने की आवश्यकता है

4) आपका गिरी (जब फ्लैश से बूट), आवश्यक फ़ाइल सिस्टम ड्राइवर नहीं है की जाँच cat /proc/filesystemsऔर ls "/lib/modules/$(uname -r)/kernel/fs/"करें और देखें कि उस सूची में आवश्यक फाइल सिस्टम प्रकार शामिल है। आमतौर पर, पुराने कर्नेल ext4 का समर्थन नहीं करते हैं, जबकि आपके OS में पहले से ही एक ext4 फ़ाइल सिस्टम बनाने के लिए उपकरण हो सकते हैं।

5) हार्डवेयर दोष - एसडी कार्ड, नियंत्रक, वायरिंग हो सकता है ... लेकिन अगर यह एसडी कार्ड से बूट करते समय काम करता है तो यह संभवतः ऐसा नहीं है।


ध्यान दें कि सूचीबद्ध फ़ाइल सिस्टम /proc/filesystemsकेवल वही हैं जो कर्नेल में संकलित किए गए हैं। उदाहरण के लिए मेरे /proc/filesystemsपास नहीं है vfat, लेकिन मैं अभी भी एक vfatसिस्टम को माउंट कर सकता हूं क्योंकि यह एक मॉड्यूल के रूप में उपलब्ध है।
ग्रीम

अच्छा लग रहा है, हालांकि ओपी को केवल प्रकार निर्दिष्ट करना पड़ सकता है। util-linuxकोशिश करता माध्यम से फ़ाइल सिस्टम की पहचान करने के लिए माउंट blkidमें तो प्रयास सब कुछ /etc/filesystemsया /proc/filesystem। मुझे लगता है कि यह busyboxमाउंट है, इसलिए यह शायद कम करता है। या तो संभावना एक विशेषज्ञ फ़्लैश फाइल सिस्टम को याद करेंगे।
ग्रीम

2

पहले कर्नेल में समर्थित फ़ाइल सिस्टम की जाँच करें।

[kevin@hexcore ~]
$ cat /proc/filesystems 
....
    ext3
    ext2
    ext4
....

मुझे लगता है कि आप उसी एसडी कार्ड को माउंट करने की कोशिश कर रहे हैं जिससे आप लिनक्स चला रहे हैं। यदि ऐसा है, तो मुझे लगता है, काफी यथोचित, कि इसमें लिनक्स में देशी फाइल सिस्टम का समर्थन है। यह सुनिश्चित करने के लिए कि आपने एसडी कार्ड ड्राइवर को लोड किया है, आप कोशिश कर सकते हैं,

$ sudo modprobe sdhci
$ dmesg | tail -n 10
sdhci: Secure Digital Host Controller Interface driver

अब, विभाजन तक पहुंच पढ़ने की कोशिश करें:

$ sudo dd if=/dev/mmcblk of=/dev/null bs=4k count=0  # note: count = 0

वैकल्पिक रूप से:

$ sudo fdisk -l /dev/mmcblk

fdisk आपको विभाजन प्रकार भी बताएगा।

यह आपको आश्वासन देता है कि एसडी कार्ड ड्राइवर ब्लॉक डिवाइस तक पहुंच सकता है। अब आप partedफाइल सिस्टम को प्रिंट करने के लिए चला सकते हैं :

$ sudo parted /dev/mmcblk
(parted) p
Number  Start   End     Size    Type     File system     Flags
 1      1049kB  8000MB  7999MB  primary  linux-swap(v1)
 2      8000MB  500GB   492GB   primary  ext4

एक बार जब आप एफएस को जानते हैं, तो इसे माउंट करें

$ sudo mount -t <FS> /dev/mmcblkpX </target/dir>

क्या अापको उस बारे में पूर्ण विशवास है? जुदा हस्ताक्षर का विश्लेषण कर सकते हैं और साथ ही साथ मुझे याद कर सकते हैं। fdisk केवल विभाजन प्रकार को डंप करता है।
केविन

ठीक है, आपका अधिकार, partedफाइलसिस्टम प्रकार निर्धारित करने का प्रयास करता है। टिप्पणी हटा दी गई।
ग्रीम

-1

मुझे याद है कि यह त्रुटि आपको तब मिलती है जब आप जिस प्रकार के विभाजन को माउंट करने की कोशिश कर रहे हैं वह समर्थित नहीं है।


यदि आप जानते हैं कि विभाजन प्रकार क्या है, तो उचित fsck फ़ंक्शन की जाँच करें / sbin में है और यह कि उपयुक्त मॉड्यूल कर्नेल (/ proc / मॉड्यूल) में हैं
sibaz

मैं विभाजन प्रकार नहीं जानता। क्या विभाजन प्रकार को खोजने के लिए कोई कमांड है? लेकिन मैं देख रहा हूँ / proc / मॉड्यूल - इसके खाली
gpuguy

यदि आपके पास रूट है तो यह बहुत आसान होगा, लेकिन अगर मुझे लगता है कि आप हैं, तो आप एंड्रॉइड पर ऐसा कर रहे हैं, आप देख रहे हैं blkid, यदि नहीं, और यह एक अधिक पारंपरिक लिनक्स वातावरण है, lsblkतो शायद बेहतर है।
mikeserv

मैं कल lsblk की जाँच करूंगा। लेकिन क्यों / proc / मॉड्यूल खाली है।
gpuguy

आप यह कैसे जान सकते हैं और अभी भी आपके प्रॉम्प्ट पर 5 अक्षर टाइप करने से एक पूरा दिन दूर है?
प्रात:

-1

हो सकता है कि आपको विभाजन आकार के कारण (आंशिक कमांड) का उपयोग करने की आवश्यकता हो:

# /sbin/parted /dev/mmcblk0p1
(parted) mklabel gpt
this disk will be lost. Do you want to continue?
Yes/No? yes
....
(parted) quit

यह सुनिश्चित करने के लिए कि विभाजन ठीक से उपयोग किया गया है /sbin/parted /dev/mmcblk0p1 print”

फिर आपको बनाए गए विभाजन को प्रारूपित करना होगा

/sbin/mkfs -t correct_type /dev/mmcblk0p1

2
उपयोग partedकरने /dev/mmcblk0p1से एक डिवाइस के विभाजन पर एक विभाजन तालिका बनेगी जो पहले से ही विभाजित हो चुकी है। साथ ही, इन निर्देशों का पालन करने से डिवाइस का सारा डेटा मिट जाएगा ।
ग्रीम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.