NTFS-3G
NTFS-3G は Microsoft の NTFS ファイルシステムの読み書きサポートを含むオープンソース実装です (Linux カーネルは NTFS の読み込みだけサポートしています)。開発を円滑に進めポータビリティを得るために NTFS-3G の開発者は FUSE ファイルシステムを使っています。
インストール
手動マウント
NTFS パーティションを手動でマウントする方法は2つあります。伝統的な方法:
# mount -t ntfs-3g /dev/your_NTFS_partition /mount/point
Arch ではマウントタイプ ntfs-3g
を明示的に指定する必要はありません。ntfs-3g パッケージがインストールされていれば mount
コマンドはデフォルトで /usr/bin/ntfs-3g
にシンボリックリンクされている /usr/bin/mount.ntfs
を使用します。
2つ目の方法は ntfs-3g
を直接呼び出すことです:
# ntfs-3g /dev/your_NTFS_partition /mount/point
利用可能なオプションは ntfs-3g(8) を見てください。
フォーマット
# mkfs.ntfs -Q -L diskLabel /dev/sdXY
設定
NTFS パーティションを自動でマウントするように設定したり、マウントしたいと思った時に特定の方法でマウントできるように事前に設定することができます。この設定は固定的なファイルシステムの設定 (fstab) か udev ルールを使って行います。
デフォルト設定
デフォルト設定を使うと起動時に NTFS パーティションがマウントされます。この方法では、パーティションがマウントされている親のフォルダに適切なユーザーやグループのパーミッションがあれば、そのユーザーやグループはパーティションを読み書きすることができます。
以下のように /etc/fstab
に記述してください:
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> /dev/NTFS-part /mnt/windows ntfs-3g defaults 0 0
Linux 互換のパーミッション
通常、Linux システムではフォルダは 755 に、ファイルは 644 にパーミッションが設定されます。定期的に NTFS パーティションを使う場合は NTFS パーティションにもこれらのパーミッションを同じように設定するのが推奨されています。以下の例では上記のパーミッションを通常ユーザーに指定しています:
# Mount internal Windows partition with linux compatible permissions, i.e. 755 for directories (dmask=022) and 644 for files (fmask=133) /dev/NTFS-partition /mnt/windows ntfs-3g uid=userid,gid=groupid,dmask=022,fmask=133 0 0
グループ・ユーザーを許可する
/etc/fstab
(NTFS-3G ドライバー) にパーティションへのアクセス(読み取り)を許可するように他のオプションを指定することも可能です。例えば、groupid
グループに入っているユーザーへアクセスを許可するには:
/dev/NTFS-partition /mnt/windows ntfs-3g gid=groupid,umask=0022 0 0
デフォルトで、上記の行は書き込みサポートは root にだけ有効にします。ユーザーによる書き込みを有効にするには、書き込みパーミッションを与えるユーザーを指定する必要があります。uid
パラメータとユーザーの名前を使ってユーザーの書き込みを有効にしてください:
/dev/NTFS-partition /mnt/windows ntfs-3g uid=userid,gid=groupid,umask=0022 0 0
動かしているのがシングルユーザーマシンの場合、ファイルシステムの所有者を自分自身にして全てのパーティションを与えることができます:
/dev/NTFS-partition /mnt/windows ntfs-3g uid=userid,gid=groupid 0 0
基本的な NTFS-3G のオプション
ほとんどの場合、上記の設定で十分なはずです。以下は、様々な Linux ファイルシステムのオプションと共通しているその他のオプションです。完全なリストは ntfs-3g(8) § OPTIONS を見て下さい。
- umask
- umask は新しく作成したファイルにファイルパーミッションを自動的に設定するシェルの組み込みコマンドです。Arch Linux では、root と user のデフォルト umask は 0022 になっています。0022 では新しいフォルダのパーミッションは 755 に、新しいファイルのパーミッションは 644 になります。umask パーミッションに関する詳細は ここ で読めます。
- fmask と dmask
umask
と似ていますがファイルとディレクトリをそれぞれ個別に定義します。- noauto
noauto
が設定されている場合、/etc/fstab
の NTFS エントリは起動時に自動ではマウントされません。- uid
- ユーザー id 番号。これを使うことで特定のユーザーにパーティションへの完全なアクセスをさせることができます。あなたの uid は
id
コマンドで調べられます。 - windows_names
- Windows で許可されていない名前でファイルやディレクトリ、拡張属性を作成できないようにします。
ユーザーにマウントを許可する
デフォルトでは、/etc/fstab
に "user" オプションを設定していたとしても、ntfs-3g はファイルシステムをマウントするのに root 権限を必要とします。詳しくは ntfs-3g-faq を読んでください。fstab の user オプションは必須です。ユーザーとしてマウントするには、多少の設定が必要になります:
まず、使用したいマウントデバイスへのアクセスができるか確認してください。一番簡単な方法は次のコマンドで disk グループに追加することです:
# gpasswd -a username disk
また、使用したいマウントポイントへのアクセス権も必要になります。このマウントポイントでユーザーとして何かマウントすることになるので、所有者を変更したほうが良いでしょう:
# chown user /mnt/mountpoint
次に、完全な FUSE サポートを付けてコンパイルされた NTFS-3G ドライバーをインストールしてください。公式リポジトリの ntfs-3g パッケージには完全なサポートがありませんが、AUR に ntfs-3g-fuseAUR があります。
これで root 権限なしで NTFS パーティションをマウントすることができるようになっているはずです。
NTFS パーティションをリサイズする
購入したパソコンには Windows がプリインストールされている場合がほとんどなので、Arch Linux をインストールする際に完全に Windows を消去してしまいたくない人もいるでしょう。その場合、既存の Windows パーティションをリサイズして Linux のパーティションを一つか二つ作るための領域を用意すると便利です。これには基本的に Live CD やブータブル USB サムドライブを使用します。
Live CD を使う場合は ISO ファイルをダウンロードして、CD に焼き込み、その CD から起動するのが常套手段です。要件を満たす Windows 用のフリーの (GPL3 の) CD/DVD 書き込みアプリケーションとして InfraRecorder があります。ブータブル USB メディアを使う場合は、USB インストールメディアに書かれているブータブル USB スティックを作る方法を見て下さい。
ブータブル CD/USB イメージは多数存在します。このリストは完全ではありませんが、起点としては役に立つはずです:
- GParted — x86 ベースのコンピュータ向けの小さなブータブル GNU/Linux ディストリビューション。GParted アプリケーションの最新版の全ての機能が使用できます。追加パッケージの System Rescue CD は含まれておらず、ディスク暗号化はサポートしていません。
- Parted Magic — 完全なハードディスク管理ソリューション。Partition Editor を使ってパーティションをリサイズ・コピー・移動することができます。C: ドライブを拡大・縮小することが可能です。新しいオペレーティングシステムのために領域を作成できます。消失したパーティションからデータを救出する機能もあります。
- SystemRescueCD — 大抵の場合でシームレスに動作させることができるツールです。起動すると、GParted が実行されすぐに操作することができます。
NTFS パーティションをリサイズするのに必要なプログラムには util-linux パッケージに入っている fdisk や (G)parted などのユーティリティや ntfs-3g が含まれます。"上級"ユーザーでないのならば、ユーザーによる間違いによってデータが消失する可能性をできるだけ少なくするために、リサイズ操作には GParted などのツールを使うことが推奨されます。
既に Arch Linux をインストール済みで、既存の NTFS パーティションをリサイズしたいだけの場合、parted と ntfs-3g パッケージを使ってリサイズできます。任意で、GParted パッケージをインストールして GParted GUI を使うことも可能です。
トラブルシューティング
圧縮ファイル
Windows 10のNTFSファイルシステムをマウントし、ファイルまたはディレクトリを読み取る際、以下のようになることがあります
- 'unsupported reparse point' を指す壊れたシンボリックリンクが見える、もしくは
cannot access some_file: Input/output error
というエラーメッセージが表示される (この場合、journalにCould not load plugin /usr/lib64/ntfs-3g/ntfs-plugin-80000017.so: Success
と表示されます)。
この原因はNTFS reparse pointsによるもので、NTFS-3Gはデフォルトで一部のタイプの再解析ポイントをサポートしていないためです。次の再解析ポイントで定義されている機能の一部との互換性を提供するためにNTFS-3Gプラグインが使えるかもしれません。
- システム圧縮
- 重複ファイル
- OneDriveファイル
さらなる詳細は this page を参照してください。
"Compact OS" として知られるシステム圧縮は、特定のファイルを圧縮しています。システム圧縮の回避策は2つ考えられます。
NTFS-3Gプラグイン ntfs-3g-system-compressionAUR をインストールする。現在、このプラグインでは読み取りのみサポートされていますが、書き込みはサポートされていません。つまり、ファイルの作成または更新はサポートされていません。
もしくは、Windows10のシステム圧縮機能を無効にすることです
C:\WINDOWS\system32> compact.exe /CompactOS:never
破損した NTFS ファイルシステム
NTFS ファイルシステムにエラーが存在する場合、NTFS-3G はファイルシステムを読み取り専用でマウントします。NTFS ファイルシステムを修復するには、Windows をロードしてディスクチェックプログラムの chkdsk を実行してください。 ntfsfix で修正できるエラーは限られているので注意してください。ntfsfix が失敗する場合でも、chkdsk が成功することがあります。
NTFS ファイルシステムを修復するには、デバイスをアンマウントしておく必要があります。例えば、/dev/sda2
にある NTFS パーティションを修復するには:
# umount /dev/sda2 # ntfsfix /dev/sda2 Mounting volume... OK Processing of $MFT and $MFTMirr completed successfully. NTFS volume version is 3.1. NTFS partition /dev/sda2 was processed successfully. # mount /dev/sda2
全てが上手く行けば、ボリュームは書き込み可能になるはずです。
"Metadata kept in Windows cache, refused to mount"
Windows 8 や 10 とデュアルブートをしている場合、Windows に見えているパーティションをマウントしようとすると以下のエラーが表示されることがあります:
The disk contains an unclean file system (0, 0). Metadata kept in Windows cache, refused to mount. Failed to mount '/dev/sdc1': Operation not permitted The NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting), or mount the volume read-only with the 'ro' mount option.
この問題は Windows 8 の新しい"高速スタートアップ"と呼ばれる機能が原因です。高速スタートアップが有効になっていると、マウントされる全てのパーティションのメタデータの一部が以前に終了したときの状態に復帰します。結果として、Linux によって加えられた変更が消失しています。Windows 8 を終了するときに"シャットダウン"や"ハイバネート"を選べば内蔵ディスクのどのパーティションにもデータの消失が起こる可能性があります。ただし、"再起動"で Windows 8 を終了するのは安全のようです。
他のオペレーティングシステムのパーティションへの書き込みを有効にするときは、Windows 8 の高速スタートアップを無効にしてください。管理者権限で次のコマンドを実行することで無効にできます:
powercfg /h off
現在の設定は コントロールパネル > ハードウェアとサウンド > 電源オプション > システム設定 > 電源ボタンの動作を選択する で確認が可能です。"高速スタートアップを有効にする" のチェックが外れているか表示がなくなっているはずです。
Windows のハイバネートメタデータを削除する
上記のようにシャットダウンする方法以外に、ハイバネートの後に保存される NTFS のメタデータを完全に消去するという方法もあります。Windows を起動することがなく完全にシャットダウンした場合のみ適しています。ntfs-3g を使って NTFS ファイルシステムをマウントするときに remove_hiberfile オプションを指定してください:
# mount -t ntfs-3g -o remove_hiberfile /dev/your_NTFS_partition /mount/point
マウントが失敗する
このガイドに従っても NTFS パーティションをマウントできない場合、/etc/fstab
の全ての NTFS パーティションでデバイス名の代わりに UUID を使うようにしてみてください。これが fstab のサンプルです。