USB отключить защиту от записи

92

У меня есть USB, который защищен от записи:

dmesg | tail

[10098.126089] sd 7:0:0:0: [sdb] Write Protect is on
[10098.126098] sd 7:0:0:0: [sdb] Mode Sense: 23 00 80 00
[10098.126779] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.126788] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.131418] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.131425] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.133335]  sdb: sdb1
[10098.135509] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.135515] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.135521] sd 7:0:0:0: [sdb] Attached SCSI removable disk

Как отключить защиту от записи?

Что я пробовал

  1. Проверял, есть ли у него аппаратный переключатель - нет
  2. Пытался отформатировать его на windows и на Linux (через терминал тоже)
  3. Пробовал fdisk|chmod
  4. Попытался исправить это с помощью нескольких инструментов из программного центра Ubuntu
  5. Использовал Google и видел около 10000 обсуждений по этой проблеме, но они так и не были решены

Дополнительная информация

fsck -n /dev/sdb1

fsck from util-linux 2.19.1
dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
There are differences between boot sector and its backup.
Differences: (offset:original/backup)
  65:01/00
  Not automatically fixing this.
Free cluster summary wrong (968250 vs. really 911911)
  Auto-correcting.
Leaving file system unchanged.
/dev/sdb1: 50 files, 93653/1005564 clusters

fdisk -l

   Device  boot.   Start        End      Blocks   Id  System
/dev/sdb1            32     8060927     4030448    b  W95 FAT32

umount /dev/sdb1

mkfs -t vfat /dev/sdb1

mkfs.vfat 3.0.9 (31 Jan 2010)
mkfs.vfat: unable to open /dev/sdb1
нуб
источник
7
Я не могу отформатировать его из-за защиты от записи.
Noob
2
@micha - что это за USB-устройство - очевидно, вы проверили, есть ли у него аппаратный переключатель? какие-либо ошибки, если вы пытаетесь монтировать его? sudo mount /dev/sdb1 -v?
fossfreedom
1
миха, достаточно справедливо. Вы пытались запустить efsck или использовали Ubuntu Disk Utility для проверки состояния флэш-диска? Если он работал нормально, а затем перестал работать внезапно, это может быть неисправность оборудования.
kingmilo
1
@kingmilo e2fsck:Bad magic number in super-block while trying to open /dev/sdb1 SuperBlock is not readable.
нуб
1
@micha - очень хорошо, все еще не значит, что это не неисправно, но, к сожалению. Обычно устройства хранения данных работают нормально, когда они неисправны, просто на другой стадии неисправности. Я думаю, что со всей активностью в этом вопросе вы должны попросить небольшие пожертвования, чтобы заменить диск, это было бы проще 😜
kingmilo

Ответы:

81

Чтобы отключить защиту от записи дискового устройства, мы используем низкоуровневую системную утилиту hdparm, например:

sudo hdparm -r0 /dev/sdb

где мы предполагаем, что /dev/sdbэто физическое дисковое устройство, над которым мы работаем. Если устройство имеет разделы, которые монтируются только для чтения, вы должны перемонтировать их для чтения-записи, чтобы записать в них данные.

Надеюсь, это поможет.

Ангел Генчев
источник
Ты мой герой. Где я могу узнать, что произошло после этой магической магической магической команды?
Маркос Моденези
3
Вы можете найти объяснение, введя эту команду здесь> explainshell.com
bagustris
75
это показывает, readonly = 0 (off)но я все еще не могу писать или форматировать.
shyammakwana.me
1
@OP У меня было то же, что и у вас, а именно: sdxc-карта смонтирована только для чтения независимо от компьютера; hdparm -rпоказывает «1 - вкл», затем после разблокировки с помощью r0: «0 - выкл», но монтировать только для чтения в любом случае. Но монтирую мою SD-карту SanDisk в другом адаптере, и я могу смонтировать ее. Оказывается, два моих адаптера microSD-SD имеют сломанный контакт между двумя разъемами. И эти двое будут монтироваться только для чтения, что бы я ни делал. Kuddos @Angel_Genchev, на который он отвечает, имеет больше всего команд.
tuk0z
2
@lliseil Более чем вероятно, что переключатель защиты от записи читателя нажимается вставленной в него картой, обычно вкладкой на карте, но переключатель (не вкладка) может согнуться и застрять. Вы можете починить устройство чтения SD-карт, отрезав контакты переключателя защиты от записи, которые физически соприкасаются с фиксатором на карте. Когда переключатель в считывающем устройстве разомкнут, защита от записи отключена, когда она закрыта (нажатием на язычок на плате), защита от записи включена. Снятие одного или обоих металлических рычагов переключателей навсегда отключит защиту от записи на считывателе.
Hydranix
31

