12.07.2019 11:07
OlegON
 
Нагуглил приблизительно миллион тем аналогичного свойства, но без конкретного решения.

Итак, в винду втыкается внешний диск, который определяется, как локальный. Это не у меня под боком и, если честно, раньше с таким не сталкивался. Всегда предполагал, что суть в том, куда втыкаешь, т.е. в USB все устройства являются съемными. Но нет. Дело в removable media bit (RMB). Теперь вопрос, везде утверждают, что этот бит иногда убивается форматированием, хотя попадаются фразы на тему того, что он задается производителем в отклике на запрос модели устройства.

У кого-нибудь есть личный опыт?
12.07.2019 23:05
Occul
 
RMB бит и USB носители
ОС семейства Windows распознают USB флешки как съемные/извлекаемые (removable) устройства из-за наличия на каждом устройстве специального битового дескриптора RMB (removable media bit). Если при опросе подключенного устройства через функцию StorageDeviceProperty, система определяет, что RMB=1, она делает вывод, что подключенное устройство является сменным накопителем. Таким образом, чтобы с точки зрения системы преобразовать USB-флеку в жесткий диск, достаточно модифицировать этот дескриптор. Это можно сделать напрямую (что довольно рискованно из-за отличий в аппаратных реализациях конкретных устройств, да и не всегда возможно), либо косвенно, подменив ответ USB устройства с помощью специального драйвера, позволяющего отфильтровать информацию в ответе устройства.

Совет. Некоторые производители выпускают специальные утилиты для перепрошивки контроллера своих флешек. В первую очередь попытайтесь на сайте производителя найти такую утилиту и /или прошивку. Это самый правильный путь. Если таковой утилиты не найдется, следуйте рекомендациями из этой статьи.

Подключим в любой свободный порт компьютера USB флешку, затем откроем диспетчер управления дисков (diskmgmt.msc) и удостоверимся, что ее тип определяется в системе как Removable (Съемное устройство).




Также тип устройства можно посмотреть на вкладке Volumes в свойствах диска (как мы видим и тут Type: Removable).




Или с помощью команды diskpart:

Код:
list volume



В этой статье мы рассмотрим два способа смены RMB бита на USB флешке – с помощью использования фильтр-драйвера Hitachi (изменения вносятся только на уровне драйверв конкретного компьютера) и смена бита в прошивке контроллера с помощью утилиты BootIt от Lexar (более универсальный способ, но есть ряд ограничений и применим не ко всем моделям флешек и SD карт). Хотя оба этих способа довольно старые и изначально я тестировал их в Windows 7, они продолжают быть актуальными и одинаково хорошо работают и в современной Windows 10.

Утилита Lexar BootIt
Недавно мне на глаза попалась довольно интересная утилита – Lexar BootIt. Это бесплатная портабельная программа, которая может сменить RMB съемного накопителя, сделав съемное USB-устройство фиксированным (или наоборот). Несмотря на то, что утилита Lexar BootIt разработана для устройств Lexar (Micron, Crucial), она может работать и с флешками других производителей. Утилита BootIt поддерживает все версии Windows, начиная с Windows XP и заканчивая Windows 10.

Важно. Утилита гарантированно работает для накопителей Lexar. Судя по отзывам, функция «Flip removable bit» не работает на быстрых USB 3.0 флэшках. Кроме того, при перепрошивке контроллера вы лишаетесь гарантии на флешку и можете сделать ее неработоспособной.

Скачать BootIt можно на сайте Lexar (lexar_usb_tool) или с нашего сайта (BootIt_usb_rmb.zip).
https://storage.olegon.ru/supermag/u...It_usb_rmb.zip
(0,35Мб)
https://storage.olegon.ru/supermag/u...r_usb_tool.zip
(0,35Мб)

Запустите BootIt.exe с правами администратора
В списке устройств выберите свою флешку
Нажмите на кнопку Flip Removable Bit
Сохраните изменения, нажав ОК.




Переподключите устройство и с помощью диспетчера устройств убедитесь, что его тип сменился с Removable на Basic.




В том случае, если утилита BootIt не помогла сменить RMB бит на съемном накопителе, попробуйте воспользоваться следующим способом, основанном на фильтр драйвере Hitachi Microdrive

Фильтр-драйвер для флешек Hitachi Microdrive
Чтобы USB флэш накопитель или SD карта распознавался в системе как жесткий диск, нам понадобится специальный фильтр-драйвер, позволяющий модифицировать данные передаваемые через системный стек действующего драйвера устройства. Мы воспользуемся фильтр-драйвером для USB флешек от Hitachi (драйвер Hitachi Microdrive), который на уровне драйвера ОС позволяет изменить тип устройства флэшки со съемного на фиксированный (USB-ZIP -> USB-HDD). Благодаря использованию данного драйвера, можно скрыть от системы, что подключенное устройство явятся съемным. В результате чего, система будет считать, что она работает с обычным жестким диском, который можно разбить на разделы, которые одновременно будут доступны в системе.

Архивы с драйвером Hitachi Microdrive:
версия Hitachi Microdrive для 32 битных систем — Hitachi Microdrive (3,0 Кб)
версия Hitachi Microdrive для 64 битных систем — Hitachi Microdrive x64 (3,8 Кб)
https://storage.olegon.ru/supermag/u...Microdrive.zip
https://storage.olegon.ru/supermag/u...odrive-x64.zip

