NTFS

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page NTFS and the translation is 100% complete.
Other languages:
これと混同しないでください: NFS.


NTFS (New Technology File System) は、Windows および Windows ベースのオペレーティングシステムのための、Microsoft によるプロプライエタリなディスクファイルシステムです。

Linux の使用時に NTFS サポートを実現する主要な方法は、2 通りあります。Linux カーネル 5.15 は、圧縮機能も含む NTFS ファイルシステムの完全なサポートを備えた、新しいドライバ NTFSv3 を提供しています。NTFS-3G という FUSE ファイルシステムドライバもあります - 低速ですが、より安定していて、長くテストされてきた方法です。

インストール

カーネル

Linux カーネル 5.15 より前は、主流だった古い NTFS カーネルドライバは NTFS のうち非常に限られた機能のみをサポートしていました。カーネルコンフィグの情報では、サポートを「部分的だが安全」としています。古いドライバは既存のファイルを上書きすることはできましたが、ファイルやディレクトリの作成、削除、名前の変更を行うことができません。Linux 5.15 現在、古い NTFS コードは、 "NTFSv3" と呼ばれる新しい Paragon のカーネル内 NTFS ドライバによって置き換えられました。このドライバのほうがより多機能で、完全な読み書きと圧縮機能をサポートしています。

5.15 より前のカーネルを実行しているシステムで NTFS を使用する場合は FUSE を利用した NTFS-3G 実装を有効化するのがよいでしょう。

ネイティブサポート

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 実装)

5.15 より前の Linux で、FUSE 上での NTFS 読み書きを可能にするには、次のカーネルオプションを有効化する必要があります:

カーネル NTFS-3G を使用して FUSE 上で NTFS を有効化する (CONFIG_FUSE_FS)
File systems  --->
    <*> FUSE (Filesystem in Userspace) support Search for <code>CONFIG_FUSE_FS</code> to find this item.

sys-fs/ntfs3g パッケージも必要です (下の emerge の節を参照してください)。

Emerge

NTFS-3G

重要
このパッケージは NTFS-3G を使用する場合にのみ必要です。ネイティブサポートを使用する場合には必要ありません

NTFS-3G は FUSE ベースのファイルシステムなので、ユーザ空間ユーティリティが必要です。FUSE は Filesystem in Userspace の略で、カーネル空間のファイルシステムドライバと比較すると、例えばパフォーマンスに劣るなど、いくつかの不利な点があります。

"read only filesystem" エラーに遭遇した場合は、suid USE フラグを有効化する必要があるかもしれません。

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 パーティション上に作成するには (ntfsprogs USE フラグが必要です):

root #mkfs.ntfs /dev/sdyX

/dev/sdyX は実際にフォーマットするパーティションに置き換えてください。

マウント

NTFS ファイルシステムをマウントする方法は複数あります:

  • mount - 手動マウント。
  • fstab - 起動時の自動マウント。
  • removable media - 必要に応じた自動マウント。
  • AutoFS - アクセス時の自動マウント。

ネイティブサポート

Linux カーネル 5.15 以降に含まれるネイティブ NTFS3 ドライバを使用して:

root #mount -t ntfs3 /dev/device /path/to/mountpoint
メモ
mount /dev/device /path/to/mountpoint では、ntfs3 ドライバがロードされている場合でも実行に失敗するかもしれません。一因として、/etc/filesystemsntfs3 の行が存在しないことが考えられます。この行が存在することがプリセットとして望ましいのかもしれませんが、この場合は単に -t ntfs3 付きでコマンドを実行するようにしてください。

FUSE (NTFS-3G)

ntfs3g パッケージが提供する、読み書き可能なドライバを使用して:

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

BitLocker

関連項目: UEFI Dual boot with Windows 7/8、BitLocker のセクション

Linux dm-crypt は、(Windows Vista などの) 非常に古い版に対するものは除きますが、BitLocker および BitLocker to Go のネイティブサポートを備えています。cryptsetup は BitLocker ヘッダ bitlk を読むことができます。主な必要条件は、使用中の暗号化アルゴリズムに対するサポートを Linux カーネルが持たなくてはならないということです。

ヒント
dm-crypt に関するさらなる詳細については、対応する man ページを参照してください: cryptsetup (8)crypttab (5)

