UBUNTUにXRDPしてNVIDIAのグラボを使ってモナコインマイニング
2017/08/17
Ubuntu 16.04 LTSを16.10にupgradeする
Ubuntu16.04 LTSでxrdpをインストールするといろいろとややこしいのですが、Ubuntu16.10以上なら、xrdp0.9がaptで簡単にインストールできます。
なので、まずはUbuntuを16.10にアップグレードします。
GUIを利用している場合は、「ソフトウェアの更新」を起動してしばらく待っていると、アップグレードの通知が表示されます。
この方法が一番簡単です。
コマンドでアップグレードする
Ubuntuのアップグレードに使うコマンドと、ファイルの編集用エディタのvimをインストールしておきます。
[root@test]# sudo apt-get update && sudo apt-get install -y update-manager-core vim←do-release-upgradeとvimをインストール
次にLTS版からアップグレードできるようにします。
[root@test]# vi /etc/update-manager/release-upgrades←release-upgradesを編集 [DEFAULT] #Prompt=lts←コメントアウト Prompt=normal←normalに変更
Ubuntu 16.04 LTSから16.10にアップグレードします。
[root@test]# sudo do-release-upgrade
しばらくインストール作業を待ちます。
download has finished, the process cannot be canceled.
Continue [yN] Details [d]←yを押す
作業中にダイアログが表示されたら、それぞれ選択します。
Postfix Configuration: No configuration Configuring grub-pc: keep the local version currently installed /etc/update-manager/release-upgrades: N Remove obsolete packages?: y System upgrade is complete.: y
再起動するとアップデート作業は完了です。
バージョンを確認します。
[root@test]# lsb_release -rd
Description: Ubuntu 16.10
Release: 16.10←アップグレードされています
xrdpリモートデスクトップ環境を構築する
Ubuntu 16.10になるとxrdp0.9が使えるようになるので、aptでインストールします。
[root@test]# sudo apt-get update [root@test]# apt-cache show xrdp | grep Version Version: 0.9.0~20160601+git703fedd-3←利用できるバージョン確認 [root@test]# sudo apt-get install xrdp -y←xrdpインストール [root@test]# sudo systemctl enable xrdp.service←自動起動設定 [root@test]# sudo systemctl start xrdp.service←起動
リモートデスクトップでログイン後、表示されない問題
この状態でリモートデスクトップで接続するとログイン画面は出るのですが、ログインすると灰色の画面になって接続が切れてしまいます。
この対策の為に、軽量なデスクトップ環境に変更します。
GNOME2から派生したMATEが良く利用されていますので、そちらをインストールします。
[root@test]# apt-cache show mate-core | grep Version←バージョン確認 Version: 1.16.0+1←バージョンは1.16です [root@test]# sudo apt update && sudo apt install mate-core mate-desktop-environment mate-desktop-environment-extra -y←MATE一式をインストール
また、日本語での入力ができるように、Mozcもインストールします。
[root@test]# sudo apt-get install ibus-mozc -y←Mozcインストール
起動時に、MATE環境でログインされるように、ibusとMATEの起動を設定します。
[root@test]# cat < ~/.xsession export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus export XMODIFIERS="@im=ibus" ibus-daemon -rdx mate-session EOF
再起動するとxrdp接続でMATEのリモートデスクトップ環境が使えるようになります。
[root@test]# shutdown -r now
再起動後に、右上メニューの[JP]となっている箇所を選択し、日本語-Mozcを選択して日本語入力できるか確認します。
CUDAインストール
ここまで、NVIDIAのドライバはインストールせずにすすめてきましたが、CUDAをインストールしようと思います。
UBUNTU16.10ですが、CUDA8.0のUBUNTU16.04版でインストール可能です。
Firefoxで、https://developer.nvidia.com/cuda-downloadsからダウンロードして、GUIでインストールしても大丈夫ですが、CLIでインストールする場合は次の手順になります。
[root@test ~]# wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub [root@test ~]# cat 7fa2af80.pub | sudo apt-key add - [root@test ~]# wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb [root@test ~]# sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb [root@test ~]# sudo apt update [root@test ~]# sudo apt install linux-generic [root@test ~]# sudo apt install cuda [root@test ~]# sudo apt install nvidia-375 [root@test ~]# sudo apt install nvidia-cuda-toolkit [root@test ~]# sudo reboot←再起動 再起動するとリモートで接続できなくなるので、一旦モニタに出力して作業してください。 [root@test ~]# sudo apt remove linux-virtual [root@test ~]# sudo apt autoremove [root@test ~]# rm 7fa2af80.pub cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
次に、~/.bashrcの末尾に下記を追加します。
[root@test]# sudo vi ~/.bashrc←.bashrcの編集 export PATH="/usr/local/cuda-8.0/bin:$PATH"←末尾に追加 export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"←末尾に追加
以上の作業が終わったら、ログオフして再度ログインしてください。
NVIDIA対応
先程のCUDAのインストール後に、ログオフしたら、xrdp0.9.xで接続できなくなりました。
ログを見ると以下のようなエラーが出ています。
[20170702-12:55:19] [INFO ] A connection received from ::1 port 50178
[20170702-12:55:20] [INFO ] ++ created session (access granted): username ssig33, ip 0.0.0.0:54550 – socket: 12
[20170702-12:55:20] [INFO ] starting Xorg session…
[20170702-12:55:20] [DEBUG] Closed socket 9 (AF_INET6 :: port 5920)
[20170702-12:55:20] [DEBUG] Closed socket 9 (AF_INET6 :: port 6020)
[20170702-12:55:20] [DEBUG] Closed socket 9 (AF_INET6 :: port 6220)
[20170702-12:55:21] [DEBUG] Closed socket 7 (AF_INET6 ::1 port 3350)
[20170702-12:55:21] [DEBUG] Closed socket 8 (AF_INET6 ::1 port 3350)
[20170702-12:55:21] [INFO ] Xorg :20 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp
[20170702-12:55:31] [ERROR] X server for display 20 startup timeout
[20170702-12:55:31] [INFO ] starting xrdp-sessvc – xpid=20458 – wmpid=20457
[20170702-12:55:31] [ERROR] X server for display 20 startup timeout
[20170702-12:55:31] [ERROR] another Xserver might already be active on display 20 – see log
[20170702-12:55:31] [DEBUG] aborting connection…
[20170702-12:55:31] [INFO ] ++ terminated session: username ssig33, display :20.0, session_pid 20456, ip 0.0.0.0:54550 – socket: 12
[20170702-12:58:30] [INFO ] shutting down sesman 1
こちらの直し方ですが、
/etc/X11/Xwrapper.config を編集して
allowed_users=anybodyに変更するだけで直ります。
[root@test]# sudo vi /etc/X11/Xwrapper.config←Xwrapper.configの編集 allowed_users=anybody←末尾の文字列を変更
以上で環境準備が完了です。
ccminerインストール
ここから、マイニングの為のアプリケーションを入れていきます。
GPUマイニングではccminerが良く使われているので、こちらからダウンロードしてビルドします。
http://askmona.org/5596
今回は、ccminer-windows-2.2-mod-r1.zipをダウンロードして、展開しました。
ビルドの手順としては
$ bash autogen.sh
$ ./configure
$ make
なのですが、まずはautoge.shの時点で、aclocal:コマンドが見つかりません
とエラーが発生します。
このエラーの原因はautomakeが無い為なので、automakeをインストールします。
[root@test]# sudo apt install automake -y←automakeインストール
これで、autogen.shを行って、./configureを行うと、
configure: error: OpenSSL library required
と出ますので、OpenSSLもインストールします。
[root@test]# sudo apt install libssl-dev -y←OpenSSLインストール
これで./configureを行うと、今度は
./configure: line 6177: syntax error near unexpected token `,’
./configure: line 6177: `LIBCURL_CHECK_CONFIG(, 7.15.2, ,’
とエラーが出ます。
今度はlibcurl-devをインストールする必要があります。
[root@test]# sudo apt install libcurl4-openssl-dev -y←libcurl-devインストール
libcurl-devをインストールしたら、再度autogen.shを実行して、./configure、makeの順で実行します。
[root@test]# cd /home/hoge/ccminer-windows-2.2-mod-r1←展開したディレクトリに移動
[root@test ccminer-windows-2.2-mod-r1]# bash autogen.sh
[root@test ccminer-windows-2.2-mod-r1]# ./configure
[root@test ccminer-windows-2.2-mod-r1]# make
今回はCUDA8.0とccminer2.2を利用したからかもしれませんが、GCCのバージョンが5以上の場合にエラーが出てビルドできない場合があります。
その際はGCCのバージョンを落とす必要があります。
GCCのバージョンを落とす
#error — unsupported GNU version! gcc versions later than 5 are not supported!
のエラーが出るので、4.9に変更
[root@test]# sudo apt install gcc-4.9 g++-4.9←gcc-4.9インストール
[root@test]# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
バージョンを4.9にしてから再度ビルドします。
[root@test]# cd /home/hoge/ccminer-windows-2.2-mod-r1←展開したディレクトリに移動
[root@test ccminer-windows-2.2-mod-r1]# bash autogen.sh
[root@test ccminer-windows-2.2-mod-r1]# ./configure
[root@test ccminer-windows-2.2-mod-r1]# make
また、以下のようなエラーが出る事もあります。
====
/usr/include/c++/6/bits/basic_string.tcc:219: `std::__cxx11::basic_string<char, std::char_traits, std::allocator >::_M_create(unsigned long&, unsigned long)’ に対する定義されていない参照です
collect2: error: ld returned 1 exit status
Makefile:987: ターゲット ‘ccminer’ のレシピで失敗しました
make[2]: *** [ccminer] エラー 1
make[2]: ディレクトリ ‘/home/yoshio/ccminer-windows-1.8.3-r1’ から出ます
Makefile:1787: ターゲット ‘all-recursive’ のレシピで失敗しました
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ ‘/home/yoshio/ccminer-windows-1.8.3-r1’ から出ます
Makefile:581: ターゲット ‘all’ のレシピで失敗しました
====
とエラーが出るので、
/usr/include/c++/6/bits/basic_string.tccの219行目をコメントアウトします。
[root@test]# vi /usr/include/c++/6/bits/basic_string.tcc←basic_string.tccを編集 :set number←行番号を表示させる # _M_data(_M_create(__dnew, size_type(0)));←219行目をコメントアウト
ccminer起動
今回の場合、ccminer-windows-2.2-mod-r1内にファイルを追加して実行します。
また、プールはVIP POOLを利用した場合ですので、各プールに合わせて設定を変更してください。
[root@test]# cd /home/hoge/ccminer-windows-2.2-mod-r1←ccminerのディレクトリに移動 [root@test ccminer-windows-2.2-mod-r1]# vi monacoin←monacoinという名称でファイルを作成 ./ccminer -a lyra2v2 -o stratum+tcp://vippool.net:8888 -u Weblogin.WorkerName -p WorkerPassword [root@test ccminer-windows-2.2-mod-r1]# bash ./ccminer←起動