2016年03月25日

LinuxホストのVirtualBoxのフォルダ共有でこけた

タイトルが長いのは気にしない。
その内容の通り、LinuxをホストにしたVirtualBoxでWindows 7をゲストにしたら困ったという話。

実のところ、別にLinuxがホストだろうとインストールはスムーズにいき、(環境が32bitのせいで)メモリに苦労するものの動いてはいた。
しかし、いざ共有フォルダをつくったらまずいことが起こった。
explorerからファイルをコピーしようとするとエラーが起こるのだ。
具体的には「エラー0x80070057: パラメーターが間違っています。」だ。
ちなみにメモ帳で開こうとしてもほぼ同じエラーが出る。なんだこれは。
しかもコマンドプロンプトで適当にリダイレクトするとファイルが作れるのだ。
さらに、copyコマンドも正常に働く。
移動、削除はexplorerからも可能。
一体何が起こっているのだ。

検索しても検索しても「バックアップで失敗する」話ばかりで何も分からなかったのだが、一つ気になるものがあった。
"Code 0x80070057 The parameter is incorrect" error when you try to display a user's "effective access" to a file
これだ。
effective accessと言われてもさっぱり分からないが、しかしエラーとユーザーのアクセスという点で一致する。
中を読むと大まかにはこういうことが書いてある。

SMBを使った共有フォルダについて、\\host\dirみたいな書き方をしたやつでアクセスする場合を考える。ここで相手のSMB提供プログラムがMSのじゃない場合、ファイルのオーナーをパラメータとして要求してくる。しかし、explorerはオーナーを書こうとしないからエラーが返ってくる。これがそのままユーザーに渡される。実は、SMBの仕様上はオーナーの部分は必須ではないのだが、これを必須とするシステムもある。

今回のにぴったりな状況だ。SMBを提供しているのはVirtualBox、アクセス先は\\vboxsrv\hoge、「パラメーターが間違っている」というエラーメッセージ。
さて、この文書は解決策としてパッチの存在が書いてある。
ただし、Windows8.1以降。

8.1以降。

今入れたの、7なんだが。
え、パッチないの?
まじで?え??

・・・Linuxの方にSamba入れてホストオンリーアダプタで対処することにしよう・・・
posted by chiguri at 00:36| Comment(2) | PC