FAT (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи FAT. Дата последней синхронизации: 30 декабря 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из Википедии:Таблица размещения файлов:

Таблица размещения файлов (FAT) - это классическая архитектура файловой системы компьютера и семейство стандартных файловых систем, использующих ее. Файловая система FAT представляет собой устаревшую файловую систему, которая проста и надежна. Она обеспечивает хорошую производительность даже в облегченных реализациях, но не может обеспечить такую же производительность, надежность и масштабируемость, как некоторые современные файловые системы. Тем не менее, она поддерживается по соображениям совместимости почти всеми разрабатываемыми в настоящее время операционными системами для персональных компьютеров и многих мобильных устройств и встроенных систем и, таким образом, является хорошо подходящим форматом для обмена данными между компьютерами и устройствами практически любого типа и возраста с 1981 года до настоящего времени.

Создание файловой системы

Установите пакет dosfstools.

mkfs.fat поддерживает создание FAT12, FAT16 и FAT32. По умолчанию используемый тип файловой системы выбирается автоматически по размеру раздела, но вы также можете явно прописать нужный тип с помощью опции -F. Подробнее смотрите mkfs.fat(8).

Совет: В большинстве случаев вам нужен FAT32. Чтобы обеспечить возможность форматирования раздела в FAT32, его размер должен составлять не менее 36 МБ на дисках с размером логического сектора 512 байт и 260 МБ на дисках с логическим разделом 4096 байт.[1]

Форматирование раздела в FAT32:

# mkfs.fat -F 32 /dev/раздел
Примечание: mkfs.vfat и mkfs.msdos являются символическими ссылками на одну и ту же утилиту mkfs.fat.

Конфигурация ядра

Ниже приведен пример конфигурации монтирования по умолчанию в ядре:

$ zgrep -e FAT -e DOS /proc/config.gz | sort -r
# DOS/FAT/NT Filesystems
CONFIG_FAT_FS=m
CONFIG_MSDOS_PARTITION=y
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_NCPFS_SMALLDOS=y

Краткое описание этих параметров:

  • Настройки языка: CONFIG_FAT_DEFAULT_CODEPAGE, CONFIG_FAT_DEFAULT_IOCHARSET
  • Все имена файлов в нижнем регистре букв на разделах FAT, если они включены: CONFIG_NCPFS_SMALLDOS
  • Включает поддержку файловых систем FAT: CONFIG_FAT_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS
  • Включает поддержку разметки жестких дисков FAT на компьютерах x86: CONFIG_MSDOS_PARTITION

Если тип раздела, обнаруженный монтированием, является VFAT, тогда запускается скрипт /usr/bin/mount.vfat.

/usr/bin/mount.vfat
#!/bin/bash
#mount VFAT with full rw (read-write) permissions for all users
#/usr/bin/mount -i -t vfat -oumask=0000,iocharset=utf8 "$@"
#The above is the same as
mount -i -t vfat -oiocharset=utf8,fmask=0000,dmask=0000 "$@"

Запись на FAT32 в качестве обычного пользователя

Чтобы записать на раздел FAT32, вы должны внести несколько изменений в файл fstab.

/etc/fstab
/dev/sdxY    /mnt/some_folder  vfat   user,rw

Флаг user означает, что любой пользователь (даже не root) может монтировать и размонтировать раздел /dev/sdxY (mount(8) § Non-superuser mounts). Флаг rw дает доступ на чтение и запись.

Например, если ваш раздел FAT32 находится на /dev/sda9, и вы хотите смонтировать его на /mnt/fat32, вы должны использовать:

/etc/fstab
/dev/sda9    /mnt/fat32        vfat   user,rw

Теперь любой пользователь может смонтировать его с помощью:

$ mount /mnt/fat32

И размонтировать его с помощью:

$ umount /mnt/fat32

Имейте в виду, что FAT не поддерживает права доступа Linux. С параметрами монтирования по умолчанию все файлы будут считаться исполняемыми. Вы можете использовать опцию showexec вместо параметров umask и dmask, которые отметит исполняемыми только файлы Windows (com, exe, bat). Смотрите также mount(8).

Определение типа FAT

Если вы хотите узнать, какой конкретно тип FAT используется на определённом разделе, используйте команду file:

# file -s /dev/раздел
/dev/раздел: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 4096 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 3, sectors/track 32, heads 64, serial number 0x5bc09c21, unlabeled, FAT (12 bit)

Также можно использовать команду minfo из пакета mtools:

# minfo -i /dev/раздел ::
device information:
===================
filename="/dev/раздел"
sectors per track: 32
heads: 64
cylinders: 2

media byte: f8

mformat command line: mformat -t 2 -h 64 -s 32 -i "/dev/раздел" ::

bootsector information
======================
banner:"mkfs.fat"
sector size: 512 bytes
cluster size: 4 sectors
reserved (boot) sectors: 1
fats: 2
max available root directory slots: 512
small size: 4096 sectors
media descriptor byte: 0xf8
sectors per fat: 3
sectors per track: 32
heads: 64
hidden sectors: 0
big size: 0 sectors
physical drive id: 0x80
reserved=0x0
dos4=0x29
serial number: 5BC09C21
disk label="NO NAME    "
disk type="FAT12   "

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