Необходимо скачать версию драйвера для вашей системы в соответствии с ее разрядностью. Оба архива имеют одинаковую структуру и состоят из двух файлов:

cfadisk.inf – установочный файл, с настройками драйвера
cfadisk.sys — файл драйвера Hitachi
Следующий этап – идентификация кода устройства нашей флешки. Для этого в свойствах диска на вкладке Details в параметре Device Instance Path выберите и скопируйте (Ctrl+C) код экземпляра устройства.


В нашем примере это будет:
Код:
USBSTOR\Disk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000\0123456789ABCDEF&0
Предположим, мы планируем установить драйвер на 64 битной системе. С помощью любого тестового редактора открываем на редактирование файл cfadisk.inf. Нас интересуют разделы cfadisk_device и cfadisk_device.NTamd64.
Код:
[cfadisk_device]
%Microdrive_devdesc% = cfadisk_install,IDE\DiskTS64GCF400______________________________20101008
[cfadisk_device.NTamd64]
%Microdrive_devdesc% = cfadisk_install,IDE\DiskTS64GCF400______________________________20101008
Меняем значение DiskTS64GCF400______________________________20101008 на код нашего устройства.

Важно! В коде экземпляра устройства необходимо отбросить часть после второго «\» (в нашем примере откидываем 0123456789ABCDEF&0).

Получаем:
Код:
[cfadisk_device]
%Microdrive_devdesc% = cfadisk_install,IDE\USBSTOR\Disk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000
[cfadisk_device.NTamd64]
%Microdrive_devdesc% = cfadisk_install,IDE\USBSTOR\Disk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000
Сохраняем файл.

Если драйвер устанавливается на 32 битной системе, нужно скачать советующий архив, распаковать его и открыть на редактирование файл cfadisk.inf. Найдем раздел [cfadisk_device]:
Код:
[cfadisk_device]
%Microdrive_devdesc% = cfadisk_install,USBSTOR\Disk&Ven_LEXAR&Prod_JD_LIGHTNING_II&Rev_1100
%Microdrive_devdesc% = cfadisk_install,USBSTOR\Disk&Ven_JetFlash&Prod_TS1GJF110&Rev_0.00
%Microdrive_devdesc% = cfadisk_install,USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_P
Затем изменим данные в последней строке, указав код экземпляра нашей флешки, т.е. в нашем примере получим:
Код:
%Microdrive_devdesc% = cfadisk_install,USBSTOR\Disk&Ven_LEXAR&Prod_JD_LIGHTNING_II&Rev_1100
%Microdrive_devdesc% = cfadisk_install,USBSTOR\Disk&Ven_JetFlash&Prod_TS1GJF110&Rev_0.00
%Microdrive_devdesc% = cfadisk_install,USBSTOR\Disk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000


Совет. Если нужно, чтобы USB флешка в диспетчере устройств отображалась с конкретным именем, нужно отредактировать значение переменной Microdrive_devdesc, например так:
Microdrive_devdesc = "Transcend 64GB DIY SSD"

Установка драйвера Hitachi Microdrive вместо родного драйвера USB накопителя
Осталось заменить драйвер, используемый USB флеш накопителем.

Важно! Если USB драйвер Hitachi Microdrive устанавливается на 64 битной системе, то т.к. для этого драйвера отсутствует цифровая подпись, придется отключить проверку цифровой подписи драйвера либо самостоятельно подписать драйвер.

Откроем вкладку Drivers и нажмем кнопку Update Drivers.




Укажем папку к каталогу, в который распакован скачанный архив с драйвером Hitachi:




Выберем новый драйвер.




Игнорируем предупреждение об отсутствующей цифровой подписи драйвера.




Совет. В Windows 10 и Windows 8 при установке драйвера появляется такая ошибка:
Система Windows обнаружила драйверы для этого устройства, но при попытке установки этих драйверов произошла ошибка.
Hitachi Microdrive
Inf стороннего производителя не содержит информации о подписи




Для отключения проверки цифровой подписи драйвера, выполните команды:

Код:
bcdedit.exe /set nointegritychecks ON
bcdedit.exe /set TESTSIGNING ON
Перезагрузите компьютер и попытайтесь опять установить драйвер.

Осталось перезагрузить компьютер и, открыв диспетчер дисков, удостоверится, что ваша флешка стала определяться как обычный жесткий диск (Type: Basic), а в качестве драйвера используется драйвер Hitachi.




Открыв проводник, можно также убедиться, что иконка флешки поменялась она стала отображаться как жесткий диск обычный диск.




Теперь с этой флешкой можно работать как с обычным HDD: создавать разделы, указывать активный раздел, создавать динамические диски, устанавливать ПО, которое не работает с флешек и т.д.

Важно. На других компьютерах Windows без этого драйвера второй раздел устройства доступен не будет.

Как удалить драйвер Hitachi Microdrive
Чтобы удалить драйвер Hitachi Microdrive, откройте свойства диска и на вкладке драйвер нажмите кнопку Update Driver – система сама установит родной драйвер.




Совет. Если после установки драйвера Hitachi система перестала загружаться с BSOD, нужно загрузить компьютер с установочного диска Windows / Live CD и вручную удалить следующие файлы:
cfadisk.sys в каталоге %windir%\System32\drivers
Каталог «cfadisk.inf_amd64_…» из %windir%\System32\DriverStore\FileRepositoty
Перезагрузите компьютер

Нужно понимать, что это решение будет работать только на той системе, на которой установлен соответствующий драйвер.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.