とりあえず半歩

学んだことを1日1個、簡単なことでも良いから記録していきたい。

VirtualBoxを使って仮想のUbuntu環境を用意する

目標

Dockerを使って気軽に作りなおしたり使い捨てできる開発環境や、用途別にした環境を簡単に用意できるようになる

動機

C#JavaScript, Perl, RにSQL, ソースコードの管理にWebアプリのデバッグ環境、文書管理などなどを一つの環境でやってきたけれど、片付けベタな自分にはもう何がどこにあって環境がどうなっているか把握できなくなってきた。

そこで用途別に環境を用意して、自分用サーバみたいな使い方をし、それぞれの環境を綺麗に保ちたい。

また、新しいことを始める際に専用の環境を用意することで他の何かが影響して「なかなか前に進まない!」という状況を減らしたい。

おまけでLinuxの使い方を学びたい。

課題

VirtualBoxを使って仮想環境のUbuntuを用意する。

Dockerというのを会社の後輩君から教えてもらったんだけれども、調べていたらVagrantVirtualBoxという単語も出てきた。わからないことだらけなので、まずはVirtualBoxから上辺を眺めはじめて、ちょっと触ってみる。

取組

実行及び用意する環境

VirtualBox

VirtualBox - Wikipediaを見た。こんなことが書いてあった。

Oracle VM VirtualBox (オラクル ブイエム バーチャルボックス)とは、x86仮想化ソフトウェア・パッケージの一つ。現在の開発は米国オラクルが行っている。

概要には例示もあった。

既存のオペレーティング・システム(ホストOS)上にアプリケーションの一つとしてインストールされ、この中で追加のオペレーティング・システム(ゲストOS)を実行することができる。例えば、Windows XPがホストOS として動作しているマシン上で、Linuxをゲストとすることができる。あるいは、Solarisが実行されているマシン上で、Windows VistaをゲストOSとして実行することが出来る。

私は「PCの中に仮想のPCを用意するためのソフトウェア」という理解をした。

VirtualBoxのインストールとその他準備

VirtualBoxのインストール・設定・使い方を詳しく解説 | VirtualBox Maniaを参考に、Ubuntu 15.04の環境を用意した。

上記サイトに至極丁寧に書いてあるため、たいへん助かった。以降は、作業しつつわからなかった単語・忘れていた単語について調べたことを書き残す。

チップセット

PIIX3ICH9インテルチップセットのよう。

PIIX3がPentium製品で、ICH9がIntel 3 Series製品なので、ICH9の方が新しいみたいだ。

ちなみにどちらもサウスブリッジ(複数集積回路からなるチップセットで、そのうちCPUから遠い方にある集積回路のこと)とのこと。

PIIX3を選択した。

VT-x/AMD-V

ハードウェア仮想化支援機構というものだそうだ。 私は『Intelの仮想化支援機能「Intel VT」とは? − @IT』を参考とした。

上記の参考サイトはIntelのVT-xの説明なのだけれど、その中では

  • 今までソフトウェア側で行っていたハードウェア・リソースの制御をハードウェア側で少し肩代わりすることで早くする
  • 仮想マシンのアドレスをホストマシンのアドレスに変換するサポートをして早くする

ということをしてくれるらしい。古い記事だから今はもっと進化しているかもしれない。

3Dアクセラレーション

これも目的は「ソフトウェアでエミュレートしてたけれど、ハードウェアを使うことで早くする」機能のよう。 早くする対象はOpenGLや3D DirectX、つまり3D表現かな。

参考にしたページは次の通り * 3Dアクセラレーションを有効化 | VirtualBox Mania * 【レビュー】VirtualBoxの3Dアクセラレーションを有効にする方法 | マイナビニュース

IDE, SATA, SCSI

IDESATAはどちらもハードディスクとの接続仕様。

生まれはIDEが先で、その後にSATA
(SATAの前にATAっていうパラレル転送方式のハードディスク接続仕様があって、SATAATAをシリアル転送方式にしたもの)

だから、IDEよりSATAの方が性能は良いようだ。

SCSIはコンピュータと周辺機器の接続仕様で、こちらはハードディスクだけでなくてキーボードやマウスが含まれる。

アダプタ

NAT

Network Address Translationの略で、プライベートアドレスとグローバルアドレスの相互変換する方法。

これのおかげでプライベートアドレス側(ゲストOS側)からグローバルアドレス側(インターネット側)へ接続可能だけれど、逆は不可能という環境が作れる。
(ゲストOSはNATによって、さもグローバルアドレスを使ってインターネットへ接続しているように見えており、ゲストOSへの接続経路はNATのアドレス相互変換機能によって隠されてしまうため)

ポートフォワーディング

NATだとインターネット側・ホストOS側からも接続ができなくなってしまうので、ポートを指定して、そこでのみ外部からの通信を許可する仕組み。

NAT, ポートフォワーディングの参考サイトは以下

ホストオンリー

ゲストOS間の通信とホストOSとの通信を許可して、ゲストOSから外部への通信は拒否する構成。

ブリッジ

ゲストOSを、さもネットワーク上にあるように扱う構成。外部への通信も外部からの通信も制限がないため、ホストOSと同様にセキュリティ対策が必要。

ホストOSへの接続も可能なのかな? たぶん可能なんだろうけれど試していないし、ブリッジは怖いから今のところ試すつもりもない。だから本当はどうなのかわからない。

次の参考サイトがVirtualBoxで選択できるネットワーク構成をわかりやすくまとめてくださっていました。

NATを使いつつ、ホストOSからの接続も可能っていう構成も可能のよう。

結果

Ubuntuを立ち上げるたびにシステムエラーを吐いていたが、下記サイトと同じ現象だったため解決でき、現在は正常に動作する。

感想

知らない単語がたくさんあると怖いと感じるけれど、実際は怖いんじゃなくて面倒くさいだけ。まずは一つ調べる。

わからない単語も忘れた単語も一つ一つ調べていけば、少しは分かる。とりあえず半歩。