見出し画像

GCP(Google Cloud Platform)の仮想マシンでVirtualBoxを使って64bitマシンを構築

GCPとは

Googleが提供するクラウドコンサービスの総称で、AWSやAzureと同様に従量課金制のサービスですが、無料試用枠もあるので今回そちらを利用してみます。Google社内で使われているものと同じインフラを利用できるそうで、機械学習系のサービスなども利用できます。

すっごくざっくりでしかも個人の感想ですが、AWSやAzureに比べて非常にわかりやすくコンソールが作られてて、インスタンスの立ち上げまでもとても簡単でした。特にAzureは最初の仮想インスタンスを立ち上げるまでのステップが長すぎて心が折れましたので、もう触りたくないです。あれはどこで課金されてるのかもわかりにくいんじゃないかな・・・。GCPも料金体系はあんまわかってないですが、とりあえず300ドル分ぐらいは無償で利用できるらしいです。

仮想マシンのネスト

GCP上の「Compute Engine」は仮想インスタンスを作成できます。要はクラウド上にマシンをポコポコ作り出せるっていう代物で、RDPとかで接続もできるのでリモートデスクトップで手元のマシンと変わらず使えます。ただ、私は自分が持ってるVirtualBoxイメージとかをそのまま使ったりしたいので、GCPのVMインスタンス上でさらにVirtualBoxを入れて「64bitの」仮想マシンを使うというVM on VM状態をやりたいわけです。仮想マシンのネストというやつです。こういったクラウドサービス上の仮想インスタンスでは、通常はVirtualBox入れても32bitしか選択肢が出てきません。ただしGCPはちょっとおまじないをすることで可能ということがわかったのでやってみます。これがAWSやAzureではようわからんかった(そもそもできるのかできないのか調べきれてない。できてもややこしそう)GCPもまあそれなりに面倒ですが、難しくはなかった。

Google cloud SDK

仮想マシンのネストは通常のコンソールからのインスタンス作成ではできなくて、有効になるようなディスクイメージを作ってあげないといけなくて、そのためにGcloud SDKってのをつかってコマンドでごにょごにょしなくちゃいけないらしい。

SDKをダウンロードしてきてtarで解凍して以下のコマンドで使えるようにしておきます。確か初期化のあたりでGoogleアカウントのログインが必要になったと思うので、GCPで登録したアカウントでログインしておきます。あ、私はMac環境でやってます!

インストール
$ ./google-cloud-sdk/install.sh
初期化
$ ./google-cloud-sdk/bin/gcloud init
補助機能の有効化
$ gcloud config set accessibility/screen_reader true
プロジェクトの選択
$ gcloud config set project <プロジェクト名>

プロジェクトの選択は、GCP上で作っているプロジェクト名を指定しておいてください。私はこれ用に新しいプロジェクトを作っておきました。イメージの作成は、いくつかあるイメージファミリーから選択して行います。作りたいマシンのイメージを選ぶので、今回はubuntu 18.04LTSを選択しました。

コマンドは以下の通りです。

$ gcloud compute disks create <作成ディスク名> --image-project ubuntu-os-cloud --image-family ubuntu-1804-lts --zone us-central1-b
Created [https://www.googleapis.com/compute/v1/projects/<プロジェクト名>/zones/us-central1-b/disks/<作成ディスク名>].
NAME            ZONE           SIZE_GB  TYPE         STATUS
<作成ディスク名>  us-central1-b  10       pd-standard  READY

--image-projectの引数や--image-familyの引数を希望のイメージに変更すると他のものでも可能かと思います。次にできたディスクにライセンスを適用したイメージを作成します。

$ gcloud compute images create <作成イメージ名> --source-disk <作成したディスク名> --source-disk-zone us-central1-b --licenses "https://compute.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
Created [https://www.googleapis.com/compute/v1/projects/<プロジェクト名>/global/images/<作成イメージ名>].
NAME           PROJECT    FAMILY    DEPRECATED   STATUS
<作成イメージ名>  <プロジェクト名>                       READY

コマンド長いですが、これで起動できるイメージが作成できましたので、さらにコマンドで起動します。Haswell CPU プラットフォーム以降をサポートするゾーンにインスタンスを作成する必要があります。あるそうです。

$ gcloud compute instances create <作成インスタンス名> --zone us-central1-b --min-cpu-platform "Intel Haswell" --image <作成イメージ名>

コンソールからも確認できました。

スクリーンショット 2020-05-17 21.01.56

IP制限とかいろいろコンソールからできるので、設定してしまいます。

仮想インスタンスを使ってみる

インスタンスにはとりあえずブラウザ上でSSHに接続できるので、そこからデスクトップ環境まで構築してRDPで接続できるようにしておきました。

アップデート
$ sudo apt update
$ sudo apt -y upgrade
ubuntu-desktopとxrdpのインストール
$ sudo apt -y install ubuntu-desktop xrdp
$ sudo systemctl enable xrdp
$ sudo systemctl start xrdp
リモートデスクトップ用のユーザ作成
$ sudo adduser username
$ sudo gpasswd -a username sudo
リモートデスクトップの設定
$ cat <<EOF | sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla  
[Netowrkmanager]  
Identity=unix-user:*  
Action=org.freedesktop.color-manager.create-device  
ResultAny=no  
ResultInactive=no  
ResultActive=yes  
EOF
再起動
$ sudo reboot

再起動後は、RDP接続できるようになってるはずです。ちと重いですけど。

スクリーンショット 2020-05-17 14.14.34

コマンドを実行して、ネストされた仮想化が有効になっていることを確認します。有効であれば、ゼロ以外が返されるはず・・・

$ grep -cw vmx /proc/cpuinfo
2

よかったよかった。あとはアップデートとかちょいちょいやってから、Virtualboxをインストールしてみました。これで64bitOSが選べるはずです。

スクリーンショット 2020-05-17 21.31.36

成功!あとは好きなように触ってみます。無料の範囲内で・・・。ちょっとスペックいいのにしてみようかな。

この記事が気に入ったらサポートをしてみませんか?