こんにちは。
皆さん草コイン掘ってますか?
世の中にある草コインのマイニングって何故かOSX(macOS)に対応していない事が多いですよね。面白そうな草コインを見つけても発掘するにはWindowsかLinuxを利用しないといけないことが多いです。
macOSでもVirtualBoxなどの準仮想化環境を使うことでそれなりの効率でLinux上からのマイニングができます。ただ少しだけ重厚長大気味のためセットアップが大変で、mac使いとしては日頃から気軽に掘れないのが悩みどころでした。
そこで今回は xhyve というOSX向けの仮想化ハイパーバイザーを使って、macOS上で簡単にUbuntuの環境を構築していきたいと思います。
(ubuntu on xhyve on macOS になるイメージです)
xhyve のビルドはすごく簡単です。リポジトリをcloneしておもむろにmakeするだけです。(もちろん事前にCommand Line Toolはインストールしておいてください)
$ git clone https://github.com/mist64/xhyve
$ cd xhyve
$ make
$ sudo cp build/xhyve /usr/local/bin
これだけ!すごく簡単です。
-v でバージョンが見れるので下記のように表示されれば問題ありません
$ xhyve -v
xhyve: v0.2.0-40-g1f1dbe
xhyve is a port of FreeBSD's bhyve hypervisor to OS X that
works entirely in userspace and has no other dependencies.
Homepage: https://github.com/mist64/xhyve
License: BSD
今回使うLinuxのディストリビューションはubuntuにしました。各種ビルドする手順だったり apt-get でインストール手間が省けるためにこれにしています。
インストーラより最小のイメージ(initrd, vmlinuz, mini.iso)を落としてきます
$ mkdir vm
$ cd vm/
$ curl -O http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz
$ curl -O http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux
$ curl -O http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/mini.iso
今回は16GBの仮想ディスクを用意します。(8GBとかでも問題ありませんが、今後色々入れていくのである程度大きいほうがいいかもしれません)
先程の mini.iso イメージをダウンロードしたディレクトリにて
$ dd if=/dev/zero of=storage.img bs=1g count=0 seek=16
これでstorage.imgというファイルが出来上がっていると思います。
下記コマンドを入力しubuntuのインストールを行いましょう
なお、xhyve経由でubuntuのインストールをするのでmacOSには影響はありませんが、腕に自信のない方はParallels DesktopだったりVirtualBoxなどを使うほうがいいかもしれません。
$ sudo xhyve \
-c 1 \
-m 512M \
-s 0:0,hostbridge \
-s 2:0,virtio-net \
-s 3,ahci-cd,mini.iso \
-s 4,virtio-blk,storage.img \
-s 31,lpc\
-l com1,stdio \
-f "kexec,linux,initrd.gz,earlyprintk=serial console=ttyS0 acpi=off root=/dev/vda1 ro"
インストーラが起動すると10年近く前に見たようなCUIのインストール画面が出ますので、これを使ってインストールを進めていきます
ここからまだ長いですがインストールを続けていきます。
"Choose Laungage" は English で言語を選択し、インストールを続行していきます。
暫くインストールを進めていくと、"Input your hostname" のように入力を求められることがありますので、適宜入力してください。
私は hostname を macubuntu に、username/password を vivo/vivo で設定しました。(home directoryの暗号化はしていませんがお好みで設定するといいでしょう)
"Configure the clock" でタイムゾーンの設定を行います。"Asia/Tokyo" で良いか?のように聞かれると思いますので、正しければそのまま進めましょう。
Partition disks の設定は少し悩むかもしれませんが、今回作成した16GBのイメージが選択されていれば問題ないので、Guidedのまま進めて、パーティションを仮想ディスクに書き込みましょう。
"Update install" や "Software selection" を聞かれるので、時間に余裕があるときはアップデートして、必要なソフトウェアを選択しましょう。
私の場合は "Basic Ubuntu server" と "OpenSSH server" を選択してインストールを開始しました。
しばらくインストールが進むと、 "Install the GRUB boot loader to the master boot record?" と聞かれるので "<Yes>" 選択して進みます。
"Finish the installation." をいくつか進めると下記画面のように "Installation complete" が表示されるので、ここでいったん <Go Back> を選択します。
こうすることでインストールを中断してメニュー画面を表示することができます。
この画面で、"Execute a shell" を選択し、xhyveの仮想マシン上のコンソールから下記を入力します
# ip addr show dev eth0 | grep 'inet ' | cut -d" " -f6 | cut -d/ -f1
こうすることで、この仮想マシンのipアドレスが取得できたと思います。この後にmacから操作するので、このipアドレスはメモ帳などに残しておきます。
私の場合は 192.168.64.3 でした
次に、initrd, vmlinuxの送信するため、下記のようにします
# cd /target
# tar cf - boot/initrd.img-* boot/vmlinuz-* | nc -l -p 1234
こうすることで、受信待機中となります。
この間に、母艦となるmac側から下記コマンドを入れて受け取ります。
$ nc 192.168.64.3 1234 | tar xf -
無事転送が終わったら、インストーラを起動している xhyve の方に戻り
# exit
として抜け、"Finish the installation" を選択してubuntuのインストールを終わらせましょう
次に mac から 下記スクリプトを用意します。ここでは "start.sh" としておきましょう
#!/bin/sh
cd "$(dirname $0)"
MEM="-m 1024M"
SMP="-c 1"
KERNEL="$(ls boot/vmlinuz-* | sort -u | tail -1)"
INITRD="$(ls boot/initrd.img-* | sort -u | tail -1)"
CMDLINE="earlyprintk=serial console=ttyS0 acpi=off root=/dev/vda1 ro"
NET="-s 2:0,virtio-net"
IMG_HDD="-s 4,virtio-blk,./storage.img"
PCI_DEV="-s 0:0,hostbridge -s 31,lpc"
LPC_DEV="-l com1,stdio"
sudo xhyve ${MEM} ${SMP} ${PCI_DEV} ${LPC_DEV} ${NET} ${IMG_HDD} -f "kexec,${KERNEL},${INITRD},${CMDLINE}"
このスクリプトを用意したら、ubuntuの起動になります。
$ chmod +x ./start.sh
$ ./start.sh
start.sh を起動すると次のような画面が流れ、ubuntuのログイン画面になると思います。
インストール時にvivo/vivoで作っているため、ログインを行い、初期セットアップを行っていきます。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo apt-get install vim
$ sudo update-alternatives --set editor /usr/bin/vim.basic
sudo を打つ時にいちいちパスワードを入れるのも面倒なため
$ sudo visudo
では、下記のように入力しておくと便利です
vivo ALL=NOPASSWD: ALL
avahi-daemon も入れていきましょう。母艦から "vivo@macubuntu.local" のように入れるように。
$ sudo apt-get install avahi-daemon
後はお好みでいくつかインストールを行い、一度シャットダウンしておきます。
$ sudo apt-get install -y xterm
$ echo "export TERM=xterm-256color" >> $HOME/.bashrc
$ sudo shutdown -h now
その後、start.shより起動させ mac から下記コマンドで入れれば成功です
$ ssh vivo@macubuntu.local
今回も前回に引き続き、VIVOのビルドを行いたいので、cpuminer-neoscrypt を使っていきます。
(ちなみに、vivoって響きがいいですよね。viva のような響きがあって。)
いつも同じライブラリを入れていますが、今回も忘れずに入れていきます。
$ sudo apt-get install -y git openssl
$ sudo apt-get install -y g++ make automake autoconf m4
$ sudo apt-get install -y autotools-dev
$ sudo apt-get install -y pkg-config build-essential
$ sudo apt-get install -y python-software-properties
$ sudo apt-get install -y libssl-dev libcurl4-openssl-dev
$ sudo apt-get install -y libjson0 libjson0-dev libjansson-dev
$ sudo apt-get install -y libgmp-dev libgmp3-dev
macOSだとマクロの除去だったりパスの設定が面倒なのですが、macで動いているubuntuなため、すんなりビルドできます。(これすごく感動します)
$ mkdir vivo
$ cd vivo
$ git clone https://github.com/ghostlander/cpuminer-neoscrypt
$ cd cpuminer-neoscrypt/
$ ./autogen.sh
$ ./nomacro.pl
$ ./configure CFLAGS="-O2 -fomit-frame-pointer -DASM -DOPT -DMINER_4WAY -DSHA256"
$ make
minerd が生成されていれば成功です。
なお、start.sh で SMP の数を -c 1 のままにしていると、CPUが全然使われないため、お使いのマシンに合わせて -c の数を調整してください。
私の場合は macmini late 2014 の Core i5 を使っているため、-c は 3 としました(-c 4でも良いのですが、3のほうが結果が良かったため)
start.sh の
SMP="-c 1"
を
SMP="-c 3"
にして再起動します。
モノが違うので比べるものではないのですが、前回のNanoPi Neo が、0.780KH/sに対して
平均して 10.1423 KH/s も出る結果となりました。
想像はしていましたが、約12倍強 も性能がでるようです。(CortexとCore i5を比べるのもアレゲですが...)
MacBookProやMac miniをお持ちの方で、草コインを掘りたいんだけど、windowsかlinuxでしかビルド方法が提供されていなくて、泣く泣くマイニングを諦めていた方はこの方法でビルドするのはいかがでしょうか?
なお、ビルドが大変な cpuminer-opt もこの方法ですんなりビルドできます。
それでは
Have a Fun!
ちなみに 私の VIVO アドレスはこちらです
VQb2BFHbML5B29XiFBD3ArEKCJBnFG92mh
(vivo:VQb2BFHbML5B29XiFBD3ArEKCJBnFG92mh)
ちなみに 過去記事はこちら → https://alis.to/users/eito