Linux имеет несколько драйверов файловой системы для формата файловой системы File Allocation Table (FAT). Они обычно известны по именам, используемым в mount
команде для вызова определенных драйверов в ядре: msdos , vfat и umsdos . [1] [2]
Большинство основных дистрибутивов Linux, включая RedHat, SuSE и Debian, не используют umsdos для установки Linux на том FAT-диска. Однако некоторые дистрибутивы используют его. [3] К ним относятся такие дистрибутивы, как Phat Linux, который устанавливается в C:\PHAT
DOS путем распаковки ZIP-файла и загружается путем запуска скрипта COMMAND.COM с именем LINUX.BAT
, [4] и ZipSlack [ требуется ссылка ] .
Проект UMSDOS был начат в 1992 году Жаком Желинасом и стал доступен в сети в январе 1994 года в качестве патча. Он был включен в стандартный дистрибутив, начиная с ядра 1.1.36. [ требуется ссылка ] UMSDOS был удален из ядра Linux 2.6.11 из-за отсутствия поддержки. [5] UVFAT, расширение UMSDOS для использования структур данных Windows для длинных имен файлов вместо своих собственных, было прекращено до выпуска. [6] Они должны работать в ядрах 2.4.x. [ требуется ссылка ]
Более ранние дистрибутивы Linux, которые использовали UMSDOS: MuLinux , [7] Monkey Linux [8] и Winlinux 2000. [9]
Все драйверы файловой системы Linux поддерживают все три типа FAT, а именно FAT12 , FAT16 и FAT32 . Отличие заключается в предоставлении поддержки длинных имен файлов , помимо структуры имени файла 8.3 исходного формата файловой системы FAT, и в предоставлении семантики файлов Unix, которая не существует как стандарт в формате файловой системы FAT, например, разрешения файлов . [1] Драйверы файловой системы являются взаимоисключающими. Только один из них может использоваться для монтирования любого заданного тома диска в любой момент времени. Таким образом, выбор между ними определяется тем, какие длинные имена файлов и семантику Unix они поддерживают, и как вы хотите использовать том диска. [10]
Драйвер файловой системы msdos не предоставляет дополнительной семантики файлов Unix и поддержки длинных имен файлов. Если файловая система диска FAT смонтирована с помощью этого драйвера, будут видны только имена файлов 8.3, длинные имена файлов не будут доступны, и никакие структуры данных длинных имен файлов любого вида на дисковом томе не будут поддерживаться. Драйвер файловой системы vfat обеспечивает поддержку длинных имен файлов, используя те же структуры данных диска, которые Microsoft Windows использует для поддержки длинных имен файлов VFAT на томах формата FAT, но он не поддерживает никакой дополнительной семантики файлов Unix. Драйвер файловой системы umsdos обеспечивает поддержку длинных имен файлов и дополнительную семантику файлов Unix. Однако он делает это, используя структуры данных на диске, которые не распознаются никакими драйверами файловых систем для любых операционных систем, кроме Linux. [1] [2] [10] [11]
Ключевым преимуществом umsdos из трех является то, что он обеспечивает полную файловую семантику Unix. Поэтому его можно использовать в ситуациях, когда желательно установить Linux и запустить его с тома диска FAT, что требует наличия такой семантики. Однако Linux, установленный и работающий с такого тома диска, работает медленнее, чем Linux, установленный и работающий с тома диска, отформатированного, например, в формате файловой системы ext2 . [1] [12] Кроме того, если служебная программа не запускается регулярно каждый раз при переключении с работы Windows на работу Linux, определенные изменения, внесенные Windows в файлы и каталоги на диске, приведут к появлению сообщений об ошибках о недоступных файлах в Linux. [4]
vfat , хотя и не имеет полной семантики файлов Unix и не имеет возможности устанавливать и запускать Linux на томе диска FAT, не имеет вышеупомянутых недостатков umsdos , когда дело доходит до простого обмена данными на томе диска FAT между Linux и другими операционными системами, такими как Windows. Его структуры данных такие же, как те, которые используются Windows для длинных имен файлов VFAT, и он не требует запуска утилиты синхронизации, чтобы предотвратить разъединение структур данных Windows и Linux. По этой причине это наиболее подходящий драйвер файловой системы FAT Linux для использования в большинстве ситуаций. [1] [10] [4]
FS-драйвер | Длинные имена файлов | Семантика файлов Unix | Комментарий |
---|---|---|---|
msdos | Нет | Нет | 8.3 только имена файлов |
вфат | Да | Нет | Использует те же структуры данных, что и Windows |
умсдос | Да | Да | Может поддерживать Linux; может потребоваться обслуживание при смене ОС |
Как упоминалось ранее, все драйверы файловой системы Linux поддерживают все три размера таблицы размещения файлов: 12-битную, 16-битную и 32-битную. Другие общие функции, которые они все поддерживают, — это различные параметры монтирования Linux (указываются с помощью параметра -o
команды mount
): [10] [3]
uid
иgid
/etc/passwd
). Так, например, чтобы указать драйверу файловой системы vfat , что все файлы и каталоги должны иметь идентификатор владельца 745 и идентификатор группы 15, mount
команда будет вызвана как mount -t vfat -o uid=745,gid=15
. [10] [3] Драйверы файловой системы Linux в настоящее время не поддерживают пароли файлов/каталогов на томах FAT12/FAT16/FAT32 и многопользовательские разрешения доступа «всем миром», «группой» и «владельцем» для прав чтения/записи/удаления/выполнения на томах FAT12/FAT16, как это реализовано в различных операционных системах семейства Digital Research, включая DR-DOS , PalmDOS , Novell DOS , OpenDOS , FlexOS , Concurrent DOS , Multiuser DOS , System Manager и REAL/32 .umask
mount
команда будет вызвана как mount -t vfat -o umask=077
. [10] [3]conv
conv=b
(для «двоичного»), conv=a
(для «автоматического определения») и conv=t
(для «текстового») соответственно. Последние два параметра несут в себе неотъемлемый риск повреждения нетекстовых данных файла. По умолчанию преобразование не выполняется вообще. [10] [3]Драйвер файловой системы FAT umsdos хранит всю дополнительную информацию, касающуюся семантики файлов Unix, в том, что для другого драйвера файловой системы FAT выглядит как обычный файл в каждом каталоге и подкаталоге с именем --LINUX-.---
. [1] [10] [4] [3] [13]
При отсутствии этого файла в любом заданном каталоге, и, таким образом, по умолчанию, драйвер файловой системы umsdos предоставляет ту же семантику, что и драйвер файловой системы msdos для каталога: только имена файлов 8.3 и никакой дополнительной семантики файлов Unix. Чтобы включить дополнительные возможности драйвера umsdos , необходимо создать этот файл в каталоге и синхронизировать его внутренние данные с обычными данными FAT для любых существующих записей, уже имеющихся в каталоге. Это делается с помощью инструмента под названием umssync
. [1] [10] [4]
Это служебная программа, которая запускается в каждом каталоге на дисковом томе каждый раз, когда вы переключаетесь с работы Windows на работу Linux, для того, чтобы драйвер файловой системы umsdos включил любые изменения, внесенные в файлы и каталоги Windows, в свои частные структуры данных в своем --LINUX-.---
файле. По умолчанию umssync
инструмент создает --LINUX-.---
файлы в каталогах, если они еще не существуют, в результате чего такой файл появляется в каждом каталоге на дисковом томе. При переключении между Windows и Linux такое поведение часто не считается желательным. Поэтому нормальный режим работы при вызове umssync
после переключения с Windows на Linux (что обычно выполняется путем запуска инструмента во время загрузки Linux из сценария запуска) заключается в использовании опции -c
для команды, которая предотвращает создание любых новых --LINUX-.---
файлов в каталогах, в которых они еще не есть. [1] [10] [4]
Как уже упоминалось, umsdos позволяет устанавливать Linux на том формата FAT, а затем загружать и запускать его с него. Преимущество этого в том, что он позволяет использовать Linux на компьютере, где уже установлен DOS , без необходимости переразметки жесткого диска . Linux не загружается напрямую из Volume Boot Record в таком сценарии. Вместо этого сначала загружается DOS, а затем используются loadlin или linld для загрузки Linux из DOS. [4]
Соглашение для такой установки заключается в том, что корневой каталог Linux должен быть подкаталогом корневого каталога загрузочного тома DOS , например C:\LINUX
. Таким образом, различные каталоги верхнего уровня Linux для DOS являются такими каталогами, как C:\LINUX\ETC
(for /etc
), C:\LINUX\BIN
(for /bin
), C:\LINUX\LIB
(for /lib
) и т. д. Драйвер файловой системы umsdos автоматически добавляет префикс C:\LINUX\
ко всем именам путей. Местоположение корневого каталога Linux предоставляется драйверу файловой системы umsdos в первую очередь через опцию команды loadlin
. Так, например, loadlin
будет вызываться с помощью командной строки, например loadlin c:\linux\boot\vmlinuz rw root=c:\linux
. [4] [13]
Установка Linux в такой каталог в первую очередь просто включает в себя распаковку файлов из архива в этот каталог и его подкаталоги. Такая установка также обычно требует использования файла подкачки вместо раздела подкачки для Linux, однако это связано с желанием не переразбивать жесткий диск и не связано с драйвером файловой системы umsdos как таковым. [4]
Хотя драйверы файловой системы в ядре позволяют получать доступ к файлам и каталогам на томах, отформатированных в FAT, обычным способом, это также возможно сделать без поддержки драйвера ядра, используя служебные программы, которые формируют набор утилит mtools . Как и драйвер файловой системы vfat FAT, mountlo обеспечивает поддержку длинных имен файлов, используя те же структуры данных диска, которые использует Microsoft Windows. [3] [14] [15]
В качестве альтернативы можно использовать один из драйверов файловой системы FUSE — FatFuse, FuseFat или mountlo. [16]
Современный эквивалент UMSDOS — POSIX Overlay Filesystem (posixovl). Работает в FUSE. [17]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )