NTFS FAQ (Frequently Asked Questions)

English Italian Japanese Vietnamese German Simplified Chinese French Spanish Brazilian Traditional Chinese Russian

このFAQはLinux NTFS Projectの一部である。
最新のバージョンは以下のURIにある。
ntfs.html

このFAQの中に入っていないNTFSへの疑問があれば、あるいはこのFAQに対するコメントがあれば、 わたしにメールしてください: linux-ntfs-dev@sourceforge.net
日本語翻訳:園田道夫(日本語訳に関して文責はすべて園田にあります。誤り等見つけられたら、わたしにメールしてください:vp5m-snd@asahi-net.or.jp)

目次

キー

** - 一番多い質問
!! - 他の興味深いネタ
NB - 要チェック

 コマンド と 実行結果

1. NTFSに関する一般的な質問

  1.1 NTFSとは何か?
  1.2 NTFSはFAT/FAT32より良いのか?
  1.3 NTFSを使わなければならない(またはアップグレードしなければならない)のか?
!! 1.4 NTFSはWindowsのどのバージョンでも一緒なのか?
  1.5 NTFSの限界とは?

2. NTFS ボリューム

  2.1 NTFSボリュームをWindows 95/98/MEやDOSから読むのはどうしたらよいか?
  2.2 FATボリュームをNTFSボリュームにコンバートする方法は?
!! 2.3 NTFSボリュームをFATボリュームにコンバートする方法は?
  2.4 NTFSボリュームを削除する方法は?
  2.5 NTFSボリュームのデフラグ方法は?
** 2.6 NTFSボリュームをリサイズ(サイズ再設定)する方法は?

3. Linux と NTFS

!! 3.1 Linuxで読むことができるのはNTFSのどのバージョン?
** 3.2 ドライバーはNTFSボリュームに対して、書き込みも行えるのか?
  3.3 LinuxがサポートするNTFSの機能は?
  3.4 何かおかしくなったときはどうすればいいのか?
** 3.5 LinuxにNTFSサポートを組み込む方法は?
  3.6 どのバージョンが一番良いのか?
  3.7 他に何かツールはあるか?
  3.8 LinuxのNTFSドライバーを書く方法は?
  3.9 誰に感謝するのか?

4. NTFSボリュームをマウントする

  4.1 NTFSボリュームをマウントできますか?
  4.2 NTFSドライバーはどこまで安全か?
  4.3 どのパーティションを使うべきか?
  4.4 どのバージョンのNTFSドライバーが組み込まれているのか?
!! 4.5 NTFSボリュームをマウントする方法は?
  4.6 一般的なmountのオプション
  4.7 オリジナルドライバーのマウントオプション
  4.8 新しいドライバーのマウントオプション
** 4.9 マウントされたNTFSボリュームのパーミッションの変更方法は?
!! 4.10 NTFSボリュームを自動的にマウントする方法は?

5. NTFS上でOSをブートする

  5.1 NTFSボリューム上でWindowsを起動できるのか?
  5.2 liloの使い方は?
  5.3 grubの使い方は?

6. Linux ディストリビューション

  6.1 どのディストリビューションがデフォルトでNTFSをサポートしているか?
  6.2 RedHatはなぜNTFSをサポートしないのか?
  6.3 なぜRedHat LinuxはNTFSボリュームへのアクセスを締め出すのか?
  6.4 すべてのディストリビューションはNTFSにインストールされるか?

7. 新しいLinux NTFSドライバー

  7.1 新しいNTFSドライバーとはどんなものか?
  7.2 新しいドライバーを使わなければならないのか?
  7.3 新しいドライバーの使い方は?
  7.4 パッチとは何か?
  7.5 まだよく理解できないが?
  7.6 Linuxカーネルの新しいコードはいつ出るのか?
  7.7 Windowsのドライバーのラッパーは書けないのか?

このページのトップへ


1. NTFSに関する一般的な質問

1.1 NTFSとは何か?

NTFSはNew Technology Filesystemの略語である。NTはもともとWindows NTで使われていて、ファイルシステムとはファイルをディスクに貯蔵する方法のことである。異なるオペレーティングシステムでは、ファイル貯蔵には異なる方法が用いられる。

NTFSはWindows NT、2000、XPで使われている。

このページのトップへ

1.2 NTFSはFAT/FAT32より優れているのか?

端的に言えば優れている。NTFSはFAT/FAT32よりもかなり強力であり、Unicodeファイル名称やセキュリティ機能や圧縮や暗号化をサポートしている。大きな欠点はWindows NT、2000、XPからのみ読み込み可能という点である。例えばDOSブートディスクを使えず、従ってDOSブートからデータを読むことができない。

