В этой статье мы покажем, как сделать так, чтобы USB флешка или SD карта определялась в системе Windows как обычный локальный жесткий диск. Вы, наверное, спросите, а зачем это нужно? Дело в том, что Windows по умолчанию определяет USB флешки и карты памяти как сменные накопители, которые стандартами средствами Windows нельзя разбить на несколько разделов. И даже если разбить флешку на два и более раздела с помощью сторонних утилит (в той же Linux), то в ОС семейства Windows будет доступен только первый из них (кстати говоря, в Windows 10 1703 появилась встроенная возможность разбить USB накопитель на нескольких разделов) . Т.е. Windows поддерживает нормальную работы с мультиразделами только для HDD дисков, которые в системе определяются как локальные (т.е. несъемные).
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.
Скачать BootIt можно на сайте Lexar (lexar_usb_tool) или с нашего сайта (BootIt_usb_rmb.zip).
- Запустите 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 Кб)
Необходимо скачать версию драйвера для вашей системы в соответствии с ее разрядностью. Оба архива имеют одинаковую структуру и состоят из двух файлов:
- 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
на код нашего устройства.
Получаем:
[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
Microdrive_devdesc = "Transcend 64GB DIY SSD"
Установка драйвера Hitachi Microdrive вместо родного драйвера USB накопителя
Осталось заменить драйвер, используемый USB флеш накопителем.
Откроем вкладку Drivers и нажмем кнопку Update Drivers.
Укажем папку к каталогу, в который распакован скачанный архив с драйвером Hitachi:
Игнорируем предупреждение об отсутствующей цифровой подписи драйвера.
Hitachi Microdrive
Inf стороннего производителя не содержит информации о подписи
Для отключения проверки цифровой подписи драйвера, выполните команды:
bcdedit.exe /set nointegritychecks ON
bcdedit.exe /set TESTSIGNING ON
Перезагрузите компьютер и попытайтесь опять установить драйвер.
Осталось перезагрузить компьютер и, открыв диспетчер дисков, удостоверится, что ваша флешка стала определяться как обычный жесткий диск (Type: Basic), а в качестве драйвера используется драйвер Hitachi.
Открыв проводник, можно также убедиться, что иконка флешки поменялась она стала отображаться как жесткий диск обычный диск.
Теперь с этой флешкой можно работать как с обычным HDD: создавать разделы, указывать активный раздел, создавать динамические диски, устанавливать ПО, которое не работает с флешек и т.д.
Как удалить драйвер Hitachi Microdrive
Чтобы удалить драйвер Hitachi Microdrive, откройте свойства диска и на вкладке драйвер нажмите кнопку Update Driver – система сама установит родной драйвер.
- cfadisk.sys в каталоге %windir%\System32\drivers
- Каталог «cfadisk.inf_amd64_…» из %windir%\System32\DriverStore\FileRepositoty
Перезагрузите компьютер
Нужно понимать, что это решение будет работать только на той системе, на которой установлен соответствующий драйвер.