VirtualBoxで「現在のビデオモードではゲストOSでマウス統合機能がサポートされません」と出る

VirtualBoxをインストールした初期段階でのゲスト・ホスト間の移動は、画面をクリックしてゲストに入り、右Ctrlキーを押してホストに戻ります。(Ver5.1.26での例)

頻繁に行うのは面倒なので、マウスをシームレスに移動させたりゲスト・ホスト間のコピペを行う等の便利な機能を "VirtualBox Guest Additions" をインストールすることで可能にします。

これらの機能が有効になっていない場合、画面上部に「現在のビデオモードではゲストOSでマウス統合機能がサポートされません」と表示されます。

6.4. VirtualBox Guest Additions のインストール

Guest Additions のインストールは画面上部メニューの[デバイス]→[ゲストアディションのインストール]から行います。

(仮想マシンにCD-ROMドライブをつけていなかった場合、[Gues Additions CD イメージの挿入]という文面になり 「仮想マシンに光学ドライブがないため VirtualBox Guest Additions のディスクイメージを仮想マシンに挿入できません。(メニューの[仮想マシン]→[設定]→[ストレージ]から)ドライブを追加してください」と出ますので指示に従い追加します。

そして再度[Gues Additions CD イメージの挿入]をクリックします。自動再生ウィンドウが開かない場合は、エクスプローラーを開いてCDドライブをクリックして再生してください。)

(幾つかインストールされますが、Oracleのものは全部インストールしちゃってください)

インストールが終わったら「再起動しますか?」と出ますのでゲストOSを再起動してください。

再起動が終わると画面上部の文言が「ゲストOSでマウス統合機能がサポートされています」に変わります。実際にゲストとホスト間をマウスを移動するだけで行き来できるようになっています。

インストール前はメニューの[入力]→[マウス統合]はグレーアウトしていましたがきちんと表示されました。

そしてゲスト[メニュー]の[仮想マシン]→[設定]→[一般]→[高度]タブからクリップボードの共有設定も可能になります。

何かのウインドウが一瞬開いて閉じる

昨日今日あたりで、何かのウィンドウが一瞬開いて閉じるようになった。ウイルスに感染したかな?としばらくビクビクする。

結論を書くと

C:Program Files (x86)\Microsoft Office\root\Office16\officebackgroundtaskhandler.exe というプログラムが1時間に1回動いていた。

“This task initiates Office Background Task Handler, which updates relevant Office data.” “このタスクは Office関連のデータを更新するOffice Background Task Handlerを開始します” かな。

ウイルスではなくMicrosoftOffice関係のアップデートタスクです(対処方法は後述)。私の環境は Windows10 x64 Home, Office365 Solo (Windows7,8でも出るとの報告あり)


追記:私は画面を録画して無理やり確認するという方法を取ったのですが、コメントで教えてもらった通り、プロセス監視ソフトなどを使った方が楽です。

(左下のWindowsスタートボタンを右クリック)コンピューターの管理 → 左側のタスクスケジューラをクリック → 左上の”操作”から”すべてのタスク履歴を有効にする”と設定 → タスクスケジューラ → タスクスケジューラライブラリ → Microsft → Office と順にクリックして開く → 例の怪しいウィンドウが表示された時刻に「OfficeBackgroundTaskHandlerRegistration」が出た。

これが一番手っ取り早いと思います。対処方法はMicrosoftフォーラムに幾つか記載されていました。(~Registrationとは別に OfficeBackgroundTaskHandlerLogon がログイン時に一回顔を出す場合もありますが対処法は同じです)

・上記タスクスケジューラで前回の実行時刻等を見て確認ができたら、Office~Registrationを右クリックして「無効」とすることで今後は動かなくなります。(Office~Logonも同様)

・または、Office~Registrationを右クリック→プロパティ→全般タブ→ユーザーまたはグループの変更→選択するオブジェクト~、に"System"と入力しOKを2回クリックして閉じる。

・または、Office~Registrationを右クリック→プロパティ→操作タブ→編集→引数の追加、に"/b"と記載する。OKを2回クリック。