例によってこのルールにも例外がある。Linuxは1997年12月からNTFS用ドライバーを備えていている。また、DOS上でNTFSをサポートするプログラムもある(詳細は2.1を参照のこと)。

このページのトップへ

1.3 NTFSを使わなければ(アップグレードしなければ)ならないのか?

多くの人がそれは良い考えだと思っているが、必ずしもそうではない。あなたはおそらく、その違いにすら気づかないはずだ。一つだけ言えることは、いったんNTFSにしてしまったらFATには戻せない、ということだ(詳細は2.3 を参照のこと)。

NB Windows NTはFAT16ファイルシステムでインストール可能であり、Windows 2000またはXPはFAT32ファイルシステムでのインストールが可能だ。NTFSへのコンバートはその後でも可能である。

このページのトップへ

1.4 NTFSはWindowsのすべてのバージョンで同じ?

バージョンが違う。同じように見えるが、新しいバージョンのものは特別な機能を持っている。例えば、Windows 2000はquotas(割り当て)機能を持っている。

NTFS Windowsのバージョン
v1.2 NT 3.51, NT 4
v3.0 2000
v3.1 XP

バージョン1.2 は4.0としても知られている。
バージョン3.0 と 3.1 は、ときどき5.0と5.1と呼ばれている。

このページのトップへ

1.5 NTFSの限界とは?

大きい。NTFSは上限263バイトの大きさのファイルをサポートする。NTFSのボリュームは263クラスターを上限とし、各クラス他は64キロバイト長を上限とする。従ってNTFSは約500兆ギガバイトまでが限界ということになる。

このページのトップへ


2. NTFS ボリューム

2.1 NTFSボリュームをWindows 95/98/MEやDOSから読むためにはどうしたらよいか?

残念ながら不可能である。95/98/MEやDOSはFATしか理解できない。NTFSはWindows NT、2000、XPからのみ読むことができる。

ただし、少し手間をかければ可能だ。SysInternalsから"NTFS for Windows 98" および "NTFSDOS"をダウンロードしてくれば、95/98/MEやDOSでNTFSを扱うことができる。もしお金があれば、書き込みできるバージョンを買うこともできる(ただし、とってもお高いのでご注意)。

このページのトップへ

2.2 FATボリュームをNTFSボリュームにコンバートする方法は?

コマンドウインドウから以下のように入力する("x:"は対象ボリュームで置き換えること):

    convert x: /fs:ntfs

対象となるボリュームが使用中の場合は、コンバートのあと再起動する必要があるだろう。

NB このコマンドを一旦使ってしまったら、簡単には元に戻せない。次のFAQを参照のこと。

このページのトップへ

2.3 NTFSボリュームをFATボリュームにコンバートする方法は?

簡単に言えばそれは不可能だ。ただし、お金があれば別だ。パーティション・マジックという製品が norton.com から入手可能であり、その製品を使えばNTFSとFATを含む何種類かのファイルシステム間で相互に変換することができる。

このページのトップへ

2.4 NTFSボリュームを削除する方法は?

どのOSを使って削除するかによって異なる。

DOSやWindows 95/98/MEの場合はfdiskを使う。ブートディスクを使うか、あるいはWindowsをDOSモードにする。そこでfdiskを使う。2つ以上の ディスクがある場合は、まず選択が必要だ。DOSではないパーティションを削除したいならば、とても注意深くなるべきである。打ち込んだ結果は即座に反映 されるからだ。

Windows NT: コンピュータの管理

Windows 2000, XP: 論理ディスクマネージャー。コントロールパネルから管理ツールを選び、コンピュータの管理の記憶域のディスク管理を選択する。

このページのトップへ

2.5 NTFSボリュームのデフラグ方法は?

しばらくの間ボリュームが使われた後、つまりディスクに多くの書き込みが発生した後では、ファイルはフラグメンテーションを引起こしている。フラグ メント状態になるとファイルはディスクの連続した領域に配置されず、多数の小さな断片に分かれてしまう。こうした状態になったファイルへのアクセスは速度 低下を招く。

Windows 2000とXPはデフラグメントプログラム(フラグメント解消プログラム)を備えている。Windows NTのユーザーには、同じ機能を持つフリーのプログラムがある。Diskeeper Lite が http://diskeeper.comからダウンロードできる。

このページのトップへ

