Перевірка та виправлення помилок SD-карти в самому Android?


42

Іноді моя SD-карта стає «пошкодженою», і це призводить до багатьох помилок читання / запису. Зазвичай, підключивши SD-карту до Windows 7 та вибравши опцію "Перевірка помилок" (клацніть правою кнопкою миші диск "Інструменти> Перевірка помилок"), виявляється пошкодження та виправляється.

Чи є інструмент чи додаток для перевірки SD-карт на наявність помилок накопичувача та їх виправлення всередині самого Android ?

Я також хотів би зазначити, що я перебуваю на корінній froyo із встановленим busybox.


Ви пробували з термінальним додатком, роблячи suта працюючи /system/bin/fsck.exfat?
Izzy

@Izzy Gives meNo such file or directory
Ірфан

Перевірте різні місця, можливо, це /system/xbinзамість цього? Спробуйте cdзайти в каталог і ls fsc*перевірити, що є в наявності. Повинно бути десь :)
Izzy

1
Саме так. Busybox намагається бути максимально струнким. Спробуйте тітку Google з "man mount", працює чудово :) І дивіться мою відповідь нижче. Якщо щось незрозуміле, прокоментуйте там (або побачите мене в чаті - хоча я не буду там доступний протягом наступних кількох годин, є ще інші знаючі члени, які допоможуть вам допомогти :)
Izzy

2
Якщо у вас неодноразово виникають помилки на вашій SD-карті, ви повинні переконатися, що вона справді заявленої ємності, використовуючи H2testw (посилання лише німецькою мовою, програмне забезпечення німецькою та англійською мовами. Я вважаю, що це офіційний дім, незважаючи на те, що протилежне). Погані SD-карти автоматично зіпсуються.
Code Bling

Відповіді:


17

Ви можете виправити це за допомогою кореневого та емулятора терміналу (наприклад, Android Terminal Emulator (або, альтернативно, використовуючи adb shell). Двійковий файл, який виконує завдання, називається fsck, і зазвичай знаходиться в будь-якому /system/xbinабо /system/bin. Іноді потрібен спеціальний його варіант , яка може, наприклад, називатися fsck.exfatабо подібне. Отже, спочатку переконаймося, що ми знайшли правильний бінарний файл:

cd /system/xbin
ls fsc*

Якщо його не знайдено, повторіть із /system/bin. Я припускаю, що він був знайдений в першу чергу, і його просто називають fsck(коректуйте наступне відповідно, якщо це не так).

Як fsckвипливає з "ядра Linux", ми можемо ознайомитись із його довідковою сторінкою щодо синтаксису. Хоча можуть існувати деякі варіанти, які не працюють на Android, вони повинні бути основними. Докладні відомості див. На пов’язаній довідковій сторінці (або запустити Linux VM та використовувати man fsckу випадку, якщо ця сторінка зникне) - я буду дотримуватися основ тут:

Спочатку нам потрібно знайти пристрій, до якого пов’язана ваша SD-карта. Якщо він встановлений, mountкоманда допоможе нам:

mount

Це, в основному: Перевірте вихід і подивіться, де сидить ваша SD-карта. Зазвичай для цього використовується щось vold, але це відрізняється між пристроями. Вихід може включати щось на кшталт /dev/block/vold/179:17 on /mnt/storage/sdcard- у цьому випадку перша частина моєї цитати - це наш пристрій. Для того, щоб відремонтувати "привід", потрібно спочатку його відключити. Це можна зробити за допомогою меню налаштувань, або, як тільки ми в терміналі, видавши

umount /dev/block/vold/179:17

Тепер ми можемо перейти на ремонтну роботу. Основний синтаксис:

fsck [options] [-t fstype] <filesystem> [fsoptions]

Тож спершу ми спробуємо найпростіший підхід і сподіваємось fsck, що все з'ясується:

fsck -C -r /dev/block/vold/179:17

Що в основному означає: Показати прогрес (-C), і завжди просити користувача виправити (-r) будь-які помилки /dev/block/vold/179:17. Якщо цього не виходить, перевірте на пов'язаній сторінці сторінки, щоб отримати подальші варіанти.


4
Ви також можете зберегти cdкроки, якщо хочете, використовуючи ls /system/bin/fsc*та ls /system/xbin/fsc*з будь-якого поточного робочого каталогу. Ви навіть можете поєднати ці два в одну команду ls /system/xbin/fsc* /system/bin/fsc*.
eldarerathis

1
Ні, я не плутаю речі, про що я не знав, що це питання насправді стосується SD-карти. Так, так, я насправді дещо плутав. Точно кажучи, ви можете відформатувати вашу SD-карту як ext, так що це може стосуватися людей, які це роблять.
Лі Лі Раян

1
Точка взята. Хоча «середній користувач» (або той, хто «сумнівається») може краще дотримуватися FAT, принаймні, для сумісності. Принаймні, поки ExtFS не підтримується на більшості ОС легко і за замовчуванням без додаткових драйверів (здогадуйтесь, що Windows є і залишиться тут, як зазвичай).
Izzy

1
Дякую за цю відповідь, я думаю, що це те, що мені потрібно. У мене виникла помилка на umount, ви повинні мати корінь?
Органічний мармур

1
@OrganicMarble так, звичайно - для всіх вищезазначених команд, інакше ви не отримаєте доступ до пристроїв (все починаючи з цього /dev).
Іззі

3

дякую за це, це врятує мені день :)

