NTFS

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page NTFS and the translation is 69% complete.
Outdated translations are marked like this.
Не следует путать с NFS.


NTFS (New Technology File System) — пропиетарная дисковая файловая система от Microsoft для операционных систем, основанных на Windows.

Существует два способа включения поддержки NTFS при использовании Linux. Начиная с версии 5.15, ядро Linux предоставляет новый драйвер NTFSv3 с полной поддержкой файловой системы NTFS, включая возможности сжатия. Также есть FUSE-драйвер файловой системы под названием NTFS-3G — медленное, но более стабильное и проверенное временем решение.

Установка

Ядро

До версии 5.15 в ядре Linux сопровождался старый драйвер NTFS, имевший крайне ограниченную поддержку NTFS. Информация в ядре описывала эту поддержку «частичной, но безопасной». Старый драйвер мог только перезаписывать существующие файлы, но не мог создавать файлы и каталоги, удалять или переименовывать их. Начиная с Linux 5.15, старый код NTFS был заменен на новый драйвер ядра от Paragon под названием «NTFSv3». Этот драйвер обладает большей функциональностью и полностью поддерживает чтение/запись и возможности сжатия.

На системах с ядрами до версии 5.15 большинство пользователей NTFS захотят включить реализацию NTFS-3G, основанную на FUSE.

Поддержка в ядре

В Linux 5.15 и позднее необходимо указать следующие параметры ядра для включения драйвера NTFSv3:

ЯДРО Включение нового драйвера NTFSv3 с необязательной поддержкой сжатых в Windows файлов (lxz/xpress) (CONFIG_NTFS3_FS, CONFIG_NTFS3_LZX_XPRESS)
File systems  --->
    DOS/FAT/NT Filesystems  --->
        <*> NTFS Read-Write file system support Search for <code>CONFIG_NTFS3_FS</code> to find this item.
        <*> activate support of external compressions lzx/xpress Search for <code>CONFIG_NTFS3_LZX_XPRESS</code> to find this item.

NTFS-3G (реализация FUSE)

В Linux до 5.15 для включения поддержки чтения/записи NTFS через FUSE необходимо указать следующие параметры:

ЯДРО Включение NTFS через FUSE с использованием NTFS-3G (CONFIG_FUSE_FS)
File systems  --->
    <*> FUSE (Filesystem in Userspace) support Search for <code>CONFIG_FUSE_FS</code> to find this item.

Также понадобится пакет sys-fs/ntfs3g (см. раздел Установка ниже).

Установка

NTFS-3G

Важно
Этот пакет необходим только при использовании NTFS-3G. Он не нужен при использовании драйвера ядра!

Так как NTFS-3G является файловой системой на основе FUSE, для него требуются пользовательские утилиты. На данный момент только одна FUSE-реализация доступна в репозитории Gentoo. Проверьте, что USE-флаг suid включен, иначе можете получить ошибку «read only filesystem».

If you experience "read only filesystem" errors, it may be necessary to enable the suid USE flag.

USE flags for sys-fs/ntfs3g Open source read-write NTFS driver that runs under FUSE

+fuse Enable ntfs-3g FUSE driver
+mount-ntfs Install mount.ntfs symlink
+ntfsprogs Enable ntfsprogs
acl Add support for Access Control Lists
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
ntfsdecrypt Build and install the ntfsdecrypt application.
static-libs Build static versions of dynamic libraries as well
suid Enable setuid root program(s)
xattr Add support for extended attributes (filesystem-stored metadata)

После установки USE-флагов и внесения необходимых изменений установить пользовательские утилиты FUSE, благодаря чему станет возможным работа в файловыми системами NTFS:

root #emerge --ask sys-fs/ntfs3g

Использование

Создание

Предупреждение
Команда mkfs.ntfs необратимо уничтожит любое содержимое на разделе, который вы укажете для форматирования. Убедитесь что выбрали правильный раздел!

Команда создания файловой системы NTFS в разделе /dev/sda1 (необходим включённый USE-флаг ntfsprogs):

