Controllare e correggere gli errori della scheda SD all'interno di Android stesso?


42

A volte la mia scheda SD viene "corrotta" e questo porta a molti errori di lettura / scrittura. Di solito, collegando la scheda SD a Windows 7 e selezionando l' opzione "Controllo errori" (Fare clic con il tasto destro del mouse sull'unità> Strumenti> Controllo errori) trova il danneggiamento e lo corregge.

Esiste uno strumento o un'app per controllare le schede SD per errori di unità e per correggere lo stesso dall'interno dello stesso Android ?

Vorrei anche menzionare che sono su froyo rooted con busybox installato.


Hai provato con un'app terminale, facendo un sued eseguendo il /system/bin/fsck.exfat?
Izzy

@Izzy mi dàNo such file or directory
Irfan,

Controlla posizioni diverse, forse è /system/xbininvece? Prova ad cdaccedere alla directory e ls fsc*controlla cosa è disponibile. Deve essere da qualche parte :)
Izzy

1
Esattamente. Busybox cerca di essere il più snello possibile. Prova zia Google con "man mount", funziona bene :) E vedi la mia risposta di seguito. Se qualcosa non è chiaro, commenta lì (o guardami in chat - anche se non sarò disponibile lì per le prossime ore, ci sono ancora altri membri conoscenti che ti aiuteranno :)
Izzy

2
Se si verificano ripetutamente errori sulla scheda SD, è necessario assicurarsi che sia effettivamente della capacità dichiarata utilizzando H2testw (collegamento solo in tedesco, software in tedesco e inglese. Credo che questa sia la sede ufficiale nonostante le apparenze contrarie). Le schede SD difettose si corromperanno automaticamente.
Codice Bling

Risposte:


17

Puoi risolverlo con l'aiuto di root e di un emulatore di terminale (ad es. Android Terminal Emulator (o, in alternativa, usando adb shell). Il binario per fare il lavoro viene chiamato fscke di solito si trova in uno /system/xbino /system/bin. A volte hai bisogno di una variante speciale di esso , che potrebbe ad esempio essere chiamato fsck.exfato simili. Quindi, prima assicuriamoci di trovare il binario giusto:

cd /system/xbin
ls fsc*

Se non trovato, ripetere con /system/bin. Presumo che qui sia stato trovato in primo luogo, e venga semplicemente chiamato fsck(se necessario, adattare di conseguenza quanto segue).

Come fsckviene dal "core Linux", possiamo consultare la sua pagina man per la sintassi. Anche se potrebbero esserci alcune opzioni che non funzionano su Android, dovrebbero esserlo quelle più elementari. Vedere la pagina man collegata per i dettagli (o eseguire una VM Linux e utilizzarla man fscknel caso in cui quella pagina scompaia) - Seguirò le basi qui:

Per prima cosa dobbiamo trovare il dispositivo a cui è associata la scheda SD. Se è montato, il mountcomando ci aiuterà:

mount

Fondamentalmente, basta: controlla l'output e vedi dove si trova la tua scheda SD. Di solito si tratta di qualcosa che utilizza vold, ma è diverso tra i dispositivi. L'output può includere qualcosa di simile /dev/block/vold/179:17 on /mnt/storage/sdcard: in tal caso, la prima parte del mio preventivo è il nostro dispositivo. Per riparare l '"unità", è necessario prima smontarlo. Questo può essere fatto tramite il menu delle impostazioni o, come siamo appena nel terminale, emettendo

umount /dev/block/vold/179:17

Ora possiamo andare per il lavoro di riparazione. La sintassi di base è:

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

Quindi prima proviamo l'approccio più semplice e la speranza fsckcapisce tutto da solo:

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

Il che significa fondamentalmente: Mostra progressi (-C) e chiedi sempre all'utente di riparare (-r) eventuali errori /dev/block/vold/179:17. Se ciò non funziona, consultare la pagina man collegata per ulteriori opzioni.


4
Puoi anche salvare i cdpassaggi, se lo desideri, utilizzando ls /system/bin/fsc*e ls /system/xbin/fsc*da qualunque sia la tua directory di lavoro corrente. Potresti anche combinare i due in un comando con ls /system/xbin/fsc* /system/bin/fsc*.
eldarerathis,

