Running a Monero node from source under Ubuntu 16 LTS

This howto is made to show you how to run a Monero node. To run a Monero node we need the official monero daemon software:

monerod

This program will start and wait for the network synchronization – our Monero node will receive all the blockchains of the network!
Installing (or compiling it) the Monero software of the official site will ensure you have the right software for generating and sending/receiving transactions securely and privately! Always use your node software for generating the Monero wallet address, DO NOT TRUST any sites, which offer you a creation of Monero wallet. In crypto world the one how controls the private key of the wallet (which is generated with the creation of the wallet) controls the Monero wallet address so controls your funds! Just Install or compile a Monero node software – Building from source a Monero node under Ubuntu 16 LTS and you’ll everything you need to manage your Monero funds!
It’s worth mentioning again this section of Monero node howto:
And also be warned DO NOT use insecure sources when:

  1. installing Ubuntu, install it from a cd/dvd/usb downloaded from the official Ubuntu site here.
  2. installing all the needed dependencies from official sources only, not recommended the PPA reposigories, neither!
  3. install yourself the “monerod” program (the official Monero software), which will create a Monero node and after network synchronization could be used to create a Monero node.

Three simple rules could almost eliminate leaking your private key to hackers, which in blockchain world means losing your money…
And before start the installation a performance advice do not attempt to run a Monero node in a hard disk –

USE SSD

If you use a hard disk even in RAID configuration it could take several days for network synchronization and probably your machine will be useless during the synchronization.

STEP 1) Install Ubuntu 16 – our howto will be available soon here.

STEP 2) Building from source a Monero node

Check out our howto “Building from source a Monero node under Ubuntu 16 LTS“.

STEP 3) Start the Monero node

if you have followed the howto in STEP 2) you probably have “monerod” installed in “~/monero/build/release/bin”, so run it with:

ubuntu@srv.local:~/monero/build/release/bin$ ./monerod &> ./monerod.log

It is a good practice to run it with screen and in an infinite loop – if the program crashes it will start automatically and you’ll always have a synchronized node, of course, if you do not need a Monero node running all the time the infinite loop is not needed. The user could just start the node, wait for synchronization and then make your transactions and stop the node, after several days you can start it up the catching up the synchronization won’t take much time:

ubuntu@srv.local:~$ screen -R monero
ubuntu@srv.local:~$ cd monero/build/release/bin
ubuntu@srv.local:~/monero/build/release/bin$ while true; do ./monerod &> ./monerod.log;done

STEP 3) Wait for the blockchain network synchronization

This step could take significant amount of time, server resources and network bandwidth! USE SSD(s) for your home directory, because the blockchain database will be saved at your

home directory/.bitmonero/

If you want to move it on another server or directory (or device) you must copy this directory to the new location.
The generated IO is so extensive that a traditional hard drive probably will not be able to catch up with the synchronization.
When you run “monerod” it will check the current state of the network and the current state of your Monero node, so no matter it is started for the first time or not a network synchronization is needed, your node need to be synchronized with the Monero network to be used for all kind of actions in the network (create a wallet, transfer funds and more).
Here is the output of just started Monero node:

2018-03-14 14:05:03.470     7fa0d08cb780        INFO    global  src/daemon/main.cpp:280 Monero 'Helium Hydra' (v0.11.1.0-master-a03d34f)
2018-03-14 14:05:03.470     7fa0d08cb780        INFO    global  src/daemon/protocol.h:53        Initializing cryptonote protocol...
2018-03-14 14:05:03.470     7fa0d08cb780        INFO    global  src/daemon/protocol.h:58        Cryptonote protocol initialized OK
2018-03-14 14:05:03.470     7fa0d08cb780        INFO    global  src/daemon/p2p.h:63     Initializing p2p server...
2018-03-14 14:05:07.725     7fa0d08cb780        INFO    global  src/daemon/p2p.h:68     P2p server initialized OK
2018-03-14 14:05:07.725     7fa0d08cb780        INFO    global  src/daemon/rpc.h:63     Initializing core RPC server...
2018-03-14 14:05:07.725     7fa0d08cb780        INFO    global  contrib/epee/include/net/http_server_impl_base.h:76     Binding on 127.0.0.1:18081
2018-03-14 14:05:07.725     7fa0d08cb780        INFO    global  src/daemon/rpc.h:69     core RPC server initialized OK on port: 18081
2018-03-14 14:05:07.725     7fa0d08cb780        INFO    global  src/daemon/core.h:86    Initializing core...
2018-03-14 14:05:07.725     7fa0d08cb780        INFO    global  src/cryptonote_core/cryptonote_core.cpp:426     Loading blockchain from folder /home/ubuntu/.bitmonero/lmdb ...
2018-03-14 14:05:07.726     7fa0d08cb780        WARN    blockchain.db.lmdb      src/blockchain_db/lmdb/db_lmdb.cpp:75   Error attempting to retrieve a hard fork version at height 0 from the db: MDB_NOTFOUND: No matching key/data pair found
2018-03-14 14:05:07.782     7fa0d08cb780        INFO    global  src/cryptonote_core/cryptonote_core.cpp:524     Loading checkpoints
2018-03-14 14:05:07.853     7fa0d08cb780        WARN    net.dns src/common/dns_utils.cpp:508    WARNING: no two valid MoneroPulse DNS checkpoint records were received
2018-03-14 14:05:07.853     7fa0d08cb780        INFO    global  src/daemon/core.h:92    Core initialized OK
2018-03-14 14:05:07.853     7fa0d08cb780        INFO    global  src/daemon/rpc.h:74     Starting core RPC server...
2018-03-14 14:05:07.853 [SRV_MAIN]      INFO    global  src/daemon/rpc.h:79     core RPC server started ok
2018-03-14 14:05:07.854 [SRV_MAIN]      INFO    global  src/daemon/p2p.h:78     Starting p2p net loop...
2018-03-14 14:05:08.854 [P2P1]  INFO    global  src/cryptonote_core/cryptonote_core.cpp:1380
**********************************************************************
The daemon will start synchronizing with the network. This may take a long time to complete.

You can set the level of process detailization through "set_log <level|categories>" command,
where <level> is between 0 (no details) and 4 (very verbose), or custom category based levels (eg, *:WARNING).

Use the "help" command to see the list of available commands.
Use "help <command>" to see a command's documentation.
**********************************************************************

2018-03-14 14:05:09.033 [P2P1]  WARN    net.dns src/common/dns_utils.cpp:508    WARNING: no two valid MoneroPulse DNS checkpoint records were received
2018-03-14 14:05:31.467 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:310     [201.243.239.81:18080 OUT] Sync data returned a new top block candidate: 1 -> 88194 [Your node is 88193 blocks (61 days) behind] 
SYNCHRONIZATION started
2018-03-14 14:05:31.603 [P2P2]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:310     [198.27.83.210:18080 OUT] Sync data returned a new top block candidate: 1 -> 1529571 [Your node is 1529570 blocks (1422 days) behind] 
SYNCHRONIZATION started
2018-03-14 14:05:31.945 [P2P9]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [198.27.83.210:18080 OUT]  Synced 101/1529571
2018-03-14 14:05:32.099 [P2P1]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [198.27.83.210:18080 OUT]  Synced 201/1529571
2018-03-14 14:05:32.235 [P2P2]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [198.27.83.210:18080 OUT]  Synced 301/1529571
2018-03-14 14:05:32.373 [P2P1]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [198.27.83.210:18080 OUT]  Synced 401/1529571
....
2018-03-14 17:29:28.313 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [138.201.60.198:8180 OUT]  Synced 1373712/1529677
2018-03-14 17:29:30.436 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [159.65.180.162:18080 OUT]  Synced 1373732/1529677
2018-03-14 17:29:30.476 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [159.65.180.162:18080 OUT]  Synced 1373752/1529677
2018-03-14 17:29:30.521 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [159.65.180.162:18080 OUT]  Synced 1373772/1529677
2018-03-14 17:29:30.568 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [159.65.180.162:18080 OUT]  Synced 1373792/1529677
2018-03-14 17:29:31.172 [P2P4]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [46.4.115.244:18080 OUT]  Synced 1373812/1529678
2018-03-14 17:29:31.230 [P2P4]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [46.4.115.244:18080 OUT]  Synced 1373832/1529678
2018-03-14 17:29:31.294 [P2P4]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [46.4.115.244:18080 OUT]  Synced 1373852/1529678
2018-03-14 17:29:33.491 [P2P1]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1373872/1529678
2018-03-14 17:29:33.528 [P2P1]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1373892/1529678
2018-03-14 17:29:33.610 [P2P1]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1373912/1529678
2018-03-14 17:29:35.340 [P2P3]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [175.100.229.201:18080 OUT]  Synced 1373932/1529678
2018-03-14 17:29:35.470 [P2P3]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [175.100.229.201:18080 OUT]  Synced 1373952/1529678
2018-03-14 17:29:35.510 [P2P3]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [175.100.229.201:18080 OUT]  Synced 1373972/1529678
2018-03-14 17:29:35.545 [P2P3]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [175.100.229.201:18080 OUT]  Synced 1373992/1529678
2018-03-14 17:29:35.597 [P2P3]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [175.100.229.201:18080 OUT]  Synced 1374012/1529678
....
2018-03-15 01:39:27.558 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529705/1529905
2018-03-15 01:39:30.650 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529725/1529905
2018-03-15 01:39:35.917 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529745/1529905
2018-03-15 01:39:38.774 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529765/1529905
2018-03-15 01:39:41.596 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529785/1529905
2018-03-15 01:39:45.872 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529805/1529905
2018-03-15 01:39:49.150 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529825/1529905
2018-03-15 01:39:52.294 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529845/1529905
2018-03-15 01:39:54.072 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529865/1529905
2018-03-15 01:39:58.084 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529885/1529905
2018-03-15 01:39:59.552 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529898/1529905
2018-03-15 01:40:01.494 [P2P7]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1167    [176.9.53.68:18080 OUT]  Synced 1529905/1529905
2018-03-15 01:40:03.368 [P2P2]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1579
**********************************************************************
You are now synchronized with the network. You may now start monero-wallet-cli.

Use the "help" command to see the list of available commands.
**********************************************************************

As you can see we redirected the output of the program in a file in the same directory as “monerod”. The default output is informative here is what we can see about the blockchain syncronization:

  • how many blockchains we are behind the Monero network – “Synced 101/1529571”
  • how many days we are behind the Monero network – “Your node is 1529570 blocks (1422 days) behind”

At present with SSD and 16G RAM on a intel i7 processor and a fast Internet connection 100Mbps the full synchronization took about 12 hours and 47G of storage space.
After a successful full synchronization, in the log you’ll have:

You are now synchronized with the network.

and you are ready to use “monero-wallet-cli” or the others program to manage your funds – for example send, receive, check balance of your funds.
If you stop and start the program it will start the synchronization from the point you stopped.

Building from source a Monero node under Ubuntu 16 LTS

The program, which makes an Monero node in your computer, is called

monerod

You need a monero node to send and receive coins securely and privately. DO IT YOURSELF – the most secure way of generating a monero wallet address and making transactions such as send and receive coins.
Sometimes you’ll see an easy way of installing the node such as a snap package or docker imagedo not trust them! Most of the time they are unofficial releases or 3rd party releases – trust only to the official site and repository all other packages our there bring more risk than features.

STEP 1) Update your system and install dependencies

sudo apt-get update -y
sudo apt-get -y upgrade
sudo apt-get install -y build-essential cmake pkg-config libboost-all-dev libssl-dev libzmq3-dev libunbound-dev libsodium-dev libminiupnpc-dev libunwind8-dev liblzma-dev libreadline6-dev libldns-dev libexpat1-dev libgtest-dev doxygen graphviz

STEP 2) Get the “monerod” code and compile it

You could change to stable release (probably the last tag) if you like.

git clone https://github.com/monero-project/monero
cd monero
export CFLAGS="-march=native -O2 -msse3 -fomit-frame-pointer -pipe"
export CXXFLAGS="${CFLAGS}"
export CHOST="x86_64-pc-linux-gnu"
make

STEP 3) Check is everything is OK, installed monerod – Monero ‘Helium Hydra’

ls command shows the additional programs in the package.

srv@local:~/monero$ cd ./build/release/bin
srv@local:~/monero/build/release/bin$ ./monerod --version
Monero 'Helium Hydra' (v0.11.1.0-master-a03d34f)
srv@local:~/monero/build/release/bin$ ls 
monero-blockchain-export  monero-blockchain-import  monerod  monero-gen-trusted-multisig  monero-wallet-cli  monero-wallet-rpc

Most used programs are monerod and monero-wallet-cli, which offers a command line management of a monero wallet addresses.

* Here is the help output of “monerod” – the Monero node daemon:

srv@local:~/monero/build/release/bin$ ./monerod --help
Monero 'Helium Hydra' (v0.11.1.0-master-a03d34f)

Usage: ./monerod [options|settings] [daemon_command...]

Options:
  --help                                Produce help message
  --version                             Output version information
  --os-version                          OS for which this executable was 
                                        compiled
  --config-file arg (=/home/ubuntu/.bitmonero/bitmonero.conf, /home/ubuntu/.bitmonero/testnet/bitmonero.conf if 'testnet', /home/ubuntu/.bitmonero/stagenet/bitmonero.conf if 'stagenet')
                                        Specify configuration file
  --detach                              Run as daemon
  --pidfile arg                         File path to write the daemon's PID to 
                                        (optional, requires --detach)
  --non-interactive                     Run non-interactive