После изучения вашего вопроса выясняется, что это довольно распространенная проблема с USB-флешками определенных марок (некоторые более старые модели Samsung, модели Kingston), которые по сути просто «дурачатся» по неизвестной причине. Люди пытались открыть их и перепрыгнуть через два провода (может быть, из-за ненадежного переключателя?) Безрезультатно. Если у вас все еще есть этот диск, и он все еще в гарантии, я верну его и получу замену.

Я не хочу сообщать вам плохие новости = \, но в этой ситуации вам не повезло, поскольку все, что я прочитал, указывает на сбой оборудования.

Редактировать 27.05.2016: У меня недавно возникла проблема с флешкой В моем случае это был Corsair Flash Voyager 128 ГБ, который начал сильно замедляться. Хотя здесь не было признаков, отмеченных здесь, время от времени он не устанавливался и показывался как устройство «Silicon Power». Это было результатом накопления накопителем большого количества поврежденных секторов и перехода в режим диагностики / программирования. Поскольку это один из моих самых популярных ответов, и он также относится к категории «неисправных флешек», я решил включить его сюда для справки.

Чак Р
источник
5
@admins: я хочу знать, разрешен этот тип ответов или нет :)
Tachyons
7
@AboobackerMk Если это ответ, то это ответ. :)
Jrg
4
@ Tachyons "разрешен ли этот тип ответов или нет?" Что с людьми на stackexchange постоянно пытаются дискредитировать чужие вопросы или ответы? Этот ответ, очевидно, является правильным ответом; по той причине, что сказал JRG.
GoProCameraByGoPro
@GoProCameraByGoPro, который является 3-летним комментарием, моя проблема была не в качестве ответа. и jrg уже ответил на мой вопрос :-)
Tachyons
@Tachyons Я делаю все возможное, чтобы вызвать претензию здесь на stackexchange в вопрос. Если бы у меня были данные, я бы посмотрел на демографическую тенденцию людей, которые делают это, и я, вероятно, мог бы просто игнорировать их, но сейчас мне придется задавать им вопросы так, как я их вижу.
GoProCameraByGoPro
21

используя fdisk -lместонахождение диска, то есть: / dev / sdc1

в настоящее время

umount /dev/sdc1

Наконец переформатируем флешку

sudo mkfs -t vfat /dev/sdc1

Я нашел это быстро и легко. Обязательно размонтируйте диск перед попыткой форматирования.

Самка луня
источник
2
sudo mkfs -t vfat / dev / sdc1> большинство блогов говорят об этом, но люди говорят, что он не работает, давайте посмотрим, работает ли он.
Один ноль
8
размонтирован ... ноmkfs.vfat 3.0.9 (31 Jan 2010) mkfs.vfat: unable to open /dev/sdb1
нуб
это сработало для меня, просто пришлось использовать -I, чтобы сделать его одним большим разделом, а не / dev / sdc1, / dev / sdc.
mchid
Я пробовал все другие способы ( hdparm -r0, blockdev --setrw, remount,rw), но ничто не решило мою проблему, кроме этой!
Иман Мирзаде
1
Это говоритmkfs.vfat: unable to open /dev/sdc: Read-only file system
Шаян
14

Ответ Ангела хорош, но фактические команды были не так просты для меня. Вот что сработало: подключите карту (у меня SD-карта с ручным переключателем защиты от записи, но переключатель выключен, и он доступен для записи на компьютере с Windows). Ubuntu автоматически смонтировал его на / media / andrew / 6AB0-1FD91, и dmesg показал, что разделом является / dev / sdb1.

Размонтируйте его и сделайте доступным для записи

sudo umount /dev/sdb1
sudo hdparm -r0 /dev/sdb

Создайте новую точку монтирования и смонтируйте ее там (мой userID из / etc / passwd равен 1000)

