やりたいこと:ローカルにVMでLinux環境を作ってテストサーバとか動かしたい。
最初はDockerで構築しようと思ったけど、Windows10 HomeのPCなのでDocker Toolboxじゃないと構築できないし、じゃあWSL環境でネイティブのDockerが動くと評判なので入れてみたら、WSLはdocker-composeがまだ(2018年10月時点)ネットワーク周りの設定が動かない。
というわけで結局、VirtualBoxにUbuntuを入れた話。
- ホスト: Windows10 Home
- VirtualBox 5.2.18
- ゲスト: Ubuntu 18.04
ホストOSとの通信やネットワークの設定で少しハマったので手順を残しておきます。
VirtualBoxのインストール
これは普通に。
ゲストOSのインストール
これも普通に。
今回はUbuntu 18.04をインストール
イメージはこの辺 http://releases.ubuntu.com/18.04/ubuntu-18.04.1-live-server-amd64.iso
この時点でVMのUbuntuからのインターネット接続はVirtualBoxがよしなにしてくれてるので問題ないはず。
ただ、ホストOSであるWindowsからゲストOSのUbuntuへは接続するネットワークの経路がないため通信できない。
ホストOSからゲストOSへの通信
VirtualBoxを入れたホストのWindows10から、ゲストのUbuntuへ接続するための(個人的に)一番単純な方法は「ホストオンリーアダプター」を使った構成。
(TODO:接続のイメージ図)
(ホストOS)ネットワークの作成
インストール時になんか設定が足りなかったのか、いろいろググって出てきた手順がうまくいかなかったので、手動で作成。
まず[グローバルツール]を表示
[作成]する
ホストオンリーアダプタが作成される
この時点で、Windowsのネットワークにも新しく作成されたネットワークアダプタが確認できる
ゲストOSのネットワーク設定を開き、アダプター2にホストオンリーアダプタを追加設定
(ホストOS)ネットワークのプロパティ
[プロパティ]ボタン押下でネットワークアドレスの設定ができる
「アダプターを手動で設定」で、VirtualBoxで動かすVMの追加ネットワークのネットワークを設定できる。(自動にするとどうなるかは未確認)
把握しやすいアドレス帯を入力しておく。
DHCPは任意。VMをサーバとして動かして静的IPを設定するのであればたぶん不要。クライアント用途で動かす予定があるならonにしておいても良い。
(VM)NICの追加
VMのネットワーク設定の、「アダプター2」のタブを開く。
「ネットワークアダプターを有効化」し、「ホストオンリーアダプター」を割り当てる
これでゲストOSにNICが追加される。
そして、ネットワークのプロパティに設定したIPアドレスに合わせてゲストOSのIPアドレスを設定する。
(ゲストOS)追加したネットワークインタフェースに固定IPを設定
Ubuntu 17.10からネットワークの設定は「Netplan」に変更されている。
- Ubuntu 17.10 その29 - Netplanの紹介とNetplanの基本 - kledgeb
- 【Ubuntu18.04のネットワーク設定方法】Netplanの解説 - komeの備忘録
- networking - How to setup a static IP on Ubuntu 18.04 - server - Ask Ubuntu
- Configure Static IP Addresses on Ubuntu 18.04 LTS Server | Website for Students
- Ubuntu Server 18.04 LTSで複数のNIC(ネットワークカード)を使える様にする: 一日一事未満
- Ubuntu 18.04 LTSで固定IPアドレスを設定する方法【サーバー編】 | Linux Fan
- Ubuntu 18.04 LTSで固定IPアドレスの設定 - Qiita
ip a
またはifconfig -a
で見える追加されたNIC(enp0s8
のはず)に対する設定を/etc/netplan/50-cloud-init.yaml
に追記する。
静的IPアドレスであればこれだけでOK(optional
も無くてよい)
--- /etc/netplan/50-cloud-init.yaml.org 2018-10-24 22:16:36.024000000 +0900
+++ /etc/netplan/50-cloud-init.yaml 2018-10-27 10:54:32.612000000 +0900
@@ -8,4 +8,7 @@
enp0s3:
addresses: []
dhcp4: true
+ enp0s8:
+ addresses: [192.168.244.89/24]
+ optional: true
version: 2
変更後netplan apply
を実行すれば設定が反映され、ホストOSからこのアドレスに対して通信ができるようになる。
ホストOS起動時にバックグラウンドで指定VMを起動させる
使いたいときにVirtualBoxのマネージャーを起動してVMを起動するのも面倒なので、タスクスケジューラを使ってWindowsが起動したときにVMもバックグラウンドで動作するようにする。
タスクスケジューラを起動
実行するコマンドは以下の通り
プログラム | 引数 |
---|---|
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" |
startvm "ubuntu1804_x64" --type headless |
ubuntu1804_x64
は起動したいVMの名前
タスクの作成
「基本タスクの作成」から
タスク名を入力
トリガーに「コンピューターの起動時」を選択
操作
プログラムと引数を入力
これでタスクが作成されるが、起動時に設定するために権限の設定を追加する。
「ユーザーがログオンしているかどうかにかかわらず実行する」を選択し、「最上位の特権で実行する」はチェック…しなくてもよい
これでPC起動時に指定のVMもバックグラウンドで起動する