Linux 上で BitLocker 暗号化された Windows ファイルシステムを使用するための最初の手順は、Microsoft Windows 内でそのボリュームのための BitLocker 回復キーを得ることです。回復キーの例です:

ファイル 00112233-4455-6677-8899-AABBCCDDEEFF.key特定のボリューム UUID のための BitLocker 回復キー
001122-334455-667788-990011-223344-556677-890123-456789
ヒント
一意な BitLocker 回復キーを得る方法については、Microsoft のサポートインフラストラクチャを参照してください。これを書いている時点で、次のサポート web ページが Windows 10 および 11 のためのプロセスを説明しています: BitLocker 回復キーを見つける

Linux 上では、cryptsetup/etc/crypttab 内で構成されているボリュームを自動的に復号することができます。systemd プロファイル を使用している場合の永続的な構成方法 (スタートアップ時の自動 BitLocker 復号) については、sys-fs/cryptsetup の設定を参照してください。

まず、ファイル内に回復キーを保存してください。暗号化鍵を保存するのに都合がいい場所としては、/etc/cryptsetup-keys.d などが一例でしょう。上の例のように、Windows の BitLocker ボリューム ID が 00112233-4455-6677-8899-AABBCCDDEEFF だとすると、/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
警告
他のあらゆる暗号化鍵と同様に、キーへのアクセス権限の付与は最大限の注意を払うことが推奨されます。BitLocker キーは暗号化されずに平文で保存されるので、キーを含むファイルへのアクセスは制限されるべきです:
root #chmod 444 /etc/cryptsetup-keys.d/*.*

次に、BitLocker パーティションの識別子を見つけてください。これは、UUID または LABEL など、Linux によってサポートされているものなら何でも構いません。以下の例は、gdisk (または parted も使用できます) および lsblk によって特定されたパーティション UUID を使用します:

root #gdisk -l /dev/nvme0n1
GPT fdisk (gdisk) version 1.0.9
 
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
 
