SDB:Windows ファイルへのアクセス
openSUSE で確認済み | おすすめの記事 | 関連する記事 | |||
|
目次
背景
Windows と Linux の両方を起動することのできる ("デュアルブート" と呼びます) システムでは、しばしばシステム間のデータ交換が必要となります。現時点では、このような課題に対する完璧な解決方法はありません。それはなぜなら、 Windows と Linux は (主にセキュリティの点で) 異なる仕組みであるためです。そのため、一方のオペレーティングシステムが他方のオペレーティングシステムを完全にサポートすることができません。
openSUSE では、 Windows のインストールを検出して、インストールされていればそれらをマウントするように設定します。ただし、安全性の観点から、 Linux と Windows の間でデータを交換するにあたっては、交換専用のパーティションを用意して、予期せず書き換えられたりすることが無いようにします。残る問題は、このパーティションにどのようなファイルシステムを用いるか、になります。
両方の世界で完全にサポートされている唯一のファイルシステムとして、 FAT32 が挙げられます (FAT12 や FAT16 もサポートされていますが、既に古い技術になってしまっています) 。ただ、 FAT32 にはユーザのアクセス権を制限するような機能が用意されていないほか、ファイルのサイズも 4GB 未満にしか対応していない、という問題があります。このような制限があっても、データ交換に支障がないようであれば、データ交換専用の FAT32 パーティションを作成するのが最適です。
4GB 以上のファイル (たとえば DVD イメージ) を交換したい場合は、 ext2 や NTFS を交換用のファイルシステムとして使用することもできます。 openSUSE で NTFS パーティションを使用するには ntfs-3g パッケージが利用できますし、 Windows で ext2 パーティションを使用するには Explore2fs, Ext2 IFS, Ext2Fsd, Ext2Read などを使用することができます。ただし、これらの ext2 ツールの間には機能面での差異があることに注意してください。 LVM2 のサポートやファイルやフォルダの再帰的なコピー、可搬性や ext4 のサポートなどがそれぞれ異なっています。
全く異なるアプローチとしては、オープンソースプロジェクトである VirtualBox や、商用製品である VMware などがあります。こちらを利用しても、ホストとゲストの間でデータを交換することができます。
データ交換用パーティションの作成方法
データ交換用のパーティションを作成していない場合は、下記に示す手順を実行する必要があります。
警告!
|
特にパーティションのサイズを変更する場合など、下記に示す手順を実行する際は、必ず事前に対象のデータをバックアップしておいてください! |
既存のパーティションの縮小
お使いのマシンのパーティションテーブルに空き領域がない場合、新しいパーティションを作成する前に、既存のパーティションを縮小する必要があります。既に空き領域がある場合は、この手順は飛ばして #新しいパーティションの作成とフォーマット に進んでください。
Linux (ext2/ext3/ext4 など) のパーティションを縮小したい場合は、 openSUSE ダウンロードページ で提供されている openSUSE レスキューメディアを使用することができます。レスキューメディアはインストールメディアと同様に、それ自身で起動できるメディアです。 レスキューメディアから起動したら、 "openSUSE" メニュー (左下) から "system" -> "GParted" を選択してください。 GParted のウインドウでは、縮小したいパーティションを選んで、 "Partition" メニューから "Resize/Move" を選択します。 "Resize/Move" ウインドウでは "Free space following" の値を増やします。ここで設定した値が空き領域になります。この値を増やすことができない場合、お使いのパーティション内がファイルなどで埋められてしまっていることを示しています。ファイルマネージャ ("openSUSE" メニュー -> "system" -> "Thunar file manager") から不要なファイルを削除して、再度試してみてください。 "Free space following" の値を増やすことができたら、 "Resize/Move" を押してから "Apply" を押してください。縮小が完了したら、 openSUSE を起動しなおしてください。
Windows (FAT/NTFS など) のパーティションを縮小したい場合は、 Windows から実施することができます。 Microsoft Technet article などの手順を実施してください。
新しいパーティションの作成とフォーマット
新しいパーティションは、 YaST (Linux 用のファイルシステムの場合) または Windows (Windows 用のファイルシステムの場合) で作成することができます。 YaST を起動したら "システム" -> "パーティション設定" を選択して、手順に従ってください。
なお、データ交換用のパーティションを FAT32 でフォーマットしたい場合は、プライマリパーティションに設定することはおやめください。 Windows が混乱をきたす原因になってしまうためです。その代わりに、拡張パーティション内に論理パーティションを作成してください (例: /dev/sda5) 。
また、 Windows のシステムパーティション (/dev/sda1) をマウントする場合は、システムを破壊してしまったりすることがないよう、よくご確認ください。特にシステムのディレクトリ (/windows/system) を扱う際はご注意ください。今回の例では /dev/sda5 のように、できるかぎりデータ交換用のパーティションで作業を行なってください。
マウント時のオプション
Linux 内でパーティションを実際にマウントする際、重要となるのはマウントオプションです。データ交換用のパーティションを選択してから "fstab オプション" を押して、 "その他のオプション値" の欄に必要な項目を設定します。この作業は、インストール完了後にエディタなどで変更することができる (/etc/fstab) ほか、 YaST のシステム -> パーティション設定などでも行なうことができます。
たとえば下記のように指定します:
utf8,codepage=932,dmask=000,fmask=111,shortname=winnt
"utf8" は漢字などの文字を扱う際に必要となるオプションで、 "codepage" は短い DOS 名に対する文字マッピングを指定するためのオプション (コートページについて、詳しくは Microsoft の資料 をお読みください) です。また、 dmask の値は各ユーザに対してディレクトリの内容の表示を許す設定で、 fmask の値は各ユーザにファイルの読み書き (ただし実行はさせない) を許す設定です。 "shortname" は DOS での短い名前と長い名前の両方に対して、大文字と小文字の変換を正しく行なわせるための設定です。詳しい説明については、 "man mount", "man umask", "man chmod" などをお読みください。
オプション類を含めると、 /etc/fstab のデータ交換用パーティションの設定は、下記のようになります:
/dev/sda5 /windows/data vfat utf8,codepage=932,dmask=000,fmask=111,shortname=winnt 0 0
それぞれスペースで区切られた列には、下記のような意味があります (詳しくは "man fstab" をお読みください):
"/dev/sda5" は物理パーティション名を意味します。 YaST などで選択するか、 "fdisk -l /dev/sda" などで調べてください。
"/windows/data" はマウントポイントを意味します。 Linux のファイルシステム構造内で、どこにマウントするのかを指定することになります。 YaST で設定した場合、このディレクトリは自動的に作成されます。 YaST 以外で設定した場合は、 "mkdir -p /windows/data" のように実行してディレクトリを作成してください。
"vfat" はファイルシステムの種類を指定する箇所で、今回は FAT32 パーティションであることを示しています。
"0 0" はファイルシステムのチェックに関する項目で、システムではファイルシステムをチェックしないことを意味しています。