MacのVirtual BoxにコマンドでVM作成(+CentOSインストール)

はじめに

結城智久(@TomohisaYuuki)です。
Virtual Boxを使えば簡単に仮想環境を構築することができます。
Virtual BoxはGUI操作ができますが、コマンド操作でVMが作成できないか気になったので調べて手順をまとめました。

(後半では作成したVMCentOSをインストールしていますが、こちらはGUI操作で行っています)

環境

  • ホストOS:macOS 10.15.6
  • パッケージ管理:Homebrew 2.5.1
  • 仮想化:Virtual Box 6.1.14r140239
  • インストールするゲストOS:CentOS 8.2.2004-x86_64

手順

  1. Virtual Boxをインストール
  2. CentOSのディスクイメージを取得
  3. Virtual BoxにVM作成
  4. VMCentOSをインストール

Virtual Boxのインストール

以下のコマンドをTerminalに打ってHomebrew経由でインストールできます。

brew cask install virtualbox

CentOSのディスクイメージを取得

CentOS公式サイトから取得します。
www.centos.org

CentOS Linux」の「V(yyyy)」タブの「ISO」カラムから「x86-64」をクリック。

f:id:TomohisaYuuki:20201007110944p:plain


以下からいずれかのリンクを選択。

f:id:TomohisaYuuki:20201007111041p:plain


必要なイメージファイルを選択してダウンロード。

f:id:TomohisaYuuki:20201007111105p:plain

ファイルの種類は以下の通りです。

  • 〜dvd1.iso:インストールに必要なパッケージが全部入ったISOイメージ。
  • 〜boot.iso:インストールに必要なパッケージをネットからダウンロードしてインストールするためのISOイメージ。
  • 〜minimal.iso:必要最低限のパッケージだけが含まれているISOイメージ。インストール後にyumコマンド等であとから自分で必要なパッケージを揃える必要がある。

VM作成+CentOSインストール

流れは以下のとおりです。

  1. VirtualBox上にVMを作成
  2. メモリ割り当て
  3. ハードディスクの作成と割り当て
  4. 光学ドライブの割り当てとディスクイメージのマウント
  5. その他の設定
  6. VM起動・CentOSインストール

1.Virtual Box上にVMを作成

最初にVirtualBoxVMを作成します。
ついでに作成したVMをVirtual BoxのGUIからも確認できるように設定しておきます。

VBoxManage createvm --name CentOS-8.2.2004-x86_64 --groups /Linux --ostype RedHat_64 --register
コマンド オプション 意味
createvm 新しいVMの設定ファイルを作成。
--name VMの名称を設定。
--groups OSのグループを設定。CentOSの場合はLinux
--ostype OSの種類を設定。CentOSの場合はRedHat_64。
--register VM設定ファイルの内容をVirtual Boxに登録してGUIでも見られるようにする。

2.メモリ割り当て

VMを作成しただけでは動作させることができないので、リソースを割り当てていきます。
まずは仮想メモリを割り当てます。今回は1GB(1024MB)にしますが、以下2点に注意してください。

  1. 端末のメモリ容量より大きな値を指定しない
  2. VM起動中はVMと端末でリソースを分け合うため、端末OS分のメモリ容量を考えた値を指定する(端末のメモリが16GBでVMに1GB割り当てた場合、端末OSが使用できるメモリ容量は残りの15GB分のみ)
VBoxManage modifyvm CentOS-8.2.2004-x86_64 --memory 1024
コマンド オプション 意味
modifyvm 作成済みVMのプロパティを変更する。変更対象はオプションで指定。
—memory 割り当てメモリサイズをMB単位で指定。

3.ハードディスクの作成と割り当て

続いてハードディスクを割り当てます。
ハードディスクはVMに追加したストレージコントローラーに作成した仮想HDを接続することで割り当てます。
今回はVirtual Boxが提供しているvdi形式で容量20GBの仮想HDを作成し、VMに追加したSATA形式のストレージコントローラーに接続することで割り当てました。

# 仮想HDの作成
VBoxManage createvdi --filename CentOS-8.2.2004-x86_64.vdi --size 20000

# ストレージコントローラの追加
VBoxManage storagectl CentOS-8.2.2004-x86_64 --name SATA --add sata --portcount 4 --bootable on