・または、C:Program Files (x86)\Microsoft Office\root\Office16\ を開く。officebackgroundtaskhandler.exe を右クリック→プロパティ→互換性タブ、「管理者としてこのプログラムを実行する」にチェックを付けOKをクリック。

これらはマイクロソフトが対応してくれるまでの一時しのぎで、やはりセキュリティ的には危なくお勧めはできないようです。(自動実行を無効にしても、タスクを右クリックして手動で「実行」すれば動きます。とはいえ「無効」にしたらいずれは有効に戻すのを忘れないようにしてください。)

画面のフォーカスを持っていかれるので全画面でゲーム中の時などに困りますが、放っておいてもそう問題はありません。ただコメントでも指摘されているように、怪しい挙動に慣れてしまうと本当に危ないときも「いつものアレか」と警戒心が薄れる恐れがあります。

追記:5/30には、Officeインサイダー向け(いち早くバク修正や新機能を取り込み機能改善に協力する人たち)の修正が完了しました。一般ユーザーへの適用もそう遅滞なく行われるはずです。

answers.microsoft.com


以降は蛇足になりましたので読まなくていいです。

続きを読む

Vagrant VirtualBoxでの共有フォルダのエラーについて

経緯。 Windows10 VirtualBox 5.1.20 に Vagrant 1.9.4 で CentOS7をインストール

Vagrant box centos/7 | Atlas by HashiCorp

https://seven.centos.org/2017/04/updated-centos-vagrant-images-available-v1703-01/

を見ると、既知の問題点として

1.VirtualBoxでゲスト・ホスト間の共有フォルダを提供する「VirtualBox Guest Additions」はプレインストールされていません。必要な場合は、vagrant-vbguestプラグインをインストールし、Vagrantfileに次の行を追加してください。

config.vm.synced_folder “.”, “/vagrant”, type: “virtualbox”

補足)config.vm.synced_folder “ホストの共有フォルダ”, “ゲストのマウント先”, type: “virtualbox”です。

可能であれば、VirtualBox共有フォルダの代わりにNFSを使用することをお勧めします(VirtualBox共有フォルダは高負荷なので)。また、vagrant-sshfsプラグインを使用することもできます。これはNFSと異なり、すべてのオペレーティングシステムで動作します。

2.Guest Additionsが入っていない場合、私たちのイメージは同期されたフォルダのためにrsyncを使うようにあらかじめ設定されています。Windowsユーザーは、同期フォルダにSMBを使用するか、Vagrantfile に下記の通り記載することで同期ディレクトリを無効にすることができます。 config.vm.synced_folder “.”, “/vagrant”, disabled: true

と記載されています。というわけで

>vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Fetching: micromachine-2.0.0.gem (100%)
Fetching: vagrant-vbguest-0.13.0.gem (100%)
Installed the plugin 'vagrant-vbguest (0.13.0)'!

>vagrant init centos/7

の後で、vagrantfile を編集。中ほどの当該箇所を

config.vm.synced_folder “.”, “/vagrant”, type: “virtualbox”

とする。そして

>vagrant up --provider virtualbox

しかし

:
vboxadd.sh: Starting the VirtualBox Guest Additions.
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/hoge/MyVagrant/CentOS7
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

mount: wrong fs type, bad option, bad superblock on vagrant,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

となりマウントできません。

VagrantVirtualBox共有フォルダーをマウントできません。これは通常"vboxsf(VirtualBOXSharedFolder)ファイルシステム"への非対応が原因です。このファイルシステムは"Guest Additions"とカーネルモジュール間で利用されます。"Gust Additions"が正しくインストールされているか確認してください。 これはVagrantのバグではなく、大抵は欠陥のある"Vagrant Box"によって引き起こされます。背景としては、次のコマンドが試みられました--

ホスト(VirtualBox)とゲスト(Guest Additions)のバージョン不一致で発生することがあり、その場合>vagrant vbguest –status

GuestAdditions versions on your host (5.1.20) and guest (5.0.18) do not match.

といったエラーが出て、マウントも

sudo mount -t vboxsf vagrant /vagrant
/sbin/mount.vboxsf: mounting failed with the error: No such device

とできません。ただ今回は

>vagrant vbguest --status
[default] GuestAdditions 5.1.20 running --- OK.

