Назад в библиотеку

Источник: Информатика, управляющие системы, математическое и компьютерное моделирование — 2020 (ИУСМКМ-2020): сборник материалов XI Международной научно-технической конференции в рамках VI Международного Научного форума Донецкой Народной Республики. — Донецк: ДонНТУ, 2020. — С. 500–503.

УДК 004.9

АНАЛИЗ СПОСОБОВ ДОСТУПА К ДАННЫМ ФАЙЛОВОЙ СИСТЕМЫ EXT4 НА УРОВНЕ ЯДРА ОС WINDOWS

Уткин П.С., Чередникова О.Ю.
Донецкий национальный технический университет кафедра компьютерной инженерии
Аннотация:
Уткин П.С., Чередникова О.Ю. Анализ доступа к данным файловой системы ext4 из ОС Windows. Выполнен обзор ПО, позволяющего прочитать и смонтировать раздел файловой системы ext4 на уровне ядра ОС Windows. Проанализированы структуры данных файловой системы ext4 и поставлены требования к драйверу.
Annotation:
Utkin P.S., Cherednikova O.Yu. Analyze accessing ext4 file system data from Windows OS. A review of the software that allows you to read and mount the ext4 file system partition from the Windows OS is performed. The data structures of ext4 partitions were analyzed and the requirements for the driver were set.

Общая постановка проблемы

В основном наши жесткие диски имеют более одного раздела и не всегда эти разделы могут быть одной и той же файловой системы. Например, ОС Windows зачастую имеет разделы FAT и NTFS, а ОС семейства UNIX - файловую систему ext. Нередко системные программисты имеют несколько ОС на своих машинах и доступ к различным файловым системам очень важен. Вот только ОС Windows не может видеть разделы файловой системы ext без дополнительного ПО.

Обзор утилит для доступа к разделу с файловой системой ext4 из ОС Windows

Программа Ext2Fsd - это драйвер для файловой системы ext (версий 2\3\4), он реализует поддержку этих файловых систем на уровне ядра операционной системы. С разделами диска и накопителями, отформатированными в эти файловые системы, можно работать как с обычными, поддерживаемыми Windows устройствами информации в окне проводника или сторонних программ. Драйвер позволяет прозрачно читать и записывать данные [1].

Во время установки ПО пользователь может выбрать поддерживаемые версии файловой системы ext, а также автоматически монтировать разделы при запуске системы после установки будет запущен Volume Manager, где пользователь сможет смонтировать раздел ext c выбором буквы раздела.

Достоинства: простота использования, бесплатная лицензия, монтирование разделов ext на уровне ядра ОС Windows, ext разделы видны в проводнике Windows.

Недостатки: не поддерживает журналирование файловой системы ext4, давно не обновлялось и не планируются новые версии ПО.

Программа DiskInternals Linux Reader является бесплатной и позволяет получить доступ к файлам из файловых систем Ex2/3/4, UFS2, HFS и ReiserFS/4. Кроме того, инструмент может читать обычные файловые системы, поддерживаемые Windows, такие как NTFS, Fat, exFat и т.д.

Программа имеет аккуратный интерфейс, который схож с проводников Windows, что делает Linux Reader очень простым в использовании. Программа имеет практически все стандартные функции, такие как поисковое окно, кнопки навигации, последние файлы и папки. Также можно указать вид и сортировать файлы по всем доступным свойствам [1].

Достоинства: Большой список файловых систем, гарантированная поддержка продукта, понятный интерфейс.

Недостатки: открывает раздел в режиме "только чтение", для расширенных возможностей необходимо заплатить.

Рассмотренные утилиты не являются единственными для решения задачи доступа из Windows к разделам с файловой системой Ext4. Однако большинство программ имеет аналогичные недостатки - предоставление не полного доступа к такому разделу. Поэтому актуальной остается задача разработки приложения, предоставляющего из Windows полный доступ к разделам с Ext4.

Структура файловой системы Ext4, характерной для большинства ОС семейства UNIX, во многом отличается от файловых систем ОС Windows. Поэтому на первом этапе разработки приложения необходимо рассмотреть особенности этой файловой системы.

Обзор файловой системы ext4

Ext4 - четвертая версия расширенной файловой системы (Fourth Extended File System). Основой Ext4 является разделение всего пространства раздела на блоки. Часть данных нулевого блока размером в 1024 байта зарезервирована для загрузчика, или других потребностей системы. Следом за этим массивом идет суперблок (ext4 Super Block). Номера блоков считаются с 0. Если размер блока равен 1024, то суперблок находится не в нулевом блоке, а в первом. За блоком суперблока следует группа 0. Структура группы показана на рисунке 1 [[2], [3]].

Рисунок 1 - Структура группы ext4

Одна из самых ценных особенностей файловой системы является низкая фрагментация данных. Это достигается при помощи следующих механизмов [4]:

Принципы разработки программы доступа к разделу с файловой системой ext4 из ОС Windows

Приложение, осуществляющее доступ к разделу с файловой системой ext4 из ОС Windows должно иметь возможность обращения к низкоуровневым функциям доступа к диску. Такие функции выполняет драйвер файловой системы - программа, которая работает в режиме ядра ОС Windows. Режим ядра - привилегированный режим, сопоставленный с аппаратным 0-м кольцом защиты процессора. Он характеризуется привилегиями доступа кода к ресурсам (памяти, процессору, устройствам и т.д.), что необходимо в процессе разработки программы [3].

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