2.6 NTFSボリュームをリサイズ(サイズ再設定)する方法は?

最近まで、NTFSボリュームを再設定する唯一の方法は、多額のお金を払うことだった。だが今は、ntfsresizeというツールがある。このツールはずっとテストされてきたが、現在もなお試験的な状態にあると考えるべきだ。詳細についてはntfsresize FAQ.を参照されたい。

NTFSをリサイズするフリーではないプログラムの一つは、パーティション・マジックだ。http://powerquest.com

このページのトップへ


3. Linux と NTFS

3.1 Linuxで読むことができるのはNTFSのどのバージョン?

Linuxのドライバーはすべての NTFSのバージョンを読むことができる。 各バージョンは少しずつ異なるが、ドライバーはただファイルとディレクトリを解釈できなければならない、というだけにすぎない。NTFSが保持するインデックスは、全て安全に無視される。

NTFSボリュームに書き込みできるようになったときに初めて、ドライバーは書き込むNTFSのバージョンによって変わってくる可能性がある。

このページのトップへ

3.2 ドライバーはNTFSボリュームに対して、書き込みも行えるのか?

書き込み自体はできないが、デュアルブートにしたマシンでLinuxからWindowsにファイルをコピーする方法については、上記"NTFSに書き込む方法" を参照されたい。書き込みをサポートしていないので、別の可能性について述べている。Linuxに書き込む方法についてはこのあと述べる。

現在2種類のドライバーがある。オリジナルのドライバーは2.4ベースのものだが、使用するのは非常に危険だ。ファイルシステムを破壊する危険性が非常に高い。

新しいドライバーは2.5.11ベースのものだが、非常に機能が限られている。存在するファイルを上書きすることはできるが、ファイルの長さを変えることができないし、新しいファイルを作ることも、存在するファイルを削除することもできない。

書き込みサポート機能を追加するのには長い時間がかかるだろう。NTFSはデータベースのように作られている。あなたが何かを変えたとしたら、一貫 性を持たせるために多くの場所に変化が必要となる。間違いを犯すとファイルシステムがダメージを負うだろうし、間違いが多くなりすぎるとファイルシステム は破壊されるはずだ。また、現在開発者たちはNTFSに関してほとんど趣味として、自由な時間の間でしか作業していない。もし手助けしたいのであれば、 メールして欲しい: linux-ntfs-dev@sourceforge.net

NTFSに書き込む方法 デュアルブートマシンでLinuxからWindowsへファイルを転送するためにNTFSへの書き込みを行いたい場合、Windows上で ext2/ext3を読み書きするドライバーを使うかわりに、Windows上でLinuxパーティションからファイルを読むことができる。ふたつのリー ドオンリーのドライバーを使うという方法であれば、一つのファイルシステム上のファイルをもう一つのファイルシステムにコピーすることが可能だ。

オープンソースのWindowsのext2とext3Linuxファイルシステムドライバーは2003年6月4日時点では以下のとおり:

このページのトップへ

3.3 LinuxがサポートするNTFSの機能は?

NTFSサポートは広範囲に渡るが、LinuxのNTFSドライバーはあまりその光栄に浴していない。

LinuxのNTFSドライバーは、Unicodeファイル名(各国文字コード列に変換されたもの、あるいはUTF8)、圧縮ファイル、分散格納されたファイルをサポートしている。

また、暗号化ファイルを読めないし、Windowsのセキュリティ情報とWindowsによってセットされるquota(割り当て)の情報を無視する。

このページのトップへ

3.4 何かおかしくなったときはどうすればいいのか?

ドライバーはリードオンリーのときは かなり安全 だが、万が一ありうる事態すべてに備えることは不可能だ。何かおかしくなったときは問題を発見しフィックスするのを手伝って欲しい。

開発チームあて( linux-ntfs-dev@lists.sourceforge.net )にメールして、 どのバージョンのドライバー を使っているか、Linuxのバージョンは何か (uname -a) NTFSのバージョンは何か (Win NT, 2K 、XP)をご報告ください。

もし何か役に立ちそうなログが残っているのであれば(/var/log/messages)、それもお送りください。

よろしくお願いします。

このページのトップへ

3.5 LinuxにNTFSサポートを組み込む方法は?

多くのユーザーはNTFSサポートを組み込むためにコンパイルなどしたくないはずだ。ほぼすべての Linux のディストリビューション は最初からNTFSサポートが組み込まれている。

RedHat 7.3 (Valhalla)またはRedHat 8.0 (Psyche)のユーザーの場合には、おそらくカーネルのリコンパイルも必要ではないはずだ。詳細は RedHatのページ を参照のこと。

