
У меня есть 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
Как отключить защиту от записи?
Что я пробовал
- Проверил, есть ли у него аппаратный переключатель - нет.
- Пробовал форматировать на Windows и Linux (через терминал тоже)
- Пробовал
fdisk
|chmod
- Пытался исправить это с помощью нескольких инструментов из центра программного обеспечения Ubuntu.
- Использовал Google и видел около 10 000 обсуждений этой проблемы, но они так и не были решены.
Дополнительная информация
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
решение1
Чтобы отключить защиту от записи дискового устройства, мы используем низкоуровневую системную утилиту hdparm следующим образом:
sudo apt-get install hdparm
sudo hdparm -r0 /dev/sdb
где мы предполагаем, что /dev/sdb
это физическое дисковое устройство, над которым мы работаем. Если устройство имеет разделы, которые смонтированы как только для чтения, вам следует перемонтировать их как чтение-запись, чтобы записывать на них данные.
Надеюсь, это поможет.
решение2
После изучения вашего вопроса выяснилось, что это не такая уж редкая проблема с определенными брендами USB-флешек (некоторые старые модели Samsung, Kingston), которые по сути просто "выходили из строя" без какой-либо известной причины. Люди пытались открыть их и перемкнуть два провода (может быть, от неисправного переключателя?), но безрезультатно. Если у вас все еще есть этот диск и он все еще на гарантии, я бы вернул его и получил замену.
Не хочу сообщать вам плохие новости =\ но, похоже, в этой ситуации вам не повезло, поскольку все, что я читал, указывает на неисправность оборудования.
Редактировать 27.05.2016: Недавно я столкнулся с проблемой с флеш-накопителем, который вышел из строя. В моем случае это был Corsair Flash Voyager 128 ГБ, который начал довольно сильно замедляться. Хотя он не показывал симптомов, указанных здесь, он иногда не монтировался и отображался как устройство «Silicon Power». Это было результатом того, что на диске накопилось большое количество плохих секторов и он перешел в режим диагностики/программирования. Поскольку это один из моих самых популярных ответов, и он также попадает в категорию «неисправные флеш-накопители», я решил включить его сюда для справки.
Обновление 2: Что касается Corsair Flash Voyager, я отправил свой на RMA, но мой второй тоже вышел из строя таким же образом. Проблема на самом деле оказалась механической. Скользящий механизм, похоже, оказывает небольшое давление на печатную плату. Обычно это не вызвало бы проблем в течение обычного срока службы устройства. Но в этой конкретной модели, похоже, были слабые паяные соединения, которые давление от скользящего действия усугубляло, что приводило к окислению в треснувшем соединении и в конечном итоге к отказу. Вместо того, чтобы делать еще один RMA, я взял дело в свои руки. Я открыл корпус, срезал часть пластикового корпуса, чтобы дать печатной плате немного места для маневра, а затем переплавил чип NAND, чтобы восстановить сломанные паяные соединения. Он отлично работает и по сей день!
решение3
Ни один из предоставленных на данный момент ответов не является правильным.
Чтобы это действительно заработало, вы можете переопределить обнаружение USB-диска, объявляющего его только для чтения, с помощью настройки USB quirks. Вот как это работает.
Подключите USB-устройство и выполните
lsusb
, например:$ lsusb Bus 002 Device 012: ID 0781:5583 SanDisk Corp.
Обратите внимание на эти два кода после
ID
и между двоеточием (они называютсяidVendor
иidProduct
). Отсоедините USB-устройство.Удалить
usb_storage
модуль ядра (при условии, что он скомпилирован как модуль)$ sudo modprobe -r $(lsmod | sed -n 's:,: :g ; s,^usb_storage[ 0-9]*,,p') usb_storage
Теперь мы вернем модуль в исходное состояние, используя настройку режима совместимости, чтобы переопределить обнаружение флага «только запись» устройства.
Отисточник/драйверы/usb/storage/usb.c#L572взято из v4.19 вы можете видеть, что настройка режима совместимости, которую мы ищем, это
w
. Вот как мы перезагрузим модуль ядра:$ sudo modprobe usb_storage quirks=0781:5583:w
Замените числа между двоеточиями на те, которые вы увидели в шаге (1) выше.
Подключите USB-накопитель обратно. Теперь мы можем подтвердить,
dmesg
что это сработало:Также после выполнения команды монтирования вы увидите:
/dev/sdb1 on /usb type ext4 (rw,relatime)
А теперь немедленно удалите все свои данные с этого диска, он дает сбой.
решение4
Ответ Angel хорош, но сами команды оказались для меня не такими уж простыми. Вот что сработало: вставьте карту (у меня SD-карта с ручным переключателем защиты от записи, но переключатель выключен, и на машине с Windows можно записывать). Ubuntu автоматически смонтировала ее в /media/andrew/6AB0-1FD91, а dmesg показал раздел как /dev/sdb1.
Размонтируйте его и сделайте его доступным для записи.
sudo umount /dev/sdb1
sudo hdparm -r0 /dev/sdb
Создайте новую точку монтирования и смонтируйте ее там (мой идентификатор пользователя из /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
Теперь я могу писать на диск как мой обычный пользователь. Я очень осторожен с ним на случай, если он действительно выйдет из строя, но эти команды позволили мне закончить то, что я делал.