Settings:
  --log-file arg (=/home/ubuntu/.bitmonero/bitmonero.log, /home/ubuntu/.bitmonero/testnet/bitmonero.log if 'testnet', /home/ubuntu/.bitmonero/stagenet/bitmonero.log if 'stagenet')
                                        Specify log file
  --log-level arg
  --max-log-file-size arg (=104850000)  Specify maximum log file size [B]
  --max-concurrency arg (=0)            Max number of threads to use for a 
                                        parallel job
  --zmq-rpc-bind-ip arg (=127.0.0.1)    IP for ZMQ RPC server to listen on
  --zmq-rpc-bind-port arg (=18082, 28082 if 'testnet', 38082 if 'stagenet')
                                        Port for ZMQ RPC server to listen on
  --data-dir arg (=/home/ubuntu/.bitmonero, /home/ubuntu/.bitmonero/testnet if 'testnet', /home/ubuntu/.bitmonero/stagenet if 'stagenet')
                                        Specify data directory
  --test-drop-download                  For net tests: in download, discard ALL
                                        blocks instead checking/saving them 
                                        (very fast)
  --test-drop-download-height arg (=0)  Like test-drop-download but disards 
                                        only after around certain height
  --testnet                             Run on testnet. The wallet must be 
                                        launched with --testnet flag.
  --stagenet                            Run on stagenet. The wallet must be 
                                        launched with --stagenet flag.
  --enforce-dns-checkpointing           checkpoints from DNS server will be 
                                        enforced
  --prep-blocks-threads arg (=4)        Max number of threads to use when 
                                        preparing block hashes in groups.
  --fast-block-sync arg (=1)            Sync up most of the way by using 
                                        embedded, known block hashes.
  --show-time-stats arg (=0)            Show time-stats when processing 
                                        blocks/txs and disk synchronization.
  --block-sync-size arg (=0)            How many blocks to sync at once during 
                                        chain synchronization (0 = adaptive).
  --check-updates arg (=notify)         Check for new versions of monero: 
                                        [disabled|notify|download|update]
  --fluffy-blocks                       Relay blocks as fluffy blocks 
                                        (obsolete, now default)
  --no-fluffy-blocks                    Relay blocks as normal blocks
  --test-dbg-lock-sleep arg (=0)        Sleep time in ms, defaults to 0 (off), 
                                        used to debug before/after locking 
                                        mutex. Values 100 to 1000 are good for 
                                        tests.
  --offline                             Do not listen for peers, nor connect to
                                        any
  --disable-dns-checkpoints             Do not retrieve checkpoints from DNS
  --max-txpool-size arg (=648000000)    Set maximum txpool size in bytes.
  --extra-messages-file arg             Specify file for extra messages to 
                                        include into coinbase transactions
  --start-mining arg                    Specify wallet address to mining for
  --mining-threads arg                  Specify mining threads count
  --bg-mining-enable                    enable/disable background mining
  --bg-mining-ignore-battery            if true, assumes plugged in when unable
                                        to query system power status
  --bg-mining-min-idle-interval arg     Specify min lookback interval in 
                                        seconds for determining idle state
  --bg-mining-idle-threshold arg        Specify minimum avg idle percentage 
                                        over lookback interval
  --bg-mining-miner-target arg          Specificy maximum percentage cpu use by
                                        miner(s)
  --db-type arg (=lmdb)                 Specify database type, available: lmdb
  --db-sync-mode arg (=fast:async:1000) Specify sync option, using format 
                                        [safe|fast|fastest]:[sync|async]:[nbloc
                                        ks_per_sync].
  --db-salvage                          Try to salvage a blockchain database if
                                        it seems corrupted
  --p2p-bind-ip arg (=0.0.0.0)          Interface for p2p network protocol
  --p2p-bind-port arg (=18080, 28080 if 'testnet', 38080 if 'stagenet')
                                        Port for p2p network protocol
  --p2p-external-port arg (=0)          External port for p2p network protocol 
                                        (if port forwarding used with NAT)
  --allow-local-ip                      Allow local ip add to peer list, mostly
                                        in debug purposes
  --add-peer arg                        Manually add peer to local peerlist
  --add-priority-node arg               Specify list of peers to connect to and
                                        attempt to keep the connection open
  --add-exclusive-node arg              Specify list of peers to connect to 
                                        only. If this option is given the 
                                        options add-priority-node and seed-node
                                        are ignored
  --seed-node arg                       Connect to a node to retrieve peer 
                                        addresses, and disconnect
  --hide-my-port                        Do not announce yourself as peerlist 
                                        candidate
  --no-igd                              Disable UPnP port mapping
  --out-peers arg (=-1)                 set max number of out peers
  --in-peers arg (=-1)                  set max number of in peers
  --tos-flag arg (=-1)                  set TOS flag
  --limit-rate-up arg (=-1)             set limit-rate-up [kB/s]
  --limit-rate-down arg (=-1)           set limit-rate-down [kB/s]
  --limit-rate arg (=-1)                set limit-rate [kB/s]
  --save-graph                          Save data for dr monero
  --rpc-bind-port arg (=18081, 28081 if 'testnet', 38081 if 'stagenet')
                                        Port for RPC server
  --rpc-restricted-bind-port arg        Port for restricted RPC server
  --restricted-rpc                      Restrict RPC to view only commands and 
                                        do not return privacy sensitive data in
                                        RPC calls
  --bootstrap-daemon-address arg        URL of a 'bootstrap' remote daemon that
                                        the connected wallets can use while 
                                        this daemon is still not fully synced
  --bootstrap-daemon-login arg          Specify username:password for the 
                                        bootstrap daemon login
  --rpc-bind-ip arg (=127.0.0.1)        Specify IP to bind RPC server
  --rpc-login arg                       Specify username[:password] required 
                                        for RPC server
  --confirm-external-bind               Confirm rpc-bind-ip value is NOT a 
                                        loopback (local) IP
  --rpc-access-control-origins arg      Specify a comma separated list of 
                                        origins to allow cross origin resource 
                                        sharing

* Here is the help output of “monero-wallet-cli” – the cli management tool for Monero wallet address

Monero 'Helium Hydra' (v0.11.1.0-master-a03d34f)

This is the command line monero wallet. It needs to connect to a monero
daemon to work correctly.

Usage:
  monero-wallet-cli [--wallet-file=<file>|--generate-new-wallet=<file>] [<COMMAND>]

General options:
  --help                                Produce help message
  --version                             Output version information

Wallet options:
  --daemon-address arg                  Use daemon instance at <host>:<port>
  --daemon-host arg                     Use daemon instance at host <arg> 
                                        instead of localhost
  --password arg                        Wallet password (escape/quote as 
                                        needed)
  --password-file arg                   Wallet password file
  --daemon-port arg (=0)                Use daemon instance at port <arg> 
                                        instead of 18081
  --daemon-login arg                    Specify username[:password] for daemon 
                                        RPC client
  --testnet                             For testnet. Daemon must also be 
                                        launched with --testnet flag
  --stagenet                            For stagenet. Daemon must also be 
                                        launched with --stagenet flag
  --restricted-rpc                      Restricts to view-only commands
  --wallet-file arg                     Use wallet <arg>
  --generate-new-wallet arg             Generate new wallet and save it to 
                                        <arg>
  --generate-from-device arg            Generate new wallet from device and 
                                        save it to <arg>
  --generate-from-view-key arg          Generate incoming-only wallet from view
                                        key
  --generate-from-spend-key arg         Generate deterministic wallet from 
                                        spend key
  --generate-from-keys arg              Generate wallet from private keys
  --generate-from-multisig-keys arg     Generate a master wallet from multisig 
                                        wallet keys
  --generate-from-json arg              Generate wallet from JSON format file
  --mnemonic-language arg               Language for mnemonic
  --command arg
  --restore-deterministic-wallet        Recover wallet using Electrum-style 
                                        mnemonic seed
  --restore-multisig-wallet             Recover multisig wallet using 
                                        Electrum-style mnemonic seed
  --non-deterministic                   Generate non-deterministic view and 
                                        spend keys
  --electrum-seed arg                   Specify Electrum seed for wallet 
                                        recovery/creation
  --trusted-daemon                      Enable commands which rely on a trusted
                                        daemon
  --allow-mismatched-daemon-version     Allow communicating with a daemon that 
                                        uses a different RPC version
  --restore-height arg (=0)             Restore from specific blockchain height
  --do-not-relay                        The newly created transaction will not 
                                        be relayed to the monero network
  --create-address-file                 Create an address file for new wallets
  --log-file arg                        Specify log file
  --log-level arg                       0-4 or categories
  --max-log-file-size arg (=104850000)  Specify maximum log file size [B]
  --max-concurrency arg (=0)            Max number of threads to use for a 
                                        parallel job
  --config-file arg                     Config file

* Here is the output of the building process

srv@local:~$ sudo apt-get -y update
...
srv@local:~$ sudo apt-get -y upgrade
...
sudo apt-get install -y build-essential cmake pkg-config libboost-all-dev libssl-dev libzmq3-dev libunbound-dev libsodium-dev libminiupnpc-dev libunwind8-dev liblzma-dev libreadline6-dev libldns-dev libexpat1-dev libgtest-dev doxygen graphviz
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  autotools-dev binutils cmake-data cpp cpp-5 dpkg-dev fakeroot fontconfig fontconfig-config fonts-dejavu-core fonts-liberation g++ g++-5 gcc gcc-5
  icu-devtools libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive13 libasan2 libatomic1 libboost-atomic-dev
  libboost-atomic1.58-dev libboost-atomic1.58.0 libboost-chrono-dev libboost-chrono1.58-dev libboost-chrono1.58.0 libboost-context-dev
  libboost-context1.58-dev libboost-context1.58.0 libboost-coroutine-dev libboost-coroutine1.58-dev libboost-coroutine1.58.0 libboost-date-time-dev
  libboost-date-time1.58-dev libboost-date-time1.58.0 libboost-dev libboost-exception-dev libboost-exception1.58-dev libboost-filesystem-dev
  libboost-filesystem1.58-dev libboost-filesystem1.58.0 libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.58-dev
  libboost-graph-parallel1.58.0 libboost-graph1.58-dev libboost-graph1.58.0 libboost-iostreams-dev libboost-iostreams1.58-dev
  libboost-iostreams1.58.0 libboost-locale-dev libboost-locale1.58-dev libboost-locale1.58.0 libboost-log-dev libboost-log1.58-dev
  libboost-log1.58.0 libboost-math-dev libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev libboost-mpi-python-dev
  libboost-mpi-python1.58-dev libboost-mpi-python1.58.0 libboost-mpi1.58-dev libboost-mpi1.58.0 libboost-program-options-dev
  libboost-program-options1.58-dev libboost-program-options1.58.0 libboost-python-dev libboost-python1.58-dev libboost-python1.58.0
  libboost-random-dev libboost-random1.58-dev libboost-random1.58.0 libboost-regex-dev libboost-regex1.58-dev libboost-regex1.58.0
  libboost-serialization-dev libboost-serialization1.58-dev libboost-serialization1.58.0 libboost-signals-dev libboost-signals1.58-dev
  libboost-signals1.58.0 libboost-system-dev libboost-system1.58-dev libboost-system1.58.0 libboost-test-dev libboost-test1.58-dev
  libboost-test1.58.0 libboost-thread-dev libboost-thread1.58-dev libboost-thread1.58.0 libboost-timer-dev libboost-timer1.58-dev
  libboost-timer1.58.0 libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost-wave1.58.0 libboost1.58-dev libboost1.58-tools-dev
  libc-dev-bin libc6-dev libcairo2 libcc1-0 libcdt5 libcgraph6 libcilkrts5 libclang1-3.6 libcurl3 libdatrie1 libdpkg-perl libfakeroot
  libfile-fcntllock-perl libfontconfig1 libgcc-5-dev libgd3 libgomp1 libgraphite2-3 libgvc6 libgvpr2 libharfbuzz0b libhwloc-dev libhwloc-plugins
  libhwloc5 libibverbs-dev libibverbs1 libice6 libicu-dev libisl15 libitm1 libjbig0 libjpeg-turbo8 libjpeg8 libjsoncpp1 libldns1 libllvm3.6v5
  liblsan0 libltdl-dev libltdl7 libminiupnpc10 libmpc3 libmpx0 libnuma-dev libobjc-5-dev libobjc4 libopenmpi-dev libopenmpi1.10 libpango-1.0-0
  libpangocairo-1.0-0 libpangoft2-1.0-0 libpathplan4 libpciaccess0 libpixman-1-0 libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev
  libpython2.7-minimal libpython2.7-stdlib libquadmath0 libsm6 libsodium18 libssl-doc libstdc++-5-dev libthai-data libthai0 libtiff5 libtinfo-dev
  libtool libtsan0 libubsan0 libunbound2 libunwind-dev libunwind8 libvpx3 libxaw7 libxcb-render0 libxcb-shm0 libxmu6 libxpm4 libxrender1 libxt6
  libzmq5 linux-libc-dev make manpages-dev mpi-default-bin mpi-default-dev ocl-icd-libopencl1 openmpi-bin openmpi-common python python-dev
  python-minimal python2.7 python2.7-dev python2.7-minimal x11-common zlib1g-dev
Suggested packages:
  binutils-doc codeblocks eclipse ninja-build cpp-doc gcc-5-locales doxygen-latex doxygen-doc doxygen-gui debian-keyring g++-multilib g++-5-multilib
  gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg
  libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg gsfonts graphviz-doc lrzip
  libboost-doc libboost1.58-doc gccxml libmpfrc++-dev libntl-dev xsltproc docbook-xml docbook-xsl default-jdk fop glibc-doc libgd-tools
  libhwloc-contrib-plugins icu-doc libtool-doc liblzma-doc minissdpd opennmpi-doc readline-doc libstdc++-5-doc automaken gfortran
  | fortran95-compiler gcj-jdk make-doc opencl-icd gfortran openmpi-checkpoint python-doc python-tk python2.7-doc binfmt-support
The following NEW packages will be installed:
  autotools-dev binutils build-essential cmake cmake-data cpp cpp-5 doxygen dpkg-dev fakeroot fontconfig fontconfig-config fonts-dejavu-core
  fonts-liberation g++ g++-5 gcc gcc-5 graphviz icu-devtools libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive13
  libasan2 libatomic1 libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev libboost-atomic1.58.0 libboost-chrono-dev libboost-chrono1.58-dev
  libboost-chrono1.58.0 libboost-context-dev libboost-context1.58-dev libboost-context1.58.0 libboost-coroutine-dev libboost-coroutine1.58-dev
  libboost-coroutine1.58.0 libboost-date-time-dev libboost-date-time1.58-dev libboost-date-time1.58.0 libboost-dev libboost-exception-dev
  libboost-exception1.58-dev libboost-filesystem-dev libboost-filesystem1.58-dev libboost-filesystem1.58.0 libboost-graph-dev
  libboost-graph-parallel-dev libboost-graph-parallel1.58-dev libboost-graph-parallel1.58.0 libboost-graph1.58-dev libboost-graph1.58.0
  libboost-iostreams-dev libboost-iostreams1.58-dev libboost-iostreams1.58.0 libboost-locale-dev libboost-locale1.58-dev libboost-locale1.58.0
  libboost-log-dev libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev
  libboost-mpi-python-dev libboost-mpi-python1.58-dev libboost-mpi-python1.58.0 libboost-mpi1.58-dev libboost-mpi1.58.0 libboost-program-options-dev
  libboost-program-options1.58-dev libboost-program-options1.58.0 libboost-python-dev libboost-python1.58-dev libboost-python1.58.0
  libboost-random-dev libboost-random1.58-dev libboost-random1.58.0 libboost-regex-dev libboost-regex1.58-dev libboost-regex1.58.0
  libboost-serialization-dev libboost-serialization1.58-dev libboost-serialization1.58.0 libboost-signals-dev libboost-signals1.58-dev
  libboost-signals1.58.0 libboost-system-dev libboost-system1.58-dev libboost-system1.58.0 libboost-test-dev libboost-test1.58-dev
  libboost-test1.58.0 libboost-thread-dev libboost-thread1.58-dev libboost-thread1.58.0 libboost-timer-dev libboost-timer1.58-dev
  libboost-timer1.58.0 libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost-wave1.58.0 libboost1.58-dev libboost1.58-tools-dev
  libc-dev-bin libc6-dev libcairo2 libcc1-0 libcdt5 libcgraph6 libcilkrts5 libclang1-3.6 libcurl3 libdatrie1 libdpkg-perl libexpat1-dev libfakeroot
  libfile-fcntllock-perl libfontconfig1 libgcc-5-dev libgd3 libgomp1 libgraphite2-3 libgtest-dev libgvc6 libgvpr2 libharfbuzz0b libhwloc-dev
  libhwloc-plugins libhwloc5 libibverbs-dev libibverbs1 libice6 libicu-dev libisl15 libitm1 libjbig0 libjpeg-turbo8 libjpeg8 libjsoncpp1 libldns-dev
  libldns1 libllvm3.6v5 liblsan0 libltdl-dev libltdl7 liblzma-dev libminiupnpc-dev libminiupnpc10 libmpc3 libmpx0 libnuma-dev libobjc-5-dev libobjc4
  libopenmpi-dev libopenmpi1.10 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpathplan4 libpciaccess0 libpixman-1-0 libpython-dev
  libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libquadmath0 libreadline6-dev libsm6 libsodium-dev
  libsodium18 libssl-dev libssl-doc libstdc++-5-dev libthai-data libthai0 libtiff5 libtinfo-dev libtool libtsan0 libubsan0 libunbound-dev
  libunbound2 libunwind-dev libunwind8 libunwind8-dev libvpx3 libxaw7 libxcb-render0 libxcb-shm0 libxmu6 libxpm4 libxrender1 libxt6 libzmq3-dev
  libzmq5 linux-libc-dev make manpages-dev mpi-default-bin mpi-default-dev ocl-icd-libopencl1 openmpi-bin openmpi-common pkg-config python
  python-dev python-minimal python2.7 python2.7-dev python2.7-minimal x11-common zlib1g-dev
