Nie można usunąć atrybutu karty Micro SD tylko do odczytu po obrazie Ubuntu

16

Nie mogę usunąć atrybutu „tylko do odczytu” z karty Micro SD 32 GB firmy Kingston. Chcę wyczyścić całą kartę.

Dostałem kartę Raspberry Pi 3, kartę 32 GB Micro SD i echo do zabawy. Karta Micro SD była fabrycznie nowa, kiedy ją dostałem. Pobrałem świeży obraz Ubuntu 16.04 i sformatowałem kartę za pomocą Etchera w systemie Windows 10. Po zakończeniu podłączyłem wszystko, aby Raspberry działało i zauważyłem, że nic się nie stało. Zaczęłam trochę panikować i pomyślałam sobie: „Dobra robota, Scrat, ty głupku. Dlaczego nie mogłeś po prostu trochę poczekać i google to dziwaczny samouczek”.

Poszukałem, co mogło pójść nie tak i co powinienem zrobić, i musiałem odkryć, że nie można po prostu umieścić na nim żadnego losowego obrazu Ubuntu. Musi to być jeden z obrazów dostarczonych przez twórcę (w moim przypadku Ubuntu Mate lub Raspbian).

Próby napraw w systemie Windows

Podczas próby sformatowania poprzez kliknięcie prawym przyciskiem myszy i ponowne sformatowanie za pomocą Eksploratora Windows, pierwszą rzeczą, jaką spotkałem, było to, że karta była w trybie tylko do odczytu. Próba uzyskania dostępu do niego w Eksploratorze Windows pokazała mi tylko katalog EFI, co mnie nie zaskoczyło.

Pierwszą rzeczą, którą znalazłem w Internecie, jest przełącznik / blokada na karcie, ale moja karta w ogóle nie ma blokady. Ani sama karta, ani czytnik kart Robson Mini, których używam do czytania.

Potem próbowałem sobie przypomnieć, jak edytować dyski.
Pamiętaj, że nadal korzystam z systemu Windows 10, ponieważ musiałbym skopiować mój stary VM-Ware i obraz systemu z dysku zewnętrznego, a ja nie wiedziałem, gdzie to jest.

Otworzyłem wiersz poleceń, uruchomiłem diskpart i wyświetliłem listę wszystkich moich dysków

list disk

Które wyjście ma mój dysk twardy 931 GB, dysk SSD 119 GB (na którym jest zainstalowany system Windows) i kartę Micro SD 29 GB:

Datenträger ### Status Größe Frei Dyn GPT  
--------------- ------------- ------- ------- --- ---   
Datenträger 0 Online 119 GB 0 B *  
Datenträger 1 Online 931 GB 0 B *  
Datenträger 2 Online 29 GB 29 GB

Po otrzymaniu informacji, wiedziałem, że Datenträger 2 aka Disk 2 to karta, którą chciałem edytować, wykonując:

select disk 2

Jak na razie dobrze. Następnie chciałem usunąć atrybut tylko do odczytu, wykonując:

attributes disk clear readonly

Który również został pomyślnie wykonany.

Ale kiedy próbowałem zrobić:

clean

Dostałem „Komunikat o błędzie sprzętu” (w języku niemieckim, dlatego nie kopiuję go tutaj, ale w zasadzie powiedział tylko błąd sprzętu). Ten błąd wystąpił także podczas próby utworzenia partycji podstawowej lub wykonania innych czynności.

W tym momencie panika we mnie zaczęła narastać. Ale starałem się zachować spokój, ponieważ wciąż miałem kilka sztuczek w rękawach.

Próbowałem użyć programów: EaseUS Partition Master, Etcher (ponownie) i SD Card Formatter, które wszystkie zawiodły z powodu ochrony karty (tylko do odczytu, chronionej przed zapisem).

Próbowałem także użyć edycji rejestru, aby zmienić zachowanie systemu Windows w stosunku do urządzeń pamięci masowej, tworząc klucz (którego jeszcze tam nie było):

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies

i utworzenie nowego słowa kluczowego (DWORD WriteProtect) i ustawienie go na 0, co oznacza brak tylko do odczytu.

Próby poprawek w systemie Linux

To też nie działało i zacząłem tracić nerwy z Windows, więc zsunąłem tyłek i szukałem zewnętrznego dysku, zainstalowałem VM-Ware i uruchomiłem maszynę wirtualną Ubuntu 16.04, której używam do szkoły.

Uruchamiając maszynę wirtualną już zauważyłem, że Ubuntu był w stanie pomóc mi znacznie bardziej niż Windows (a przynajmniej tak mi się wydawało, ponieważ moje umiejętności w zakresie Linuxa są ograniczone w tym aspekcie). Pierwszą rzeczą, którą widzę, jest ikona na pulpicie połączona z kartą o nazwie „Ubuntu 16.04.2 LTS amd64”, w której zawarte są różne rzeczy, które Ubuntu musi pracować, widoczne na zdjęciu tutaj .

Ale to by mi nie pomogło. Więc poszedłem dalej, założyłem terminal i napisałem:

lsblk

Co potwierdziło, że karta jest widoczna (sdb):

NAZWA MAJ: MIN RM ROZMIAR RO TYPE MOUNTPOINT
sda 8: 0 0 30G 0 dysk 
Dasda1 8: 1 0 30G 0 część /
sdb 8:16 1 29,2G 1 dysk 
Dsdb1 8:17 1 1,5G 1 część / media / pose / Ubuntu 16.04.2 LTS amd64
Dsdb2 8:18 1 2,4M 1 część 
sr0 11: 0 1 1024M 0 rom  

Ale lsblk nie był zbyt precyzyjny, więc użyłem też polecenia, którego nauczyliśmy się w szkole:

fdisk -l

Co było nieco bardziej precyzyjne:

Dysk / dev / sda: 30 GiB, 32212254720 bajtów, 62914560 sektorów
Jednostki: sektory 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny / fizyczny): 512 bajtów / 512 bajtów
Rozmiar I / O (minimalny / optymalny): 512 bajtów / 512 bajtów
Typ etykiety dysku: dos
Identyfikator dysku: 0xa14a8cb2

Początek rozruchu urządzenia Rozmiar sektorów końcowych Typ Id
/ dev / sda1 2048 62914559 62912512 30G 83 Linux


Dysk / dev / sdb: 29,2 GiB, 31306285056 bajtów, 61145088 sektorów
Jednostki: sektory 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny / fizyczny): 512 bajtów / 512 bajtów
Rozmiar I / O (minimalny / optymalny): 512 bajtów / 512 bajtów
Typ etykiety dysku: dos
Identyfikator dysku: 0x15e2543d

Początek rozruchu urządzenia Rozmiar sektorów końcowych Typ Id
/ dev / sdb1 * 0 3035519 3035520 1,5G 0 Pusty
/ dev / sdb2 14432 19295 4864 2,4M ef EFI (FAT-12/16/32)

Byłem w euforii, ponieważ myślałem, że w końcu złamałem ten cholerny kod Davinci czy coś takiego, więc pobiegłem

rozdzierał

Który natychmiast otworzył się z komunikatem o błędzie:

Deskryptor sterownika mówi, że fizyczny rozmiar bloku wynosi 2048 bajtów, ale Linux mówi, że to 512 bajtów.

Zignorowałem to, ponieważ myślałem, że to nie jest biggie, ale zaraz po zignorowaniu poprzedniego pojawił się następny komunikat o błędzie:

Partycje z 1 na / dev / sdb zostały zapisane, ale nie byliśmy w stanie poinformować jądra o zmianie, prawdopodobnie dlatego, że są w użyciu. W rezultacie stare partycje będą nadal używane. Powinieneś zrestartować teraz przed wprowadzeniem dalszych zmian.