# 仮想ハードディスクの割り当て
VBoxManage storageattach CentOS-8.2.2004-x86_64 --storagectl SATA --port 1 --type hdd --medium CentOS-8.2.2004-x86_64.vdi
コマンド オプション 意味
createvdi 仮想HDをvdi形式で作成する。
--filename 仮想HDのファイル名を指定する。
--size 仮想HDのサイズをMB単位で指定する。
storagectl ストレージコントローラの操作を行う。操作対象はオプションで指定。
--name ストレージコントローラの名称を指定。
--add ストレージコントローラが接続するシステムバスの形式を指定。
--portcount ストレージコントローラがサポートするポート数を指定。
--bootable ブート可能か指定。
storageattach 作成済みのストレージコントローラに仮想HDを接続する。
--stiragectl 接続するストレージコントローラを指定。
--port 接続するストレージコントローラのポート番号を指定。
--type 接続する仮想HDの形式を指定。
--medium 接続する仮想HDの名称を指定。

4. 光学ドライブの割り当てとディスクイメージのマウント

インストールメディアを読み込む必要があるため、光学ドライブも割り当てます。
「3.ハードディスクの作成と割り当て」で追加したSATA形式のストレージコントローラーの空きポートに仮想光学ドライブを接続します。
ついでにインストールメディアのマウントも行っておきます。

VBoxManage storageattach CentOS-8.2.2004-x86_64 --storagectl SATA --port 2 --type dvddrive --medium ~/CentOS-8.2.2004-x86_64-dvd1.iso

5.その他の設定

念の為以下の内容を設定しておきます。
VMのブート順は設定必須です。
グラフィックコントローラーはデフォルト値「vboxvga」だと表示がおかしくなったため「vmsvga」を設定しています。

VBoxManage modifyvm CentOS-8.2.2004-x86_64 --vram 16 --graphicscontroller vmsvga --cpus 1 --boot1 dvd --boot2 disk --acpi on --ioapic on
コマンド オプション 意味
modifyvm 作成済みVMのプロパティを変更する。変更対象はオプションで指定。
--vram 割り当てるビデオメモリーサイズをMB単位で指定。
--cpus 割り当てる仮想CPU数を指定。
--graphicscontroller VMのグラフィックコントローラーを指定。指定できるのはnone/vboxvga/vmsvga/vboxsvga
--boot1〜4 VMのブート順を指定。指定できるのはnone/floppy/dvd/disk/net
--acpi ACPIをサポートするか指定。
--ioapic IOAPICをサポートするか指定。

6.VMの起動・CentOSインストール

以下のコマンドを打つとVMが起動します。

VBoxManage startvm CentOS-8.2.2004-x86_64
コマンド オプション 意味
startvm 指定したVMを起動する。

VMの画面が表示され、インストールメディアが読み込まれて以下の画面が表示されます。
「Install CentOS Linux 8」を選択します。

f:id:TomohisaYuuki:20201007112737p:plain


インストール言語を選択します。
「日本語」を選択して「続行」をクリック。

f:id:TomohisaYuuki:20201007112821p:plain


インストール概要では以下を設定します。

  • ネットワークとホスト名:Ethernet (enp0s3) をオンにする
  • 時刻と日付:「アジア」から「東京」を選択する
  • ソフトウェアの選択:「サーバー(GUI 使用)」を選択する
  • インストール先:既に選択されているので、「完了」をクリック

全ての設定を完了したら、「インストールの開始」をクリック。

f:id:TomohisaYuuki:20201007112853p:plain


インストールが開始されます。
インストールされているうちに「rootパスワード」と「ユーザの作成」を行っておきます。

f:id:TomohisaYuuki:20201007113111p:plain

完了したら「再起動」はクリックせず、以下のコマンドを実行してから再起動します。

f:id:TomohisaYuuki:20201007113029p:plain
# VMをシャットダウン
VBoxManage controlvm CentOS-8.2.2004-x86_64 poweroff

# 光学ドライブを空に
VBoxManage storageattach CentOS-8.2.2004-x86_64 --storagectl SATA --port 2 --type dvddrive --medium emptydrive

# ブート順変更
VBoxManage modifyvm CentOS-8.2.2004-x86_64 --boot1 disk --boot2 dvd

# VM起動
VBoxManage startvm CentOS-8.2.2004-x86_64

再起動すると以下の画面が表示されるので、クリックしてライセンスに同意します。
(場合によってはVMを起動してもエラーで落ちることがあるので、正常に起動するまでVMの再起動や、Mac本体の再起動を行ってください)

f:id:TomohisaYuuki:20201007113204p:plain
f:id:TomohisaYuuki:20201007113234p:plain


ログイン画面が表示されます。
これでインストール完了です。

f:id:TomohisaYuuki:20201007113257p:plain

おわりに

VM起動してからのインストール作業はGUI操作になっていますが、VMの作成自体はコマンドラインを使うことで楽にできるようになりました。コマンドラインからの操作って難しい印象がありましたが、GUI操作よりも便利かもしれません。
VMへのインストール作業やVM上のOS自体の操作もコマンドラインからできたらいいですね。調べてみようと思います。