0 upgraded, 219 newly installed, 0 to remove and 3 not upgraded.
Need to get 135 MB of archives.
After this operation, 583 MB of additional disk space will be used.
......
......
......
srv@local:~$ git clone https://github.com/monero-project/monero
Cloning into 'monero'...
remote: Counting objects: 38845, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 38845 (delta 48), reused 58 (delta 40), pack-reused 38765
Receiving objects: 100% (38845/38845), 134.85 MiB | 32.30 MiB/s, done.
Resolving deltas: 100% (29307/29307), done.
Checking connectivity... done.
srv@local:~$ export CFLAGS="-march=native -O2 -msse3 -fomit-frame-pointer -pipe"
srv@local:~$ export CXXFLAGS="${CFLAGS}"
srv@local:~$ export CHOST="x86_64-pc-linux-gnu"
srv@local:~$ export MAKEOPTS="-j20"
srv@local:~$ cd monero/
srv@local:~/monero$ make -j 8
mkdir -p build/release
cd build/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release ../.. && make
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building without build tag
-- Could not find DEVELOPER_LOCAL_TOOLS in env (not required)
-- BOOST_IGNORE_SYSTEM_PATHS defaults to OFF
-- Could not find DEVELOPER_LIBUNBOUND_OLD in env (not required)
-- Building for a 64-bit system
-- Building internal libraries as static
-- Could not find DATABASE in env (not required unless you want to change database type from default: lmdb)
-- Using LMDB as default DB type
-- Stack trace on exception enabled (using easylogging++)
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.2g") 
-- Using OpenSSL include dir at /usr/include
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'libpcsclite'
--   No package 'libpcsclite' found
-- Could NOT find PCSC (missing:  PCSC_LIBRARY PCSC_INCLUDE_DIR) 
-- Looking for memset_s in c
-- Looking for memset_s in c - not found
-- Looking for explicit_bzero in c
-- Looking for explicit_bzero in c - not found
-- Looking for strptime
-- Looking for strptime - found
-- Found MiniUPnPc: /usr/include/miniupnpc  
-- Found miniupnpc API version 10
-- Using shared miniupnpc found at /usr/include/miniupnpc
-- Looking for libunbound
-- Found libunbound include (unbound.h) in /usr/include
-- Found libunbound shared library
-- Using 64-bit LMDB from source tree
-- Building on x86_64 for native
-- Performing Test _Wformat_c
-- Performing Test _Wformat_c - Success
-- Performing Test _Wformat_cxx
-- Performing Test _Wformat_cxx - Success
-- Performing Test _Wformat_security_c
-- Performing Test _Wformat_security_c - Success
-- Performing Test _Wformat_security_cxx
-- Performing Test _Wformat_security_cxx - Success
-- Performing Test _fstack_protector_c
-- Performing Test _fstack_protector_c - Success
-- Performing Test _fstack_protector_cxx
-- Performing Test _fstack_protector_cxx - Success
-- Performing Test _fstack_protector_strong_c
-- Performing Test _fstack_protector_strong_c - Success
-- Performing Test _fstack_protector_strong_cxx
-- Performing Test _fstack_protector_strong_cxx - Success
-- Looking for -pie linker flag
-- Looking for -pie linker flag - found
-- Looking for -Wl,-z,relro linker flag
-- Looking for -Wl,-z,relro linker flag - found
-- Looking for -Wl,-z,now linker flag
-- Looking for -Wl,-z,now linker flag - found
-- Looking for -Wl,-z,noexecstack linker flag
-- Looking for -Wl,-z,noexecstack linker flag - found
-- Looking for -Wl,-z,noexecheap linker flag
-- Looking for -Wl,-z,noexecheap linker flag - not found
-- Using C security hardening flags:  -Wformat -Wformat-security -fstack-protector -fstack-protector-strong
-- Using C++ security hardening flags:  -Wformat -Wformat-security -fstack-protector -fstack-protector-strong
-- Using linker security hardening flags:  -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
-- AES support enabled
-- Found Boost Version: 105800
-- Found Readline: /usr/include  
-- Looking for rl_copy_text
-- Looking for rl_copy_text - found
-- Looking for rl_filename_completion_function
-- Looking for rl_filename_completion_function - found
-- Found readline library at: /usr
-- Found Git: /usr/bin/git
-- Could NOT find GTest (missing:  GTEST_LIBRARY GTEST_MAIN_LIBRARY) 
-- GTest not found on the system: will use GTest bundled with this source
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.11") 
-- Performing Test HAVE_C11
-- Performing Test HAVE_C11 - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/monero/build/release
make[1]: Entering directory '/home/ubuntu/monero/build/release'
make[2]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_cncrypto
Scanning dependencies of target lmdb
Scanning dependencies of target genversion
Scanning dependencies of target obj_ringct
Scanning dependencies of target obj_checkpoints
Scanning dependencies of target generate_translations_header
Scanning dependencies of target easylogging
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_device
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[  0%] Building C object external/db_drivers/liblmdb/CMakeFiles/lmdb.dir/mdb.c.o
-- You are currently on commit a03d34f
[  1%] Building CXX object external/easylogging++/CMakeFiles/easylogging.dir/easylogging++.cc.o
[  2%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/aesb.c.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
-- The most recent tag was at 793bc97
-- You are ahead of or behind a tagged release
[  2%] Creating directories for 'generate_translations_header'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[  2%] Building CXX object src/checkpoints/CMakeFiles/obj_checkpoints.dir/checkpoints.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[  2%] Built target genversion
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[  2%] Building CXX object src/ringct/CMakeFiles/obj_ringct.dir/rctOps.cpp.o
[  3%] Building CXX object src/device/CMakeFiles/obj_device.dir/device.cpp.o
Scanning dependencies of target obj_cryptonote_basic
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[  4%] Building CXX object src/cryptonote_basic/CMakeFiles/obj_cryptonote_basic.dir/account.cpp.o
[  4%] No download step for 'generate_translations_header'
[  4%] No patch step for 'generate_translations_header'
[  5%] No update step for 'generate_translations_header'
[  5%] Performing configure step for 'generate_translations_header'
[  5%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/blake256.c.o
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
[  6%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/chacha.c.o
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
[  6%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/crypto-ops-data.c.o
-- Detecting C compiler ABI info - done
-- Detecting C compile features
[  6%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/crypto-ops.c.o
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Warning at CMakeLists.txt:38 (message):
  lrelease program not found, translation files not built


-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/monero/build/release/translations
[  7%] Performing build step for 'generate_translations_header'
make[4]: Entering directory '/home/ubuntu/monero/build/release/translations'
make[5]: Entering directory '/home/ubuntu/monero/build/release/translations'
make[6]: Entering directory '/home/ubuntu/monero/build/release/translations'
Scanning dependencies of target generate_translations_header
make[6]: Leaving directory '/home/ubuntu/monero/build/release/translations'
make[6]: Entering directory '/home/ubuntu/monero/build/release/translations'
[ 50%] Building C object CMakeFiles/generate_translations_header.dir/generate_translations_header.c.o
[100%] Linking C executable generate_translations_header
Generating embedded translations header
make[6]: Leaving directory '/home/ubuntu/monero/build/release/translations'
[100%] Built target generate_translations_header
make[5]: Leaving directory '/home/ubuntu/monero/build/release/translations'
make[4]: Leaving directory '/home/ubuntu/monero/build/release/translations'
[  8%] Performing install step for 'generate_translations_header'
[  8%] Completed 'generate_translations_header'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[  8%] Built target generate_translations_header
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[  8%] Generating stagenet_blocks.o
[  9%] Generating blocks.o
[  9%] Generating testnet_blocks.o
Scanning dependencies of target blocks
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 10%] Building C object src/blocks/CMakeFiles/blocks.dir/blockexports.c.o
[ 10%] Linking C static library libblocks.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 10%] Built target blocks
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_cryptonote_core
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 10%] Building CXX object src/cryptonote_core/CMakeFiles/obj_cryptonote_core.dir/blockchain.cpp.o
[ 11%] Building CXX object src/crypto/CMakeFiles/obj_cncrypto.dir/crypto.cpp.o
[ 12%] Building C object external/db_drivers/liblmdb/CMakeFiles/lmdb.dir/midl.c.o
[ 12%] Linking C static library liblmdb.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 12%] Built target lmdb
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_multisig
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 12%] Building CXX object src/multisig/CMakeFiles/obj_multisig.dir/multisig.cpp.o
[ 12%] Building CXX object src/crypto/CMakeFiles/obj_cncrypto.dir/crypto_device.cpp.o
[ 12%] Building CXX object src/ringct/CMakeFiles/obj_ringct.dir/rctOps_device.cpp.o
[ 12%] Building CXX object src/device/CMakeFiles/obj_device.dir/device_default.cpp.o
[ 12%] Building CXX object src/cryptonote_basic/CMakeFiles/obj_cryptonote_basic.dir/cryptonote_basic_impl.cpp.o
[ 12%] Linking CXX static library libeasylogging.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 12%] Built target easylogging
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_blockchain_db
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 13%] Building CXX object src/blockchain_db/CMakeFiles/obj_blockchain_db.dir/blockchain_db.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 13%] Built target obj_multisig
[ 13%] Building CXX object src/blockchain_db/CMakeFiles/obj_blockchain_db.dir/lmdb/db_lmdb.cpp.o
[ 13%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/groestl.c.o
[ 14%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/hash-extra-blake.c.o
[ 14%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/hash-extra-groestl.c.o
[ 14%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/hash-extra-jh.c.o
[ 15%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/hash-extra-skein.c.o
[ 16%] Building CXX object src/ringct/CMakeFiles/obj_ringct.dir/rctSigs.cpp.o
[ 16%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/hash.c.o
[ 16%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/jh.c.o
[ 17%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/keccak.c.o
[ 17%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/oaes_lib.c.o
[ 17%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/random.c.o
[ 18%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/skein.c.o
[ 19%] Building CXX object src/device/CMakeFiles/obj_device.dir/log.cpp.o
[ 19%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/slow-hash.c.o
[ 20%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/tree-hash.c.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 20%] Built target obj_cncrypto
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_mnemonics
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 20%] Building CXX object src/mnemonics/CMakeFiles/obj_mnemonics.dir/electrum-words.cpp.o
[ 20%] Building CXX object src/cryptonote_basic/CMakeFiles/obj_cryptonote_basic.dir/cryptonote_format_utils.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 20%] Built target obj_checkpoints
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_rpc
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 20%] Building CXX object src/rpc/CMakeFiles/obj_rpc.dir/core_rpc_server.cpp.o
[ 20%] Building CXX object src/rpc/CMakeFiles/obj_rpc.dir/instanciations.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 20%] Built target obj_device
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_rpc_base
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 21%] Building CXX object src/rpc/CMakeFiles/obj_rpc_base.dir/rpc_args.cpp.o
[ 21%] Building CXX object src/ringct/CMakeFiles/obj_ringct.dir/rctTypes.cpp.o
[ 21%] Building C object src/ringct/CMakeFiles/obj_ringct.dir/rctCryptoOps.c.o
[ 22%] Building CXX object src/ringct/CMakeFiles/obj_ringct.dir/bulletproofs.cc.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 22%] Built target obj_rpc_base
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_p2p
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 23%] Building CXX object src/p2p/CMakeFiles/obj_p2p.dir/net_node.cpp.o
[ 25%] Building CXX object src/cryptonote_basic/CMakeFiles/obj_cryptonote_basic.dir/difficulty.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 25%] Built target obj_ringct
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_cryptonote_protocol
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 25%] Building CXX object src/cryptonote_protocol/CMakeFiles/obj_cryptonote_protocol.dir/block_queue.cpp.o
[ 25%] Building CXX object src/cryptonote_basic/CMakeFiles/obj_cryptonote_basic.dir/hardfork.cpp.o
[ 25%] Building CXX object src/cryptonote_core/CMakeFiles/obj_cryptonote_core.dir/cryptonote_core.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 25%] Built target obj_blockchain_db
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_daemon_messages
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 25%] Building CXX object src/rpc/CMakeFiles/obj_daemon_messages.dir/message.cpp.o
[ 26%] Building CXX object src/cryptonote_basic/CMakeFiles/obj_cryptonote_basic.dir/miner.cpp.o
[ 27%] Building CXX object src/cryptonote_protocol/CMakeFiles/obj_cryptonote_protocol.dir/cryptonote_protocol_handler-base.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 27%] Built target obj_p2p
[ 27%] Building CXX object src/rpc/CMakeFiles/obj_daemon_messages.dir/daemon_messages.cpp.o
[ 28%] Building CXX object src/cryptonote_core/CMakeFiles/obj_cryptonote_core.dir/tx_pool.cpp.o
[ 28%] Building CXX object src/cryptonote_core/CMakeFiles/obj_cryptonote_core.dir/cryptonote_tx_utils.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 28%] Built target obj_mnemonics
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_daemon_rpc_server
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 29%] Building CXX object src/rpc/CMakeFiles/obj_daemon_rpc_server.dir/daemon_handler.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 29%] Built target obj_cryptonote_protocol
[ 29%] Building CXX object src/rpc/CMakeFiles/obj_daemon_rpc_server.dir/zmq_server.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 29%] Built target obj_daemon_messages
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_serialization
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 29%] Building CXX object src/serialization/CMakeFiles/obj_serialization.dir/json_object.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_wallet
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 30%] Building CXX object src/wallet/CMakeFiles/obj_wallet.dir/wallet2.cpp.o
[ 30%] Building CXX object src/wallet/CMakeFiles/obj_wallet.dir/wallet_args.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 30%] Built target obj_cryptonote_basic
[ 31%] Building CXX object src/wallet/CMakeFiles/obj_wallet.dir/node_rpc_proxy.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_daemonizer
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 31%] Building CXX object src/daemonizer/CMakeFiles/obj_daemonizer.dir/posix_fork.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 31%] Built target obj_cryptonote_core
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target googletest
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 32%] Creating directories for 'googletest'
[ 32%] No download step for 'googletest'
[ 33%] No patch step for 'googletest'
[ 33%] No update step for 'googletest'
[ 33%] Performing configure step for 'googletest'
-- The CXX compiler identification is GNU 5.4.0
-- The C compiler identification is GNU 5.4.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/bin/cc
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 33%] Built target obj_daemonizer
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target epee_readline
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 33%] Building CXX object contrib/epee/src/CMakeFiles/epee_readline.dir/readline_buffer.cpp.o
-- Detecting C compiler ABI info - done
-- Detecting C compile features
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 33%] Built target obj_serialization
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target epee
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
-- Detecting C compile features - done
[ 33%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/hex.cpp.o
-- Found PythonInterp: /usr/bin/python (found version "2.7.12") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
[ 34%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/http_auth.cpp.o
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/monero/build/release/tests/gtest
[ 35%] Performing build step for 'googletest'
make[4]: Entering directory '/home/ubuntu/monero/build/release/tests/gtest'
make[5]: Entering directory '/home/ubuntu/monero/build/release/tests/gtest'
make[6]: Entering directory '/home/ubuntu/monero/build/release/tests/gtest'
Scanning dependencies of target gtest
make[6]: Leaving directory '/home/ubuntu/monero/build/release/tests/gtest'
make[6]: Entering directory '/home/ubuntu/monero/build/release/tests/gtest'
[ 25%] Building CXX object CMakeFiles/gtest.dir/src/gtest-all.cc.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 35%] Built target obj_daemon_rpc_server
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_version
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 35%] Building CXX object src/CMakeFiles/obj_version.dir/__/version.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 35%] Built target obj_version
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target obj_common
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 35%] Building CXX object src/common/CMakeFiles/obj_common.dir/base58.cpp.o
[ 35%] Building CXX object src/common/CMakeFiles/obj_common.dir/command_line.cpp.o
[ 36%] Linking CXX static library libepee_readline.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 36%] Built target epee_readline
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target version
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 36%] Linking CXX static library libversion.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 36%] Built target version
[ 36%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/mlog.cpp.o
[ 37%] Building CXX object src/common/CMakeFiles/obj_common.dir/dns_utils.cpp.o
[ 37%] Building CXX object src/common/CMakeFiles/obj_common.dir/download.cpp.o
[ 50%] Linking CXX static library libgtest.a
make[6]: Leaving directory '/home/ubuntu/monero/build/release/tests/gtest'
[ 50%] Built target gtest
make[6]: Entering directory '/home/ubuntu/monero/build/release/tests/gtest'
Scanning dependencies of target gtest_main
make[6]: Leaving directory '/home/ubuntu/monero/build/release/tests/gtest'
make[6]: Entering directory '/home/ubuntu/monero/build/release/tests/gtest'
[ 75%] Building CXX object CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
[100%] Linking CXX static library libgtest_main.a
make[6]: Leaving directory '/home/ubuntu/monero/build/release/tests/gtest'
[100%] Built target gtest_main
make[5]: Leaving directory '/home/ubuntu/monero/build/release/tests/gtest'
make[4]: Leaving directory '/home/ubuntu/monero/build/release/tests/gtest'
[ 37%] No install step for 'googletest'
[ 37%] Completed 'googletest'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 37%] Built target googletest
[ 37%] Building CXX object src/common/CMakeFiles/obj_common.dir/util.cpp.o
[ 38%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/net_utils_base.cpp.o
[ 39%] Building CXX object src/common/CMakeFiles/obj_common.dir/i18n.cpp.o
[ 39%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/string_tools.cpp.o
[ 39%] Building CXX object src/common/CMakeFiles/obj_common.dir/password.cpp.o
[ 39%] Building CXX object src/common/CMakeFiles/obj_common.dir/perf_timer.cpp.o
[ 39%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/wipeable_string.cpp.o
[ 40%] Building C object contrib/epee/src/CMakeFiles/epee.dir/memwipe.c.o
[ 40%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/connection_basic.cpp.o
[ 40%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/network_throttle.cpp.o
[ 41%] Building CXX object src/common/CMakeFiles/obj_common.dir/threadpool.cpp.o
[ 41%] Building CXX object src/common/CMakeFiles/obj_common.dir/updates.cpp.o
[ 41%] Building CXX object src/common/CMakeFiles/obj_common.dir/stack_trace.cpp.o
[ 42%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/network_throttle-detail.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 42%] Built target obj_common
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 42%] Built target obj_rpc
[ 42%] Linking CXX static library libepee.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 42%] Built target epee
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target device
Scanning dependencies of target mnemonics
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target parse-url_fuzz_tests
Scanning dependencies of target http-client_fuzz_tests
[ 43%] Linking CXX static library libdevice.a
[ 43%] Linking CXX static library libmnemonics.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 44%] Building CXX object tests/fuzz/CMakeFiles/parse-url_fuzz_tests.dir/parse_url.cpp.o
[ 44%] Building CXX object tests/fuzz/CMakeFiles/parse-url_fuzz_tests.dir/fuzzer.cpp.o
[ 44%] Building CXX object tests/fuzz/CMakeFiles/http-client_fuzz_tests.dir/http-client.cpp.o
[ 45%] Building CXX object tests/fuzz/CMakeFiles/http-client_fuzz_tests.dir/fuzzer.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 45%] Built target device
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 45%] Built target mnemonics
Scanning dependencies of target cryptonote_basic
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 45%] Linking CXX static library libcryptonote_basic.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 45%] Built target cryptonote_basic
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target checkpoints
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 45%] Linking CXX static library libcheckpoints.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 45%] Built target checkpoints
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target ringct
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 46%] Linking CXX static library libringct.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 46%] Built target ringct
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target cncrypto
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 47%] Linking CXX static library libcncrypto.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 47%] Built target cncrypto
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target common
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 48%] Linking CXX static library libcommon.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 48%] Built target common
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target multisig
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target blockchain_db
Scanning dependencies of target rpc_base
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 48%] Linking CXX static library libmultisig.a
[ 48%] Linking CXX static library libblockchain_db.a
[ 48%] Linking CXX static library librpc_base.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 48%] Built target rpc_base
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 48%] Built target multisig
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 48%] Built target blockchain_db
Scanning dependencies of target daemonizer
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target levin_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target load-from-binary_fuzz_tests
[ 48%] Linking CXX static library libdaemonizer.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 48%] Building CXX object tests/fuzz/CMakeFiles/load-from-binary_fuzz_tests.dir/load_from_binary.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 48%] Building CXX object tests/fuzz/CMakeFiles/levin_fuzz_tests.dir/levin.cpp.o
[ 48%] Built target daemonizer
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target load-from-json_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 50%] Building CXX object tests/fuzz/CMakeFiles/load-from-json_fuzz_tests.dir/load_from_json.cpp.o
[ 50%] Building CXX object tests/fuzz/CMakeFiles/load-from-json_fuzz_tests.dir/fuzzer.cpp.o
[ 51%] Building CXX object tests/fuzz/CMakeFiles/levin_fuzz_tests.dir/fuzzer.cpp.o
[ 52%] Linking CXX executable parse-url_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 52%] Built target parse-url_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target base58_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 52%] Building CXX object tests/fuzz/CMakeFiles/base58_fuzz_tests.dir/base58.cpp.o
[ 52%] Building CXX object tests/fuzz/CMakeFiles/base58_fuzz_tests.dir/fuzzer.cpp.o
[ 53%] Building CXX object tests/fuzz/CMakeFiles/load-from-binary_fuzz_tests.dir/fuzzer.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target hash-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 54%] Building CXX object tests/hash/CMakeFiles/hash-tests.dir/main.cpp.o
[ 54%] Linking CXX executable hash-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 54%] Built target hash-tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target cryptonote_core
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 55%] Linking CXX static library libcryptonote_core.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 55%] Built target cryptonote_core
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target p2p
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 55%] Linking CXX static library libp2p.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 55%] Built target p2p
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target hash-target-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 55%] Building CXX object tests/CMakeFiles/hash-target-tests.dir/hash-target.cpp.o
[ 55%] Linking CXX executable http-client_fuzz_tests
[ 56%] Linking CXX executable base58_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 56%] Built target http-client_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target core_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 56%] Built target base58_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target transaction_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 57%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/block_reward.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 58%] Building CXX object tests/fuzz/CMakeFiles/transaction_fuzz_tests.dir/transaction.cpp.o
[ 58%] Building CXX object tests/fuzz/CMakeFiles/transaction_fuzz_tests.dir/fuzzer.cpp.o
[ 58%] Linking CXX executable load-from-binary_fuzz_tests
[ 58%] Linking CXX executable hash-target-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 58%] Built target load-from-binary_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target block_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 58%] Building CXX object tests/fuzz/CMakeFiles/block_fuzz_tests.dir/block.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 58%] Built target hash-target-tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target difficulty-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 59%] Building CXX object tests/difficulty/CMakeFiles/difficulty-tests.dir/difficulty.cpp.o
[ 59%] Linking CXX executable load-from-json_fuzz_tests
[ 59%] Linking CXX executable difficulty-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 59%] Built target difficulty-tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target net_load_tests_clt
[ 59%] Built target load-from-json_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target net_load_tests_srv
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 59%] Building CXX object tests/net_load_tests/CMakeFiles/net_load_tests_clt.dir/clt.cpp.o
[ 59%] Building CXX object tests/net_load_tests/CMakeFiles/net_load_tests_srv.dir/srv.cpp.o
[ 59%] Linking CXX executable levin_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 59%] Built target levin_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target cryptonote_protocol
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 59%] Building CXX object tests/fuzz/CMakeFiles/block_fuzz_tests.dir/fuzzer.cpp.o
[ 59%] Linking CXX static library libcryptonote_protocol.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 59%] Built target cryptonote_protocol
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 60%] Generating blocksdat.o
Scanning dependencies of target blockchain_import
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 60%] Building CXX object src/blockchain_utilities/CMakeFiles/blockchain_import.dir/blockchain_import.cpp.o
[ 60%] Linking CXX executable transaction_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 60%] Built target transaction_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target blockchain_export
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 60%] Building CXX object src/blockchain_utilities/CMakeFiles/blockchain_export.dir/blockchain_export.cpp.o
[ 61%] Building CXX object src/blockchain_utilities/CMakeFiles/blockchain_export.dir/bootstrap_file.cpp.o
[ 62%] Linking CXX executable block_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 62%] Built target block_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target core_proxy
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 62%] Building CXX object tests/core_proxy/CMakeFiles/core_proxy.dir/core_proxy.cpp.o
[ 62%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/block_validation.cpp.o
[ 62%] Building CXX object src/blockchain_utilities/CMakeFiles/blockchain_export.dir/blocksdat_file.cpp.o
[ 62%] Building CXX object src/blockchain_utilities/CMakeFiles/blockchain_import.dir/bootstrap_file.cpp.o
[ 63%] Building CXX object src/blockchain_utilities/CMakeFiles/blockchain_import.dir/blocksdat_file.cpp.o
[ 63%] Linking CXX executable net_load_tests_srv
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 63%] Built target net_load_tests_srv
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target rpc
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 63%] Linking CXX static library librpc.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 63%] Built target rpc
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target serialization
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 64%] Linking CXX static library libserialization.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 64%] Built target serialization
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target daemon_messages
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 64%] Linking CXX static library libdaemon_messages.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 64%] Built target daemon_messages
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target daemon_rpc_server
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 65%] Linking CXX static library libdaemon_rpc_server.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 65%] Built target daemon_rpc_server
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 65%] Generating blocksdat.o
Scanning dependencies of target daemon
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 66%] Building CXX object src/daemon/CMakeFiles/daemon.dir/command_parser_executor.cpp.o
[ 66%] Linking CXX executable ../../bin/monero-blockchain-export
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 66%] Built target blockchain_export
[ 66%] Building CXX object src/daemon/CMakeFiles/daemon.dir/command_server.cpp.o
[ 66%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/chain_split_1.cpp.o
[ 67%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/chain_switch_1.cpp.o
[ 67%] Linking CXX executable ../../bin/monero-blockchain-import
[ 68%] Linking CXX executable net_load_tests_clt
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 68%] Built target blockchain_import
[ 68%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/chaingen.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 68%] Built target net_load_tests_clt
[ 68%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/chaingen001.cpp.o
[ 69%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/chaingen_main.cpp.o
[ 69%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/double_spend.cpp.o
[ 69%] Building CXX object src/daemon/CMakeFiles/daemon.dir/daemon.cpp.o
[ 70%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/integer_overflow.cpp.o
[ 71%] Building CXX object src/daemon/CMakeFiles/daemon.dir/executor.cpp.o
[ 71%] Building CXX object src/daemon/CMakeFiles/daemon.dir/main.cpp.o
[ 71%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/multisig.cpp.o
[ 71%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/ring_signature_1.cpp.o
[ 71%] Linking CXX executable core_proxy
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 71%] Built target core_proxy
[ 72%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/transaction_tests.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 72%] Built target obj_wallet
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target wallet
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 72%] Linking CXX static library ../../lib/libwallet.a
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 72%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/tx_validation.cpp.o
[ 72%] Built target wallet
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target wallet_rpc_server
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 72%] Building CXX object src/wallet/CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target simplewallet
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 72%] Building CXX object src/simplewallet/CMakeFiles/simplewallet.dir/simplewallet.cpp.o
[ 72%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/v2_tests.cpp.o
[ 73%] Building CXX object src/daemon/CMakeFiles/daemon.dir/rpc_command_executor.cpp.o
[ 75%] Building CXX object tests/core_tests/CMakeFiles/core_tests.dir/rct.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target gen_multisig
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 75%] Building CXX object src/gen_multisig/CMakeFiles/gen_multisig.dir/gen_multisig.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target cold-outputs_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 75%] Building CXX object tests/fuzz/CMakeFiles/cold-outputs_fuzz_tests.dir/cold-outputs.cpp.o
[ 76%] Building CXX object tests/fuzz/CMakeFiles/cold-outputs_fuzz_tests.dir/fuzzer.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target signature_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 76%] Building CXX object tests/fuzz/CMakeFiles/signature_fuzz_tests.dir/signature.cpp.o
[ 77%] Linking CXX executable ../../bin/monero-gen-trusted-multisig
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 77%] Built target gen_multisig
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target cold-transaction_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 78%] Building CXX object tests/fuzz/CMakeFiles/cold-transaction_fuzz_tests.dir/cold-transaction.cpp.o
[ 78%] Building CXX object tests/fuzz/CMakeFiles/cold-transaction_fuzz_tests.dir/fuzzer.cpp.o
[ 78%] Building CXX object tests/fuzz/CMakeFiles/signature_fuzz_tests.dir/fuzzer.cpp.o
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target cncrypto-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 78%] Building C object tests/crypto/CMakeFiles/cncrypto-tests.dir/crypto-ops-data.c.o
[ 78%] Building C object tests/crypto/CMakeFiles/cncrypto-tests.dir/crypto-ops.c.o
[ 78%] Linking CXX executable cold-outputs_fuzz_tests
[ 79%] Linking CXX executable signature_fuzz_tests
[ 80%] Building CXX object tests/crypto/CMakeFiles/cncrypto-tests.dir/crypto.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 80%] Built target cold-outputs_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target functional_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 80%] Building CXX object tests/functional_tests/CMakeFiles/functional_tests.dir/main.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 80%] Built target signature_fuzz_tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target performance_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 80%] Building CXX object tests/performance_tests/CMakeFiles/performance_tests.dir/main.cpp.o
[ 80%] Building C object tests/crypto/CMakeFiles/cncrypto-tests.dir/hash.c.o
[ 80%] Building CXX object tests/crypto/CMakeFiles/cncrypto-tests.dir/main.cpp.o
[ 81%] Building C object tests/crypto/CMakeFiles/cncrypto-tests.dir/random.c.o
[ 81%] Linking CXX executable cncrypto-tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 81%] Built target cncrypto-tests
make[3]: Entering directory '/home/ubuntu/monero/build/release'
Scanning dependencies of target unit_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
make[3]: Entering directory '/home/ubuntu/monero/build/release'
[ 82%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/apply_permutation.cpp.o
[ 82%] Building CXX object tests/functional_tests/CMakeFiles/functional_tests.dir/transactions_flow_test.cpp.o
[ 82%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/address_from_url.cpp.o
[ 82%] Linking CXX executable ../../bin/monerod
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 82%] Built target daemon
[ 83%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/ban.cpp.o
[ 83%] Linking CXX executable cold-transaction_fuzz_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 83%] Built target cold-transaction_fuzz_tests
[ 83%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/base58.cpp.o
[ 83%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/blockchain_db.cpp.o
[ 83%] Linking CXX executable ../../bin/monero-wallet-cli
[ 83%] Linking CXX executable performance_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 83%] Built target simplewallet
[ 84%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/block_queue.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 84%] Built target performance_tests
[ 84%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/block_reward.cpp.o
[ 85%] Linking CXX executable ../../bin/monero-wallet-rpc
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 85%] Built target wallet_rpc_server
[ 85%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/bulletproofs.cpp.o
[ 86%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/canonical_amounts.cpp.o
[ 86%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/chacha.cpp.o
[ 86%] Linking CXX executable core_tests
[ 86%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/checkpoints.cpp.o
[ 87%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/command_line.cpp.o
[ 87%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/crypto.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 87%] Built target core_tests
[ 87%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/decompose_amount_into_digits.cpp.o
[ 88%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/dns_resolver.cpp.o
[ 88%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/epee_boosted_tcp_server.cpp.o
[ 89%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/epee_levin_protocol_handler_async.cpp.o
[ 89%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/epee_utils.cpp.o
[ 89%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/fee.cpp.o
[ 90%] Building CXX object tests/functional_tests/CMakeFiles/functional_tests.dir/transactions_generation_from_blockchain.cpp.o
[ 91%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/get_xtype_from_string.cpp.o
[ 91%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/http.cpp.o
[ 91%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/hashchain.cpp.o
[ 92%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/main.cpp.o
[ 92%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/memwipe.cpp.o
[ 92%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/mnemonics.cpp.o
[ 92%] Linking CXX executable functional_tests
[ 93%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/mul_div.cpp.o
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[ 93%] Built target functional_tests
[ 93%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/multisig.cpp.o
[ 93%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/parse_amount.cpp.o
[ 94%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/serialization.cpp.o
[ 94%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/sha256.cpp.o
[ 94%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/slow_memmem.cpp.o
[ 95%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/subaddress.cpp.o
[ 95%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/test_tx_utils.cpp.o
[ 96%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/test_peerlist.cpp.o
[ 96%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/test_protocol_pack.cpp.o
[ 96%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/hardfork.cpp.o
[ 97%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/unbound.cpp.o
[ 97%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/uri.cpp.o
[ 97%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/varint.cpp.o
[ 98%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/ringct.cpp.o
[ 98%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/output_selection.cpp.o
[ 98%] Building CXX object tests/unit_tests/CMakeFiles/unit_tests.dir/vercmp.cpp.o
[100%] Linking CXX executable unit_tests
make[3]: Leaving directory '/home/ubuntu/monero/build/release'
[100%] Built target unit_tests
make[2]: Leaving directory '/home/ubuntu/monero/build/release'
make[1]: Leaving directory '/home/ubuntu/monero/build/release'

Howto do a netinstall of Ubuntu 16.04 LTS – minimal server installation

Minimal net install is useful when a dedicated server is installed from a IPMI KVM or Dell iDRAC, HP iLO, IBM IMM or where the initial download of files need to be minimal.

STEP 1) To do a Ubuntu net install first download the correct ISO file from Ubuntu site.

For amd64 Ubuntu 16.04 the net install bootable media is located here (the netboot image is required):

http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/

Download “mini.iso”:

http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/mini.iso

The ISO is just only 62Mbytes, so when installing from a remote management utility (some of the different IPMI KVMs) only 62Mbytes will be transferred from the client to the server and all other packets will be downloaded from the Ubuntu mirrors.

STEP 2) Select “Install” and press Enter to select installation and to continue.

main menu
Installer boot menu

STEP 3) Select your preferred language for the installation steps, this tutorial use English, so probably it is a good idea to just select “English”.

main menu
Select a language

STEP 4) Select the location of your machine you are installing. The default is “United States”.

main menu
Select your location

STEP 5) Autodetect your keyboard layout is skipped (the next step is for manual choosing the keyboard layout), just press “No”.

main menu
Configure the keyboard

STEP 6) Select the country of origin for the keyboard your are using.

main menu
Configure the keyboard 2

STEP 7) Select your keyboard layout – most used is “English (US)”, but if your keyboard is in different language you could select it from the menu. And then press Enter.

main menu
Configure the keyboard 3

STEP 8) You’ll see a couple of dialogs about the network setup, press immediately Cancel (the Cancel is the default, so just press couple of times “Enter”) to cancel the DHCP setup of the network. When installing a dedicated server you must have the IP from your provider of the service. When installing at home probably you could just leave it without pressing “Cancel” and your home router will configure the IP of your machine. Here we describe the manual process of setting the network.

main menu
Configure the network

STEP 9) After canceling the default process of network setup, there will be showed “Network configuration failed.”. Press “Enter” to continue with manual network configuration.

main menu
Configure the network 2

STEP 10) Mark “Configure network manually” and press “Enter”.

main menu
Configure the network 3

STEP 11) Set your IP address, the IP address of our dedicated server is 192.168.0.100 And press “tab” to mark “Continue” and then press “Enter”.

main menu
Configure the network – The IP address

STEP 12) Set your netmask of the network. Here we set up the whole subnetwork /24, so the netmask is 255.255.255.0 And press “tab” to mark “Continue” and then press “Enter”.

main menu
Configure the network – The netmask of your network.

STEP 13) Set the gateway of the network, the router IP (from where the Internet “comes”). Our router has IP 192.168.0.1 And press “tab” to mark “Continue” and then press “Enter”.

main menu
Configure the network – The gateway

STEP 14) Set the nameservers to be used for resolving domain names to IP addresses, probably this is the IP of your router (as in our case), but you could use for example google DNS servers “8.8.8.8,8.8.4.4”. If you have more than one,just use commas to separate the IP addresses.

main menu
Configure the network – The Name server address

STEP 15) Set the hostname of your server, this is the name of your machine. We use “ubuntu-test”. Or you can use more meaningful name like “srv1-dns-eu”

main menu
Configure the network – The hostname

STEP 16) The domain name part of the server’s name if any. Leave blank or if you have it will be sort of “cdn.com”,so the fully qualified domain name (FQDN) will be “srv1-dns-eu.cdn.com”

main menu
Configure the network – The full domain name

STEP 17) Select the source of the installation files and packages. Choose the nearest location to your machine to be sure the fastest speed and fast installation.

main menu
Choose a mirror of the Ubuntu archive

STEP 18) The installation process will offer the right name of the mirror servers, select it and press “Enter”.

main menu
Choose a mirror of the Ubuntu archive 2

STEP 19) If you need a proxy to connect to the Internet it is time to set it up, but probably you do not need it, so leave blank, press “tab” to mark “Continue” and press “Enter”

main menu
Choose a mirror of the Ubuntu archive 3

STEP 20) …

main menu
Setup is now working…

STEP 21) You must create a user account, which will have the ability to escalate to root, default process of installation do not allow to set root password, but a user, which could switch to root. Set the Full name of your user (it could be just the username as shown). And press “tab” to mark “Continue” and then press “Enter”.

main menu
Set up users and passwords

STEP 22) Set the username, how you log in the system. We used the same as the Fullname from the previous step. And press “tab” to mark “Continue” and then press “Enter”.

main menu
Set up users and passwords – username

STEP 23) Set the password of the user. And press “tab” to mark “Continue” and then press “Enter”.

main menu
Set up users and passwords – password

STEP 24) Repeate the password of the user to verify you have typed it correctly. And press “tab” to mark “Continue” and then press “Enter”.

main menu
Set up users and passwords – repeate password

STEP 25) If you would like you can encrypt your home directory. Most cases for servers, mark the default “No”, but for laptop or home desktop machine it it advisable to encrypt your personal data! So mark your choice and press “Enter”.

main menu
Set up users and passwords – home directory encryption

STEP 26) Set the right timezone of your machine, most time for servers it is UTC and for leave it as detected. Press “Enter”.

main menu
Configure the clock

STEP 27) Detecting disks configuration.

main menu
Setup is now working…

STEP 28) The easiest way here is to use the entire disk for Ubuntu installation. All other options are for another tutorial, which could get more complicated. That’s why we use “Guided – use entire disk” for simplicity. It could be used LVM or encrypted LVM, too. Here we chose the simplest option.

main menu
Partition disks

STEP 29) Select the disk to use for your ubuntu installation, if you have multiple disk be sure to select the right one! Choosing a wrong disk could lead to data loss. Press “Enter” to continue.

main menu
Partition disks – select disk device

STEP 30) The user must confirm the changes on the disk, as it is written this operation will erased all the information ot your selected disk!!! Be sure you marked “Yes” and press “Enter”.

main menu
Partition disks – confirmation

STEP 31) Installing the base system.

main menu
Setup is now working…

STEP 32) Just select “No automatic updates” and hit “Enter”. Always update your system when you are online, becuase sometimes during update process there are service restarts, which could be critical for your server. So guided updates are always the right way!

main menu
Configuring console-setup

STEP 33) Select and install software.

main menu
Setup is now working…

STEP 34) What kind of system do you build? GUI, server or with specific services? These are predefined collections ensuring to install the right packages for the coresponding software collection.

main menu
Software selection

STEP 35) We selected only OpenSSH server and Basic Ubuntu server, because we want to install a base linux system with remote access. Press “tab” and mark “Continue”, the press “Enter”.

