ホスト Windows 7 の VirtualBox でゲスト Ubuntu とファイル共有(Guest Additions 導入)

VirtualBox にファイルの共有があります。ホスト OS と ゲスト OS でファイルを共有できます。

仮想マシンをシャットダウンした状態で、仮想マシンの設定にファイル共有が現れます。ホスト OS 側の適当なフォルダを選択します(パスに日本語や空白を 含まないほうが無難かもしれません)。共有フォルダ名をメモしておきます。今回は “share_VirtualBox” ですが、クリップボードにコピーしておくと便利です。

共有設定すると、ゲストの Linux でのマウントの方法と、それには Guest Additions がインストールされていなければならないことが表示されます。

仮想マシンを起動すると、仮想マシンのウィンドウに「デバイス」があり、「Guest Additions のインストール…」という項目があります。これを選択すると、インストーラのファイル類が仮想の CD-ROM としてマウントされます。/media にマウントされます。ターミナル(端末)を起動して VBOXADDITIONS~ ディレクトリの中に入ります。今回は、

$ CD /media/VBOXADDITIONS_3.2.10_66523

でした。その中に各種 OS 用のインストーラがあります。今回は Ubuntu 10.04 desktop (32bit) なので、VBoxLinuxAdditions-x86.run を選びます。

$ sudo ./VBoxLinuxAdditions-x86.run

これでいいのかどうかよくわからないのですが、動いたようです。インストールにはしばらく時間がかかります。root 権限がいるので、ファイル・ブラウザでファイルを直接ダブルクリックしても実行できません。Windows ユーザは、Linux で実行ファイルを実行するときにはカレントディレクトリの ./ を付加しなければいけないことを忘れがちですね。

再起動を要求するメッセージが表示されるはずなので、仮想マシンを再起動します。

仮想マシンのウィンドウが広くなりました。Guest Additions を導入すると、ホスト側のディスプレイ情報をゲストに渡すようです。また、ホスト側 Windows とゲスト側 Ubuntu とでコピー&ペーストできるようになります。

Guest Additions が動いているので、上で設定した共有フォルダ “share_VirtualBox” を /mnt 直下にマウントしてみます。

$ sudo mount -t vboxsf share_VirtualBox /mnt

エラーがなければ成功しています。ためしに、

$ ls /mnt

すると、Windows 側のファイルが見えています。

ファイルをコピーするには cp コマンドに再帰オプション -r でもかまいませんが、ファイル・ブラウザを使ったほうがエクスプローラ風に扱えて楽です。ただし、ファイル・ブラウザで「隠しファイルを表示する」設定にしておかないとドットファイル( .htaccess など)が漏れてしまうので注意が必要です。

(2010.11.13)

(追記 2011/7/25)

久々に、(ホスト)Windows 7 + VirtualBox 4.1 + (ゲスト)Ubuntu 11.04 Desktop 日本語 でやってみました。

Guest Additions のインストール

VirtualBoxのウィンドウ上部の「デバイス」メニューから 「Guset Additions のインストール」 を選択、促されるままに「はい」「はい」進めると、GUI だけで Guset Additions のインストールが完了しました。ホスト・ゲスト間でコピー&ペーストできます。

ホスト・ゲスト間の共有フォルダ

いったんゲストのUbuntuをシャットダウン。「Oracle VM VirtualBox マネージャー」ウィンドウからゲストマシンを選び、「共有フォルダ」をクリック、「新規共有フォルダを追加」アイコンから、ホストのフォルダを指定。このとき「自動マウント」にチェックを入れておきます。ゲストマシン Ubuntu の電源を入れると、ログイン直後に共有フォルダがマウントされた状態になっています。場所は /media の下。

(2011/7/25) (2011/9/29)

VirtualBox “ホストオンリー ネットワーク インターフェースの作成に失敗しました”

Windows 7 上の VirtualBox 3.2.10 r66523 で、

ホストオンリー ネットワーク インターフェースの作成に失敗しました。

というエラーが出てしまう問題が発生しました (2010.11.12)。

Google “ホストオンリー ネットワーク インターフェースの作成に失敗しました”

で検索したところ2件がヒットしました。2件ということは、他の人はこのエラーにはまっていないか、さらっと対処できたということなんでしょうね。その2件に、対応する英語のエラーメッセージらしきものを発見。英語のメッセージで再度検索しました。

Google “Failed to create the host-only network interface”

こちらは984件! 一番上を開いてみました。すると、バージョンがやや古い(2.2)ながら、同じ現象で苦しんでいるという書き込みでした。

[2.2] VirtualBox Host-Only Network adapter not created (View topic) • virtualbox.org

順に読んでいったところ、ずっと後ろのほうで、強制的に Windows のデバイスとして追加する方法の書き込みがありました。

Re: [2.2] VirtualBox Host-Only Network adapter not created

Postby ink » 26. Feb 2010, 16:26
Just fixed this for myself, hope it helps others having the same problem :

Control Panel > Add New Hardware > (New network adapter)
Have Disk > (point it to C:\Program Files\Sun\VirtualBox\drivers\network\netadp\VBoxNetAdp.inf)
Select > VirtualBox Host-only Ethernet Adapter > (Say OK to install the unsigned driver)

Apparently no need to reboot, so good luck all!

ということで、Windows のコントロールパネルから手動で無理矢理(?) 追加してしまうというもの。Windows 7 ではデバイス マネージャから追加ですし、「ディスクから追加」のパスも …\Sun\… ではなく …\Oracle\… ですが、 VBoxNetAdp.inf がありました。これを開くと、「VirtualBox Host-Only Ethernet Adapter」が現れます。追加すると、VirtualBox でも VirtualBox Host-Only Ethernet Adapter が選択肢に現れ、VirtualBox でホストオンリー ネットワークを設定できるようになりました。成功!

そういえば、最近、Sun が Oracle に買収されて、「証明書」が無効になったが処理を続けるのか、どうする?というようなエラーメッセージを見たような記憶があります。もしかして、そのせいかも?(未確認)。

もともと何をやりたかったかというと、ゲスト OS の Ubuntu で動かしている web サーバ類 (Apache, PHP, MySQL) に、ホスト OS の Windows 側からアクセスしたかったわけです。しかし、ホストのマシン以外からはゲスト マシンにはアクセスさせたくなかったのです。ゲストは外のネットワークから隠しておきたい。そういう場合、Google 「virtualbox ネットワーク」 で設定方法を解説したページはたくさん見つかります。たとえばこんな感じです。

「アダプタ1で”NAT”を、アダプタ2に”ホストオンリーアダプタ”を選択」すればよいのですが、アダプタ2でエラーが発生して困っていたのでした。

意図したとおりに動いているかどうか、念のため確認しました。ゲスト OS の Ubuntu のターミナルで ifconfig を実行すると、eth1 が 10.0.2.15、eth2 が  192.168.56.102、lo が 127.0.0.1 となっていました。ホスト OS の Windows から eth2 の 192.168.56.102 でアクセスできました。LAN の他のマシンからはこのアドレスでアクセスできませんでした。設定は成功したようです。 🙂

(2010.11.12)

Ubuntu 10.04 のパッケージ管理・更新

Ubuntu 10.04 のパッケージ管理は APT。

手動で CUI でターミナルから実行するには、

sudo apt-get update
sudo apt-get upgrade

を続けて実行する。upgrade だけだと更新が実行されない。

GUI では

sudo aptitude

……ということらしいです。

(2010.11.11)

仮想マシンに LAMP を入れる tasksel

ローカルな仮想マシンに LAMP を入れます。LAMP は Linux、Apache、MySQL、PHP ですね。

ホストは Windows 7 Ultimate、VirtualBox で Linux は Ubuntu 10.04 desktop です。個人でローカルに動かして試すだけなら、Ubuntu server よりも desktop にサーバを入れたほうが日本語等の扱いが楽だと思います。試しに Ubuntu server を入れるなら、まずは英語にしておくのが無難です。

なお、以下、セキュリティは考慮していません。

tasksel で一括インストール

Apache、PHP、MySQL については順に一つずつインストールしてもかまいませんが、tasksel コマンドを使えば、一括で入れることができます。ターミナルで、

sudo tasksel

で、ソフトウェアの選択画面が出るので、上下の矢印で項目を移動し、

[*] LAMP server

にスペースキーでチェック [*] を入れます。[tab] キーで <了解> に移り、[Enter] 。

MySQL の root のパスワードを求められるので入力します。

あとは放っておくとインストールされます。

cf.

動作確認

Apache

Apache (httpd) は Firefox を立ち上げて、http://localhost/ にすると 「It works!」と表示されます。

その index.html は /var/www/ にあります。

ユーザ名が USERNAME なら、

cd /var/
sudo chown USERNAME -hR www

などとしておくとよいかもしれません。

PHP

taskset でインストールした場合(個別にインストールした場合も)、直後はまだ apache が PHP を認識していないので、再起動します。

sudo /etc/init.d/ apache2  restart

適当につくった PHP ファイルを実行させてみます。たとえば、

<?php

print(“hello\n”);

?>

を /var/www/hello.php と名前をつけて保存、ブラウザで URL に http://localhost/hello.php を指定すると、hello と表示されます。(上の例をコピー&ペーストするときは、二重引用符「”」のコードが書き換わっているかもしれないので、半角英数の通常の二重引用符で上書きすること)

環境設定一式を眺めるなら、次のような PHP が実用的です。ただし、セキュリティ上あぶないので、外部には公開しないことが前提です。

<?php

phpinfo();

?>

cf.

phpMyAdmin

MySQL を管理するのに phpMyAdmin をインストールします。

sudo apt-get  install  phpmyadmin

しばらくすると設定をきかれるので、

自動再設定をする web サーバ: [*] apache2

を選択。

phpmyadmin のデータベースを dbconfig-common で設定しますか? <はい>

<はい>を選択。

データベースの管理権限を持つユーザのパスワード:

パスワードを(複数回)入力。

apache を再起動します。

sudo /etc/init.d/ apache2  restart

ブラウザの URL に

http://localhost/phpmyadmin/

と入力すると、phpMyAdmin のログイン画面になります。上述の root のパスワードで入れます。ちなみに、information_schema、mysql、phpmyadmin の3つのデータベースが作られた状態でした。

cf.

(2010.11.10 – 2010.11.11)

このメモは Ubuntu 10.04 desktop の環境ですが、Ubuntu desktop 11.04 日本語版でもほぼ同じでした。(2011.8.9)

(2011.8.9) (一部修正・追記)

VirtualBox の仮想ハードディスクをコピーする

VirtualBox で仮想ハードディスクを丸ごとコピーして複製を作る方法

より

  1. Windows のコマンドプロンプトを開き、VirtualBox のフォルダ (“C:\Program Files\Oracle\VirtualBox\”) に移動。
  2. VBoxManage.exe  clonehd  元ファイル名.vdi  複製ファイル名.vdi
    を実行。.vdi のあるフォルダ(パス)は指定しなくてよい。
  3. 複製した.vdi で仮想マシンを起動: 「新規」作成で既存のハードディスクを選択、リストに出てこないので、さらに選択画面を開いて選択。

または、エクスプローラからのドラッグ&ドロップを併用するなら、

  1. Windows のコマンドプロンプトを開く。
  2. エクスプローラで、VBoxManage.exe をコマンドプロンプトにドロップ。
  3. 半角空白の間に、 clonehd
  4. エクスプローラでコピー元となる .vdi ファイルをドロップ。
  5. 半角空白を一つ入れ、コピー先のファイル名を入力。実行。

ということで、フルパスを指定して同様に実行されます。

スナップショット後のコピー

スナップショットをとったあとに上述のコピーを行うと、スナップショットをとる前の(最初の状態の)ハードディスクがコピーされます。スナップショットごとに別のハードディスクとして認識して、別々の UUID が割り振られているからです。任意のスナップショットの状態のハードディスクを得たい場合は、コピーにハードディスク名でなく UUID を使います。

まず、ハードディスクの UUID を調べます。

C:\Program Files\Oracle\VirtualBox>VboxManage  list  hdds

すると、ずらずらと UUID が表示されます。使いたいスナップショットを探し、その段落の一番上の行の UUID をマウスでコピーします。その UUID をコピー元として貼り付けます。

C:\Program Files\Oracle\VirtualBox>VboxManage  clonehd   コピー元の長いUUID  コピー先ファイル名.vdi

コピーされた HDD はスナップショットのときの状態で新たな HDD になります。そのスナップショットより前のスナップショットには戻れません。戻りたいときは新たな HDD のクローンを作ることになるようです。

(2010.11.17)

余談

ローカルのメインマシンに仮想マシンを作って、そこに WordPress をインストール、テスト環境を作ろうと思ったわけです。

Ubuntu 10.04.1 server をいじっていたら、重要なフォルダ・ファイルが消えてしまったようで、起動できなくなりました。修復するより再インストールのほうが楽そうだったのですが、Ubuntu 10.04 desktop は動く状態なので、それをコピーして使おうという魂胆です。インストールの手間と時間もばかになりませんからね。

(2010.11.10)

追記 (2010.11.16)

インストールが終わったあと、更新が終わったあとなど、適当な時期に「スナップショット」をとっておくと、その時点まですぐに戻れます。

一部訂正 (2010.11.17)

追記 (2011.07.25)

久々に、(ホスト) Windows 7 + VirtualBox 4.1 + (ゲスト) Ubuntu 11.04 Desktop 日本語 の環境でやってみました。微妙に VirtualBox の動作が変わったようにも思えますが、だいたい同じ操作でうまくいくようです。