上記よりも古いバージョンのRedHat、またはNTFSサポートが組み込まれていないディストリビューションの場合は、カーネルを自分でコンパイルする必要がある。カーネルコンパイルは思ったより難しくない。詳細はCompile Page を参照のこと。

このページのトップへ

3.6 どのバージョンが一番良いのか?

新しいドライバーの方がより良いものになっている。より品質が良いコーディングであり、ずっと高速で、バグも少なく、SMP-safeでもある。2.5.11以降の新しいドライバーは、パッチという形で 2.4カーネルにも追加できるようになっている。

このページのトップへ

3.7 他に何かツールはあるか?

現時点では開発者向けのツールが数個しか無い。ツールすべての 現状のリスト を保持しつづけてはいる。

もちろん、優先事項はNTFSへの書き込みサポートの開発である。

このページのトップへ

3.8 LinuxのNTFSドライバーはどうやって書かれたのか?

マイクロソフトがNTFSの内部に関する資料をリリースしていないので、ファイルシステムをスクラッチからリバースエンジニアリングしなければならない。その方法はざっとこんな感じだ:

  1. ヘキサ(16進)エディタであるボリュームを見てみる
  2. 何らかのオペレーションを行ってみる(例えばファイルを作る)
  3. ヘキサ(16進)エディタで変化を見る
  4. その変化を分類し、文書化する
  5. 1-4までの手順を永遠に繰り返す

すごくたくさん作業しなければならないように聞こえたとしたら、この作業がいかに大変だったか、おそらくわかっていただけているのだと思う。今ではわれわれはNTFSについてかなり多くのことを理解しているし、他の人の役に立つように文書化してきてもいる:../ntfs/index.html

現時点では、ドライバーを書くならば情報集めから始めるというよりはずっと簡単になっている。

このページのトップへ

3.9 誰に感謝するのか?

まず感謝しなければならないのはMartin von Lo"wisに対してである。彼はオリジナルのNTFSドライバーを1995年に作り上げた。そのドライバーは1997年12月にカーネル(2.1.74)に組み込まれた。彼は以下に挙げる親切な人たちによって助けられ続けている:

Albert Cahalan, Anton Altaparmakov, Damon Casale, David Dillard, Domagoj Pensa, Joseph Malicki, Matthew Fanto, Olof Wolgast, Rani Assaf, Régis Duchesne, Richard Russon, Steve Dodd, Werner Seiler.

次に感謝しなければならないのはAnton Altaparmakovである。彼の情熱がこのプロジェクトを存続させてきた。同時に、プロジェクトのメンテナンスが事実上停止してしまったときも、彼 がその役目を担い、コードを安定させてきた。彼は、書き込みサポートを前進させるため、クリーンなベースを構築する目的でドライバーのソースをスクラッチ から書き直した。彼は次の人々に助けられてきた:

Pawel Kot, Richard Russon.

このページのトップへ


4. NTFSボリュームをマウントする

4.1 NTFSボリュームをマウントできるのか?

もちろん。ドライバーはすべてのバージョンのNTFSを読めるが、リードオンリーだ。

このページのトップへ

4.2 NTFSドライバーはどこまで安全か?

リードオンリーであれば、オリジナル、新しいもの両方とも普通に使っている分には安全だ。ファイルシステムにいかなる変化も与えないので、ダメージの原因となることもないだろう

加えて、新しいドライバーはSMP-safeである。

このページのトップへ

4.3 どのパーティションを使うべきか?

Linuxの場合、最初のIDEコントローラー上のふたつのディスクはhdaとhdbという名前になり、3番目と4番目のディスクはhdcとhddという名前になる。SCSIディスクは見つかった順にsda、sdb、などの名前になる。

NTFSボリュームを簡単に見る方法は:

    fdisk -l

その出力はこうなる:

    Disk /dev/hda: 64 heads, 63 sectors, 4465 cylinders
Units = cylinders of 4032 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 2125 4283968+ 07 NTFS/HPFS
/dev/hda2 2126 19851 35735616 0f Win95 Ext'd (LBA)
/dev/hda5 * 2126 4209 4201312+ 83 Linux
/dev/hda6 4210 4465 516064+ 82 Linux swap

このページのトップへ

4.4 どのバージョンのNTFSドライバーが組み込まれているのか?

カーネルのバージョンが2.4.*か、2.5.0~2.5.10ならば、おそらくオリジナルのNTFSドライバーが組み込まれている。2.5.11以降であれば新しいNTFSドライバーが組み込まれている。