main menu
Software selection 2

STEP 36) Select and install software.

main menu
Setup is now working…

STEP 37) Installing GRUB boot loader.

main menu
Setup is now working…

STEP 38) Because this will be the only operating system, it is safe to install the GRUB to the master boot record. Mark “Yes” an hit “Enter”

main menu
Install the GRUB boot loader on a hard disk

STEP 39) In most cases the system clock is set to UTC, so just press “Enter”. No problem to change this settings your case is not the same.

main menu
Finish the Installation

STEP 40) Remove the installation disk – CD, DVD, unmap virtual CD/DVD or USB and then press “Continue”. The machine will restart.

main menu
Finish the Installation 2

STEP 41) Ubuntu 16.04 is booting…

main menu
Booting…

STEP 42) The machine is working properly, it is logged with myuser.

main menu
Login

STEP 43) And here are the running programs of a base Ubuntu system.

main menu
Running software

Running an Ethereum node from source under Ubuntu 16 LTS

This howto is made to show you how to run an Ethereum node. To run an Ethereum node we need the

geth

program to start and wait for the network synchronization – our Ethereum node will receive all the blockchains of the network!
After a successful Ethereum network synchronization we can send and receive coins securely ourselves! No other online service offers us secure sending and receiving of transcations and creation of wallet, the only way a crypto user could be absolutely sure the private key is seen only from him and is generated on his server is to become part of the Ethereum network and create your wallet with “geth” manually by the user himself.
And also be warned DO NOT use insecure sources when:

  1. installing Ubuntu, install it from a cd/dvd/usb downloaded from the official Ubuntu site here.
  2. installing all the needed dependencies from official sources only, not recommended the PPA reposigories, neither!
  3. install yourself the “geth” program, which will create an Ethereum node and after network synchronization could be used to create an Ethereum node.

