Jak mogę zapobiec tak częstemu uszkodzeniu karty SD mojego Pi?

47

Podczas uruchamiania pojawia się błąd we / wy, a następnie pojawia się ten „błąd”: (korzystam z najnowszej wersji Raspbian)

Entering kdb (current=0xca82ac80, pid 1) due to keyboard entry
kdb> _

Widziałem to już wcześniej i wyjaśniono, że moja karta SD uległa uszkodzeniu, ponieważ nie wyłączyłem się poprawnie. Tydzień później nie poradziłem sobie z tym błędem, dopóki moc nie zamigotała trzy razy, a teraz nie mogę uruchomić ponownie. Wygląda na to, że codziennie przygotowuję swoją kartę SD !!! Nie podoba mi się to, nie wspominając o tym, że kocham możliwości mojego Pi. Ale ten „punkt przerwania” doprowadza mnie do szału! Czy jest jakiś sposób, aby temu zapobiec lub wzmocnić coś, co nie zdarzy się, jeśli nastąpi zanik mocy? Jakieś sugestie? Dzięki!

PS Mój plik zip nie został uszkodzony, a moją usługą rozpakowywania jest Win32DiskImager

użytkownik151324
źródło
2
Czy twoja karta jest na tej liście
Butters
czy kiedykolwiek myślałeś o UPS?
lenik
@lenik Czy mówisz, że powinienem mieć coś w rodzaju ochrony przeciwprzepięciowej?
user151324,
Ponieważ wyłączasz urządzenie bez odpowiedniego wyłączenia?
jippie
1
@coding_corgi bardziej prawdopodobne jest coś z baterią w środku, która zapewnia zasilanie przez 5-10 minut po zaniku zasilania, która pozwala zignorować krótkie ruchy zasilania i daje czas na wyłączenie (automatycznie?) komputera, gdy zasilanie zostanie wyłączone na dłuższy czas czas. W skrócie nazywa się to „Uninterruptable Power Supply” lub UPS.
lenik

Odpowiedzi:

48

Nie zamierzam pisać o sprawdzaniu list sprzętu i kompatybilnych kart SD, ponieważ najprawdopodobniej już je sprawdziłeś. To, co zamierzam napisać, to trwałe rozwiązanie, które pozwala zlikwidować problem w zarodku i trwale go naprawić.

Jeśli nie chcesz, aby karta SD uległa uszkodzeniu po przestawieniu przełącznika zasilania, musisz użyć jej w trybie tylko do odczytu. Jeśli nic nie zostanie zapisane na karcie SD, nie zostanie uszkodzone bez względu na to, co zrobisz.

Oczywistym (ale nie działającym) rozwiązaniem byłaby próba przestawienia przełącznika „tylko do odczytu” z boku karty SD, niestety to nie działa, ponieważ schematy pokazują, że ten przełącznik nie jest nigdzie poprowadzony, a jego położenie jest generalnie ignorowane.