sudo mkdir /media/andrew/temp
sudo mount -o uid=1000 /dev/sdb1 /media/andrew/temp

он по-прежнему будет жаловаться, что доступен только для чтения. Я не знаю, почему мне пришлось менять этот флаг до и после монтажа, но это единственный способ, который сработал для меня. Установите его для записи снова и перемонтируйте в том же месте

sudo hdparm -r0 /dev/sdb1
sudo mount -o remount,rw /dev/sdb1

Теперь я могу записать на диск как мой обычный пользователь. Я очень осторожен с ним на случай, если он действительно потерпит неудачу, но эти команды позволили мне закончить то, что я делал.

Эндрю Лориен
источник
ПРИМЕЧАНИЕ: моя карта действительно выходила из строя (Ubuntu монтирует ее только для чтения, но моя камера с удовольствием пишет в нее). Пару месяцев спустя он портит файлы - так что пока это будет работать, будьте осторожны!
Андрей Лориен
Я попробовал ваши stpes получить .... # sudo mount -o uid = 1000 / dev / sdc1 / mnt / Может открывать только / dev / sdc1 только для чтения. Диск содержит нечистую файловую систему (0, 0). Файловая система не была надежно закрыта в Windows. Закрепление.
Ашиш Карпе
1
это сработало для меня, и ни один из вышеперечисленных ...
Pierre
1
Это сработало после попытки многих решений. Спасибо @andrewlorien
Abk
6

Ни один из приведенных ответов не является правильным.

Чтобы реально заставить его работать, вы можете переопределить обнаружение USB-диска, объявив его доступным только для чтения, с помощью параметра USB-причуд. Вот как это работает.

1) Подключите USB-устройство и выполните lsusb, например:

$ lsusb
Bus 002 Device 012: ID 0781:5583 SanDisk Corp. 

2) Запишите эти два кода между двоеточием (они называются idVendorи idProduct). Отключите USB-устройство.

3) Удалить usb_storageмодуль ядра (при условии, что он скомпилирован как модуль)

$ sudo modprobe -r $(lsmod | sed -n 's:,: :g ; s,^usb_storage[ 0-9]*,,p') usb_storage

4) Теперь мы вернем модуль в режим настройки «причуд», чтобы отменить обнаружение флага «только для записи» устройства.

Из source / drivers / usb / storage / usb.c # L572, взятого из v4.19, вы можете видеть, что настройка режима quirks, которую мы ищем, является w. Вот как мы перезагрузим модуль ядра:

$ sudo modprobe usb_storage quirks=0781:5583:w

Замените числа между двоеточиями теми, которые вы видели в шаге (1) сверху.

5) снова подключите USB-накопитель. Теперь мы можем подтвердить с помощью dmesg, что это сработало:

До: только неработающая запись

И после: рабочая чтение / запись

Также после ввода команды монтирования вы увидите:

/dev/sdb1 on /usb type ext4 (rw,relatime)

А теперь иди и убери свои вещи с диска немедленно, он не работает.

kristopolous
источник
Большое спасибо за этот ответ. У меня была проблема с картой памяти Compact Flash в USB-ридере, которая, казалось, была защищена от записи, и это единственное решение, которое я нашел, чтобы это исправить. Что странно, так это то, что другие CF-карты работают нормально.
NJH
1

Ну, это немного облом.

Я попробовал все здесь и в других местах, и ничего не получалось.

Отформатировал его на ноутбуке Windows друга - теперь работает нормально. FFS!

Вздох .... (интересно сейчас, смогу ли я вместо этого исправить это в моей Win 7 VM на моем рабочем столе Mint?).

Трейси Л.Ф.
источник
-1

Вставьте карту памяти и начните gparted. Выберите его с помощью кнопки в правом верхнем углу. Это должно быть очевидно, если вы проверяете свою карту памяти (размер - хорошая подсказка). Выберите Раздел -> Размонтировать.

Выберите «Устройство» вверху, затем «Создать таблицу разделов» и выберите значение по умолчанию, которое является msdos.

Теперь вы сможете создать новый раздел и отформатировать его в F32. Если вы не можете, это, вероятно, перебор.

НТН

Vic
источник
6
Разделы не редактируются из-за защиты от записи.
Нуб