Three simple rules could almost eliminate leaking your private key to hackers, which in blockchain world means losing your money…
And before start the installation a performance advice do not attempt to run an Ethereum node in a hard disk –

USE SSD

If you use a hard disk even in RAID configuration it could take several days for network synchronization and probably your machine will be useless during the synchronization.

So here are the steps to create from a scratch an Ethereum node:

STEP 1) Install Ubuntu 16 – our howto will be available soon here.

STEP 2) Building from source an Ethereum node

Check out our howto“Building from source an Ethereum node under Ubuntu 16 LTS”.

STEP 3) Start the Ethereum node

if you have followed the howto in STEP 2) you probably have “geth” installed in “~/go-ethereum/build/bin”, so first running it with:

ubuntu@srv.local:~/go-ethereum/build/bin$ ./geth --rpc --fast --cache=8144 &> ./geth.log

STEP 3) Wait for the blockchain network synchronization

When you run “geth” it will check the current state of the network and the current state of your Ethereum node, so no matter it is started for the first time or not a network synchronization is needed, your node need to be synchronized with the Ethereum network to be used for all kind of actions in the network (create a wallet, transfer funds and more).
Here is the output of just started Ethereum node:

INFO [02-27|19:14:02] Maximum peer count                       ETH=25 LES=0 total=25
INFO [02-27|19:14:02] Starting peer-to-peer node               instance=Geth/v1.8.2-unstable-b574b577/linux-amd64/go1.9.4
INFO [02-27|19:14:02] Allocated cache and file handles         database=/home/ubuntu/.ethereum/geth/chaindata cache=6108 handles=512
INFO [02-27|19:14:02] Writing default main-net genesis block 
INFO [02-27|19:14:03] Persisted trie from memory database      nodes=12356 size=2.34mB time=49.406185ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-27|19:14:03] Initialised chain configuration          config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: <nil> Engine: ethash}"
INFO [02-27|19:14:03] Disk storage enabled for ethash caches   dir=/home/ubuntu/.ethereum/geth/ethash count=3
INFO [02-27|19:14:03] Disk storage enabled for ethash DAGs     dir=/home/ubuntu/.ethash               count=2
INFO [02-27|19:14:03] Initialising Ethereum protocol           versions="[63 62]" network=1
INFO [02-27|19:14:03] Loaded most recent local header          number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [02-27|19:14:03] Loaded most recent local full block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [02-27|19:14:03] Loaded most recent local fast block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [02-27|19:14:03] Regenerated local transaction journal    transactions=0 accounts=0
INFO [02-27|19:14:03] Starting P2P networking 
INFO [02-27|19:14:05] UDP listener up                          self=enode://4ee1f43cc597fa829a04ec97dee38ad4f2c61f39f0f0e5ebd46e095c660cc95aab71eef55b0db9fd64d0afaeb589a8d9cb3eb86fdc07e32183648bc89dbd4aca@[::]:30303
INFO [02-27|19:14:05] RLPx listener up                         self=enode://4ee1f43cc597fa829a04ec97dee38ad4f2c61f39f0f0e5ebd46e095c660cc95aab71eef55b0db9fd64d0afaeb589a8d9cb3eb86fdc07e32183648bc89dbd4aca@[::]:30303
INFO [02-27|19:14:05] HTTP endpoint opened                     url=http://127.0.0.1:8545 cors= vhosts=localhost
INFO [02-27|19:14:05] IPC endpoint opened                      url=/home/ubuntu/.ethereum/geth.ipc
INFO [02-27|19:14:45] Block synchronisation started 
WARN [02-27|19:14:53] Synchronisation failed, retrying         err="block download canceled (requested)"
WARN [02-27|19:14:56] Node data write error                    err="state node 6aa064…378280 failed with all peers (1 tries, 1 peers)"
WARN [02-27|19:14:56] Synchronisation failed, retrying         err="state node 6aa064…378280 failed with all peers (1 tries, 1 peers)"
WARN [02-27|19:15:07] Node data write error                    err="state node 6aa064…378280 failed with all peers (3 tries, 3 peers)"
WARN [02-27|19:15:07] Synchronisation failed, retrying         err="state node 6aa064…378280 failed with all peers (3 tries, 3 peers)"
INFO [02-27|19:15:20] Imported new block headers               count=192 elapsed=1.115s number=192 hash=723899…123390 ignored=0
INFO [02-27|19:15:20] Imported new block receipts              count=2   elapsed=80.248µs number=2   hash=b495a1…4698c9 size=8.00B  ignored=0
INFO [02-27|19:15:20] Imported new block headers               count=192 elapsed=19.822ms number=384 hash=d3d5d5…c79cf3 ignored=0
INFO [02-27|19:15:21] Imported new block receipts              count=4   elapsed=117.07µs number=6   hash=1f1aed…6b326e size=1.10kB ignored=0
INFO [02-27|19:15:22] Imported new block headers               count=2048 elapsed=146.493ms number=2432 hash=78a9e6…079de3 ignored=0

As you can see the node connects to another nodes and receives blockchains and saves them to its local database. At present (late February 2017) a fully synchronized Ethereum node takes 59 Gigabytes of space, but this number will changed when you run your node.

STEP 3) Check the progress of the Ethereum network synchronization

The progress of Ethereum node synchronization could be checked with the “geth” program. Execute in the console:

ubuntu@srv.local:~/go-ethereum/build/bin$ ./geth --exec "web3.eth.syncing" attach
{
  currentBlock: 388,
  highestBlock: 5159514,
  knownStates: 0,
  pulledStates: 0,
  startingBlock: 0
}
ubuntu@srv.local:~/go-ethereum/build/bin$ ./geth --exec "web3.eth.syncing" attach
{
  currentBlock: 401,
  highestBlock: 5159514,
  knownStates: 0,
  pulledStates: 0,
  startingBlock: 0
}

As you can see we are at the very beginning here, we’ve received 401 of total 5159514 in the network.

After around 2 hours we are at 4882892 of total 5166333 in the network.

ubuntu@srv.local:~/go-ethereum/build/bin$ ./geth --exec "web3.eth.syncing" attach
{
  currentBlock: 4882892,
  highestBlock: 5166333,
  knownStates: 4806466,
  pulledStates: 4800942,
  startingBlock: 0
}

It is normal the highest block to increment, because the network is used intensively.
STEP 4) Successful full synchronization – how to check and to be sure
When you are almost then like in the last section of the STEP 3) you’ll begin to see lines in the geth output like:

INFO [02-28|01:46:28] Imported new block headers               count=0    elapsed=1.281ms   number=5168639 hash=433308…1a710e ignored=71

and when you execute geth with “web3.eth.syncing”:

ubuntu@srv.local:~/go-ethereum/build/bin$ ./geth --exec "web3.eth.syncing" attach
false

The node will keep on receiving new blocks, so synchronization is triggered again, syncing the received blocks and stops again. So when transferring funds or creating a wallet or any other action there will be triggered a synchronization and then execution of the action. There is a callback for when sync starts and stops. If you cannot see multiple times “false” after the last synchronization check with geth, but your are almost at the highest block, no need to worry everything is OK, you node is almost fully synchronized and can be used.

At present with SSD and 32G RAM on a intel i7 processor and a fast Internet connection 100Mbps the full synchronization took about 8 hours.

Building from source an Ethereum node under Ubuntu 16 LTS

The program, which makes an Ethereum node in your computer, is called

geth

. “geth” is written using the GO language and the latest version depends on GO version 1.7+. Ubuntu 16 LTS has GO language package version 1.6 so to build it from source we need first to install a proper version of GO Language.