Innym, bardziej subtelnym (ale działającym) podejściem byłoby zmodyfikowanie /etc/fstabmontowania wszystkich partycji tylko do odczytu. Wadą tego podejścia jest to, że twoje logi muszą być zapisane gdzie indziej (pamięć USB, pamięć RAM?), Aw przypadku napędu RAM logi nie będą się utrzymywać podczas restartu. Aby to zrobić:

  1. Skopiuj obraz RPi na kartę SD dowolną metodą.
  2. Uruchom z SD i raspi-configuruchomi się automatycznie. Nie „Rozwijaj systemu plików”, po prostu skonfiguruj strefę czasową i ustawienia międzynarodowe.
  3. Uruchom sudo fdisk /dev/mmcblk0, naciśnij „p”, aby wydrukować bieżącą tablicę partycji. Następnie wprowadź następujące polecenia:

    n        Create a new partition
    [enter]  Make a primary partition
    [enter]  Use the default number
    [#]      1 greater than the end of mmcblk0p2
    [enter]  Expand to the end of the SD card
    w        Write the partition table and exit
    
  4. Edit /etc/fstab. Powinno to wyglądać mniej więcej tak:

    proc            /proc     proc    defaults 0 0
    /dev/mmcblk0p1  /boot     vfat    ro       0 0
    /dev/mmcblk0p2  /         ext4    ro       0 0
    /dev/mmcblk0p3  /home     ext4    defaults,errors=remount-ro  0  1
    none            /var/run  ramfs   size=1M  0 0
    none            /var/log  ramfs   size=1M  0 0
    
  5. Uruchom, sudo partprobeaby rozpoznać nową partycję.

  6. Sformatuj nową partycję za pomocą sudo mkfs --type ext4 /dev/mmcblk0p3.
  7. Restart.

Jeśli z jakiegoś powodu musisz wprowadzić zmiany w systemie, możesz ponownie zamontować partycje tylko do odczytu z dostępem do zapisu:

sudo mount -o remount,rw /dev/mmcblk0p2
Lenik
źródło
Zaraz, nie mogę zapisać na karcie SD, jeśli to zrobię? Czy tylko przy rozruchu?
user151324,
1
@coding_corgi To powinno całkowicie przestać zapisywać na karcie SD.
apnorton,
dlaczego musisz pisać na karcie SD? zapis do SD + wyłączenie = uszkodzenie FS, możesz użyć pamięci USB lub utworzyć osobną partycję na karcie SD, jeśli chcesz zapisać niektóre dane. w takim przypadku system przynajmniej uruchomi się, a następnie możesz sprawdzić swoje dane pod kątem ewentualnego uszkodzenia.
lenik,
@anorton to zatrzymuje dostęp do zapisu do dwóch pierwszych partycji na karcie SD, ale nikt nie mówi, że nie można utworzyć innej partycji ani użyć innych nośników do zapisania danych. na przykład RasPi tylko do odczytu zapisujący dane w sieci - może być bardzo niezawodnym rozwiązaniem.
lenik,
1
Zapisuję na mojej karcie SD dane wideo z kamery raspi i tak wiele razy to umarło! Ani razu nie miałem problemów z uruchomieniem, wyciągniętym przewodem lub awarią systemu. Tylko do odczytu jest dobre dla produkcji, gdy podłączasz i grasz. Ten problem nie powinien wystąpić w żaden sposób podczas programowania - podejrzewam, że nawet tylko odczyt zepsuje jego dane, ponieważ coś dzieje się na wyższym poziomie niż jądro może obsłużyć.
Piotr Kula,
4

W zależności od tego, do czego używasz RPi, możesz być zainteresowany IPE, który jest „odpornym na zaciemnienie smakiem Raspbian”.

Planuję użyć go do uruchomienia mojego RPi. Jeśli potrzebuję danych do zapisania, użyję napędu USB, który zamontuję tylko do odczytu (wolę, aby moja karta SD była bezpieczna i uszkodziła napęd USB niż konieczność naprawy mojej karty SD)

Zobacz stronę główną IPE

Jak wskazano tam, „Użyj także„ ipe-rw ”i„ ipe-ro ”, aby przełączyć główny system plików na tryb zapisu lub tylko do odczytu.”

lauhub
źródło
2

Rozwiązałem ten problem, używając dysku flash USB dla moich głównych partycji.

  1. Przywróć obraz raspbian na dysk USB

  2. Sformatuj kartę SD na grubą

  3. Skopiuj zawartość grubej partycji z napędu USB na kartę SD

  4. Zmodyfikuj config.txt na karcie SD, aby uruchomić z / dev / sda

Zasadniczo rpi nadal będzie się uruchamiać z karty SD, ale użyje napędu USB dla systemu operacyjnego i odczytuje / zapisuje.

As
źródło
2

Używam UPS Pico, specjalnie zaprojektowanego UPS-a dla Raspberry Pi i nigdy nie miałem takich problemów.

Alexander
źródło
1

upewnij się, że Twoje RPi działa na domyślnych prędkościach (tj. procesor przy 700 MHz). osobiście spotkałem się z uszkodzeniem pamięci w przypadku różnych kart SD - ale tylko wtedy, gdy działałem przez całą dobę. niestety niektóre dystrybucje (obrazy) mają wątpliwe ustawienia w config.txt .

drganie
źródło
Jednak nie
podkręciłem
wypróbuj inne RPi, aby wykluczyć ryzyko, że twoje jest w jakiś sposób wadliwe, a nawet zepsute
jitter
Mam tylko jedno
user151324
możesz zabraknąć opcji i poprosić o RMA ..
jitter
RMA? Co to jest?
user151324,
1

Jeśli Twoje Raspberry Pi jest zamrożone, nie możesz poprawnie zamknąć systemu, to pomaga. Złamałem kilka kart SD, zanim wiedziałem o tym:

Przytrzymaj oba klawisze Alt + PrintScreen i przytrzymując te klawisze, naciskaj kolejno następujące klawisze, jeden po drugim, z kilkuminutową przerwą między nimi.

Alt+ PrintScreen+R E I S U O

lub

Alt+ PrintScreen+ R E I S U B(restart)

Przydatnym mnemonikiem do zapamiętania jest ponowne uruchomienie, nawet jeśli system jest całkowicie zepsuty.

Zamiast „B” wpisz „O”, aby zamknąć system zamiast restartu (O = wyłączony, B = rozruch).

Źródło: https://www.raspberrypi.org/forums/viewtopic.php?t=176612#p1126262

Almas Dusal
źródło
0

Jak znaleziono na stronie elinux. Wybrałem tylko to, co dotyczy Twojej sytuacji, ale odwiedź je, aby uzyskać więcej informacji ...

  • Jeśli masz problemy, sprawdź, czy masz najnowszą wersję oprogramowania układowego z aktualizacją rpi
  • Niektóre karty SD nie działają na R-Pi, więc sprawdź listę znanych kart SD .
  • Jeśli masz problemy z konfiguracją karty SD, możesz zacząć od całkowitego jej skasowania - szczególnie jeśli była używana gdzie indziej i nadal zawiera dane / partycje. Dobrze jest zrobić format FULL (niski poziom) w dowolny sposób, ponieważ może on czasami znaleźć uszkodzone sektory i dodać je do listy ignorowanych.
    • Użytkownicy systemów Windows i Mac mogą pobrać narzędzie do formatowania ze strony SD Association: https://www.sdcard.org/downloads/formatter_3/
    • Ponowne formatowanie kart jest również łatwe w aparacie cyfrowym.
    • Jeśli ręcznie przygotowujesz kartę SD w systemie Linux lub Mac OS za pomocą polecenia dd, ta operacja całkowicie usunie wszystkie istniejące dane i partycje. Upewnij się, że piszesz na całej karcie (np. / Dev / sdd), a nie na istniejącej partycji (np. / Dev / sdd1).
  • Jeśli masz kartę SD, która nie działa z najnowszym oprogramowaniem, przejdź tutaj .
  • Upewnij się, że masz dobry zasilacz. Spróbuj odłączyć wszystko od zasilania i sprawdź, jak długo to trwa. Podłącz elementy z powrotem jeden po drugim, testując stabilność.

Jeśli wykonałeś wszystkie powyższe kroki, jedyną możliwą rzeczą do wypróbowania jest użycie innej karty SD starannie wybranej z listy kompatybilnych. Upewnij się również, aby kupić oryginalną kartę z zaufanego miejsca. Nie jak w serwisie eBay w Chinach czy coś takiego.

Piotr Kula
źródło
Użyłem w tym czasie 3 kart SD (wszystkie obsługiwane) SanDisk, Kingston i Lexar, nie konfiguruję też ręcznie mojej karty SD, użyłem Win32DiskImager po wypróbowaniu Ubuntu i Mac OS X.
user151324
To dziwne, że naprawienie twojego fs tylko go naprawiło. Z milionów ludzi masz ten problem. Być może masz śmieci i wirusy, które psują system plików. Readonly root to ból w dupie ... poczekaj i zobacz.
Piotr Kula,
dzięki, dzieje się coś dziwnego, ale na pewno nie wirus ...
user151324
0

Aby tylko pokryć całą ziemię, sprawdź również, czy Twój zasilacz jest wystarczająco dobry. wypróbuj inną ładowarkę lub podłącz RPI do portu USB komputera, aby go przetestować. Pamiętaj, że zalecane zasilanie RPI wynosi około 700 mA, ale niektóre słabe ładowarki mogą nie wytrzymać tego na stabilnym poziomie.

Miałem router, który zaczynał zachowywać się szalony przez kilka dni, potem poszedł dobrze, potem znowu oszalał, a potem znowu dobrze ... odkryłem, że zasilacz wyprowadzał zmienne napięcie (3 V do 5,5 V) w czasie, gdy router był zwariowany. Wymieniłem tę dostawę na nową, wszystko jest w porządku. Spróbuj wymienić zasilacz i zmierz napięcie wyjściowe.

Na koniec wyłącz RPI, wyłączając system operacyjny i odłączaj RPI tylko wtedy, gdy masz tylko jedną czerwoną diodę. RPI tak naprawdę nie jest zamykane, jeśli masz inną niż jedną czerwoną diodę. Staraj się również unikać odłączania rpi poprzez odłączenie zasilacza od wtyczki, lepiej jest odłączyć zasilanie od RPI i dopiero po zdalnym zasileniu wtyczki.

higuita
źródło
Nie, mam stały
prąd 5.1 V
0

Mam podobne problemy na pi od RS Components. To jeden z pisów na Chiny. Kolejny wykonany w Wielkiej Brytanii z Elementu 14 nigdy nie miał korupcji przy użyciu tej samej karty SD i zasilania. Może to być usterka sprzętowa z jednostkami komponentów ra. Oczywiście nie jestem tego pewien, ale wszystko wydaje się wskazywać w tym kierunku.

mcobit
źródło
0

Doświadczyłem również awarii SD z moim PI, czasami 5 dni z rzędu, czasami działa przez miesiąc.

Jedynym sposobem, w jaki mogę sprawić, by działał niezawodnie przez ponad rok, jest uruchomienie z pamięci USB. W ten sposób nie używasz karty SD (tylko przy rozruchu) i potrzebujesz tylko około 500 MB karty SD (taniej) i pamięci USB.

Gotschi
źródło
0

Postępowałem zgodnie ze wskazówkami, które możesz zrobić syncprzed zamknięciem systemu, i jak dotąd odniosłem pewien sukces dzięki temu poleceniu:

sync; sudo shutdown -t 9 -r now
dirkk0
źródło
Nadal masz problem z używaniem powyższego rozwiązania przez Raspberry?
CuriousMind
Nie miałem już żadnego problemu - ale przyznaję, że raczej zostawiam pi zamiast włączać go. Ale domyślam się, że sruciłem go ponad pięćdziesiąt razy powyższą linią i od tego czasu nie zawiodłem. Więc z tej statystyki - to działa.
dirkk0
Nie sądzę, że to rozwiąże problem. Po uruchomieniu kontrolowanego zamknięcia karta SD nie powinna zostać uszkodzona z założenia. Korupcja zdarza się głównie w przypadkach, w których urządzenie jest po prostu odłączony (lub wystąpi awaria zasilania), która nie ma związku z firmy synclub shutdownpoleceń, chyba że uruchamiane syncbezpośrednio przed niespodziewanym (!), Co wydaje się niewykonalne odłączania.
nhee