1
No, non confondo le cose, ciò di cui non ero a conoscenza è che questa domanda riguarda in realtà la scheda SD. Quindi sì, in realtà ho confuso alcune cose. Beh, a rigor di termini, puoi anche formattare la tua scheda SD, in modo che possa applicarsi alle persone che lo fanno.
Lie Ryan

1
Punto preso. Sebbene l '"utente medio" (o quello "in dubbio") potrebbe attenersi meglio a FAT, almeno per l'interoperabilità. Almeno fino a quando ExtFS non sarà supportato sulla maggior parte dei sistemi operativi facilmente e per impostazione predefinita senza che siano necessari driver aggiuntivi (indovinate che Windows è e rimarrà una trappola qui, come al solito).
Izzy

1
Grazie per questa risposta, penso sia ciò di cui ho bisogno. Ho ricevuto un errore su umount, devi essere root?
Marmo organico,

1
@OrganicMarble sì, certo - per tutti i comandi precedenti, o non hai accesso ai dispositivi (tutto a partire da /dev) in quel modo.
Izzy

3

grazie per questo, mi salva la giornata :)

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

Grazie per aver pubblicato questa risposta, mi ha aiutato moltissimo. Dalla risposta accettata non sapevo come riparare un filesystem vfat. Upvoted.
Marmo organico

2

Se si verificano ripetutamente errori sulla scheda SD, è necessario assicurarsi che sia effettivamente della capacità dichiarata utilizzando H2testw (collegamento solo in tedesco, software in tedesco e inglese. Credo che questa sia la sede ufficiale nonostante le apparenze contrarie). Le schede SD difettose si corromperanno automaticamente.


Grazie per il voto su questa risposta dimenticata da tempo. Probabilmente dovrebbe essere un commento, ma probabilmente non avevo la reputazione per quello al momento. Lascio questo qui per ora fino a quando il commento non viene votato ed è visibile.
Codice Bling

Ho votato il tuo commento.
indimenticabile il

@unforgettableid Grazie, voglio solo assicurarmi che tutti siano a conoscenza di questo rischio. Fa davvero schifo perdere dati.
Codice Bling

OK, quindi ora che il commento è stato votato, puoi eliminare questa risposta. :)
indimenticabile

@unforgettableid lascerà entrambi per ora, per visibilità
Code Bling


0

Se non sbaglio, puoi forzare Android a caricare sia la memoria interna che quella esterna al riavvio effettuando le seguenti operazioni a seconda della tua rom.

eseguire l'app terminale e digitare

su
touch /forcefsck

Quindi riavviare.

Se il tuo telefono non è rootato, questo fallirà sicuramente.

fonte: http://forum.xda-developers.com/showpost.php?p=57027579&postcount=20


Cosa intendi con "in base alla tua ROM"?
indimenticabile il

Questo trucco potrebbe non funzionare su tutti i telefoni. telefoni diversi potrebbero non riuscire a fare nulla. Inoltre, è necessario eseguire il root del telefono.
Trekeyus,

Una volta riavviato, come posso sapere se è stato fsckeffettivamente eseguito o meno?
indimenticabile il

1
-1. Ho sottovalutato il tuo post. Ecco perché: ho trascorso più tempo a esaminare la questione. La tua tecnica suggerita è probabilmente sbagliata al 100%. Può ingannare i lettori nel pensare che aiuta, ma la tecnica in realtà non fa nulla.
indimenticabile il

2
touch /forcefsckfunzionerà solo su un dispositivo con uno script init che verifica la presenza di un /forcefsckfile. Non conosco un singolo dispositivo Android con un tale script di init. Quindi, sebbene la tua tecnica probabilmente funzionerà su dispositivi Debian, Ubuntu e Mint, dubito fortemente che funzionerà su qualsiasi dispositivo Android. Se qualcuno dovesse trovare anche un solo dispositivo Android con uno script init che controlla /forcefsck, per favore fatemelo sapere! Rispondi semplicemente a questo commento.
indimenticabile il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.