私のローカルWindowsコンピュータにマウントされているサンバドライブを持っています
WLS(Windows 10 Bash)に/mnt/c
ドライブがあるのですが、/mnt/z
がありません
どうにかしてアクセスする方法はありますか?WSLでリマウントできますか?
95 Charles Shiller 2016-09-27
[更新 — どうやらこの機能はビルド16176で利用できるようです。私はまだ試していません]
いいえ、私が発見していない何かのトリックがあるかもしれませんが。Windows Subsystem for Linuxはネットワークドライブをマウントしません。マイクロソフトの社員がこちら(コメントで)と言っています
この時点では固定ドライブの「マウント」のみを行っています。USB/リムーバブル/ネットワークドライブは、現時点では扱いません。この機能はバックログにありますが、すぐには対応できません
だから、息を止めてはいけない
このようにシンボリックリンクを使って回避しようとしました
c:> mklink /d c:\some\directory \\some_server\some_share
このリンクは「通常の」Windows(cmd.exe、PowerShell、ファイルエクスプローラなど)では正常に動作しますが、WSLでは見えません
$ ls -ld /mnt/c/some/directory
/mnt/c/some/directory not found
私自身の使用では、この制限が目立ちます。ネットワークドライブにあるものを移動させたくないのです。Cygwinを使っています
27 Joseph Thvedt 2016-10-18
Mounting DrvFs
DrvFsを使用してWindowsドライブをマウントするには、通常のLinuxマウントコマンドを使用します。例えば、リムーバブルドライブD:を/mnt/dディレクトリとしてマウントするには、以下のコマンドを実行します
$ sudo mkdir /mnt/d $ sudo mount -t drvfs D: /mnt/d
これで、/mnt/d 以下の D: ドライブのファイルにアクセスできるようになります。ドライブを安全に削除するためなど、ドライブをアンマウントしたい場合は、以下のコマンドを実行してください
$ sudo umount /mnt/d
ネットワークの場所をマウントします
ネットワーク上の場所をマウントしたい場合は、もちろんWindowsでマップされたネットワークドライブを作成して、上記のようにマウントすることができます。しかし、UNCパスを使って直接マウントすることも可能です
$ sudo mkdir /mnt/share $ sudo mount -t drvfs '\\server\share' /mnt/share
これはバックスラッシュをエスケープする必要がないようにするために必要です。UNC パスを単一引用符で囲まない場合は、バックスラッシュを 2 倍にしてエスケープする必要があります (例:
\\\\server\\share
)WSL は、ネットワーク共有に接続するために使用する資格情報を指定する方法を持っていません。サーバへの接続に別の認証情報を使用する必要がある場合は、ファイルエクスプローラで共有に移動するか、Windows Credential Manager を使用するか、net use コマンドを使用して、Windows で認証情報を指定します。net useコマンドは、WSL内部からinterop経由で(net.exe useを使用して)呼び出すことができます。このコマンドの使用方法の詳細については、net.exe help useと入力してください
190 gman 2017-10-23
私は最近、ゲストOSとしてwindows 10をインストールしたvmware fusionを実行しているMacホストを持っている場合、この問題に遭遇しました。私はwindows 10にWSL(ubuntu)をインストールしました。私はすべての私の融合のゲストO/Sと私のMac上のフォルダ(〜/パブリック)を共有しており、それは任意のlinux/bsdゲストOSと一見して動作します。Windows10では、共有フォルダのネットワークドライブは「\vmware-host\Shared Folder\Public」となっており、windows10からアクセス可能で、Z:ドライブにもマウントされています
問題は、WSLでbashを使用している場合です。提案されている方法は(必要に応じて実際のドライブレターやフォルダ名を調整する)です
sudo mkdir /mnt/z
sudo mount -t drvfs Z: /mnt/z
というか、より直接的には
sudo mount -t drvfs '\\vmware-host\Shared Folder\Public' /mnt/z
マウントコマンドは成功していますが、実際にはマウントが「失敗」しています。フォルダ /mnt/z の内容を見ることができません。ファイルシステムが Windows (NTFS, FAT32, など) のファイルシステムであれば、他のネットワークドライブでもマウントは問題なく動作します。使用しようとしているファイルシステムが apple file system (apfs) なので、drvfs は使用できません。マウントしようとしているファイルシステムが linux (ext2, ext3, …) やネットワーク nfs/samba タイプの場合も同様に失敗します。この drvfs は Windows ネイティブの drvie フォーマットしか理解できません
面白いことに、WindowsではWindows以外のファイルシステムドライブが使えるのに、wsl/linuxではWindowsのファイルシステムドライブ….しか表示されません
ということで、簡単に言うと
sudo mount -t drvfs { \\network\drive\folder | X:\folder } /mnt/folder
ネットワークドライブが Windows ネイティブのファイルシステム (ntfs, fat*) を使用している場合に限ります
7 Marcus Yoo 2019-12-04
https://github.com/Microsoft/WSL/issues/2999#issuecomment-455835951を参照してください
WSL 上で `sshfs` を動作させるか、代替案を見つけるか に基づいて、WSL で GFS をマウントする方法を紹介します。トリックは、https://www.nsoftware.com/sftp/netdrive/ を使って、Windows から GFS に ssh して、WSL でマウントできるファイルシステムに変換することです
OpenSSHサーバをWin10でインストールします Win10の設定 -> Apps -> オプション機能の管理 -> 機能の追加 -> 必要に応じてOpenSSHサーバを再起動します サービス -> OpenSSH -> プロパティ -> 起動タイプ -> 自動(遅延)
SFTPNetDrive をインストールして実行し、非表示アイコンのアイコンを右クリックします -> メインウィンドウ(または既に開いている場合もあります) -> プロファイル -> 新しいプロファイル( server: localhost, user.* pwd:* ドライブレター。F (または別のもの) Advanced -> ( Protocol -> 圧縮のチェックを外す; 指定フォルダ: G:G:\ )
Bash (wsl): sudo mkdir /mnt/f; sudo mount -t drvfs F: /mnt/f
どこまで安定しているのかわかりませんが、WSLでファイルを開くことができました
3 Christopher Crawford 2019-01-20
WSL2 は CIFS (SMB) プロトコルをサポートしています。マウント時にネットワークサーバのバージョンを指定する必要があるかもしれません。例:Ubuntu 20.04で
$ sudo apt install cifs-utils
$ sudo mount -t cifs -o user=joe,pass=shmo,vers=1.0 //server/share /mnt/share
2 user1602 2020-07-02
WindowsでBashを使うには(少なくとも)2つの方法があります
- WLSに付属しているBash(WindowsストアなどからWindows 10にLinuxをインストールする場合)
- Windows での Git-Bash LoMaPh 2018-12-11