встановлення mmcblk0p1 не вдалося з невірним аргументом


9

Коли я запускаю Linux з sd-карти та намагаюся монтувати sd-карту - немає проблеми, працює чудово. Але коли я запускаю Linux із флеш-пам’яті, я не можу встановити свою SD-карту:

# 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запис не використовувався.
Hauke ​​Laging

1
Чи записується щось корисне /var/log/messages? Як щодо dmesg | tail?
Flup

@Flup я оновив своє запитання вище
gpuguy

4
mount -t /dev/mmcblk0p1 /mntне є повною командою. Якщо ви знаєте тип файлового файлу, слід вказати його після аргументу -t (наприклад mount -t vfat /dev/mmcblk0p1 /mnt) або повністю опустити -t.
Джеймс Гебден

пропустити не вийшло, як ви бачите вище
gpuguy

Відповіді:


10

Як коментує goldilocks , mount -tочікує , що наступний тип файлової системи з'явиться -t, тому вона не працюватиме. В іншому випадку це здається, що вам просто потрібно вказати тип файлової системи. Якщо ви не знаєте тип файлової системи, то у цій відповіді є список способів дізнатися . Якщо fileкоманда доступна, це, мабуть, найкращий метод. Як root ви зробили б:

file -s /dev/mmcblk0p1

Зауважте також, що якщо тип файлової системи не вказаний у списку /proc/filesystems, то драйвер не компілюється в ядро ​​і тому він повинен бути доступний як зовнішній модуль. Після правильного типу ви можете спробувати:

mount -t correct_type /dev/mmcblk0p1 /mnt

Для завершення також переконайтесь, що /mntкаталог існує! Якщо не створити його за допомогою mkdir /mnt.


кріплення вимагає судо?
Ферроао

@Ferroao, так для встановлення потрібні привілеї root.
Graeme

якщо мені потрібно змінити, створити файли в цьому SD, чи знадобиться мені sudo?
Ферроао

@Ferroao, це залежить від файлової системи, яку ви намагаєтеся встановити. Для файлових систем Linux права / власник / група кожного файлу / каталогу визначають, хто може читати / писати.
Graeme

3

Основні причини: (оновлено)

1) Ваша система не (правильно?) Ініціалізує або не розпізнає SD при завантаженні із спалаху. Чи є /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, тоді як у вашій ОС вже можуть бути інструменти для створення файлової системи ext4.

5) Апаратний дефект - це може бути карта SD, контролер, електропроводка ... але якщо вона працює під час завантаження з SD-картки, то, швидше за все, це не так.


Зауважте, що файлові системи, перелічені в, - /proc/filesystemsце лише ті, які компілюються в ядро. Наприклад, мій /proc/filesystemsне містить vfat, але я все ж можу встановити vfatсистему, оскільки вона доступна як модуль.
Graeme

Виглядає добре, хоча ОП, можливо, доведеться просто вказати тип. util-linuxМонтування намагається визначити файлову систему з допомогою blkidпотім намагається все в /etc/filesystemsабо /proc/filesystem. Я думаю, що це busyboxкріплення, тому, ймовірно, це робить менше. Або, ймовірно, не вистачить спеціалізованої флеш-системи.
Graeme

2

Спочатку перевірте файлові системи, які підтримуються в ядрі.

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

Я припускаю, що ви намагаєтесь встановити ту саму SD-карту, з якої працює Linux. Якщо так, то, я вважаю, цілком обґрунтовано, що у нього є підтримка нативного файлової системи в Linux. Щоб переконатися, що ви завантажили драйвер SD-карти, можете спробувати,

$ 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 також розкаже вам типи розділів.

Це запевняє, що драйвер SD-картки може отримати доступ до блокового пристрою. Тепер ви можете запустити 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

Як тільки ви знаєте FS, змонтуйте його

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

Ви впевнені в цьому? parted може проаналізувати підпис так само добре, наскільки я пам'ятаю. fdisk просто скидає тип розділу.
Кевін

Гаразд, ваше право, partedнамагається визначити тип файлової системи. Коментар видалено
Graeme

-1

Здається, я пам’ятаю, що це помилка, яку ви отримуєте, коли тип розділу, який ви намагаєтесь змонтувати, не підтримується.


Якщо ви знаєте, що таке тип розділу, перевірте, чи є відповідна функція fsck в / sbin і чи є відповідні модулі в ядрі (/ proc /
module

Я не знаю тип розділу. чи є якась команда для пошуку типу розділу? Але я бачу / proc /
module

Якщо у вас є root, це буде набагато простіше, але якщо, як я думаю, ви робите це на Android, ви шукаєте blkid, якщо ні, і це більш звичайне середовище Linux, lsblkймовірно, краще.
mikeserv

Я перевірю lsblk завтра. Але чому / proc / модулі порожні.
gpuguy

Як ти можеш це знати і залишатися цілим днем ​​від введення 5 листів за вашим запитом?
mikeserv

-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
Використовуючи функцію partedon /dev/mmcblk0p1, створіть таблицю розділів на розділі пристрою, який вже був розділений. Також, дотримуючись цих інструкцій, буде видалено всі дані на пристрої .
Graeme
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.