Zrobiłem więc to, co powiedziała mi wiadomość i uruchomiłem ponownie. Ale to też nie miało sensu, ponieważ ponownie pojawiły się te same dwa błędy. Tym razem ich zignorowałem i otworzyło się moje stare, dobre, zaufane okno, które znałem ze szkoły.

Po zmianie na / dev / sdb bardzo szybko się to zagmatwało. Jak widać tutaj , rzeczy są dość dziwne, ponieważ teraz sdb jest jakoś uważany za mój dysk SSD zamiast karty, ale obraz z karty jest nadal zamontowany. W tym momencie byłem zbyt zdenerwowany, aby kontynuować robienie czegokolwiek, w obawie przed przypadkowym zepsuciem mojego laptopa.

Nawiasem mówiąc, próbowałem również dać sobie uprawnienia dostępu do dysku i spróbować użyć ddpolecenia, ale z tym samym komunikatem o błędzie (Odmowa dostępu, tylko do odczytu lub coś, nie jestem do końca pewien, ale coś w tym kierunku ).

Zamówiłem już inną kartę 32 GB Micro SD od Amazon, na wypadek, gdyby nie było już nadziei dla starej. Ale jeszcze się nie poddaję.

(Przepraszam, że niektóre rzeczy są w języku niemieckim, ale myślę, że w większości są to oczywiste.)

LordScrat
źródło
Dyski prawdopodobnie zmieniły kolejność, ponieważ uruchomiono ponownie z podłączoną kartą SD (następnym razem uruchom ponownie bez podłączonej karty). Twój drugi obraz jest naprawdę interesujący ... Jeśli dobrze rozumiem, to z poziomu maszyny wirtualnej? VM, która ma tylko dysk 30GiB i kartę SD 29.2GiB?
Attie
Tak, z poziomu maszyny wirtualnej. Jednak zrestartowałem się bez połączenia, więc nie wiem, czy to było to. W / dev / sda jest to przypisana przestrzeń pamięci, którą możesz dać maszynie wirtualnej podczas instalacji, która powinna wynosić 30GiB. Ale jakoś wszystko to pomieszało z tą cholerną kartą podłączoną do sieci.
LordScrat

Odpowiedzi:

6

Twój post był z pewnością wystarczająco zabawny. Dziękuję za to.

Wiem, że nie jest to odpowiedź, której szukasz. Wygląda jednak na to, że karta SD utknęła w trybie tylko do odczytu. Zrobiłeś wszystko, co możesz. To naprawdę nie jest takie trudne.

Działa tak, jakby to było, gdyby na karcie był przełącznik zabezpieczenia przed zapisem. Brzmi, jakbyś potwierdził, że tak nie jest, ale może po prostu jeszcze raz sprawdź, jeszcze raz? Przyszło mi na myśl, że może używasz karty mini-SD w przejściówce mini-SD na SD. A może spojrzałeś na adapter, ale nie na samą kartę mini-sd? Nie wiem, po prostu to wyrzucam. Jeśli jest adapter, może sam adapter się zepsuł? Nie pamiętam, czy wspomniałeś, jeśli próbowałeś innego czytnika kart. Może czytelnik poszedł źle?

Poza tym dość powszechne jest, że coś takiego „zawiedzie” w trybie tylko do odczytu. Więc moje wnętrzności mówią, że karta poszła nie tak.

Wygląda na to, że jesteś na dobrej drodze, po prostu ją zastępujesz. Może uda ci się wymienić zły w ramach gwarancji, ponieważ jest nowy. Daj nam znać, co wymyślisz.