root@android:/ # mount | grep -i sdcard
/dev/block/nandk /mnt/sdcard vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0

root@android:/ # /system/bin/fsck_msdos -y /dev/block/nandk

Дякую, що ви опублікували цю відповідь, це дуже допомогло мені. З прийнятої відповіді я не знав, як виправити файлову систему vfat. Отримано.
Органічний мармур

2

Якщо у вас неодноразово виникають помилки на вашій SD-карті, ви повинні переконатися, що вона справді заявленої ємності, використовуючи H2testw (посилання лише німецькою мовою, програмне забезпечення німецькою та англійською мовами. Я вважаю, що це офіційний дім, незважаючи на те, що протилежне). Погані SD-карти автоматично зіпсуються.


Дякую за відгук на цю давно забуту відповідь. Мабуть, мабуть, буде коментар, але я, мабуть, не мав репутації на той час. Я покину це зараз, поки коментар не буде оскаржений і не буде видно.
Code Bling

Я підтримав ваш коментар.
незабутнійід

@unforgettableid Дякую, просто хочу переконатися, що всі знають про цей ризик. Це дійсно гарно, щоб втратити дані.
Code Bling

Гаразд, тож тепер, коли коментар було анульовано, цю відповідь можна видалити. :)
незабутні

@unforgettableid покине обидва на сьогодні для наочності
Code Bling


0

Якщо я не помиляюся, ви можете змусити андроїд перезавантажувати як внутрішнє, так і зовнішнє сховище, виконуючи наступні дії залежно від вашої програми.

запустити додаток та тип терміналу

su
touch /forcefsck

Потім перезавантажте.

Якщо ваш телефон не вкорінений, це, безумовно, не вдасться.

джерело: http://forum.xda-developers.com/showpost.php?p=57027579&postcount=20


Що ви маєте на увазі під «залежно від вашого ROM»?
незабутнійід

Цей трюк може працювати не на всіх телефонах. різні телефони можуть нічого не зробити. Також ваш телефон повинен бути вкорінений.
Трекей

Після того як я перезавантажився, як я можу знати, чи fsckнасправді працює чи ні?
незабутнійід

1
-1. Я порушив вашу посаду. Ось чому: я більше часу приділяв розгляду справи. Ваша запропонована методика, ймовірно, на 100% помиляється. Це може обдурити читачів думати, що це допомагає, але методика насправді нічого не робить.
незабутнійід

2
touch /forcefsckпрацюватиме лише на пристрої зі скриптом init, який перевіряє наявність /forcefsckфайлу. Я не знаю ні одного пристрою Android, який має такий сценарій init. Отже, хоча ваша техніка, ймовірно, працює на Debian, Ubuntu та Mint пристроях, я дуже сумніваюся, що вона буде працювати на будь-якому пристрої Android. Якщо хто-небудь знайде навіть один єдиний пристрій Android зі скриптом init, який перевіряє /forcefsck, будь ласка, дайте мені знати! Просто відповідайте на цей коментар.
незабутнійід
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.