で私のVirtualBoxも5.1.20なので、ここは問題ありませんでした。 しかし、確かに指摘されたコマンドで以下のようなアウトプットになります。

[vagrant@localhost ~]$ sudo mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
mount: wrong fs type, bad option, bad superblock on vagrant,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

$mount -t vboxsf <共有フォルダ名> <マウント先ディレクトリ>

ディレクトリやファイルの権限、パーミッションを設定するときは下記のように -o で追加オプションを指定する。 uid、gid についてはユーザー名は指定できない。

$mount -t vboxsf <共有フォルダ名> <マウント先ディレクトリ> -o uid=$UID,gid=$GID,fmode=644,dmode=755

Virtualbox の 共有フォルダ を マウント/アンマウント したい - Qiita

では dmesg | tail

[vagrant@localhost ~]$ sudo dmesg | tail
:
[  701.855307] sf_read_super_aux err=-22

sf_read_super_aux err=-22ググる

VirtualBoxの共有フォルダのマウントに失敗する - Qiita

見てみるとビンゴっぽかったのでsymlink作りなおす

$ ll /sbin/mount.vboxsf

lrwxrwxrwx 1 root root 42 8月 10 18:25 /sbin/mount.vboxsf -> /usr/lib64/VBoxGuestAdditions/mount.vboxsf

$ sudo rm /sbin/mount.vboxsf

$ sudo ln -s /usr/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf

$ sudo mount -t vboxsf HOGE hoge

成功

やったー

とのこと。やってみる。

$ ls -l /sbin/mount.vboxsf (mount.vboxsfとはなんぞや?)
/sbin/mount.vboxsf -> /opt/VBoxGuestAdditions-5.1.20/other/mount.vboxsf
(mount.vboxsf は /opt/VBoxGuestAdditions-5.1.20/other/mount.vboxsf へのシンボリックリンクである
という表示だがリンク先に実体が無い)

$ sudo rm /sbin/mount.vboxsf (シンボリックリンクを一度削除。または以下3行を飛ばして ln -sfでも良い)
$ ls -l /sbin/mount.vboxsf
ls: cannot access /sbin/mount.vboxsf: No such file or directory

$ sudo ln -s /usr/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
(/usr/lib/VBoxGuestAdditions/mount.vboxsfへのシンボリックリンク/sbin/mount.vboxsfを作成する)

$ ls -l /sbin/mount.vboxsf
/sbin/mount.vboxsf -> /usr/lib/VBoxGuestAdditions/mount.vboxsf
(mount.vboxsf は /usr/lib/VBoxGuestAdditions/mount.vboxsf へのシンボリックリンクである)

$ sudo mount -t vboxsf vagrant /vagrant
[vagrant@localhost ~]$ ls /vagrant/
test.txt  Vagrantfile

やったー。

/usr/lib/VBoxGuestAdditions/ は 64bit なら /usr/lib64/VBoxGuestAdditions/ が正しいがバグとして残ってる?みたい。 #5665 (Wrong simlink in Fedora 64 bits guest => Fixed in SVN) – Oracle VM VirtualBox

vboxsf: VirtualBOXSharedFolder: VirtualBox外部にあるフォルダをVirtualBox内から読み書きできるようにするためのファイルシステム

mount -t vboxsf [マウント元デバイス:ホストの共有フォルダー名] [マウント先:ゲストの共有フォルダー]

これはVagrantfileでconfig.vm.synced_folder “.”, “/vagrant”, type: “virtualbox”と設定した部分です。カレントフォルダー".“の[フォルダー名]もvagrantです(この設定はどこに記載されているのだろう…。VirturalBoxのGUIにはあったけど)

まあ初めに「可能であれば、VirtualBox共有フォルダの代わりにNFSを使用することをお勧めします」と書かれてるので、その方がいいんでしょうね。

こちらも参考に beyondjapan.com

www.vagrantup.com

シンボリックリンク

同期されたフォルダの実装とホスト/ゲストの組み合わせのシンボリックリンクのサポートは一貫していません。Vagrantは、シンボリックリンクVirtualBoxなどのさまざまなハイパーバイザを構成するように機能するよう最善を尽くしていますが、ホストとゲストの組み合わせによってはまだ正しく動作しません。これは、シンボリックリンクに依存するいくつかの開発環境に影響を与える可能性があります。