root #mkfs.ntfs /dev/sdyX

Замените /dev/sdyX на раздел, который хотите отформатировать.

Монтирование

Есть несколько способов смонтировать файловую систему NTFS:

  • mount — команда для монтирования файловых систем.
  • /etc/fstab — автоматическое монтирование во время загрузки.
  • removable media — монтирование по запросу.
  • AutoFS — автоматическое монтирование при запросе.

Драйвер ядра

При использовании нового драйвера NTFS3 (ядро 5.15):

root #mount -t ntfs3 /dev/device /path/to/mountpoint
Заметка
Выполнение mount /dev/device /path/to/mountpoint может привести к ошибке, даже если драйвер ntfs3 загружен, убедитесь, что выполняете команду с параметром -t ntfs3.

FUSE (NTFS-3G)

При использовании драйвера из пакета ntfs3g:

root #mount -t ntfs-3g /dev/device /path/to/mountpoint

BitLocker

Linux dm-crypt has native support for BitLocker and BitLocker to Go, except for very old variants (such as Windows Vista). While cryptsetup can read the BitLocker header bitlk, the main requirement is that the Linux kernel must have support for the encryption algorithm in use.

Совет
For further details on dm-crypt, refer to the corresponding manpages: cryptsetup (8), crypttab (5)

To use a Windows filesystem that is BitLocker encrypted on Linux, the first step is to get the BitLocker recovery key for that volume in Microsoft Windows. Example for such a recovery key:

ФАЙЛ 00112233-4455-6677-8899-AABBCCDDEEFF.keyBitLocker recovery key for specific volume UUID
001122-334455-667788-990011-223344-556677-890123-456789
Совет
Consult Microsoft's support infrastructure on how to get the unique BitLocker recovery key. At the time of this writing, the following support webpage describes the process for Windows 10 and 11: Find your BitLocker recovery key.

On Linux, cryptsetup can automatically decrypt volumes that are configured in /etc/crypttab. When using a systemd profile, see sys-fs/cryptsetup configuration for a persistent configuration (i.e. automatic BitLocker decryption on start-up).

First, store the recovery key in a file. A convenient place to store encryption keys could be e.g. /etc/cryptsetup-keys.d. If the Windows' BitLocker volume ID was, as in the above example, 00112233-4455-6677-8899-AABBCCDDEEFF, you may want to create /etc/cryptsetup-keys.d/00112233-4455-6677-8899-AABBCCDDEEFF.key.

root #mkdir /etc/cryptsetup-keys.d
root #echo 001122-334455-667788-990011-223344-556677-890123-456789 > /etc/cryptsetup-keys.d/00112233-4455-6677-8899-AABBCCDDEEFF.key
Предупреждение
As with all encryption keys, extreme caution is advised for granting access to such keys. Because the BitLocker key is stored in unencrypted plain text, access to the file containing the key should be restricted:
root #chmod 444 /etc/cryptsetup-keys.d/*.*

Next, find the BitLocker partition identification. This can be anything supported by Linux, such as any UUID or LABEL. The following example uses the partition UUID, identified with gdisk (alternatively parted may be used) and lsblk:

root #gdisk -l /dev/nvme0n1
root #lsblk -o +PARTUUID

In the above example we can see that the Windows partition is partition number 3, /dev/nvme0n1p3, and that its partition UUID or PARTUUID is 00112233-aabb-4455-ccdd-66778899eeff. Note that this partition UUID is different from the volume UUID given by BitLocker on Windows.

Then, reference the recovery key file, which stores the key in plain text format, in /etc/crypttab:

ФАЙЛ /etc/crypttabcrypttab configuration
windows_bitlk  PARTUUID=00112233-aabb-4455-ccdd-66778899eeff  /etc/cryptsetup-keys.d/00112233-4455-6677-8899-AABBCCDDEEFF.key  bitlk,discard,nofail
Заметка
It will also work to use the device path, e.g. /dev/nvme0n1p3, directly, instead of the partition UUID, e.g. PARTUUID=00112233-aabb-4455-ccdd-66778899eeff, but with the disadvantage that updating the various configuration files is required with certain modifications to the system configuration, like changing device numbers: nvme0n1 may become nvme1n1 when SSDs are moved or an SSD is added. Also, you may choose a different name for the the mapper device, in the example windows_bitlk, as well as the name for the file containing the BitLocker recovery key, e.g. instead of the BitLocker UUID assigned by Windows you might want to name the file specific to its purpose, like Windows-BitLocker-volume.key or Additional-Data-Volume-BitLocker.key. Make sure to change the designations in the examples to those actually used on your system.

For /etc/crypttab, you may add/remove options to your linking. E.g. the nofail option prevents a systemd startup error in case the BitLocker volume is unavailable for some reason. Without it the system boot-up will, in the case that BitLocker decryption fails, halt, giving access only to a systemd rescue shell.

To automatically mount a BitLocker encrypted NTFS partition, /etc/fstab must be configured as well. The NTFS partition must refer to its decrypted cryptsetup name, e.g. /dev/mapper/windows_bitlk. An example could be:

ФАЙЛ /etc/fstabfstab NTFS BitLocker example
/dev/mapper/windows_bitlk  /mnt/windows  ntfs3  noatime,discard,sys_immutable,showmeta,acl,hidden,hide_dot_files,nofail  0 0

As in /etc/crypttab, in /etc/fstab the nofail option again prevents errors in case the BitLocker decryption failed for some reason or when the NTFS partition happens to be dirty, i.e. to prevent filesystem corruption the NTFS partition would not be mounted, but at the same time the startup with systemd will not fail.

After the next reboot the Windows NTFS partition should be both decrypted and mounted. The BitLocker volume can, however, also be decrypted on a running system, without a reboot:

root #cryptsetup open --type bitlk --allow-discards --key-file /etc/cryptsetup-keys.d/00112233-4455-6677-8899-AABBCCDDEEFF.key /dev/nvme0n1p3 windows_bitlk
root #mount /mnt/windows

Thereafter every operation on the NTFS partition may be started as with any regular (unencrypted) volume:

root #umount /mnt/windows
root #ntfsfix -n /dev/mapper/windows_bitlk

Устранение проблем

NTFS-3G

Принудительное монтирование раздела NTFS после гибернации Windows

Файловая система NTFS под управлением Windows может быть введена в состояние гибернации вместо корректного выключения для экономии времени при последующей загрузке системы. В этом случае невозможно смонтировать раздел NTFS, пока файл hiberfil.sys не будет удалён. Для принудительного монтирования раздела в гибернации, можно использовать следующую команду, которая удалит файл гибернации; при этом вся информация в нём будет утеряна. Windows выполнит полный старт системы, чтобы возобновить свою работу:

root #mount -t ntfs-3g -o remove_hiberfile /path/to/device /path/to/mountpoint

В Windows, чтобы предотвратить гибернацию раздела, можно выполнить команду powercfg /h off от имени администратора системы. Эта команда отключит гибернацию, что скорее всего увеличит время загрузки Windows, но при этом раздел будет отмонтирован корректно.

Совет
Если для отключения гибернации невозможно получить права администратора в Windows, попробуйте следующее решение:
  1. Загрузите Windows до экрана входа в Windows.
  2. Нажмите на кнопку питания (в нижнем правом углу экрана), а затем, удерживая клавишу shift, нажмите на Перезагрузку.
  3. Выберите раздел «Дополнительно», а после перезагрузитесь в настройки прошивки UEFI.
  4. Оказавшись в меню прошивки UEFI, выберите загрузочную запись Linux.
Благодаря этим действиям Windows выполнит полную перезагрузку и корректно отмонтирует файловую систему для использования в NTFS-3G.

ntfsfix

Иногда в Linux необходимо выполнить исправление файловой системы NTFS. Для этого можно использовать утилиту ntfsfix:

root #ntfsfix /dev/nvme0n1p3

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

Внешние ресурсы

Ссылки