Файловая система FAT и Linux

Широко используемый формат файловой системы Linux.

Linux имеет несколько драйверов файловой системы для формата файловой системы File Allocation Table (FAT). Они обычно известны по именам, используемым в mountкоманде для вызова определенных драйверов в ядре: msdos , vfat и umsdos . [1] [2]

История и поддержка

Большинство основных дистрибутивов Linux, включая RedHat, SuSE и Debian, не используют umsdos для установки Linux на том FAT-диска. Однако некоторые дистрибутивы используют его. [3] К ним относятся такие дистрибутивы, как Phat Linux, который устанавливается в C:\PHATDOS путем распаковки 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

Драйвер файловой системы 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
Эти две опции сообщают драйверу файловой системы, что необходимо установить (по умолчанию, в случае umsdos ) идентификатор пользователя-владельца и идентификатор группы как единое указанное значение для всех файлов в томе. Оба идентификатора указываются как числовые значения (как их можно найти в файле /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
Эта опция устанавливает umask для глобального применения ко всем файлам в томе. Например, чтобы указать драйверу файловой системы vfat , что доступ "группам" или "другим" не разрешен, mountкоманда будет вызвана как mount -t vfat -o umask=077. [10] [3]
conv
Этот параметр определяет семантику преобразования содержимого файла . Драйверы файловой системы могут преобразовывать соглашения о новой строке в файлах между окончанием LF и окончанием CRLF на лету по мере чтения и записи файлов. По умолчанию это преобразование полностью отключено. Драйверы файловой системы могут выполнять преобразование для некоторых файлов, пытаясь автоматически определить, какие файлы преобразовывать, на основе расширения части имени файла, или глобально для всех файлов. Эти три уровня преобразования указаны как 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]

Установка Linux на FAT

Как уже упоминалось, 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, без поддержки ядра

Хотя драйверы файловой системы в ядре позволяют получать доступ к файлам и каталогам на томах, отформатированных в FAT, обычным способом, это также возможно сделать без поддержки драйвера ядра, используя служебные программы, которые формируют набор утилит mtools . Как и драйвер файловой системы vfat FAT, mountlo обеспечивает поддержку длинных имен файлов, используя те же структуры данных диска, которые использует Microsoft Windows. [3] [14] [15]

В качестве альтернативы можно использовать один из драйверов файловой системы FUSE — FatFuse, FuseFat или mountlo. [16]

Оверлейная файловая система POSIX

Современный эквивалент UMSDOS — POSIX Overlay Filesystem (posixovl). Работает в FUSE. [17]

Смотрите также

Ссылки

  1. ^ abcdefgh Стэнфилд, Вики; Смит, Родерик В. (2002). Администрирование систем Linux . Библиотека Linux Крейга Ханта (2-е изд.). John Wiley and Sons . стр. 166. ISBN 978-0-7821-4138-2.
  2. ^ ab Ward, Brian (2004). Как работает Linux: что должен знать каждый суперпользователь . Серия No Starch Press. No Starch Press . стр. 41. ISBN 978-1-59327-035-3.
  3. ^ abcdefg Смит, Родерик В. (2000). Справочник по конфигурации мультизагрузки. Серия справочников. Que Publishing . С. 256, 341–342. ISBN 978-0-7897-2283-6.
  4. ^ abcdefghi МакКьюн, Майк (2001). Интеграция Linux и Windows. Серия технологий с открытым исходным кодом. Prentice Hall PTR . стр. 7–9. ISBN 978-0-13-030670-8.
  5. ^ "Сводка изменений от v2.6.10 до v2.6.11". www.kernel.org . Получено 2017-11-15 .
  6. ^ "Файловая система UMSDOS: поддержка UVFAT". linux.voyager.hr . Получено 16.07.2015 .
  7. ^ Проект MuLinux
  8. ^ Monkey Linux: объяснение
  9. ^ Комбинация Linux/Windows: используйте эти ресурсы, чтобы заставить ее работать
  10. ^ abcdefghij Родерик В. Смит (2005). Linux в мире Windows . O'Reilly Media, Inc. стр. 449. ISBN 0-596-00758-2.
  11. ^ Негус, Кристофер (2007). Библия Linux: загрузка Ubuntu, Fedora, KNOPPIX, Debian, SUSE и 11 других дистрибутивов. Серия «Библия». John Wiley and Sons . С. 159. ISBN 978-0-470-08279-9.
  12. ^ Strobel, Stefan; Elling, Volker (1997). Linux, освобождая рабочую станцию ​​в вашем ПК . Полный комплект Linux, Райнер Маурер (3-е изд.). Springer. стр. 43. ISBN 978-0-387-94880-5.
  13. ^ ab Danesh, Arman (2002). Заставляем Linux работать: основные советы и приемы. Серия «1001 совет». Cengage Learning. стр. 19. ISBN 978-1-884133-78-7.
  14. ^ Раджагопал, Радж (2000). Многооперационные сетевые системы: жизнь с Unix, Netware и NT. Серия лучших практик Ауэрбаха. CRC Press . С. 25–21. ISBN 978-0-8493-9831-5.
  15. ^ Уэлш, Мэтт (2003). Запуск Linux . Essential Guide to Linux (4-е изд.). O'Reilly Media, Inc. стр. 405. ISBN 978-0-596-00272-5.
  16. ^ "FUSE: NonNativeFileSystems". Архивировано из оригинала 2015-09-15.
  17. ^ «Оверлейная файловая система POSIX».

Дальнейшее чтение

  • Гелинас, Жак (01.12.2001). "UMSDOS HOW-TO". 1.2. Проект документации Linux . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  • Страница разработчика UMSDOS
  • Новый патч Linux может обойти патенты FAT от Microsoft Райан Пол
Взято с "https://en.wikipedia.org/w/index.php?title=FAT_filesystem_and_Linux&oldid=1162577526#UMSDOS"