何が入っているか試しに見てみるには、カーネルログの中のNTFSのログメッセージを確認すると良い。以下のコマンドをどちらか試してみてほしい(ログを読むにはrootになる必要がある)

    dmesg | grep -i ntfs
grep -i ntfs /var/log/messages

オリジナルドライバーの場合はバージョンが1.1.*で、新しいドライバーの場合はバージョンが2.*になっているはずだ。

このページのトップへ

4.5 NTFSボリュームをマウントする方法は?

まず最初に、NTFSのことが理解できるカーネルかどうかチェックする。以下のコマンドで、Linuxが理解可能なすべてのファイルシステムのリストを表示できる。"ntfs"がリストにあったらOKだ。また、mountコマンドのマニュアルを"man 8 mount"で読むというのもいいだろう。

    cat /proc/filesystems

次にNTFSボリュームをマウントするポイントを作る。そうすればマウント可能になる。

    mkdir /mnt/windows
mount /dev/hda1 /mnt/windows -t ntfs -r

NB マウントされたファイルシステムのパーミッションを変えるには、4.6.にあるように"umask"のオプションを使う。ブート時に自動的にマウントしたいときは、4.10. を参照のこと。

用が済んだら、以下のコマンドのどちらかでumountできる。

    umount /mnt/windows
umount /dev/hda1

NB このコマンドはumount(ユーマウント)と呼ばれている(nはひとつだけだ)。

このページのトップへ

4.6 一般的なmountのオプションは?

mountのオプションは(新旧)両方のドライバーに共通である。mountのmanのページを読むことをお勧めする。mountコマンドの一般的な書式は、

    mount device directory [options]

"-o"オプションは都度指定しつつ使うか、個々の設定値をカンマ(,)で区切って使う。以下の2種類のやり方は同じ意味である:

    mount /dev/hda1 /mnt/windows -o X -o Y -o Z
mount /dev/hda1 /mnt/windows -o X,Y,Z
-t ntfs
マウントするファイルシステムのタイプを記述する。mountコマンドはほとんどのファイルシステムのタイプを特定できるため、このオプションは必須ではない。
-r
ボリュームをリードオンリーでマウントする。デフォルトではリードライト(読み書きモード)でのマウントを試みる。強制されていなければ、ドライバーはファイルシステムを自動的にリードオンリーでマウントするはずだ。
-o ro
-rと同じ。
-o umask={VALUE}
マウントされたNTFSボリュームのデフォルトパーミッションはrwx------だ(セキュリティ上の理由による)。umaskパラメタはファイルとディレクトリのパーミッションを指定できる。詳細および他のサンプルは4.9.を参照のこと。
    mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222
-o uid={USERID}
デフォルトではマウントされたNTFSボリューム上のすべてのファイルの所有者はrootである。uidパラメタを使えば、ファイルの所有者を設定できる。useridは/etc/passwdにあればどんな名前でも構わないし、どのようなユーザーID番号でも構わない
    mount /dev/hda1 /mnt/windows -t ntfs -r -o uid=flatcap
mount /dev/hda1 /mnt/windows -t ntfs -r -o uid=500
-o gid={GROUPID}
デフォルトではマウントされたNTFSボリューム上のすべてのファイルのグループはrootである。gidパラメタを使えば、ファイルのグループを設定できる。groupidは/etc/groupにあればどんな名前でも構わないし、どのようなグループID番号でも構わない。
    mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=winusers
mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=520

このページのトップへ

4.7 オリジナルドライバーのマウントオプションは?

どのドライバーなのかを確かめる方法は、4.4.を参照のこと。この章ではオリジナルドライバーだけのオプションについて触れる。一般的なマウントオプションは4.6.を参照のこと。

いくつかのオプションでは"true"と"false"のパラメタを用いる。
"true"は"yes"または"1"、"false"は"no"または"0"で置き換え可能。

-o iocharset={NAME}

NTFSはファイル名とディレクトリ名をUnicodeで保持しているので、どの言語の文字であっても使える。デフォルトではLinuxのNTFSドライバーはその名前をASCIIに変換するが、あなたの用いる言語にå または é という文字が含まれていると、これはあまりよろしくない。

NLS(ネイティブ言語サポート)は文字のディスプレイをコントロールする。Unicodeのように、すべての文字を表現できるutf8を選ぶことができる(例えば、iso8859-1(Western Europe)、iso8859-2 (Central Europe), gb2312 (簡体中国語), iso8859-8 (Hebrew))。以下にサンプルを示す:

    mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=utf8
mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=iso8859-2
mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=gb2312
utf8=true

カーネルがutf8をサポートしていない場合、このオプションを使えばドライバーにutf8をサポートさせることができる。どの位置でも構わないが"-o iocharset=utf8"を用いるべきである。

    mount /dev/hda1 /mnt/windows -t ntfs -r -o utf8=true
-o posix={BOOL}

Windowsはファイル名の大文字小文字を記憶しているが、見ただけではわからないはずだ。従って、"MyFileName"という名前で作成したファイルを"mYfILEname"という名前で開くことができる。

デフォルトではLinuxは大文字小文字を区別していて、"MyFile"と"myfile"はすべて違うファイルになる。linuxにNTFSボリューム上でWindowsのように振舞わせたいならば、posixオプションを"true"に設定する。このオプションを"false"にした場合はLinuxのように動く(デフォルトはfalse)。

    mount /dev/hda1 /mnt/windows -t ntfs -r -o posix=true
-o show_sys_files={BOOL}

このオプションをtrueにしたら、ファイルシステムのメタデータが見えるようになる。もし見えない場合であっても、例えば"ls -l \$MFT"などと指定すれば、表示させることができる。

NB glibcの制限があるので、"$MFT"はiノード番号がゼロになるため一覧表示には現れないはずだ。

    mount /dev/hda1 /mnt/windows -t ntfs -r -o show_sys_files=true

このページのトップへ

4.8 新しいドライバーのマウントオプションは?

どのドライバーなのかを確かめる方法は、4.4.を参照のこと。この章ではオリジナルドライバーだけのオプションについて触れる。一般的なマウントオプションは4.6.を参照のこと。 

いくつかのオプションでは"true"と"false"のパラメタを用いる。
"true"は"yes"または"1"、"false"は"no"または"0"で置き換え可能。

-o nls={NAME}

NTFSはファイル名とディレクトリ名をUnicodeで保持しているので、どの言語の文字であっても使える。デフォルトではLinuxのNTFSドライバーはその名前をASCIIに変換するが、あなたの用いる言語にå または é という文字が含まれていると、これはあまりよろしくない。

NLS(ネイティブ言語サポート)は文字のディスプレイをコントロールする。Unicodeのように、すべての文字を表現できるutf8を選ぶことができる(例えば、iso8859-1(Western Europe)、iso8859-2 (Central Europe), gb2312 (簡体中国語), iso8859-8 (Hebrew))。以下にサンプルを示す:


    mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=utf8
mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=iso8859-2
mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=gb2312
-o fmask={VALUE}
-o dmask={VALUE}

"umask"パラメタはファイルとディレクトリ両方のパーミッションを変更する(4.6を参照のこと).fmaskはファイル、"dmask"はディレクトリに対して同じことを行うものだ。組み合わせて使うこともできる。以下に例を示す:

    mount /dev/hda1 /mnt/windows -t ntfs -r -o fmask=0222
mount /dev/hda1 /mnt/windows -t ntfs -r -o dmask=0222
mount /dev/hda1 /mnt/windows -t ntfs -r -o fmask=0077,dmask=0222
-o case_sensitive={BOOL}

Windowsはファイル名の大文字小文字を記憶しているが、見ただけではわからないはずだ。従って、"MyFileName"という名前で作成したファイルを"mYfILEname"という名前で開くことができる。

デフォルトではLinuxは大文字小文字を区別していて、"MyFile"と"myfile"はすべて違うファイルになる。linuxにNTFSボリューム上でWindowsのように振舞わせたいならば、case_sensitiveオプションを"false"に設定する。このオプションを"true"にした場合はLinuxのように動く(デフォルトはfalse)。

    mount /dev/hda1 /mnt/windows -t ntfs -r -o case_sensitive=true
mount /dev/hda1 /mnt/windows -t ntfs -r -o case_sensitive=false
-o sloppy={BOOL}

デフォルトでは、ドライバーはオプションが一つでも正しくないときはマウントしない。sloppyパラメタを指定すると、ドライバーは正しくないパラメタを単に無視する

    mount /dev/hda1 /mnt/windows -t ntfs -r -o sloppy=true
mount /dev/hda1 /mnt/windows -t ntfs -r -o sloppy=false
-o errors={VALUE}

