VirtualBoxでWindowsのゲストOSとしてCentOSを動作させる
[History] [Last Modified] (2018/08/13 16:15:26)
ここは
趣味のプログラミングを楽しむための情報共有サービス。記事の一部は有料設定にして公開できます。 詳しくはこちらをクリック📝
Recent posts
Popular pages

概要

仮想マシンを動作させるソフトウェアには「仮想マシンを複数のPCからアクセスするサーバとして扱う」用途のものと「仮想マシンをデスクトップアプリケーションの一つとして扱う」用途のものがあります。

仮想マシンを複数のPCからアクセスするサーバとして扱う

「ホストするOSの上にサーバ用途の仮想マシンが存在するタイプ」と「サーバ用途の仮想マシンが直接ハードウェア上に存在できホストOSは不要なタイプ」があります。前者の例としてはLinuxやWindowsをホストOSとして必要とする無償の "VMware Server" があります。後者の例としては有償の "VMwarevShere(ESXi)" があります。

仮想マシンをデスクトップアプリケーションの一つとして扱う

デスクトップアプリケーションとして仮想マシンを起動させるホストOSによって、使用できる仮想化ソフトウェアが異なります。

  • VMware Player(無償): Windows, Linux
  • VMware Workstation(有償): Windows, Linux
  • VMware Fusion(有償): Mac OS X
  • VirtualBox(無償): Windows, Linux, Mac OS X

ここでは、ホストOS WindowsのデスクトップアプリケーションとしてゲストOS CentOSを扱うためのVirtualBox使用方法を記載します。

VirtualBoxの設定

インストール

ダウンロードページにアクセスします。ホストOSはWindowsですので "for Windows hosts" のものをダウンロードしてインストールします。

初期設定

「ファイル」→「環境設定」をクリックします。

Uploaded Image

一般

仮想マシンの動作に必要なファイルの保存場所を変更したい場合は変更します。

入力

マウスポインタが仮想マシンに対してアクティブになっている状態から、ホストOSに対してアクティブな状態に戻すためにはホストキーとして割り当てられたキーを押す必要があります。自分が押しやすいホストキーに変更しておくことをお勧めします。

Uploaded Image

プロキシ

プロキシサーバが必要な環境であれば設定しておきます。VirtualBoxのアップデート情報をダウンロードする際に使用される設定情報であり、ゲストOSの使用するネットワーク設定とは全く関係がないことに注意してください。

仮想マシンのためのハードウェア設定

「新規」をクリックします。こちらのページにありますように、CentOSはRedHatディストリビューションと完全互換を目指しているLinuxのディストリビューションの一つであるため、「名前:CentOS」「タイプ:Linux」「バージョン:RedHat」と設定します。

Uploaded Image

残りの設定は以下のようにしておきます。

  • メモリ: 512MB
  • ハードドライブ: 仮想ハードドライブを作成する
  • ハードドライブのファイルタイプ: VDI(VirtualBox Disk Image)
  • 物理ハードドライブにあるストレージ: 可変サイズ
  • ファイルの場所とサイズ: 32GB

以上で、ゲストOSをインストールする仮想的なハードウェアの準備が整いました。

ゲストOS CentOS のインストール

ISOイメージのダウンロード

こちらのページからダウンロードできます。先程の仮想ハードウェア設定でRedHat(32bit)としたので32bitのものをダウンロードする必要があります。ここではCentOS-6のi386 (32bit) を採用しました。世界中のダウンロード用のサーバリストが表示されますが、地理的に近いものを選択します。イメージタイプのうち

  • CentOS-6.5-i386-bin-DVD1.iso

をダウンロードしてください。README.txt に記載のあるように「CentOS-6.5-i386-bin-DVD2.iso」は不要です。

Uploaded Image

ISOイメージのインストール

「起動」をクリックします。

Uploaded Image

初回起動時にはディスク選択を求められます。ドライブではなく先程ダウンロードしたISOイメージを選択してください。何かしらの操作ミスで選択し損ねた場合、右下のディスクアイコンを右クリックして選択してください。

Uploaded Image

初回起動時にはVirtualBoxの基本的な使用方法に関する注意書きが表示されますので、読んでおくようにしましょう。

Uploaded Image

「Install or upgrade an existing system」を選択

Uploaded Image

「OK」を選択

Uploaded Image

「Test」を選択

Uploaded Image

「OK」を選択

Uploaded Image

「OK」を選択

Uploaded Image

「Continue」を選択

Uploaded Image

Ejectされてしまったので、エラーが出てしまいます。右下のディスクアイコンを右クリックしてISOイメージを選択して「OK」を押してください。

Uploaded Image

「OK」を選択

Uploaded Image

キー配列について質問されます。ここでは "us" を選択しました。キー配列ナニソレ、という方は既定で選択されている "ja" を選択しておくのがよいです。

Uploaded Image

ハードディスクが壊れていると表示されますので、「Re-initialize all」を選択します。ゲストOS向けに割り当てられた仮想ハードウェアの範囲で初期化されるだけです。

Uploaded Image

タイムゾーンを選択します。

Uploaded Image

管理用rootユーザのパスワードを設定します。

Uploaded Image

初期設定のままでよいです。「OK」を選択

Uploaded Image

「Write changes to disk」を選択

Uploaded Image

「Reboot」を選択

Uploaded Image

再起動後、rootユーザについて、先程のパスワードでログインできます。

Uploaded Image

外部インターネットへの接続設定

CentOSのネットワーク設定ファイルを開きます。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

Uploaded Image

設定について、

ONBOOT=no

となっていますので

ONBOOT=yes

に変更します。

Uploaded Image

保存してから

# service network restart

を実行してください。ネットワーク設定が有効になりますので、例えば

# curl http://www.yahoo.co.jp/

が通るようになります。プロキシ設定が必要な環境においては、「.bashrc」にプロキシ設定を記載して

# source ~/.bashrc

を実行しておく必要があります。外部インターネットに接続ができることが確認できたら、初回ですので

# yum update

を実行してパッケージを最新の状態にしておきましょう。

ホストOSからCentOSへのネットワーク接続設定

NATでの外部回線へのアクセスについて

VirtualBoxマネージャの「設定」をクリック

Uploaded Image

ネットワークのアダプター1にNATが割り当てられていることが確認できます。先程curlコマンドで外部接続する際にはこのアダプタを経由していたのです。

Uploaded Image

  • 割り当て: NAT
  • MACアドレス: 0800271AEBD9

というのがポイントです。割り当てNATにしておくと、VirtualBoxマネージャによって仮想的なルータがホストPCが所属するネットワーク内に仮想的に作成され、その仮想ルータ配下に作成されたサブネットワーク内にCentOSが存在する状態となります。

Uploaded Image

において

HWADDR=08:00:27:1A:EB:D9

となっていることからも分かるように、eth0というネットワークインターフェースはこのアダプタ1で作成された仮想ルータを経由して、ホストPCが所属するネットワークにNAT (Network Address Translation; ネットワークアドレス変換) して入り、更にホストPCが所属するネットワークのゲートウェイを経由して外部のインターネットにアクセスします。

ホストオンリーアダプタの追加

上述のNATアダプタによって作成されている仮想サブネットワーク内のゲストOSにアクセスするため、仮想ルータに対してポートフォワーディング設定を行うことも可能です。つまり、ホストPCから仮想ルータに対してTCPアクセスがなされた際にゲストOSにアクセスが転送されるように設定することによって、ホストPCからゲストOSへのアクセスができる状況が実現できます。しかしながら、設定がやや煩雑であるため、もっとシンプルな解決策として、ホストオンリーアダプタの追加というものをここでは採用します。

NATアダプタの設定は、ゲストOS毎にありました。しかしながら、実は、VirtualBoxをインストールした時点でゲストOSによらない「VirtualBox Host-Only Network」というものが一つ作成されており、VirtualBoxマネージャの環境設定におけるネットワークで確認できます。

Uploaded Image

Windows側でipconfigによっても確認できます。

$ ipconfig

...(略

イーサネット アダプター VirtualBox Host-Only Network:

   接続固有の DNS サフィックス . . . : 
   リンクローカル IPv6 アドレス. . . . : fe80::edf9:ce64:4d4b:7049%34
   IPv4 アドレス . . . . . . . . . . : 192.168.56.1
   サブネット マスク . . . . . . . . : 255.255.255.0
   デフォルト ゲートウェイ . . . . . : 

この仮想的なネットワーク内にはNATの場合と異なり仮想ルータが存在しません。ホストOSのみが所属しており、外部回線へのアクセスは不可能なネットワークです。ここにゲストOSを所属させるとホストPCと直接で有線接続された状況が実現でき、ゲストOSのネットワークインターフェース設定 eth1 を追加することで、ホストPCからゲストOSへのアクセスが可能になります。

まず、ゲストOSをシャットダウン (halt) し、「CentOS設定 → ネットワーク → アダプター2 → ネットワークを有効化 → 割り当て:ホストオンリーアダプタ」とすることで、ホストPCが所属する「VirtualBox Host-Only Network」仮想ネットワークに物理的にゲストOSを接続します。eth1の設定で必要になりますので、「高度」をクリックしてMACアドレスをメモしておきます。

Uploaded Image

次に、ゲストOSを起動し、「/etc/sysconfig/network-scripts/ifcfg-eth1」というファイルを新規作成し

DEVICE=eth1
HWADDR=xx:xx:xx:xx:xx:xx ←先程確認したアダプタ2のMACアドレス)
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
IPADDR=192.168.56.10 ←「VirtualBox Host-Only Network」で有効な範囲の固定したいIPアドレス
NETMASK=255.255.255.0 ←「VirtualBox Host-Only Network」のネットワーク設定を参照
NETWORK=192.168.56.0 ←「VirtualBox Host-Only Network」のネットワーク設定を参照

という内容で保存します。

# ifup eth1

を実行すると、先程物理的に接続したネットワークがゲストOSにとって有効なネットワークeth1として認識され、ifconfigコマンドを実行するとIPアドレスがeth1について固定で設定されていることが確認できます。この状態で、ホストPCで

$ ping 192.168.56.10

192.168.56.10 に ping を送信しています 32 バイトのデータ:
192.168.56.10 からの応答: バイト数 =32 時間 =11ms TTL=64
...

となり、アクセスできるようになっていることが確認されます。

参考情報

192.168.56.10が「VirtualBox Host-Only Network」にルーティングされることは

$ netstat -rn ← 「-r ルーティング テーブルを表示します」「-n アドレスとポート番号を数値形式で表示します」
....
          0.0.0.0  0.0.0.0  192.168.100.254  192.168.100.100  25 ← デフォルトゲートウェイ
....
     192.168.56.0   255.255.255.0  リンク上  192.168.56.1    276 ← VirtualBox Host-Only Networkのルーティング設定
....

というルーティングテーブルによっても確認できます。実際

$ traceroute 192.168.56.10

$ traceroute 192.168.0.10

ではルーティングが異なることが確認できます。Unixコマンドが実行できないWindowsであれば "tracert 192.168.56.10" を実行してください。

参考情報 (その2)

再起動を繰り返していると、ある時「VirtualBox Host-Only Network」のIP設定が「192.168.56.1」ではなく「169.254.112.73」等になり、ホストPCからゲストOSへアクセスできなくなってしまうことがあります。そのような場合は「環境設定」→「ネットワーク」→「ホストオンリーネットワーク」から新規ネットワークを追加

Uploaded Image

新規作成されたネットワークの編集をクリック

Uploaded Image

ネットワーク設定を「192.168.56.1」「255.255.255.0」に設定

Uploaded Image

ipconfigで、新規ネットワークがWindowsPC側で認識されていることが確認されます。

Uploaded Image

CentOS側の「設定」→「ネットワーク」→「アダプタ2」→「名前」を先程作成したネットワークに変更してください。MACアドレス等は変更されないためeth1の設定変更は不要です。

Uploaded Image

Debian9 の場合 (参考情報)

VirtualBox で Debian9 を動作させる場合も、同様に NAT と HostOnlyAdapter を併用すると便利です。CentOS と同じアダプタを使い回して以下のように設定できます。CentOS に割り当てた固定 IP が 192.168.56.10 であったため Debian には 192.168.56.11 を割り当てています。

sudo vi /etc/network/interfaces

# NAT
allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet dhcp

# HOST ONLY
allow-hotplug enp0s8
auto enp0s8
iface enp0s8 inet static
address 192.168.56.11
network 192.168.56.0
netmask 255.255.255.0
broadcast 192.168.56.255

sudo systemctl restart networking.service
Related pages
    概要 Chefを用いると、各種ソフトウェアのインストールや設定ファイルの更新といった、従来であればサーバにログインして手動で行うしかなかった作業を自動化できます。ここではChefの基本を理解することを目的として、『VirtualBoxでWindowsのゲストOSとしてCentOSを動作させる』の手順で用意した、ほぼまっさらな状態のCentOSに対して、『
    概要 VyOS は Debian GNU/Linux をもとにしたオープンソースの OS です。かつて無償提供されていた Vyatta Core から fork して開発されています。ルーティングソフトウェア Quagga やこちらのページに記載した OpenVPN を利用した、ソフトウェアルータとしての機能を有しています。AWS EC2 の AMI も Marketplace で提供されており
    概要 Jenkins は GUI の cron のようなツールです。いわゆる CI (continuous integration) のために利用されます。cron と異なり様々な条件をフックして job を実行できます。実行後の挙動もカスタマイズ可能です。プラグインも豊富に提供されています。以下では CentOS 7 にインストールする手順をまとめます。CentOS 7 は例えば「
    概要 Git を用いたプロジェクト開発を複数人で行う場合、サーバーでレポジトリ管理を行えると便利です。何らかの事情で GitHub や Bitbucket を利用できない場合は、サーバーを構築して GitLab をインストールします。ここでは特に CentOS 6 の場合についてインストール手順をまとめます。 コマンドを実行するサーバーの用意
    概要 Docker オーケストレーションツールの一つに Kubernetes (k8s) があります。k8s 実行環境の構築方法は複数ありますが、ここでは AWS や GCP 等のクラウドサービスを利用せず、Debian9 がインストールされた複数台の物理マシンがネットワーク内に存在する状況を考えます。これら複数の Debian9 上に k8s クラスタを立ち上げるためには
    概要 QT を Python から利用するためのライブラリには PyQt や PySide 等が存在します。PySide は元々 QT4 向けのライブラリでしたが、QT5 に対応するために新たに PySide2 が開発されました。PySide2 は Qt for Python ともよばれています。 Q: PySide? Qt for Python? what is the name?