Appleoddity
źródło
Myślę, że to dobra odpowiedź, ale nie jest to tak naprawdę odpowiedź, ale komentarz i nadzieja. :)
Xavierjazz,
Tak, powiem mojemu szefowi, że karty nie można już napisać, i po prostu odeślę ją z powrotem do Amazon (dostał ją jak w czwartek przed ostatnim, więc myślę, że to żaden problem) i odzyskam pieniądze. Wpadnę na debaucle z własnymi pieniędzmi, dlatego prawdopodobnie to moja wina, że ​​zainstalowałem na nim niewłaściwy Ubuntu i może go delikatnie zablokowałem. Chyba będę miał 16 dolców mniej, żeby wydać haha. Ale dziękuję za twój komentarz. Doceniam każdy otrzymany komentarz.
LordScrat
2
To godne pochwały. Ale nic, co robisz z oprogramowaniem, nie zniszczy sprzętu. Czasami coś się psuje.
Appleoddity
4

Takie problemy tylko do odczytu zdarzają mi się przez cały czas, gdy używam izoobrazów.

Co robię, aby rozwiązać takie problemy:

Pamiętaj, że <yoursdcard>jest to urządzenie, a nie partycja, więc na przykładsdc

  1. Uruchom jakiś Linux
  2. Otwórz terminal
  3. Dowiedz się, jakie urządzenie ma karta SD i zweryfikuj ją za pomocą sudo fdisk /dev/<yoursdcard> -llub, aby uzyskać nazwę urządzenia, którego możesz również użyćsudo parted /dev/<yoursdcard> -l

OSTRZEŻENIE: Poniższe polecenie zniszczy wszystkie dane, /dev/<yoursdcard>więc upewnij się, że <yoursdcard>jest to właściwe urządzenie !!!!

  1. Wykonać sudo dd if=/dev/zero of=/dev/<yoursdcard> bs=1000000 count=50
  2. Wykonać sudo fdisk /dev/<yoursdcard>
  3. Teraz użyj polecenia, oaby utworzyć nową tabelę partycji MSDOS na karcie SD, następnie użyj npolecenia, aby dodać nową partycję i wzapisać zmiany na karcie SD i wyjść z fdisk
  4. Teraz użyj sudo mkfs -t <filesystem you want> /dev/<yoursdcard>1do sformatowania partycji
  5. Teraz Twoja karta SD powinna znów działać

Jeśli to nie działa:

  1. Otwórz terminal
  2. Dowiedz się, jakie <yoursdcard>jest urządzenie
  3. Wykonać sudo su
  4. Wykonać echo "0" > /sys/block/<yoursdcard>/ro
testeaxeax
źródło
Chciałbym to wypróbować, ale jak widać na moim drugim zdjęciu, Ubuntu trochę myli / dev / sdb, który powinien być moją Micro SD, jak moim dyskiem SSD (lub odwrotnie, ale to źle, to wiem.) , i naprawdę nie chcę tego przypadkowo usunąć, zrób to.
LordScrat
Oczywiście, że nie chcesz, ale fdiskjest o wiele bardziej niezawodny gpartedi zobaczyłbyś, czy poprawnie wykrywa twoją
kartę SD
1
Możesz użyć automatycznie tworzonych aliasów de / dev / disk / by-id. Mają w sobie producenta i szynę połączeniową, więc na pewno wiesz, jakie to urządzenie.
John Keates,
3

Pamiętaj, że karta może być po prostu zepsuta. Mają trochę flasha i kontrolera na pokładzie. Jeśli karta uzna, że ​​ma problemy, przejdzie całkowicie w tryb offline lub przejdzie w tryb tylko do odczytu, jeśli nie ma wystarczającej liczby działających komórek Flash do napisania. Czasami kontroler przechowuje informacje rozliczeniowe dla układu flash, który może ulec uszkodzeniu, powodując jego uruchomienie w trybie awaryjnym i niedozwolenie na nic. Aby poradzić sobie z tego rodzaju rzeczami, potrzebujesz „prawdziwego” czytnika kart SD, a nie czytnika tylko do pamięci masowej. „Prawdziwe” interfejsy SD mają dostęp do kontrolera i mogą dostarczyć potrzebnych informacji.