Взаимодействие пользовательской программы с драйвером

Пользовательская программа может взаимодействовать с драйвером в системе двумя способами:

В первой случае в прикладной программе вызывается какая-либо функция Win32 API (например, CreateFile), которая, затем, в зависимости от целевого объекта (файла, каталога) может вызвать в цепочке своих вызовов функцию обмена с драйвером. Фактически, в этом случае код приложения не ставит своей задачей взаимодействовать с каким-либо драйвером, просто по цепочке вызовов процедур, на определенном этапе выполнение уходит в режим ядра и там происходит вызов функции драйвера. Все это остается сокрытым от разработчика, однако возможно отследить взаимодействие при помощи отладочных средств.

Второй случай возникает, когда под вызовом драйвера подразумевается не косвенный вызов (посредством вызова типовой функции), а передача при помощи специальной функции (например, DeviceIoControl) так называемого запроса ввода/вывода (I/O control request), который, в дальнейшем, инициирует формирование блока данных под названием пакет запроса ввода-вывода.

Так как любой драйвер считается участником ввода-вывода, Windows посылает им специальные пакеты - IRP (I/O Request Packet - пакет запроса ввода-вывода). При чем взаимодействие пользовательской программы с драйвером происходит только через системные вызовы (Windows API). Этот вызов приводит к тому, что диспетчер ввода-вывода формирует на основе него IRP. Драйвер, которому присылается этот пакет, может отложить выполнение задачи. Так в Windows реализована поддержка асинхронного ввода-вывода.

Разработка драйвера файловой системы

Драйвер файловой системы (FSD - File System Driver) - драйвер, который управляет форматом файловой системы. Для работы ему необходимо регистрироваться у диспетчера ввода-вывода, а также тесно взаимодействовать с диспетчером памяти для управления кэшем. После того, как драйвер зарегистрирован, диспетчер может вызвать его для распознавания томов файловой системы. Процесс распознавания включает в себя анализ загрузочного сектора и анализ метаданных файловой системы. Если том не распознался, ему назначают драйвер Raw, который предлагает отформатировать том. Драйвер Raw предоставляет чтение и запись на уровне секторов, что все-таки позволяет получить доступ к устройству [5].

Самым обычным способом доступа к файлам является вызов функций CreateFile, ReadFile, WriteFile. Открытие файла происходит при помощи функции CreateFile. Она вызывает функцию NtCreateFile, в которую передается полный путь к имени файла с префиксом "\\??". В свою очередь, NtCreateFile вызывает функцию ObOpenObjectByName, которая выполняет анализ имени и с помощью диспетчера объектов преобразует букву диска в имя \\Device\\HarddiskVolume(x), где (x) - номер, который присвоила разделу система. Функция IopParseDevice, которую она вызывает проверяет данные о безопасности и генерирует IRP запрос IRP_MJ_CREATE. Затем запрос передается, с помощью функции IoCallDriver, самому драйверу. Драйвер обязан найти нужный файл и, при успешном поиске, а также при соответствии учетных данных, должен вернуть код успешного завершения. Диспетчер объектов создает дескриптор для файлового объекта и вернет его по цепочке функций в CreateFile. Далее могут следовать различные вызовы для чтения и записи файлов.

С Windows 2000, на смену модели драйверов VxD, пришла модель WDM (Windows driver model). Она обладала расширенными возможностями, однако возросла сложность написания и поддержки кода. Для того, чтобы облегчить процесс разработки Microsoft выпустила фреймворк WDF (Window Driver Frameworks), который принес с собой два инструментария: Kernel Mode Driver Framework (KMDF) и User Mode Driver Framework (UMDF). Первое служит для написания стандартных драйверов уровня ядра, а второй - для написания определенных классов драйверов, которые могут исполняться на уровне пользователя.

Заключение

Драйвер файловой системы ext4 для Windows необходим по причине того, что до сих пор нет полной реализации файловой системы в режиме записи. Дальнейшие исследования и разработка будут связаны с написанием драйвера на языке программирования С/С++. С помощью этого драйвера пользователь из ОС Windows сможет легко монтировать разделы, читать и редактировать файлы ФС ext4.

На основе анализа достоинств и недостатков существующих решений, изучив структуру и методы доступа к файловой системе ext4, мы можем поставить требования к драйверу, который сможет обеспечить доступ на чтение и редактирование файлов и каталогов ФС ext4 из-под ОС Windows:

Список литературы

  1. Как в среде Windows получить доступ к файловым системам Ext2, Ext3, Ext4 / Интернет-ресурс. - Режим доступа : https://www.white-windows.ru/kak-v-srede-windows-poluchit-dostup-k-fajlovym-sistemam-ext2-ext3-ext4/
  2. Кэрриэ Б. Криминалистический анализ файловых систем. - СПб.: Питер, 2007 - 480 с.: ил.
  3. Еxt4 Data Structures [Electronic resourse] / Интернет-ресурс. - Режим доступа : https://www.kernel.org/doc/html/latest/filesystems/ext4/index.html - Загл. с экрана.
  4. Не новое, но хорошо доработанное старое: взгляд на ext4 / Интернет-ресурс. - Режим доступа : http://www.opennet.ru/soft/fs/ext4.pdf - Загл. с экрана.
  5. Русинович М., Соломон Д. Внутреннее устройство Microsoft Windows. 6-е изд. --- СПб.: Питер, 2013. - 800 с.: ил. - (Серия «Мастер-класс»).