STEP 1) Install a proper version of GO Language 1.7+

In our tutorial you will install 1.9 using this howto: “Install GO language in Ubuntu 16 LTS from the official site package”

STEP 2) Update your system and install dependencies

sudo apt-get update -y
sudo apt-get install -y build-essential libgmp3-dev git

STEP 3) Get the “geth” code and compile it

git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make geth

STEP 4) Check is everything is OK, installed geth version 1.8.2-unstable

srv@local:~/go-ethereum$ cd ./build/bin
srv@local:~/go-ethereum/build/bin$ ./geth version
Geth
Version: 1.8.2-unstable
Git Commit: b574b5776695eb30e034fd8c7a468b3f03d4c6b9
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9.4
Operating System: linux
GOPATH=
GOROOT=/usr/local/go

* Next tutorial is getting the node up and running here!

* Troubleshooting

  • if you get
    ~/go-ethereum$ make geth
    build/env.sh go run build/ci.go install ./cmd/geth
    build/env.sh: 30: exec: go: not found
    Makefile:15: recipe for target 'geth' failed
    make: *** [geth] Error 127
    

    You did not install properly go, check our manual here: “Install GO language in Ubuntu 16 LTS from the official site package”. Check whether you source /etc/profile in your current ssh/console/login session, check if you exported the PATH, your PATH must include “your_goinstallation_path/bin”, it’s like “/usr/local/go”.

  • if you get
    ~/go-ethereum$ make geth
    build/env.sh go run build/ci.go install ./cmd/geth
    ci.go:190: You have Go version go1.6.2
    ci.go:191: go-ethereum requires at least Go version 1.7 and cannot
    ci.go:192: be compiled with an earlier version. Please upgrade your Go installation.
    exit status 1
    Makefile:15: recipe for target 'geth' failed
    make: *** [geth] Error 1
    

    The installation just uses the default installed GO language of your system, which is 1.6 and is not supported by the “geth” Ethereum program. There are two options:

When we talk for crypto currency the best source is always the GIT version (probably the best one is the stable tag, but it is safe to use the unstable, too), it is most secure source you could get. Do not download from 3rd party sites or unofficial repositories, you could lose your money.

* Here is the building output

srv@local:~/go-ethereum$ make geth
build/env.sh go run build/ci.go install ./cmd/geth
>>> /usr/local/go/bin/go install -ldflags -X main.gitCommit=b574b5776695eb30e034fd8c7a468b3f03d4c6b9 -v ./cmd/geth
github.com/ethereum/go-ethereum/crypto/sha3
github.com/ethereum/go-ethereum/common/math
github.com/ethereum/go-ethereum/rlp
github.com/ethereum/go-ethereum/vendor/github.com/go-stack/stack
github.com/ethereum/go-ethereum/common/hexutil
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/util
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/comparer
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage
github.com/ethereum/go-ethereum/crypto/secp256k1
github.com/ethereum/go-ethereum/vendor/github.com/golang/snappy
github.com/ethereum/go-ethereum/log
github.com/ethereum/go-ethereum/vendor/gopkg.in/karalabe/cookiejar.v2/collections/prque
github.com/ethereum/go-ethereum/common
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/cache
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/filter
github.com/ethereum/go-ethereum/vendor/github.com/aristanetworks/goarista/monotime
github.com/ethereum/go-ethereum/common/mclock
github.com/ethereum/go-ethereum/event
github.com/ethereum/go-ethereum/crypto/randentropy
github.com/ethereum/go-ethereum/vendor/github.com/pborman/uuid
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/opt
github.com/ethereum/go-ethereum/vendor/golang.org/x/sys/unix
github.com/ethereum/go-ethereum/vendor/golang.org/x/crypto/pbkdf2
github.com/ethereum/go-ethereum/params
github.com/ethereum/go-ethereum/vendor/golang.org/x/crypto/scrypt
github.com/ethereum/go-ethereum/vendor/gopkg.in/fatih/set.v0
github.com/ethereum/go-ethereum/cmd/internal/browser
github.com/ethereum/go-ethereum/metrics
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/errors
github.com/ethereum/go-ethereum/common/fdlimit
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/iterator
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/journal
github.com/ethereum/go-ethereum/vendor/github.com/hashicorp/golang-lru/simplelru
github.com/ethereum/go-ethereum/vendor/golang.org/x/net/context
github.com/ethereum/go-ethereum/vendor/github.com/hashicorp/golang-lru
github.com/ethereum/go-ethereum/vendor/golang.org/x/net/websocket
github.com/ethereum/go-ethereum/vendor/github.com/edsrzf/mmap-go
github.com/ethereum/go-ethereum/common/bitutil
github.com/ethereum/go-ethereum/vendor/github.com/rs/xhandler
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/memdb
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/table
github.com/ethereum/go-ethereum/crypto/bn256
github.com/ethereum/go-ethereum/vendor/github.com/rs/cors
github.com/ethereum/go-ethereum/vendor/golang.org/x/crypto/ripemd160
github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/httpu
github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/scpd
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb
github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/soap
github.com/ethereum/go-ethereum/rpc
github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/ssdp
github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify
github.com/ethereum/go-ethereum/vendor/github.com/elastic/gosigar
github.com/ethereum/go-ethereum/vendor/golang.org/x/net/html/atom
github.com/ethereum/go-ethereum/vendor/golang.org/x/net/html
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/internal/identifier
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/transform
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/internal/utf8internal
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/internal/tag
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/language
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/runes
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/internal
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/charmap
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/japanese
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/korean
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/simplifiedchinese
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/traditionalchinese
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/unicode
github.com/ethereum/go-ethereum/ethdb
github.com/ethereum/go-ethereum/vendor/github.com/jackpal/go-nat-pmp
github.com/ethereum/go-ethereum/p2p/netutil
github.com/ethereum/go-ethereum/eth/tracers/internal/tracers
github.com/ethereum/go-ethereum/vendor/gopkg.in/olebedev/go-duktape.v3
github.com/ethereum/go-ethereum/vendor/github.com/golang/protobuf/proto
github.com/ethereum/go-ethereum/vendor/github.com/karalabe/hid
github.com/ethereum/go-ethereum/log/term
github.com/ethereum/go-ethereum/metrics/exp
github.com/ethereum/go-ethereum/vendor/github.com/mattn/go-colorable
github.com/ethereum/go-ethereum/vendor/gopkg.in/urfave/cli.v1
github.com/ethereum/go-ethereum/vendor/github.com/prometheus/prometheus/util/flock
github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/htmlindex
github.com/ethereum/go-ethereum/les/flowcontrol
github.com/ethereum/go-ethereum/vendor/golang.org/x/sync/syncmap
github.com/ethereum/go-ethereum/internal/jsre/deps
github.com/ethereum/go-ethereum/vendor/golang.org/x/net/html/charset
github.com/ethereum/go-ethereum/vendor/github.com/mattn/go-isatty
github.com/ethereum/go-ethereum/vendor/github.com/fatih/color
github.com/ethereum/go-ethereum/vendor/gopkg.in/sourcemap.v1/base64vlq
github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp
github.com/ethereum/go-ethereum/vendor/gopkg.in/sourcemap.v1
github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/token
github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/dbg
github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/file
github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/dcps/internetgateway1
github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/dcps/internetgateway2
github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/ast
github.com/ethereum/go-ethereum/internal/debug
github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/parser
github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/registry
github.com/ethereum/go-ethereum/internal/web3ext
github.com/ethereum/go-ethereum/vendor/github.com/peterh/liner
github.com/ethereum/go-ethereum/vendor/github.com/maruel/panicparse/stack
github.com/ethereum/go-ethereum/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor
github.com/ethereum/go-ethereum/p2p/nat
github.com/ethereum/go-ethereum/vendor/github.com/mattn/go-runewidth
github.com/ethereum/go-ethereum/vendor/github.com/mitchellh/go-wordwrap
github.com/ethereum/go-ethereum/vendor/github.com/naoina/go-stringutil
github.com/ethereum/go-ethereum/vendor/github.com/naoina/toml/ast
github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto
github.com/ethereum/go-ethereum/accounts/usbwallet/internal/trezor
github.com/ethereum/go-ethereum/vendor/github.com/nsf/termbox-go
github.com/ethereum/go-ethereum/vendor/github.com/naoina/toml
github.com/ethereum/go-ethereum/vendor/github.com/gizak/termui
# github.com/ethereum/go-ethereum/vendor/gopkg.in/olebedev/go-duktape.v3
In file included from vendor/gopkg.in/olebedev/go-duktape.v3/api.go:7:0:
vendor/gopkg.in/olebedev/go-duktape.v3/api.go: In function ‘_duk_error’:
vendor/gopkg.in/olebedev/go-duktape.v3/duktape.h:510:127: warning: right-hand operand of comma expression has no effect [-Wunused-value]
  (duk_error_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0)
                                                                                                                               ^
vendor/gopkg.in/olebedev/go-duktape.v3/api.go:153:2: note: in expansion of macro ‘duk_error’
  duk_error(ctx, err_code, "%s", str);
  ^
github.com/ethereum/go-ethereum/internal/jsre
github.com/ethereum/go-ethereum/crypto
github.com/ethereum/go-ethereum/trie
github.com/ethereum/go-ethereum/crypto/ecies
github.com/ethereum/go-ethereum/p2p/discover
github.com/ethereum/go-ethereum/p2p/discv5
github.com/ethereum/go-ethereum/core/types
github.com/ethereum/go-ethereum/p2p
github.com/ethereum/go-ethereum
github.com/ethereum/go-ethereum/core/state
github.com/ethereum/go-ethereum/core/bloombits
github.com/ethereum/go-ethereum/core/vm
github.com/ethereum/go-ethereum/accounts
github.com/ethereum/go-ethereum/ethclient
github.com/ethereum/go-ethereum/accounts/keystore
github.com/ethereum/go-ethereum/accounts/usbwallet
github.com/ethereum/go-ethereum/consensus
github.com/ethereum/go-ethereum/consensus/misc
github.com/ethereum/go-ethereum/dashboard
github.com/ethereum/go-ethereum/whisper/whisperv5
github.com/ethereum/go-ethereum/consensus/clique
github.com/ethereum/go-ethereum/consensus/ethash
github.com/ethereum/go-ethereum/eth/fetcher
github.com/ethereum/go-ethereum/node
github.com/ethereum/go-ethereum/console
github.com/ethereum/go-ethereum/core
github.com/ethereum/go-ethereum/eth/downloader
github.com/ethereum/go-ethereum/eth/filters
github.com/ethereum/go-ethereum/light
github.com/ethereum/go-ethereum/internal/ethapi
github.com/ethereum/go-ethereum/miner
github.com/ethereum/go-ethereum/eth/gasprice
github.com/ethereum/go-ethereum/eth/tracers
github.com/ethereum/go-ethereum/eth
github.com/ethereum/go-ethereum/les
github.com/ethereum/go-ethereum/ethstats
github.com/ethereum/go-ethereum/cmd/utils
github.com/ethereum/go-ethereum/cmd/geth
Done building.
Run "/home/ubuntu/go-ethereum/build/bin/geth" to launch geth.
srv@local:~/go-ethereum$

Install GO language in Ubuntu 16 LTS from the official site package

Ubuntu 16 LTS comes with too old GO language version, the version in the official repository is

golang-1.6.

Many programs released past couple of years depend on go lang 1.7+, so 1.6 in Ubuntu 16 LTS is really obsolete. At present the latest version is 1.9, so we’ll show you simple steps to install the go lang on your ubuntu 16 lts server

STEP 1) Get root if you want to install it globally to be used from any user!

sudo su
cd

STEP 2) Download the GO language binaries from the official site

https://golang.org/dl/

And copy the URL link of the program from the Linux section, now it has the following text:

Linux 2.6.23 or later, Intel 64-bit processor
go1.10.linux-amd64.tar.gz (114MB)

And download it with wget:

wget https://dl.google.com/go/go1.9.4.linux-amd64.tar.gz

STEP 4) Uncompress the file with “tar”

tar xzvf go1.9.4.linux-amd64.tar.gz

STEP 5) Move the files in “/usr/local/go”

you could put the installation anywhere, but most manual installed programs go to “/usr/local”

mv go /usr/local/

STEP 6) Set properly the environment to use your GO 1.9 installation

    • Create file with path and name

      /etc/profile.d/golang.sh

    • Make the file executable with
      chmod 755 /etc/profile.d/golang.sh
      
    • Insert the following line, which will add to the environment PATH your GO executable binaries
[[ -d "/usr/local/go" ]] && export PATH="$PATH:/usr/local/go/bin"

STEP 7) Reload the environment or just log off/in and check if you could execute the GO tool

root@srv.local:~# source /etc/profile
root@srv.local:~# go version
go version go1.9.4 linux/amd64

* Here are all the commands in one place to install the specific version of GO 1.9.4 AMD64, you can use them in a script:

cd
mkdir go-installation
cd ./go-installation
sudo wget https://dl.google.com/go/go1.9.4.linux-amd64.tar.gz
sudo tar xzvf go1.9.4.linux-amd64.tar.gz
sudo mv go /usr/local/
cat <<END | sudo tee /etc/profile.d/golang.sh 1>/dev/null
[[ -d "/usr/local/go" ]] && export PATH="\$PATH:/usr/local/go/bin"
END
sudo chmod 755 /etc/profile.d/golang.sh
source /etc/profile

And do not forget to

source /etc/profile

in your current shell session. It is mandatory for your current shell if you execute the above command from a script!

* This installation of GO Language 1.9 is from the official source the home site of GO Language. There are other easier ways to do it using, for example there are PPA repositories with Ubuntu packages ready to install, but they are not supported by the official GO team! Use them at your own risk as with all other PPA repositories.

Install ethminer in a machine with NVIDIA video card under Ubuntu 16.04 LTS

This is simple “how to” to get started mining crypto currency with explanations using Ethash algorithm like Ethererum. Just follow the simple steps and you’ll have an optimized GPU for Ethash crypto currencies:

STEP 1) Download latest CUDA from NVDIA site.

Open your favorite browser and go to

http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/

and search for copy the link

cuda-repo-ubuntu1604-

in our case the latest version of CUDA 9.1.85 is

http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb

There is also

cuda-repo-ubuntu1604_8.0.44-1_amd64.deb 4.0KB 2017-09-22 22:08
cuda-repo-ubuntu1604_8.0.61-1_amd64.deb 4.0KB 2017-09-22 22:08
cuda-repo-ubuntu1604_9.0.176-1_amd64.deb 4.0KB 2017-09-22 22:09
cuda-repo-ubuntu1604_9.1.85-1_amd64.deb 4.0KB 2017-12-02 01:29

you could try them to see if you have a better performance for your video card with some of the older CUDA platform.
So now we download the file with wget just execute

cd ~
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb

STEP 2) Install the NVIDIA CUDA repository in you UBUNTU with

sudo dpkg -i /root/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
* If you encounter error

The public CUDA GPG key does not appear to be installed.
To install the key, run this command:
sudo apt-key adv –fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

Just execute the command it says and then again, so in our case:

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
dpkg -i /root/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

STEP 3) Install repository for your proprietary drivers of NVIDIA video cards

sudo add-apt-repository -y ppa:graphics-drivers/ppa

STEP 4) Update all repositories to download the latest package lists

sudo apt-get update -y

STEP 5) Install the dependencies for the ethminer, NVIDIA video driver and NVIDIA CUDA platform5).

Install the dependencies for the ethminer, NVIDIA video driver and NVIDIA CUDA platform

sudo apt-get -y install git cmake libleveldb-dev libjsoncpp-dev libboost-all-dev libgmp-dev libreadline-dev libcurl4-gnutls-dev ocl-icd-libopencl1 opencl-headers mesa-common-dev libmicrohttpd-dev build-essential cuda libcrypto++-dev libjsonrpccpp-dev

You probably will see how you packet manager downloads around 852 packets (arround 1.5G) and installs them all, at last you must see no errors and probably there will be double “done”

done.
done.

STEP 6) now reboot the machine to load the NVIDIA proprietary driver.