John Keates
źródło
1

O tak. Obraz Ubuntu używa jakiegoś dziwnego formatu, który psuje większość narzędzi formatujących. Wyobrażam sobie, że to coś, co robią, aby obrazy działały na DVD. Znam to dobrze (czytaj: ciągle muszę instalować dyski Ubuntu, a potem nie znoszę ich formatować) i jest to bardzo denerwujące.

Użyj Gparted na Ubuntu (VM), aby usunąć wszystkie partycje na dysku, a następnie dodaj nową partycję FAT32. Uwaga: Jestem prawie pewien, że GParted używa hasła roota, a nie zwykłego, którego używasz do logowania. Jeśli nie znasz hasła roota, prawdopodobnie nie ustawiłeś go. Uruchom „sudo passwd”, aby ustawić hasło roota, a następnie użyj go, aby otworzyć GParted. Możesz także użyć „sudo gparted”.

Lub znajdź i zainstaluj bezpłatny program SDFormatter4 w systemie Windows (Uwaga: działa również w systemie WINE w systemie Ubuntu) i użyj go do sformatowania karty w trybie zastępowania. Ma to większą szansę na działanie, podobnie jak nie lubię oprogramowania własnościowego.

Oba mają większe szczęście w formatowaniu kart niż wbudowane narzędzia.

Oczywiście karty SD i napędy USB celowo nie przechodzą w tryb tylko do odczytu, aby dać Ci szansę na odzyskanie danych. Jeśli ta karta jest zdalnie nowa, nie powinno się to zdarzyć, ale jest to możliwe. Sugeruję również karty Samsung lub Sandisk, ponieważ karty Kingston są często fałszywe i szybko zawodzą. Miałem kiedyś ten problem, który był naprawdę awarią karty. Mam nadzieję, że tak nie jest.

RDragonrydr
źródło
-1

Hmmm. Powinienem połączyć ten post, ponieważ zacząłem tutaj i jakoś skończyć na innym poście.

wprowadź opis linku tutaj

Najpierw upewnij się, że to nie jest czytnik kart!

Przyczyną tego problemu jest bardzo łatwo uszkodzony system plików. Problem może być spowodowany wieloma rzeczami. Jeśli sformatujesz go w systemie Linux bez odmontowywania go lub jeśli partycjonujesz go, zostanie on zamontowany lub jeśli partycje są uszkodzone, może się to zdarzyć. Najlepiej jest użyć polecenia Linux fsck /dev/sdb1lub dowolnego innego oznaczenia dysku /dev/sdd1. Może to wyglądać tak, /dev/sdb1jakby system plików był uszkodzony na karcie microSD. Ten błąd jest łatwy do popełnienia, ponieważ spójrz na to ...

root@w3tech-Satellite-C655:/home/w3tech# umount /dev/sdc*
umount: /dev/sdc: not mounted.
umount: /dev/sdc2: not mounted.
root@w3tech-Satellite-C655:/home/w3tech# umount /dev/sdc*
umount: /dev/sdc: not mounted.
umount: /dev/sdc1: not mounted.
umount: /dev/sdc2: not mounted.
root@w3tech-Satellite-C655:/home/w3tech#

Musiałem odłączyć dwukrotnie napęd odłączyć obie partycje ... i tak to jest microSD, które powinny być /dev/sdd, /dev/sdealbo po.

Jednak samo uruchomienie fsckmoże nie usunąć tego brudnego bitu, jeśli uzna, że ​​jest on tylko do odczytu. Do tego czasu jądro Linuksa będzie nadal używać starej partycji, co oznacza, że ​​pojawia się błąd tylko do odczytu, ponieważ nie ma możliwości, aby użytkownik mógł uzyskać uprawnienia dla starej partycji. Czasami uruchomienie dysku pozwoli jądrze przełączyć się na nową partycję, na przykład jeśli użyłeś programu do utworzenia nowej tablicy partycji.

w3techie
źródło