必要であれば、フォルダを同期するすべてのホスト/ゲストの組み合わせでシンボリックリンクをテストすることをお勧めします。

ちなみに「問題点2」に記載されているように「VirtualBox Guest Additions」をインストールせずにそのまま vagrant up すると、同期に rsync が使われます。

:
default: No guest additions were detected on the base box for this VM! Guest
default: additions are required for forwarded ports, shared folders, host only
default: networking, and more. If SSH fails on this machine, please install
default: the guest additions and repackage the box to continue.
default:
default: This is not an error message; everything may continue to work properly,
default: in which case you may ignore this message.
==> default: Rsyncing folder: /cygdrive/c/Users/hoge/MyVagrant/CentOS7/ => /vagrant

www.vagrantup.com

vagrant ssh でパスワードが通らずprivatekeyを要求される

今までユーザー名:vagrant パスワード:vagrant で入っていたのですが、久しぶりに使ってみたところ秘密鍵private_keyを要求されるようになりました。 まあそりゃあそうでしょう。

vagrant のSSH設定は >vagrant ssh-configで見られます。

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/hoge/MyVagrant/CentOS7/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

Windowsの場合、初期状態ではC:/Users/hoge/MyVagrant/CentOS7/.vagrant/machines/default/virtualbox/private_keyみたいな所にあります。

www.vagrantup.com

には "default this is port 22" とまだ書かれていますが。 また「秘密鍵とその置き場所もvagrantの初期設定のままだと安全ではないので自身で安全な場所に自分の秘密鍵を作りましょう」と書かれています。

このあたりの設定の変更も vagarntfileの編集で行います。

Vagrant で rubygems エラー

Vagrantで

C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file
-- vagrant-share/helper/api (LoadError)
    from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

というようなエラーが出るようになった。ググると数日前から報告されているようです。 私の環境は Widows10Home x64 VirtualBox5.1.20 Vagrant1.9.4 です。

github.com

読んでいったところ

$ vagrant plugin install vagrant-share --plugin-version 1.1.8

で直るよ。とのことだったので、vagrant-share --plugin-version 1.1.8 をインストールし、Vagrant up してみたのですがまた別のエラーが出ました。

C:/HashiCorp/Vagrant/embedded/gems/gems/net-ssh-4.1.0/lib/net/ssh/transport/server_version.rb:54:in `readpartial': An established connection was aborted by the software in your host machine. 
(Errno::ECONNABORTED)
        from C:/HashiCorp/Vagrant/embedded/gems/gems/net-ssh-4.1.0/lib/net/ssh/transport/server_version.rb:54:in `block (2 levels) in negotiate!'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/net-ssh-4.1.0/lib/net/ssh/transport/server_version.rb:52:in `loop'

もう少し読んでいってみたところ、下記に

github.com

Those who want to fix it now in your computer without waiting for 1.9.5 can replace 3 files changed in #8526 in vagrant installation directory.
For example in windows, those files are located in

C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.4/templates/locales/en.yml
C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.4/lib/vagrant/errors.rb
C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.4/plugins/communicators/ssh/communicator.rb
replace them with new en.yml, errors.rb and communicator.rb

Then you are good to go. It worked on my Windows 10 machine. One gotcha is in Windows, you have to change folder permission of the directory to edit or create new files.

と書いてありました。

https://raw.githubusercontent.com/chrisroberts/vagrant/2acded113c8f8915038b6230df1acfac43332c0c/templates/locales/en.yml

https://raw.githubusercontent.com/chrisroberts/vagrant/2acded113c8f8915038b6230df1acfac43332c0c/lib/vagrant/errors.rb

https://raw.githubusercontent.com/chrisroberts/vagrant/2acded113c8f8915038b6230df1acfac43332c0c/plugins/communicators/ssh/communicator.rb

を右クリックしてファイルを3つとも保存し、HashiCorp 以下のそれぞれのディレクトリにある元のファイルを置き換える。これで再度 Vagrant up してもエラーは出なくなった。

github.com

Vagrant 1.9.5 で修正予定のようです。

/* -----codeの行番号----- */