様々なボリュームがマウントが可能に
先日リリースされた「Build 16176」では「DrvFS」に多くの改善がなされており、「WSL」上の「Ubuntu」から「DrvFS」を通じ、リムーバブルディスクやネットワーク上のボリュームなど様々なボリュームをマウントできるようになりました。NTFSの固定ディスクの自動マウント
今までは「Bash」を起動すると、WindowsのNTFSでフォーマットされた固定ディスクが自動的にマウントされ、「/mnt/c」などを通じてWindowsのボリュームにアクセスできるようになっていました。しかしリムーバブルディスクやネットワーク上のボリュームなど、上記以外のボリュームはサポートされておらず、「Ubuntu」からマウントできませんでした。
様々なボリュームがマウント可能に
「Build 16176」では、FATやネットワーク上のボリューム、USBメモリーやCD/DVDドライブなど、Windowsから認識されている様々なボリュームをマウントできるようになりました。手動でマウント
Windowsから認識されているすべてのボリュームが「Bash」起動時に自動的にマウントされるわけではありません。ネットワーク上のボリュームなど固定ディスク以外のボリュームは、ユーザーが手動でマウントする必要があります。
しかしマウント作業は「Ubuntu」でのマウント作業とほとんど変わらないため、スクリプト等で複数のボリュームをまとめてマウントするなど、「Ubuntu」の作法を活用すると良いでしょう。
ドライブレターからボリュームをマウントするには
Windowsでは、固定ディスクやリムーバブルディスクなど各ボリュームにドライブレターを割り当てることができます。いわゆるCドライブやDドライブのことです。
このドライブレターからボリュームをマウントし、「Ubuntu」から利用できるようにする方法です。
ここでは例として、Dドライブに割り当てられているCD/DVDドライブをマウントしてみます。
1.マウントポイントの作成
マウントポイント(マウント先のディレクトリー)を作成します。どこに作成しても良いですが、「/mnt」ディレクトリー以下にサブフォルダーを作成するのが良いでしょう。
ここでは例として、「/mnt/d」ディレクトリーを作成します。
以下のコマンドを実行します。
sudo mkdir /mnt/d
ボリュームマウント後、このディレクトリーを経由してマウントしたボリューム内のファイルにアクセスすることになります。
2.ボリュームのマウント
Dドライブを「/mnt/d」にマウントします。以下のコマンドを実行します。
sudo mount -t drvfs D: /mnt/d
3.Dドライブにアクセス
以上でマウントが完了し、「Ubuntu」からDドライブにアクセスできるようになります。「Ubuntu」からDドライブにアクセスするには、マウントポイントである「/mnt/d」ディレクトリー以下にアクセスすれば良いです。
ボリュームをアンマウントするには
ボリュームをアンマウント(切断)するには、以下のコマンドを実行します。
sudo umount /mnt/d
必要であれば、後で上記の方法を利用し再度マウントできます。
リムーバブルディスク利用時の注意
CD/DVDドライブからメディアを排出する時や、特にUSBメモリーをPCから取り除く時は、事前にボリュームをアンマウントしてから作業を行いましょう。ネットワーク上のボリュームをマウントするには
ネットワーク上のボリュームをマウントする方法です。ネットワーク上のボリュームは、UNCパスを利用して指定します。
ここでは例として、ホスト名「UBUNTU-VB-1704」で共有されている「\shareFolder」をマウントしてみます。
この場合UNCパスは「\\UBUNTU-VB-1704\shareFolder」になります。
1.マウントポイントの作成
マウントポイント(マウント先のディレクトリー)を作成します。ここでは例として、「/mnt/share」ディレクトリーを作成します。
以下のコマンドを実行します。
sudo mkdir /mnt/share
2.ボリュームのマウント
ネットワーク上のボリュームを「/mnt/share」にマウントします。以下のコマンドを実行します。
sudo mount -t drvfs '\\UBUNTU-VB-1704\shareFolder' /mnt/share
\のエスケープについて
UNSパスをシングルクォーテーション(')で括らない場合、UNCパス内に含まれる「\(バックスラッシュ)」をエスケープして記述する必要があります。上記の例では、UNCパスを以下のように記述する必要があります。
sudo mount -t drvfs \\\\UBUNTU-VB-1704\\shareFolder /mnt/share
3.ネットワーク上のボリュームにアクセス
以上でマウントが完了し、「Ubuntu」からネットワーク上のボリュームにアクセスできるようになります。「Ubuntu」からネットワーク上のボリュームにアクセスするには、マウントポイントである「/mnt/share」ディレクトリー以下にアクセスすれば良いです。
ネットワークの認証について
ネットワーク上のボリュームに認証が必要な場合、「WSL」から認証方法を指定することができません。事前にエクスプローラーからそのボリュームにアクセスし認証を行うか、「Windows Credential Manager」を使用するか、「net use」コマンドを利用して認証情報を設定してください。
「net use」コマンドはWindowsのソフトウェアですが、「Ubuntu」から直接呼び出すこともできます。
net.exe use ...
以下のコマンドを実行すればヘルプが表示されます。
net.exe help use
ドライブレターがなくフォルダーにマウントされているボリュームをマウントするには
ドライブレターが割り振られていないボリューム、かつ、空のNTFSフォルダーにマウントされているボリュームをマウントする方法です。ここでは例として、「C:\mount」フォルダーにマウントされているボリュームをマウントします。
1.マウントポイントの作成
マウントポイント(マウント先のディレクトリー)を作成します。ここでは例として、「/mnt/volume」ディレクトリーを作成します。
以下のコマンドを実行します。
sudo mkdir /mnt/volume
2.ボリュームのマウント
ネットワーク上のボリュームを「/mnt/volume」にマウントします。以下のコマンドを実行します。
sudo mount -t drvfs 'C:\mount' /mnt/volume
\のエスケープについて
パスをシングルクォーテーション(')で括らない場合、パス内に含まれる「\(バックスラッシュ)」をエスケープして記述する必要があります。詳細は、上記のUNCパスの例を参照してください。
3.ボリュームにアクセス
以上でマウントが完了し、「Ubuntu」からボリュームにアクセスできるようになります。「Ubuntu」からボリュームにアクセスするには、マウントポイントである「/mnt/volume」ディレクトリー以下にアクセスすれば良いです。
ファイルシステムによる動作の違い
「DrvFS」は、マウントしたボリュームのファイルシステムの種類により、少し異なる振る舞いをします。例えばマウントしたボリュームのファイルシステムが「FAT」だった場合、ファイル名の大文字・小文字の区別は行いませんし、ハードリンクやシンボリックリンクをサポートしません。
ネットワークファイルシステム
ネットワークファイルシステムでは、「DrvFS」はファイルに対し正しいLinuxパーミッションを設定しません。「DrvFS」はすべてのファイルのパーミッションはフルアクセス(0777)であると返すため、実際にそのファイルにアクセス可能かどうか調べるには、そのファイルを実際に開くなどしてパーミッションの有無を確認するしかありません。
またネットワークファイルシステムでは、ファイル名の大文字・小文字の区別は行いませんし、シンボリックリンクをサポートしません。