Linux カーネルは Windows NTFS ファイルシステムをどのように処理しますか?

Linux カーネルは Windows NTFS ファイルシステムをどのように処理しますか?

私は次のようなテキスト(RW Smith LPIC_1 学習ガイド)を読んでいます。

Linux は NTFS を確実に読み取り、既存のファイルを上書きできますが、Linux カーネルは NTFS パーティションに新しいファイルを書き込むことはできません。

「カーネル」が NFTS パーティションに新しいファイルを書き込むことができないというのはどういう意味ですか?

別の箇所ではこう書かれています。

NTFS-3G は、カーネル空間ではなくユーザー空間に存在する読み取り/書き込み NTFS ドライバーです。一部の Linux ディストリビューションでは、デフォルトの NTFS ドライバーとして使用されます。

カーネル空間とユーザー空間の違いは何ですか?

また、デュアルブート システムでは Windows ドライブにアクセスできるのに、 などのコマンドで Windows ファイルシステムの種類を確認できないのはなぜでしょうかdf -T?

答え1

NTFS-3G より前は、適切な読み取り/書き込み NTFS サポートがありませんでした。当初、デュアル ブート システムでは、NTFS パーティションにファイルを書き込むことができましたが、Windows NT/XP で再起動すると、ディスク上の (メタ) データを修正するためにファイル システム チェックを実行する必要がありました。そのため、Windows NT/XP と Linux 間のデータ交換には VFAT パーティションを使用するのが一般的でした。このファイル システム タイプのドライバーには、この制限や問題がなかったためです。

NFTS-3G (2006) が導入されて以来、これは必要なくなり、新しいファイルを書き込んで既存のファイルを更新し、Windows で再起動して、ファイルシステム チェックを行わずにそれらのファイルを使用できるようになりました。(その頃には、私は再起動をほとんど行わず、代わりに仮想マシンで Windows を使用していました)。

NTFS-3G はユーザー空間で実行されます。つまり、カーネル データやルーチンに直接アクセスすることはできず、通常のプログラムと同様にシステム コールを実行する必要があります (カーネル空間 (デバイス) ドライバーとは対照的です)。

についてはdf -T、Fuse で動作し、ファイルシステムの種類を (正しく) として識別しているようですfuseblk。Fuse は NTFS について何も知らないため、それ以上深く調査することはできません。df -Tディスクの調査も行わず、ファイルシステム ドライバーに処理している種類を尋ねるだけです (可能であれば、ファイルシステムをマウントしなくても に表示できますdf -T。その場合は、デバイス ブロックを直接調査して推測することができます)。

関連情報