Found valid GPT with protective MBR; using GPT.
Disk /dev/nvme0n1: 3907029168 sectors, 1.8 TiB
Model: SSD0000SSD2G                            
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 4205 sectors (2.1 MiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          534527   260.0 MiB   EF00  EFI system partition
   2          534528          567295   16.0 MiB    0C01  Microsoft reserved
   3          567296      3902930943   1.8 TiB     0700  Windows boot partition
   4      3902932992      3907028991   2.0 GiB     2700  Windows RE
root #lsblk -o +PARTUUID
NAME                      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS      PARTUUID
nvme0n1                   259:0    0  1,8T  0 disk                   
├─nvme0n1p1               259:1    0  260M  0 part                   00000000-0000-0000-0000-000000000000
├─nvme0n1p2               259:2    0   16M  0 part                   00000000-1111-0000-0000-000000000000
├─nvme0n1p3               259:3    0  1,8T  0 part                   00112233-aabb-4455-ccdd-66778899eeff
└─nvme0n1p4               259:4    0    2G  0 part                   00000000-2222-0000-0000-000000000000

上の例では、Windows パーティションがパーティション番号 3 の /dev/nvme0n1p3 であることと、そのパーティション UUID (PARTUUID) が 00112233-aabb-4455-ccdd-66778899eeff であることが分かります。このパーティション UUID は Windows 上で BitLocker によって与えられるボリューム UUID とは異なります。

そして /etc/crypttab に、平文フォーマットでキーを保持する、回復キーファイルを記載してください:

ファイル /etc/crypttabcrypttab の構成
windows_bitlk  PARTUUID=00112233-aabb-4455-ccdd-66778899eeff  /etc/cryptsetup-keys.d/00112233-4455-6677-8899-AABBCCDDEEFF.key  bitlk,discard,nofail
メモ
PARTUUID=00112233-aabb-4455-ccdd-66778899eeff のようなパーティション UUID の代わりに、/dev/nvme0n1p3 のようなデバイスパスを直接使用しても機能するでしょうが、デバイス番号が変わるなどの、システム構成に対する修正の種類によっては、様々な構成ファイルを更新する必要があるというデメリットがあります: SSD が移動されたり、SSD が追加されたりすると、nvme0n1nvme1n1 になることがあります。さらに、上の例での windows_bitlk のように、マッパーデバイスのために異なる名前を選ぶこともできます。BitLocker 回復キーを含むファイルの名前も、Windows によって割り当てられた BitLocker UUID ではなく、Windows-BitLocker-volume.key または Additional-Data-Volume-BitLocker.key のように、目的に応じてファイル名を設定することができます。例の中の指定を、システムで実際に使用されるものに変更してください。

/etc/crypttab について、お好みでオプションを追加/削除しても構いません。例えば nofail オプションは、何らかの理由で BitLocker ボリュームが利用できない場合、systemd スタートアップエラーを防止します。これなしでは、システムブートアップは BitLocker 復号に失敗する場合、systemd レスキューシェルのみへのアクセスを与えて停止するでしょう。

BitLocker 暗号化された NTFS パーティションを自動的にマウントするためには、/etc/fstab も設定しなくてはなりません。NTFS パーティションは復号済みの cryptsetup 名、例えば /dev/mapper/windows_bitlk を指定しなくてはなりません。一例としては以下のようになるでしょう:

ファイル /etc/fstabfstab NTFS BitLocker の例
/dev/mapper/windows_bitlk  /mnt/windows  ntfs3  noatime,discard,sys_immutable,showmeta,acl,hidden,hide_dot_files,nofail  0 0

/etc/crypttab と同様に /etc/fstab でも nofail オプションを使用して、何らかの理由で BitLocker 復号が失敗したか、NTFS パーティションがたまたま汚い状態になっていた場合に、エラーとなることを防ぐことができます。つまり、ファイルシステムの破損を防ぐために NTFS パーティションはマウントされなくなるでしょうが、同時に systemd によるスタートアップが失敗することもなくなるでしょう。

次の再起動後に、Windows NTFS パーティションは復号され、マウントされるはずです。しかし再起動しなくても、実行中のシステムで BitLocker ボリュームを復号することができます:

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

その後、NTFS に対するすべての操作を通常の (暗号化されていない) ボリュームと同じように始めることができます:

root #umount /mnt/windows
root #ntfsfix -n /dev/mapper/windows_bitlk
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/mapper/windows_bitlk was processed successfully.

トラブルシューティング

NTFS-3G

Windows がハイバネートした後の NTFS パーティションを強制的にマウントする

Windows によって管理されている NTFS ファイルシステムは、システム起動時間を節約するために、完全にシャットダウンされるのではなくハイバネートされることがあります。これが発生していると、hiberfil.sys ファイルを削除しない限り、その NTFS パーティションをマウントすることはできないでしょう。ハイバネートされたパーティションを強制的にマウントするためには、次のコマンドを使用することができます。これを行うと hiberfile が削除されるので、ファイル内のすべてのデータは失われます。Windows が動作を再開するためには、クリーンブートする必要があるでしょう。

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

Windows システム側では、Windows の不完全なシャットダウンが発生するのを防ぐために、管理者コマンドプロンプトから powercfg /h off を実行することができます。これはハイバネーションを無効化し、おそらく Windows をブートするときのブート時間が増加するでしょうが、ドライブが完全にアンマウントされるメリットがあります。

ヒント
Windows 10 システムで、ハイバネーションを防止するための管理者権限が取得できない場合、次の回避策を試してみてください:
  1. Windows をブートし、Windows ログイン画面を表示します。
  2. 電源ボタン (右下隅) をクリックして、shift キーを押しながら再起動をクリックします。
  3. 詳細オプションを選択し、UEFI ファームウェアの設定を選択して再起動します。
  4. UEFI ファームウェアに入ったら、Linux のための適切なブートエントリを選択します。
これで Windows が完全なシャットダウンを行うように強制されるはずで、NTFS-3G でファイルシステムをマウントできるようになるでしょう。

ntfsfix

NTFS でフォーマットされたパーティションを、Linux システムから修復する必要がある場合があるかもしれません。ntfsfix はこの作業を行うためのツールです:

root #ntfsfix /dev/nvme0n1p3
Mounting volume... $MFTMirr does not match $MFT (record 3).
FAILED
Attempting to correct errors... 
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 3...OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/nvme0n1p3 was processed successfully.

関連項目

外部資料

参照