At the time of this howto we the NVIDIA driver is 390.30 (nvidia-390 (390.30-0ubuntu1)), but you can list older ones and install them to see if they are better than the last. It happens frequently an older driver (but not much old) to be slightly better in performance than the latest driver, so you can experiment with other older drivers if you like.

sudo reboot

STEP 7) Check to see if your driver is loaded properly

Execute command

dmesg|grep nvidia

Here is example output

[   11.096593] nvidia: module license 'NVIDIA' taints kernel.
[   11.116551] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[   11.134454] nvidia-nvlink: Nvlink Core is being initialized, major device number 248
[   11.226239] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  390.30  Wed Jan 31 22:08:49 PST 2018 (using threaded interrupts)
[   11.265963] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  390.30  Wed Jan 31 21:32:48 PST 2018
[   11.275447] [drm] [nvidia-drm] [GPU ID 0x0000001e] Loading driver
[   14.527352] nvidia-uvm: Loaded the UVM driver in 8 mode, major device number 247

So we finished the first stage, the preparation of your machine to install the ethminer. Now we move to the actual installation of the gpu mining software (and cpu mining, of course):

STEP 8)* Tune screen for better support of your scrolling history, because usually you execute the ethminer in screen (this step is not required for proper working of ethminer)

echo "termcapinfo xterm* ti@:te@" &amp;amp;amp;amp;amp;gt; /root/.screenrc

STEP 9) Start screen and clone the ethminer repository

git clone https://github.com/ethereum-mining/ethminer

STEP 10) Compile ethminer with “native” optimizations for the compiler gnu gcc. It has probably no impact of the GPU computing, but still it is a good practice to build the source with the best suited optimization for you mining machine.

mkdir -p ./ethminer/build
cd ./ethminer/build
export CFLAGS="-O2 -march=native -msse3 -fomit-frame-pointer -pipe"
export CHOST="x86_64-pc-linux-gnu"
export CXXFLAGS="${CFLAGS}"
export LDFLAGS="-Wl,-O1"
cmake .. -DETHASHCUDA=ON -DETHASHCL=ON
make -j 4

STEP 11) Execute ethminer, but before you must execute some tuning exports for the GPU

export GPU_FORCE_64BIT_PTR=0
export GPU_MAX_HEAP_SIZE=100
export GPU_USE_SYNC_OBJECTS=1
export GPU_MAX_ALLOC_PERCENT=100
export GPU_SINGLE_ALLOC_PERCENT=100
cd ~/ethminer/build/ethminer
./ethminer -U -F http://yourpooladdress:80/11111111111111111111111111111111111/miner-01

In the example above we use a pool: yourpooladdress and the ethereum address 11111111111111111111111111111111111 – the two values are not valid, SET YOUR VALUES, do not use this fake values!

*Running the miner is simple just execute

ethminer

  • -U – When mining use the GPU via CUDA.
  • -G – When mining use the GPU via OpenCL.
  • -X,–cuda-opencl Use OpenCL + CUDA in a system with mixed AMD/Nvidia cards. May require setting –opencl-platform 1

*Here is the output of the properly built and running ethminer:

m 10:54:42|ethminer| ethminer version 0.14.0.dev2
m 10:54:42|ethminer| Build: Linux/g++ / Release
cu 10:54:45|ethminer| Using grid size 8192 , block size 128
m 10:54:45|ethminer| not-connected
ℹ 10:54:45|getwork | Connected to http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
ℹ 10:54:45|getwork | Spinning up miners...
ℹ 10:54:45|cuda-0 | No work. Pause for 3 s.
ℹ 10:54:45|getwork | Received new job #f0a5f915 from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
ℹ 10:54:48|cuda-0 | Initialising miner 0
m 10:54:50|ethminer| Speed 0.00 Mh/s gpu/0 0.00 [A0+0:R0+0:F0] Time: 00:00
cu 10:54:50|cuda-0 | Using device: Tesla K80 (Compute 3.7)
cu 10:54:50|cuda-0 | Set Device to current
cu 10:54:50|cuda-0 | Resetting device
cu 10:54:50|cuda-0 | Allocating light with size: 39190336
cu 10:54:50|cuda-0 | Generating mining buffers
cu 10:54:50|cuda-0 | Generating DAG for GPU # 0 with dagSize: 2508191872 gridSize: 8192
m 10:54:55|ethminer| Speed 0.00 Mh/s gpu/0 0.00 [A0+0:R0+0:F0] Time: 00:00
ℹ 10:54:56|getwork | Received new job #5a34e38b from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
m 10:55:00|ethminer| Speed 0.00 Mh/s gpu/0 0.00 [A0+0:R0+0:F0] Time: 00:00
ℹ 10:55:01|getwork | Received new job #d48be1aa from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
m 10:55:05|ethminer| Speed 0.00 Mh/s gpu/0 0.00 [A0+0:R0+0:F0] Time: 00:00
m 10:55:10|ethminer| Speed 0.00 Mh/s gpu/0 0.00 [A0+0:R0+0:F0] Time: 00:00
m 10:55:15|ethminer| Speed 0.00 Mh/s gpu/0 0.00 [A0+0:R0+0:F0] Time: 00:00
ℹ 10:55:19|getwork | Received new job #7f50d832 from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
m 10:55:20|ethminer| Speed 5.56 Mh/s gpu/0 5.56 [A0+0:R0+0:F0] Time: 00:00
ℹ 10:55:21|getwork | Received new job #b41b6784 from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
ℹ 10:55:23|getwork | Received new job #b9a76ceb from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
m 10:55:25|ethminer| Speed 5.86 Mh/s gpu/0 5.86 [A0+0:R0+0:F0] Time: 00:00
m 10:55:30|ethminer| Speed 6.30 Mh/s gpu/0 6.30 [A0+0:R0+0:F0] Time: 00:00
m 10:55:35|ethminer| Speed 6.57 Mh/s gpu/0 6.57 [A0+0:R0+0:F0] Time: 00:00
ℹ 10:55:38|getwork | Received new job #e0329f03 from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
m 10:55:40|ethminer| Speed 6.60 Mh/s gpu/0 6.60 [A0+0:R0+0:F0] Time: 00:00
m 10:55:45|ethminer| Speed 6.50 Mh/s gpu/0 6.50 [A0+0:R0+0:F0] Time: 00:01
m 10:55:50|ethminer| Speed 6.58 Mh/s gpu/0 6.58 [A0+0:R0+0:F0] Time: 00:01
m 10:55:55|ethminer| Speed 6.58 Mh/s gpu/0 6.58 [A0+0:R0+0:F0] Time: 00:01
m 10:56:00|ethminer| Speed 6.68 Mh/s gpu/0 6.68 [A0+0:R0+0:F0] Time: 00:01
m 10:56:05|ethminer| Speed 6.58 Mh/s gpu/0 6.58 [A0+0:R0+0:F0] Time: 00:01
m 10:56:10|ethminer| Speed 6.58 Mh/s gpu/0 6.58 [A0+0:R0+0:F0] Time: 00:01
m 10:56:15|ethminer| Speed 6.68 Mh/s gpu/0 6.68 [A0+0:R0+0:F0] Time: 00:01
m 10:56:20|ethminer| Speed 6.58 Mh/s gpu/0 6.58 [A0+0:R0+0:F0] Time: 00:01
m 10:56:25|ethminer| Speed 6.68 Mh/s gpu/0 6.68 [A0+0:R0+0:F0] Time: 00:01
ℹ 10:56:25|getwork | Received new job #22e64b5b from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
m 10:56:30|ethminer| Speed 6.50 Mh/s gpu/0 6.50 [A0+0:R0+0:F0] Time: 00:01
m 10:56:35|ethminer| Speed 6.50 Mh/s gpu/0 6.50 [A0+0:R0+0:F0] Time: 00:01
m 10:56:40|ethminer| Speed 6.58 Mh/s gpu/0 6.58 [A0+0:R0+0:F0] Time: 00:01
ℹ 10:56:41|cuda-0 | Nonce 0x656b10dfbe95134f submitted to http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
ℹ 10:56:42|getwork | **Accepted in 500 ms.
m 10:56:45|ethminer| Speed 6.68 Mh/s gpu/0 6.68 [A1+0:R0+0:F0] Time: 00:02
ℹ 10:56:47|getwork | Received new job #304cc9df from http://eth-eu.dwarfpool.com:80/11111111111111111111111111111111111/miner-02
m 10:56:50|ethminer| Speed 6.50 Mh/s gpu/0 6.50 [A1+0:R0+0:F0] Time: 00:02
m 10:56:55|ethminer| Speed 6.51 Mh/s gpu/0 6.51 [A1+0:R0+0:F0] Time: 00:02

* Here is the all options of the ethminer:

./ethminer --help
Usage ethminer [OPTIONS]
Options:

