VPSテスト用VM環境をつくろう

先日マスターノードを立てたZijaCoinなど
「Windowsウォレットやgithubのソースコードはあるけど
Linux用コンソールウォレットがアップされていないコイン」
は言うまでも無く自力ビルドが必要ですが、激安VPSの場合
・ウォレット1個ビルドするのに1時間くらいかかる
・そもそもメモリが足りなくてSWAPしまくり
などの問題があったりします。

ですが「メインPCがCore i7で無意味にメモリ16GBオーバー積んでる」
みたいな人はバーチャルマシン(VM)でVPSと同一環境を再現すれば
ビルドはVMで、実行はVPSで……といった使い分けが可能です。

今回はざっくりとその手順を。

1.vmwareからVMware Workstation Playerの最新版をダウンロード。

2.インストールしたら初回起動で「非商用」を選択。
※無いと思いますが、社内(法人)で実行する場合はライセンスが必要です。

3.Ubuntu 64-bit PC (amd64, x86_64)からVPSと同一バージョンの
mini.isoをダウンロード(※普通はUbuntu 16.04 LTS “Xenial Xerus”)

4.VMware Workstation Playerを起動して「新規仮想マシンの作成」で
・インストール元はディスクイメージファイルmini.iso指定。
・ゲストOSを「Linux」。バージョンを「Ubuntu 64ビット」。
・仮想マシン名と保存場所は任意。
・ディスク最大サイズは40GB以上でSSDドライブの利用が望ましい。
・”ハードウェアをカスタマイズ”でメモリ4~8GB、プロセッサ2~4コア。
・USBコントローラ、サウンドカード、プリンタは「削除」でOK。
・ディスプレイも「3Dグラフィックスのアクセラレーション」は不要。

5.定義が終わったら「仮想マシンの再生」でUbuntuをInstall。
※ちなみにインストール中のマウスカーソル脱出はCTRL+ALT。

6.言語はJapanese、はい、日本。キーボード配列は「いいえ」。
Japanese、Japanese (OADG 109A)、で進行。
ホスト名はUbuntuから任意のものに変更してよい。
アーカイブミラーなどはデフォルトで良いのでエンターキーで進行。

7.ユーザーアカウントはぶっちゃけ user とか何でもいい。
パスワードも適当に、ホームディレクトリ暗号化は「いいえ」。
時間の設定は「はい」。パーティショニングも「はい」「はい」。
ディスクに変更を書き込みますか?「いいえ→はい」。
「自動的にアップデートしない」。

8.インストールするソフトウェアの選択は、下から2番目の
”OpenSSH server”のみをスペースキーでチェック入れてエンター。

9.ブートローダのインストールは「はい」。
システム時間も「はい」。最後の確認は「続ける」。

すぐリブートしてログイン画面が出ればOSセットアップ完了。

・超手抜き設定へ

どうせクローズドVMなのでセキュリティはガン無視で環境作ります。

1.ログインしたらrootのパスワードを変更してexitで脱出してrootログイン。
sudo passwd root
exit
login: root

この時点で日本語表示はバグってますが気にしなくてOK。
大体この時点で「VPSを借りた直後とほぼ同じ状態」です。

2.SSHでrootログインできるようにするためコンフィグ書き換え
nano /etc/ssh/sshd_config

変更前 PermitRootLogin prohibit-password
変更後 PermitRootLogin yes

SSH再起動。
service sshd restart

IPアドレスを確認。
ifconfig

3.SSHで接続する(RLoginの場合は下図のような感じ)

あとはZijaCoinのマスターノード構築の「~VPSセットアップ編~」と
同じ流れで sudo apt-get update ~…で必要モジュールを導入すればOK。
適当なコインをビルドして正常にプログラムが生成されれば成功です。

~おまけ~

autogen.sh→configure→make→make install…でパスを通すタイプの
プログラムは最後のmake installを実行せず、githubで落とした
ソースコードの /src/ ディレクトリで ls コマンドで一覧を出せば
大抵そこにビルド済みのプログラム(RLoginなら緑色表示)があります。

ただしデバッグ情報がバイナリに含まれていて異常に容量が
巨大なのでそれを削り落としてやりましょう。
例えばzijacoinなら
strip zijad
strip zija-cli
です(zija-txは不要)

VMからビルドしたプログラムを取り出す時はFTP daemonでも良いですが
クライアントソフトRLoginはSFTPを使えるので「ファイル→SFTPファイル転送」
でVMから簡単にファイルをコピー出来ます。

~VMでブロック同期完了させるのも良い~

ブロック同期に時間がかかるコインなどはVM上で同期を完了させて、
VPSにコピーしてから展開することでブロック同期にかかる
負荷を軽減させることが出来ます。
(CPU使用率100%を長時間続けてアカウント凍結くらわないため)

ZIPインストール
apt-get install zip -y

VMでウォレットの同期を完了させてから
cd ブロック格納ディレクトリ(/root/.zija/など)
rm *.log
zip -r test *

生成したtest.zipをVPSの同ディレクトリにコピーしてから
unzip test.zip

wallet.datを上書きしてぶっ壊さないように気をつけましょう。
(VMのwallet.datをrmで削除してから固めるほうが安全かも)