このオプションは、問題が生じたときにドライバーがどう動くかを指定するものだ。デフォルトでは試行して、処理を続行する。問題が生じた部分はマークされるが、その他の部分を実行する。ドライバーに試行させるか、リカバーさせるかを選ぶことができる。現時点でドライバーが実行可能なリカバリーは、ブートセクターをバックアップしてリプレースすることだけである。

    mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=continue
mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=recover

このページのトップへ

4.9 マウントされたNTFSボリュームのパーミッションの変更方法は?

ファイルとディレクトリのパーミッションと所有権をコントロールするオプションは3つある。umask、uid、gidだ。一般的なmountオプションのところに記述されている

以下に各オプションの使用例と機能について示す。それぞれ同じmountコマンドを使い、オプションを表示させている。

    mount /dev/hda1 /mnt/windows -t ntfs -r

"umaskはパーミッションのフィルターであり、chmodと反対の動きをする。フルのパーミッションの場合は777だ(rwxrwxrwx)。umaskの場合0222(-w--w--w-)はまだ555を残している(r-xr-xr-x)。

デフォルトのumaskはセキュリティ上の理由から0077に設定されている。

    mount ... -o umask=0277

-r-x------ 1 root root 28096 Aug 24 1996 chkdsk.exe
    mount ... -o umask=0222

-r-xr-xr-x 1 root root 28096 Aug 24 1996 chkdsk.exe

今のところファイルの所有者とグループは"root"である。次に"uid"と"gid"のオプションを試してみよう。

    mount ... -o uid=flatcap

-r-x------ 1 flatcap root 28096 Aug 24 1996 chkdsk.exe
    mount ... -o gid=winuser

-r-x------ 1 root winuser 28096 Aug 24 1996 chkdsk.exe
    mount ... -o uid=flatcap,gid=winuser

-r-x------ 1 flatcap winuser 28096 Aug 24 1996 chkdsk.exe

最後に、すべての機能を試すためにオプションを組み合わせてみよう。以下の例では、ユーザー"flatcap"にフルコントロールを付与し、ユーザーグループ"winuser"は読み込み権限のみ、他のユーザーは一切アクセスできない。

    mount ... -o umask=0027,uid=flatcap,gid=winuser

-rwxr-x--- 1 flatcap winuser 28096 Aug 24 1996 chkdsk.exe

このページのトップへ

4.10 NTFSボリュームを自動的にマウントする方法は?

マウントコマンドを使い慣れたら、/etc/fstab(ファイルシステムテーブル=filesystem table)に1行追加すれば、Linuxにそのボリュームを自動マウントさせることができる。

以下にmountコマンドの例と、その例と同じ意味を持つfstabの記述例を示す。
NB 末尾の"0 0"の意味については心配しないで良い。

    mount /dev/hda1 /mnt/windows -t ntfs -r

/dev/hda1 /mnt/windows ntfs ro 0 0

"-r"を"-o ro"と同じ意味で用いることができる。

    mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222

/dev/hda1 /mnt/windows ntfs ro,umask=0222 0 0
    mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222,uid=flatcap,gid=winuser

/dev/hda1 /mnt/windows ntfs ro,umask=0222,uid=flatcap,gid=winuser 0 0

このページのトップへ


5. OSをNTFS上でブートする

5.1 NTFSボリューム上でWindowsを起動できるのか?

できる。grubとliloによってNTFSボリュームからWindowsを起動することができる。実際にはLinuxのブートローダーがNTFSのブートローダーを見つけるわけだ。

このページのトップへ

5.2 liloの使い方は?

/etc/lilo.confに以下のエントリーを追加し、liloコマンドを走らせる。

    other = /dev/hda1
table = /dev/hda
label = Windows

"other"はWindowsが入っているパーティションを示し、"table"はディスクのパーティションテーブルを示している。

このページのトップへ

5.3 grubの使い方は?

/boot/grub/grub.confに以下のエントリーを追加する。

    title Windows
root (hd0,0)
makeactive
chainloader +1

grubのディスクナンバリングにより、/dev/hdaはhd0、hdbはhd1などとなる。パーティションはゼロから番号がふられる。従って、hda1はhd0,0となり、hdc4はhd2,3となる。

このページのトップへ


6. Linux ディストリビューション

6.1 どのディストリビューションがデフォルトでNTFSをサポートしているか?

NTFSをサポートしているLinuxのディストリビューションは:Mandrake, Debian, SuSE, Gentoo, Caldera

実際には、RedHatという名前のモノ以外はNTFSをサポートしている。

このページのトップへ

6.2 RedHatはなぜNTFSをサポートしないのか?

マジで理由はわからない。噂では法的な心配をしているのでは、ということだ。