Work farming mode:
    -F,--farm <url>  Put into mining farm mode with the work server at URL (default: http://127.0.0.1:8545)
    -FF,-FO, --farm-failover, --stratum-failover <url> Failover getwork/stratum URL (default: disabled)
        --farm-retries <n> Number of retries until switch to failover (default: 3)
        -S, --stratum <host:port>  Put into stratum mode with the stratum server at host:port
        -SF, --stratum-failover <host:port>  Failover stratum server at host:port
    -O, --userpass <username.workername:password> Stratum login credentials
    -FO, --failover-userpass <username.workername:password> Failover stratum login credentials (optional, will use normal credentials when omitted)
    --work-timeout <n> reconnect/failover after n seconds of working on the same (stratum) job. Defaults to 180. Don't set lower than max. avg. block time
    -SC, --stratum-client <n>  Stratum client version. Version 1 support only.
    -SP, --stratum-protocol <n> Choose which stratum protocol to use:
        0: official stratum spec: ethpool, ethermine, coinotron, mph, nanopool (default)
        1: eth-proxy compatible: dwarfpool, f2pool, nanopool (required for hashrate reporting to work with nanopool)
        2: EthereumStratum/1.0.0: nicehash
    -RH, --report-hashrate Report current hashrate to pool (please only enable on pools supporting this)
    -HWMON [n] Displays gpu temp, fan percent and power usage. Note: In linux, the program uses sysfs, which may require running with root priviledges.
        0: Displays only temp and fan percent (default)
        1: Also displays power usage
    --exit Stops the miner whenever an error is encountered
    -SE, --stratum-email <s> Email address used in eth-proxy (optional)
    --farm-recheck <n>  Leave n ms between checks for changed work (default: 500). When using stratum, use a high value (i.e. 2000) to get more stable hashrate output

Benchmarking mode:
    -M [<n>],--benchmark [<n>] Benchmark for mining and exit; Optionally specify block number to benchmark against specific DAG.
    --benchmark-warmup <seconds>  Set the duration of warmup for the benchmark tests (default: 3).
    --benchmark-trial <seconds>  Set the duration for each trial for the benchmark tests (default: 3).
    --benchmark-trials <n>  Set the number of benchmark trials to run (default: 5).
Simulation mode:
    -Z [<n>],--simulation [<n>] Mining test mode. Used to validate kernel optimizations. Optionally specify block number.
Mining configuration:
    -G,--opencl  When mining use the GPU via OpenCL.
    -U,--cuda  When mining use the GPU via CUDA.
    -X,--cuda-opencl Use OpenCL + CUDA in a system with mixed AMD/Nvidia cards. May require setting --opencl-platform 1
    --opencl-platform <n>  When mining using -G/--opencl use OpenCL platform n (default: 0).
    --opencl-device <n>  When mining using -G/--opencl use OpenCL device n (default: 0).
    --opencl-devices <0 1 ..n> Select which OpenCL devices to mine on. Default is to use all
    -t, --mining-threads <n> Limit number of CPU/GPU miners to n (default: use everything available on selected platform)
    --list-devices List the detected OpenCL/CUDA devices and exit. Should be combined with -G or -U flag
    --display-interval <n> Set mining stats display interval in seconds. (default: every 5 seconds)
    -L, --dag-load-mode <mode> DAG generation mode.
        parallel    - load DAG on all GPUs at the same time (default)
        sequential  - load DAG on GPUs one after another. Use this when the miner crashes during DAG generation
        single <n>  - generate DAG on device n, then copy to other devices
 OpenCL configuration:
    --cl-kernel <n>  Use a different OpenCL kernel (default: use stable kernel)
        0: stable kernel
        1: experimental kernel
    --cl-local-work Set the OpenCL local work size. Default is 128
    --cl-global-work Set the OpenCL global work size as a multiple of the local work size. Default is 8192 * 128
    --cl-parallel-hash <1 2 ..8> Define how many threads to associate per hash. Default=8
 CUDA configuration:
    --cuda-block-size Set the CUDA block work size. Default is 128
    --cuda-grid-size Set the CUDA grid size. Default is 8192
    --cuda-streams Set the number of CUDA streams. Default is 2
    --cuda-schedule <mode> Set the schedule mode for CUDA threads waiting for CUDA devices to finish work. Default is 'sync'. Possible values are:
        auto  - Uses a heuristic based on the number of active CUDA contexts in the process C and the number of logical processors in the system P. If C > P, then yield else spin.
        spin  - Instruct CUDA to actively spin when waiting for results from the device.
        yield - Instruct CUDA to yield its thread when waiting for results from the device.
        sync  - Instruct CUDA to block the CPU thread on a synchronization primitive when waiting for the results from the device.
    --cuda-devices <0 1 ..n> Select which CUDA GPUs to mine on. Default is to use all
    --cuda-parallel-hash <1 2 ..8> Define how many hashes to calculate in a kernel, can be scaled to achieve better performance. Default=4
    --cuda-noeval  bypass host software re-evalution of GPU solutions.
        This will trim some milliseconds off the time it takes to send a result to the pool.
        Use at your own risk! If GPU generates errored results they WILL be forwarded to the pool
        Not recommended at high overclock.
 API core configuration:
    --api-port Set the api port, the miner should listen to. Use 0 to disable. Default=0, use negative numbers to run in readonly mode. for example -3333.
 General Options:
    -v,--verbosity <0 - 9>  Set the log verbosity from 0 to 9 (default: 5). Set to 9 for switch time logging.
    -V,--version  Show the version and exit.
    -h,--help  Show this help message and exit.
 Envionment variables:
     NO_COLOR - set to any value to disable color output. Unset to re-enable color output.

Delete millions of files slowly without loading the server

There a situations when we need to delete a great deal of files from our filesystem and if we just execute

rm -Rf

the server will surely get loaded and the service it provides will degrade! What if you cannot reformat the filesystem, because the server use it extensively, but you need to delete let’s say a couple of millions file from it? We can use find and usleep (in most linux distro this program is installed by an additional package). The idea is to delete files one by one tuning the pause between every delete. Here you can execute this command in the background or a screen:

find /mnt/storage/old/ -type f -exec echo {} \; -exec rm {} \; -exec usleep 200000 \;

usleep accepts microseconds, so 200000 microseconds are 0.2 seconds. You can tune it precisely with a step of just a microsecond. In the real world under the bash console we probably will use values of max 1/10 of a second around above 100000 microseconds. Execute the command and then watch your server load and tune.

  • usleep in CentOS 7 is installed with package “initscripts”, which is installed by default
  • usleep in Ubuntu is missing and probably won’t find any safe place to download a package to install, but it can be sort of replace with “sleep <floating_point_number>s”, GNU sleep could accept floating point number for the delay and when added “s” at the end it could sleep for a fractions of a seconds. So the command for the Ubuntu is slightly changed:
    find /mnt/storage/old/ -type f -exec echo {} \; -exec rm {} \; -exec sleep 0.2s \;
    
  • not GNU version of sleep require NUMBER, so the smallest sleep is only 1 second, which is too big for the purpose. Check your man manual to see if your system has GNU sleep command.

Create a simple spamassassin rule to catch words

Not so often we need to write our custom rules for fighting against spam, but sometimes we need it, because a spammer just wanted to target specifically our server or clients. If you use spamassassin here what you can do to create a simple rule to find words and rate the message with a desired score, which will (probably) mark it as a spam.
The template is as follows:

  • headers search, the example template is for the Subject header, but you could any other header name.
    header <RULENAME> Subject =~ /word1, word2, word3, ..., wordN/
    score <RULENAME> <score>
    describe <RULENAME> <description>
    
  • body search
    body <RULENAME> /word1, word2, word3, ..., wordN/
    score <RULENAME> <score>
    describe <RULENAME> <description>
    

Set these 3 lines (or the 6 above for the headers and body) in your user_prefs.cf file, which is probably here:

  • /etc/mail/spamassassin/local.cf – CentOS 7
  • /etc/spamassassin/ – Ubuntu 16/17, Gentoo
  • ~/.spamassassin/user_prefs.cf – custom file per user

Here is example of the rules:

header CONTAINS_VIG Subject =~ /apple, orange/
score CONTAINS_VIG 1.5
describe CONTAINS_VIG Bad Word fruits in the Subject
body CONTAINS_PEN /apple, orange/
score CONTAINS_PEN 1.5
describe CONTAINS_PEN Bad Word in the Body

Catch messages in the Subject and body containing apple and orange and add to the scoring system 1.5, for your purses you may need to increase the scoring drastically it depends on your required score for spam (check for it in local.cf).

* Update

As of Rob Morin proposed in the comments it is a good idea to add “/i” to catch lower and capital letters (“ignore case”) like this:

header CONTAINS_VIG Subject =~ /apple, orange/i
score CONTAINS_VIG 1.5
describe CONTAINS_VIG Bad Word fruits in the Subject
body CONTAINS_PEN /apple, orange/i
score CONTAINS_PEN 1.5
describe CONTAINS_PEN Bad Word in the Body

xmr-stak GPU disabled after kernel or driver updated

Sometime when the user upgrades the kernel or the graphic card driver (NVIDIA or ATI) under Ubuntu (it is essentially the same with the other distros) we may encounter errors with xmr-stak and even not to be able to use our graphic card for mining!
Here we have an UBUNTU 17.10.1 and when we updated the kernel to the latest our mining xmr-stak software stopped using the NVIDIA card:

-------------------------------------------------------------------
[2018-02-16 12:17:11] : Start mining: MONERO
WARNING: NVIDIA Insufficient driver!
WARNING: NVIDIA no device found
[2018-02-16 12:17:11] : WARNING: backend NVIDIA disabled.
[2018-02-16 12:17:11] : WARNING: UNKNOWN_ERROR when calling clGetPlatformIDs for number of platforms.
[2018-02-16 12:17:11] : WARNING: No OpenCL platform found.
[2018-02-16 12:17:11] : WARNING: No AMD OpenCL platform found. Possible driver issues or wrong vendor driver.
[2018-02-16 12:17:11] : WARNING: backend AMD disabled.
[2018-02-16 12:17:11] : Starting 1x thread, affinity: 0.
[2018-02-16 12:17:11] : hwloc: memory pinned

As you can see the NVIDIA backend is disabled! In fact the driver seemed OK and loaded and even the X was working.
So in such a situation just reinstall the NVIDIA driver and install the software dependecies for the mining xmr-software (detailed explanation here)
Here what you can do:

sudo apt-get purge nvidia-*
sudo apt-get -y install libboost-all-dev libleveldb-dev libcurl4-openssl-dev libmicrohttpd-dev libminiupnpc-dev libgmp-dev  cuda nvidia-opencl-dev libmicrohttpd-dev libssl-dev cmake build-essential
sudo reboot

And you’ll have again an usable and properly installed GPU mining system.

Here is the log of the reinstallation, check it if you think you are going in the wrong direction, when purging the driver:

root@srv2:~/xmr-stak/build/bin# apt-get purge nvidia-*
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  bbswitch-dkms cuda-command-line-tools-9-1 cuda-compiler-9-1 cuda-cublas-9-1 cuda-cublas-dev-9-1 cuda-cudart-9-1 cuda-cudart-dev-9-1 cuda-cufft-9-1 cuda-cufft-dev-9-1
  cuda-cuobjdump-9-1 cuda-cupti-9-1 cuda-curand-9-1 cuda-curand-dev-9-1 cuda-cusolver-9-1 cuda-cusolver-dev-9-1 cuda-cusparse-9-1 cuda-cusparse-dev-9-1
  cuda-documentation-9-1 cuda-driver-dev-9-1 cuda-gdb-9-1 cuda-gpu-library-advisor-9-1 cuda-libraries-9-1 cuda-libraries-dev-9-1 cuda-license-9-1 cuda-memcheck-9-1
  cuda-misc-headers-9-1 cuda-npp-9-1 cuda-npp-dev-9-1 cuda-nsight-9-1 cuda-nvcc-9-1 cuda-nvdisasm-9-1 cuda-nvgraph-9-1 cuda-nvgraph-dev-9-1 cuda-nvml-dev-9-1
  cuda-nvprof-9-1 cuda-nvprune-9-1 cuda-nvrtc-9-1 cuda-nvrtc-dev-9-1 cuda-nvtx-9-1 cuda-nvvp-9-1 cuda-samples-9-1 cuda-toolkit-9-1 cuda-tools-9-1 cuda-visual-tools-9-1
  dkms freeglut3 freeglut3-dev lib32gcc1 libc6-i386 libglu1-mesa-dev libice-dev libsm-dev libvdpau1 libxi-dev libxmu-dev libxmu-headers libxnvctrl0 libxt-dev
  linux-headers-4.13.0-21 linux-headers-4.13.0-21-generic linux-image-4.13.0-21-generic linux-image-extra-4.13.0-21-generic linux-signed-image-4.13.0-21-generic
  linux-signed-image-4.13.0-31-generic mesa-vdpau-drivers nvidia-modprobe nvidia-prime nvidia-settings screen-resolution-extra vdpau-driver-all
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  cuda* cuda-9-1* cuda-demo-suite-9-1* cuda-drivers* cuda-runtime-9-1* libcuda1-390* nvidia-390* nvidia-390-dev* nvidia-opencl-icd-390*
0 upgraded, 0 newly installed, 9 to remove and 14 not upgraded.
After this operation, 369 MB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 311518 files and directories currently installed.)
Removing cuda (9.1.85-1) ...
Removing cuda-9-1 (9.1.85-1) ...
Removing cuda-demo-suite-9-1 (9.1.85-1) ...
Removing cuda-runtime-9-1 (9.1.85-1) ...
Removing cuda-drivers (390.12-1) ...
Removing libcuda1-390 (390.25-0ubuntu0~gpu17.10.1) ...
Removing nvidia-opencl-icd-390 (390.25-0ubuntu0~gpu17.10.1) ...
Removing nvidia-390-dev (390.25-0ubuntu0~gpu17.10.1) ...
Removing nvidia-390 (390.30-0ubuntu1) ...
Removing all DKMS Modules
Done.
update-alternatives: using /usr/lib/nvidia-390-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode
update-alternatives: using /usr/lib/nvidia-390-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in auto mode
update-alternatives: using /usr/lib/nvidia-390-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in auto mode
update-alternatives: using /usr/lib/nvidia-390-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in auto mode
update-alternatives: using /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode
update-alternatives: using /usr/lib/x86_64-linux-gnu/mesa-egl/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in auto mode
INFO:Disable nvidia-390
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/put_your_quirks_here
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/dell_latitude
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/lenovo_thinkpad
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.125ubuntu12) ...
update-initramfs: Generating /boot/initrd.img-4.15.3-041503-generic
cryptsetup: WARNING: target cryptswap1 has a random key, skipped
Processing triggers for libc-bin (2.26-0ubuntu2.1) ...
Processing triggers for man-db (2.7.6.1-2) ...
(Reading database ... 310876 files and directories currently installed.)
Purging configuration files for nvidia-opencl-icd-390 (390.25-0ubuntu0~gpu17.10.1) ...
Purging configuration files for nvidia-390 (390.30-0ubuntu1) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.125ubuntu12) ...
update-initramfs: Generating /boot/initrd.img-4.15.3-041503-generic
cryptsetup: WARNING: target cryptswap1 has a random key, skipped
root@srv2:~/xmr-stak/build/bin# apt-get -y install libboost-all-dev libleveldb-dev libcurl4-openssl-dev libmicrohttpd-dev libminiupnpc-dev libgmp-dev  cuda nvidia-opencl-dev libmicrohttpd-dev libssl-dev cmake build-essential
Reading package lists... Done
Building dependency tree       
Reading state information... Done
build-essential is already the newest version (12.4ubuntu1).
cmake is already the newest version (3.9.1-1).
libgmp-dev is already the newest version (2:6.1.2+dfsg-1).
libleveldb-dev is already the newest version (1.20-1).
libboost-all-dev is already the newest version (1.62.0.1).
libmicrohttpd-dev is already the newest version (0.9.55-1).
nvidia-opencl-dev is already the newest version (8.0.61-1).
libcurl4-openssl-dev is already the newest version (7.55.1-1ubuntu2.3).
libminiupnpc-dev is already the newest version (1.9.20140610-4ubuntu1.1).
libssl-dev is already the newest version (1.0.2g-1ubuntu13.3).
The following packages were automatically installed and are no longer required:
  linux-headers-4.13.0-21 linux-headers-4.13.0-21-generic linux-image-4.13.0-21-generic linux-image-extra-4.13.0-21-generic linux-signed-image-4.13.0-21-generic
  linux-signed-image-4.13.0-31-generic
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  cuda cuda-9-1 cuda-demo-suite-9-1 cuda-drivers cuda-runtime-9-1 libcuda1-390 nvidia-390 nvidia-390-dev nvidia-opencl-icd-390
The following packages will be upgraded:
  nvidia-modprobe nvidia-settings
2 upgraded, 9 newly installed, 0 to remove and 12 not upgraded.
Need to get 3948 kB/88,1 MB of archives.
After this operation, 369 MB of additional disk space will be used.
Get:1 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64  cuda-runtime-9-1 9.1.85-1 [2534 B]
Get:2 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64  cuda-demo-suite-9-1 9.1.85-1 [3943 kB]
Get:3 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64  cuda-9-1 9.1.85-1 [2560 B]
Fetched 3948 kB in 3s (1003 kB/s)  
Selecting previously unselected package nvidia-390.
(Reading database ... 310871 files and directories currently installed.)
Preparing to unpack .../00-nvidia-390_390.30-0ubuntu1_amd64.deb ...
Unpacking nvidia-390 (390.30-0ubuntu1) ...
Selecting previously unselected package nvidia-390-dev.
Preparing to unpack .../01-nvidia-390-dev_390.30-0ubuntu1_amd64.deb ...
Unpacking nvidia-390-dev (390.30-0ubuntu1) ...
Selecting previously unselected package libcuda1-390.
Preparing to unpack .../02-libcuda1-390_390.30-0ubuntu1_amd64.deb ...
Unpacking libcuda1-390 (390.30-0ubuntu1) ...
Preparing to unpack .../03-nvidia-modprobe_390.30-0ubuntu1_amd64.deb ...
Unpacking nvidia-modprobe (390.30-0ubuntu1) over (390.12-0ubuntu1) ...
Preparing to unpack .../04-nvidia-settings_390.30-0ubuntu1_amd64.deb ...
Unpacking nvidia-settings (390.30-0ubuntu1) over (390.25-0ubuntu0~gpu17.10.1) ...
Selecting previously unselected package nvidia-opencl-icd-390.
Preparing to unpack .../05-nvidia-opencl-icd-390_390.30-0ubuntu1_amd64.deb ...
Unpacking nvidia-opencl-icd-390 (390.30-0ubuntu1) ...
Selecting previously unselected package cuda-drivers.
Preparing to unpack .../06-cuda-drivers_390.30-1_amd64.deb ...
Unpacking cuda-drivers (390.30-1) ...
Selecting previously unselected package cuda-runtime-9-1.
Preparing to unpack .../07-cuda-runtime-9-1_9.1.85-1_amd64.deb ...
Unpacking cuda-runtime-9-1 (9.1.85-1) ...
Selecting previously unselected package cuda-demo-suite-9-1.
Preparing to unpack .../08-cuda-demo-suite-9-1_9.1.85-1_amd64.deb ...
Unpacking cuda-demo-suite-9-1 (9.1.85-1) ...
Selecting previously unselected package cuda-9-1.
Preparing to unpack .../09-cuda-9-1_9.1.85-1_amd64.deb ...
Unpacking cuda-9-1 (9.1.85-1) ...
Selecting previously unselected package cuda.
Preparing to unpack .../10-cuda_9.1.85-1_amd64.deb ...
Unpacking cuda (9.1.85-1) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for ureadahead (0.100.0-20) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu3) ...
Setting up nvidia-390 (390.30-0ubuntu1) ...
update-alternatives: using /usr/lib/nvidia-390/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode
update-alternatives: warning: skip creation of /usr/share/grub-gfxpayload-lists/blacklist/10_proprietary-graphics-drivers because associated file /usr/share/nvidia-390/nvidia-390.grub-gfxpayload (of link group x86_64-linux-gnu_gl_conf) doesn't exist
update-alternatives: using /usr/lib/nvidia-390/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in auto mode
update-alternatives: using /usr/lib/nvidia-390/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in auto mode
update-alternatives: using /usr/lib/nvidia-390/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in auto mode
update-alternatives: using /usr/share/nvidia-390/glamor.conf to provide /usr/share/X11/xorg.conf.d/glamoregl.conf (glamor_conf) in auto mode
dpkg: error: version '-' has bad syntax: revision number is empty
dpkg: error: version '-' has bad syntax: revision number is empty
dpkg: error: version '-' has bad syntax: revision number is empty
dpkg: error: version '-' has bad syntax: revision number is empty
dpkg: error: version '-' has bad syntax: revision number is empty
update-initramfs: deferring update (trigger activated)

A modprobe blacklist file has been created at /etc/modprobe.d to prevent Nouveau from loading. This can be reverted by deleting /etc/modprobe.d/nvidia-graphics-drivers.conf.
A new initrd image has also been created. To revert, please replace /boot/initrd-4.15.3-041503-generic with /boot/initrd-$(uname -r)-backup.

*****************************************************************************
*** Reboot your computer and verify that the NVIDIA graphics driver can   ***
*** be loaded.                                                            ***
*****************************************************************************

INFO:Enable nvidia-390
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/put_your_quirks_here
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/dell_latitude
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/lenovo_thinkpad
Adding system user `nvidia-persistenced' (UID 123) ...
Adding new group `nvidia-persistenced' (GID 129) ...
Adding new user `nvidia-persistenced' (UID 123) with group `nvidia-persistenced' ...
Not creating home directory `/'.
Loading new nvidia-390-390.30 DKMS files...
Building for 4.15.3-041503-generic
Building for architecture x86_64
Building initial module for 4.15.3-041503-generic
Done.

nvidia_390:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.3-041503-generic/updates/dkms/

nvidia_390_modeset.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.3-041503-generic/updates/dkms/

nvidia_390_drm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.3-041503-generic/updates/dkms/

nvidia_390_uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.3-041503-generic/updates/dkms/

depmod...

DKMS: install completed.
Setting up nvidia-390-dev (390.30-0ubuntu1) ...
Setting up nvidia-settings (390.30-0ubuntu1) ...
Processing triggers for libc-bin (2.26-0ubuntu2.1) ...
Setting up nvidia-modprobe (390.30-0ubuntu1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Processing triggers for gnome-menus (3.13.3-6ubuntu5) ...
Setting up nvidia-opencl-icd-390 (390.30-0ubuntu1) ...
Setting up libcuda1-390 (390.30-0ubuntu1) ...
Setting up cuda-drivers (390.30-1) ...
Setting up cuda-runtime-9-1 (9.1.85-1) ...
Setting up cuda-demo-suite-9-1 (9.1.85-1) ...
Setting up cuda-9-1 (9.1.85-1) ...
Setting up cuda (9.1.85-1) ...
Processing triggers for initramfs-tools (0.125ubuntu12) ...
update-initramfs: Generating /boot/initrd.img-4.15.3-041503-generic
cryptsetup: WARNING: target cryptswap1 has a random key, skipped
Processing triggers for shim-signed (1.33.1~17.10.1+13-0ubuntu2) ...
Secure Boot not enabled on this system.
Processing triggers for libc-bin (2.26-0ubuntu2.1) ...
root@srv2:~/xmr-stak/build/bin#