このページのトップへ

6.3 なぜRedHat LinuxはNTFSボリュームへのアクセス締め出すのか?

"uname -a"コマンドでカーネルのバージョンをまずチェックしよう。2.4.9であれば、カーネルを更新することが重要だ。 さらに詳細はRedHat Webサイト を参照のこと。

お望みならカーネルをコンパイルしてもいいだろう。詳細については「NTFSサポートをLinuxに組み込むには?」を参照のこと。

このページのトップへ

6.4 どのディストリビューションでもNTFSにインストールできるのか?

すべてではない。 Phat Linux はFATパーティション上のWindowsの中にインストールできるし、その場合Windows内部のファイルからブートできる。新しいドライバーはNTFS上でもこの手のトリックを演じさせることができる。

このページのトップへ


7. 新しいLinux NTFS ドライバー

7.1 新しいNTFSドライバーとはどんなものか?

NTFSドライバーを全く新しく書き直したものだ。オリジナルのドライバーはもうすでに書かれてから長い年月を経ている。最初期にはNTFSやLinuxについてほんの少ししか知られていなかったし、ソースコードはメンテナンスがたいへんだった。

新しい知識をもとに新しいドライバーを開発した結果、非常にシンプルかつ高速になり、メンテナンスもずっと簡単になった。

このページのトップへ

7.2 新しいドライバーを使わなければならないのか?

そうではない。すでにNTFSドライバーは現在のLinuxカーネルに組み込まれているので、新しいドライバーを使う必要は特に無い。オリジナルドライバーは確かに古いが、毎日使っても十分に信頼できるものだ。

このページのトップへ

7.3 新しいドライバーの使い方は?

われわれはオフィシャル名Linuxカーネルのソースコードパッチとして、新しいドライバーをリリースしている。 

../downloads.html
http://www.kernel.org/pub/linux/kernel/v2.4/

このページのトップへ

7.4 パッチとは何か?

パッチとは、差分(変更部分)のテキストファイルのセットである。NTFSコードの部分だけを変更するので、小さな変更の都度カーネルコードをすべてリリースするのは非効率である。従って、オフィシャルなLinuxカーネルリリースのパッチという形でリリースしている。

ソースを解凍したら、ソースディレクトリに移動し、以下のようにコマンドを叩く(パス名とパスの指定は必要に応じて変えること):

    patch -p1 < path/to/patchname

これでソースコードが変わる。拒否や失敗は起こらないはずだ。次に普通どおりカーネルを構築する。このFAQの他のところにやり方は書いてある。

このページのトップへ

7.5 まだよく理解できないが?

残念だ。すべての人が理解できるように努めてはいるが、われわれも時間が限られている。Linuxの基礎を理解するためのサイトがあるので、そちらを参照されるか、近場でLinuxのユーザーグループでも見つけて欲しい。

このページのトップへ

7.6 新しいコードはいつLinuxカーネルに組み込まれるのか?

二つのカーネルがある。新しいコードは開発版のLinuxカーネル(2.5.11にあたる)にはすでに組み込まれている。

安定版Linuxカーネルは現在2.4.20だが、まだ古いドライバーである。コードの現状に満足はしているが、そのソースは良いものである、とま だまだカーネルの神様を納得させていかなければならない(訳注:まだまだその良い状態を保つべく、持続的に改良していかなければならない&カーネルの開発 をトレースしていかなければならない、ということ)。

組み込まれるまでは、頻繁にパッチの形でリリースしていくだろう。

このページのトップへ

7.7 Windowsのドライバーのラッパーは書けないのか?

最初はとても良いアイディアのように思えるが、多くの問題がある。

もっとも大きな技術上の問題は、WindowsシステムのDLLをLinuxのVFSに組み込むことである。組み込みは可能だが、生半可なことでは ない。カーネルの一部として動作しなければならないため、最悪マシンをクラッシュさせるかも知れないのだ。ソースが無ければ、この問題に関して何もできな い。

次の問題は互換性である。どのバージョンのWindowsシステムファイルを使うのが良いのか?一つのバージョンを選んでしまえば、用途が限定的になってしまうし、全てのバージョンに対応するラッパーを開発する、というのはプログラミングの悪夢に他ならない。

そして、最悪なことに、Windowsシステムファイルに関わる法的な側面が問題になりそうなのだ。独占的なドライバーというのは、もしだれかがNTFSラッパーを使っている場合に生じる問題を、他のカーネルコーダーが調査できないということにつながってしまうのだ。

このページのトップへ