Reinstall live CentOS 7 server using ssh and change disk configuration of root filesystem to RAID1

Not all dedicated server providers have good web management panel or offer a remote management console (like IPMI/KVM, iDRAC, iLO and so on)! If you used multiple server providers you would experience the case when you received a server installed with the linux distro by your choice, but with no options to configure the hard drives setup. And in most cases when there is no choice of hard drives and partition configuration you end up with a dedicated server installed with root filesystem on the whole first device without any redundancy or performance. So it will be nice to reinstall the server without using remote management module (because it is missing, for example).
Here are the steps to reinstall a CentOS7 server with two hard drives, the initial installation uses the almost whole first device for root filesystem. At the end we will have the server with different hard drive configuration – root filesystem will be on a RAID1 device for redundancy (and read performance) and will have a dedicated space for it, there will be a bigger device for storage purposes.

Here are the steps to reinstall live CentOS 7 server using ssh and change disk configuration of root filesystem to RAID1:

STEP 1) Show the current configuration

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       461G  1.5G  437G   1% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  8.5M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/sda1       485M  136M  324M  30% /boot
/dev/sda5       3.9G   17M  3.7G   1% /tmp
tmpfs           3.2G     0  3.2G   0% /run/user/0
[root@localhost ~]# ls -al /dev/sd?
brw-rw---- 1 root disk 8,  0 Apr  4 11:06 /dev/sda
brw-rw---- 1 root disk 8, 16 Apr  4 11:06 /dev/sdb
brw-rw---- 1 root disk 8, 32 Apr  4 11:06 /dev/sdc
brw-rw---- 1 root disk 8, 48 Apr  4 11:06 /dev/sdd
[root@localhost ~]# 

Root filesystem uses /dev/sda3, /tmp uses /dev/sda5 and the boot is on /dev/sda2. So the whole install uses only /dev/sda device and the other 3 are spare. We are going to use the second hard drive /dev/sdb to create a software RAID1 for our root filesystem.

STEP 2) Prepare the second drive for first reboot

Because /dev/sda is the first device the server will always boot from the grub installed in /dev/sda, so if we want to change the partition layout we must umount all partitions of /dev/sda, which is not a easy job. So because we have a second disk, we can change the partition layout of the second disk /dev/sdb, then copy the root filesystem from the first disk to the second and instruct the the grub to boot the root filesystem from the second disk. And more, at first we’ll use the partition for the swap of the second disk for root filesystem and then we’ll create the RAID1 device. Here we make initial setup of the second disk /dev/sdb:

[root@localhost ~]# parted /dev/sdb --script print
Model: ATA SanDisk SD6SB2M5 (scsi)
Disk /dev/sdb: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End  Size  Type  File system  Flags

[root@localhost ~]# parted /dev/sdb --script mklabel gpt
[root@localhost ~]# parted /dev/sdb --script mkpart primary 0% 4M
[root@localhost ~]# parted /dev/sdb --script mkpart primary 4M 16G
[root@localhost ~]# parted /dev/sdb --script mkpart primary 16G 50G
[root@localhost ~]# parted /dev/sdb --script mkpart primary 50G 100%
[root@localhost ~]# parted /dev/sdb --script set 1 bios_grub on
[root@localhost ~]# parted /dev/sdb --script print
Model: ATA SanDisk SD6SB2M5 (scsi)
Disk /dev/sdb: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4194kB  3146kB               primary  bios_grub
 2      4194kB  16.0GB  16.0GB               primary
 3      16.0GB  50.0GB  34.0GB               primary
 4      50.0GB  512GB   462GB                primary

[root@localhost ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
977280 inodes, 3905280 blocks
195264 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
120 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@localhost ~]#

STEP 3) Copy all the files from the current filesystem to the newly created one using rsync

[root@localhost ~]# mkdir /mnt/centos
[root@localhost ~]# mount /dev/sdb2 /mnt/centos/
[root@localhost ~]# rsync --delete --partial --verbose --progress --stats --recursive --times --perms --links --owner --group --hard-links --devices --exclude=/mnt --exclude=/proc --exclude=/sys / /mnt/centos/
...
...
Number of files: 81519
Number of files transferred: 60909
Total file size: 1483871491 bytes
Total transferred file size: 1460598076 bytes
Literal data: 1460598076 bytes
Matched data: 0 bytes
File list size: 1691669
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1465598884
Total bytes received: 1734750

sent 1465598884 bytes  received 1734750 bytes  79315331.57 bytes/sec
total size is 1483871491  speedup is 1.01
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       461G  1.5G  437G   1% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  8.5M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/sda1       485M  136M  324M  30% /boot
/dev/sda5       3.9G   17M  3.7G   1% /tmp
tmpfs           3.2G     0  3.2G   0% /run/user/0
/dev/sdb2        15G  1.6G   13G  12% /mnt/centos
[root@localhost ~]# 

STEP 4) Prepare the new root

  1. umount /boot, because we want to use it for the first reboot but with changed grub configuration, generated for the new root filesystem
    [root@localhost ~]# umount /boot
    [root@localhost ~]# mount /dev/sda1 /mnt/centos/boot
    [root@localhost ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2       461G  1.5G  437G   1% /
    devtmpfs         16G     0   16G   0% /dev
    tmpfs            16G     0   16G   0% /dev/shm
    tmpfs            16G  8.6M   16G   1% /run
    tmpfs            16G     0   16G   0% /sys/fs/cgroup
    /dev/sda5       3.9G   17M  3.7G   1% /tmp
    tmpfs           3.2G     0  3.2G   0% /run/user/0
    /dev/sdb2        15G  1.6G   13G  12% /mnt/centos
    /dev/sda1       485M  136M  324M  30% /mnt/centos/boot
    
  2. chroot in the new root and replace the old GIUD with the new one for the root filesystem in /etc/fstab
    [root@localhost ~]# mkdir /mnt/centos/proc
    [root@localhost ~]# mkdir /mnt/centos/sys
    [root@localhost ~]# mount -o bind /proc /mnt/centos/proc
    [root@localhost ~]# mount -o bind /dev /mnt/centos/dev
    [root@localhost ~]# mount -o bind /sys /mnt/centos/sys
    [root@localhost ~]# chroot /mnt/centos/
    [root@localhost /]# blkid |grep sdb2
    /dev/sdb2: UUID="b829d6f1-ca0e-4939-8764-c329aee0a5b2" TYPE="ext4" PARTLABEL="primary" PARTUUID="b150c7cc-0557-4de9-bbc9-05ae54b9cec5" 
    [root@localhost /]# blkid |grep sda2
    /dev/sda2: UUID="b43edab7-8b2f-4047-9ca2-0f3e3ea24e0e" TYPE="ext4" 
    [root@localhost /]# sed -i "s/b43edab7-8b2f-4047-9ca2-0f3e3ea24e0e/b829d6f1-ca0e-4939-8764-c329aee0a5b2/g" /etc/fstab
    
  3. comment out the /tmp in /etc/fstab (and any other directory, which uses /dev/sda, remember after the reboot we will change the partition layout of /dev/sda, so we need not to use any partition from it)
    [root@localhost /]# cat /etc/fstab 
    
    #
    # /etc/fstab
    # Created by anaconda on Wed Apr  4 11:00:01 2018
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=b829d6f1-ca0e-4939-8764-c329aee0a5b2 /                       ext4    defaults        1 1
    UUID=9b98bd49-34bd-43a3-89b9-32c36df722b2 /boot                   ext2    defaults        1 2
    UUID=7f44f0b8-cbbe-4e70-a763-112675cf9a2c /tmp                    ext4    noexec,nosuid,nodev        1 2
    UUID=20c3afea-87ae-4716-8a65-323bd9e6eae6 swap                    swap    defaults        0 0
    [root@localhost /]# sed -i "s/UUID=7f44f0b8-cbbe-4e70-a763-112675cf9a2c/#UUID=7f44f0b8-cbbe-4e70-a763-112675cf9a2c/g" /etc/fstab 
    [root@localhost /]# cat /etc/fstab 
    
    #
    # /etc/fstab
    # Created by anaconda on Wed Apr  4 11:00:01 2018
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=b829d6f1-ca0e-4939-8764-c329aee0a5b2 /                       ext4    defaults        1 1
    UUID=9b98bd49-34bd-43a3-89b9-32c36df722b2 /boot                   ext2    defaults        1 2
    #UUID=7f44f0b8-cbbe-4e70-a763-112675cf9a2c /tmp                    ext4    noexec,nosuid,nodev        1 2
    UUID=20c3afea-87ae-4716-8a65-323bd9e6eae6 swap                    swap    defaults        0 0
    [root@localhost /]#
    
  4. Generate the new grub2 configuration (because you are in the chrooted new root and there you change the /etc/fstab, grub will use the new GUID for the filesystem)
    [root@localhost /]# grub2-mkconfig -o /boot/grub2/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-693.21.1.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-693.21.1.el7.x86_64.img
    Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-3003b47aedb040f6baaf6fce8c6b8386
    Found initrd image: /boot/initramfs-0-rescue-3003b47aedb040f6baaf6fce8c6b8386.img
    done
    [root@localhost /]# exit
    exit
    [root@localhost ~]# umount /mnt/centos/boot
    [root@localhost ~]# umount /mnt/centos/proc
    [root@localhost ~]# umount /mnt/centos/sys
    [root@localhost ~]# umount /mnt/centos/dev
    [root@localhost ~]# umount /mnt/centos
    [root@localhost ~]# reboot
    Connection to srv closed by remote host.
    Connection to srv closed.
    

STEP 5) Prepare the two disks /dev/sda and /dev/sdb for RAID1 device

Unmount all devices of /dev/sda (such as swap, /boot). Then make a new partition layout for /dev/sda and tune the layout of /dev/sdb (we need the flag raid to be “on”)

[root@srv0 ~]# ssh srv
root@srv's password: 
Last login: Wed Apr  4 11:28:57 2018 from 192.168.0.110
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2        15G  1.6G   13G  12% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  8.5M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/sda1       485M  136M  324M  30% /boot
tmpfs           3.2G     0  3.2G   0% /run/user/0
[root@localhost ~]# umount /boot
[root@localhost ~]# swapoff -a
[root@localhost ~]# ls -al /boot/
total 128020
dr-xr-xr-x  6 root root     4096 Apr  4 11:07 .
dr-xr-xr-x 17 root root     4096 Apr  4 12:25 ..
-rw-r--r--  1 root root   140971 Mar  7 19:16 config-3.10.0-693.21.1.el7.x86_64
-rw-r--r--  1 root root   140894 Aug 22  2017 config-3.10.0-693.el7.x86_64
drwxr-xr-x  3 root root     4096 Apr  4 11:00 efi
drwxr-xr-x  2 root root     4096 Apr  4 11:00 grub
drwx------  5 root root     4096 Apr  4 11:04 grub2
-rw-------  1 root root 53705597 Apr  4 11:02 initramfs-0-rescue-3003b47aedb040f6baaf6fce8c6b8386.img
-rw-------  1 root root 17881515 Apr  4 11:04 initramfs-3.10.0-693.21.1.el7.x86_64.img
-rw-------  1 root root 15956344 Apr  4 11:07 initramfs-3.10.0-693.21.1.el7.x86_64kdump.img
-rw-------  1 root root 17871068 Apr  4 11:04 initramfs-3.10.0-693.el7.x86_64.img
-rw-r--r--  1 root root   610968 Apr  4 11:01 initrd-plymouth.img
drwx------  2 root root     4096 Apr  4 11:00 lost+found
-rw-r--r--  1 root root   293361 Mar  7 19:18 symvers-3.10.0-693.21.1.el7.x86_64.gz
-rw-r--r--  1 root root   293027 Aug 22  2017 symvers-3.10.0-693.el7.x86_64.gz
-rw-------  1 root root  3237433 Mar  7 19:16 System.map-3.10.0-693.21.1.el7.x86_64
-rw-------  1 root root  3228420 Aug 22  2017 System.map-3.10.0-693.el7.x86_64
-rwxr-xr-x  1 root root  5877760 Apr  4 11:02 vmlinuz-0-rescue-3003b47aedb040f6baaf6fce8c6b8386
-rwxr-xr-x  1 root root  5917504 Mar  7 19:16 vmlinuz-3.10.0-693.21.1.el7.x86_64
-rw-r--r--  1 root root      171 Mar  7 19:16 .vmlinuz-3.10.0-693.21.1.el7.x86_64.hmac
-rwxr-xr-x  1 root root  5877760 Aug 22  2017 vmlinuz-3.10.0-693.el7.x86_64
-rw-r--r--  1 root root      166 Aug 22  2017 .vmlinuz-3.10.0-693.el7.x86_64.hmac
[root@localhost ~]# parted /dev/sda --script mklabel gpt
[root@localhost ~]# parted /dev/sda --script mkpart primary 0% 4M
[root@localhost ~]# parted /dev/sda --script mkpart primary 4M 16G
[root@localhost ~]# parted /dev/sda --script mkpart primary 16G 50G
[root@localhost ~]# parted /dev/sda --script mkpart primary 50G 100%
[root@localhost ~]# parted /dev/sda --script set 1 bios_grub on
[root@localhost ~]# parted /dev/sda --script set 2 raid on
[root@localhost ~]# parted /dev/sda --script set 3 raid on
[root@localhost ~]# parted /dev/sda --script set 4 raid on
[root@localhost ~]# parted /dev/sda --script print
Model: ATA SanDisk SD6SB2M5 (scsi)
Disk /dev/sda: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4194kB  3146kB  ext2         primary  bios_grub
 2      4194kB  16.0GB  16.0GB               primary  raid
 3      16.0GB  50.0GB  34.0GB               primary  raid
 4      50.0GB  512GB   462GB                primary  raid

[root@localhost ~]# parted /dev/sdb --script print
Model: ATA SanDisk SD6SB2M5 (scsi)
Disk /dev/sdb: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4194kB  3146kB               primary  bios_grub
 2      4194kB  16.0GB  16.0GB  ext4         primary
 3      16.0GB  50.0GB  34.0GB               primary
 4      50.0GB  512GB   462GB                primary

[root@localhost ~]# parted /dev/sdb --script set 3 raid on
[root@localhost ~]# parted /dev/sdb --script print
Model: ATA SanDisk SD6SB2M5 (scsi)
Disk /dev/sdb: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4194kB  3146kB               primary  bios_grub
 2      4194kB  16.0GB  16.0GB  ext4         primary
 3      16.0GB  50.0GB  34.0GB               primary  raid
 4      50.0GB  512GB   462GB                primary

STEP 6) Create the RAID1 device and format the filesystem, then copy all files from the root file system to the RAID1 device /dev/md1 (mounted again in /mnt/centos)

[root@localhost ~]# mdadm --create --verbose --metadata=1.2 /dev/md1 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
mdadm: size set to 33186816K
mdadm: array /dev/md1 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] 
md1 : active raid1 sdb3[1] sda3[0]
      33186816 blocks super 1.2 [2/2] [UU]
      [==>..................]  resync = 10.8% (3602048/33186816) finish=2.4min speed=200113K/sec
      
unused devices: <none>
[root@localhost ~]# mkfs.ext4 /dev/md1
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
977280 inodes, 3905280 blocks
195264 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
120 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   
[root@localhost ~]# mount /dev/md1 /mnt/centos/
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2        15G  1.6G   13G  12% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  8.5M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
tmpfs           3.2G     0  3.2G   0% /run/user/0
/dev/md1         32G   49M   30G   1% /mnt/centos
[root@localhost ~]# rsync --delete --partial --verbose --progress --stats --recursive --times --perms --links --owner --group --hard-links --devices --exclude=/mnt --exclude=/proc --exclude=/sys / /mnt/centos/
sending incremental file list
./
.autorelabel
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1022/1024)
.readahead
      237849 100%   39.12MB/s    0:00:00 (xfer#2, to-check=1021/1024)
bin -> usr/bin
lib -> usr/lib
lib64 -> usr/lib64
sbin -> usr/sbin
....
....
Number of files: 81532
Number of files transferred: 60917
Total file size: 1484146321 bytes
Total transferred file size: 1460872926 bytes
Literal data: 1460872926 bytes
Matched data: 0 bytes
File list size: 1693018
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1465875457
Total bytes received: 1734920

sent 1465875457 bytes  received 1734920 bytes  83863450.11 bytes/sec
total size is 1484146321  speedup is 1.01
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2        15G  1.6G   13G  12% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  8.5M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
tmpfs           3.2G     0  3.2G   0% /run/user/0
/dev/md1         32G  1.6G   28G   6% /mnt/centos

STEP 7) Prepare the new root in the RAID1 device

chroot in the new place (/mnt/centos) and change the GUID of the root filesystem in /etc/fstab, comment the “/boot”, we will use /boot on our root filesystem (we can do it, because we have a separate boot grub partition, the first one, so our /boot could reside on a RAID device). Also add the configuration of the UUID array in /etc/default/grub to generate a proper grub2 configuration for the next boot.

[root@localhost ~]# mkdir -p /mnt/centos/proc
[root@localhost ~]# mkdir -p /mnt/centos/sys
[root@localhost ~]# mount -o bind /proc /mnt/centos/proc
[root@localhost ~]# mount -o bind /dev /mnt/centos/dev
[root@localhost ~]# mount -o bind /sys /mnt/centos/sys
[root@localhost ~]# chroot /mnt/centos/
[root@localhost /]# blkid |grep sdb2
/dev/sdb2: UUID="b829d6f1-ca0e-4939-8764-c329aee0a5b2" TYPE="ext4" PARTLABEL="primary" PARTUUID="b150c7cc-0557-4de9-bbc9-05ae54b9cec5" 
[root@localhost /]# blkid |grep md1
/dev/md1: UUID="38407879-7399-492c-bad6-d8a3ef0297d4" TYPE="ext4" 
[root@localhost /]# sed -i "s/b829d6f1-ca0e-4939-8764-c329aee0a5b2/38407879-7399-492c-bad6-d8a3ef0297d4/g" /etc/fstab 
[root@localhost /]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Apr  4 11:00:01 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=38407879-7399-492c-bad6-d8a3ef0297d4 /                       ext4    defaults        1 1
UUID=9b98bd49-34bd-43a3-89b9-32c36df722b2 /boot                   ext2    defaults        1 2
#UUID=7f44f0b8-cbbe-4e70-a763-112675cf9a2c /tmp                    ext4    noexec,nosuid,nodev        1 2
UUID=20c3afea-87ae-4716-8a65-323bd9e6eae6 swap                    swap    defaults        0 0
[root@localhost /]# sed -i "s/UUID=9b98bd49-34bd-43a3-89b9-32c36df722b2/#UUID=9b98bd49-34bd-43a3-89b9-32c36df722b2/g" /etc/fstab 
[root@localhost /]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Apr  4 11:00:01 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=38407879-7399-492c-bad6-d8a3ef0297d4 /                       ext4    defaults        1 1
#UUID=9b98bd49-34bd-43a3-89b9-32c36df722b2 /boot                   ext2    defaults        1 2
#UUID=7f44f0b8-cbbe-4e70-a763-112675cf9a2c /tmp                    ext4    noexec,nosuid,nodev        1 2
UUID=20c3afea-87ae-4716-8a65-323bd9e6eae6 swap                    swap    defaults        0 0
[root@localhost /]# mdadm -E /dev/sda3
/dev/sda3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : e59b6269:7af24168:193c51d0:65b33fd9
           Name : localhost.localdomain:1  (local to host localhost.localdomain)
  Creation Time : Wed Apr  4 12:38:58 2018
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 66373632 (31.65 GiB 33.98 GB)
     Array Size : 33186816 (31.65 GiB 33.98 GB)
    Data Offset : 32768 sectors
   Super Offset : 8 sectors
   Unused Space : before=32616 sectors, after=0 sectors
          State : active
    Device UUID : 8ebd8e2d:aa01d194:55a51280:e4192e08

    Update Time : Wed Apr  4 12:44:00 2018
  Bad Block Log : 512 entries available at offset 136 sectors
       Checksum : 3e7cfbb6 - correct
         Events : 18


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
[root@localhost /]# nano /etc/default/grub
[root@localhost /]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="rd.md.uuid=e59b6269:7af24168:193c51d0:65b33fd9 crashkernel=auto console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"
[root@localhost /]# mdadm --detail --scan >> /etc/mdadm.conf
[root@localhost /]# cat /etc/mdadm.conf
ARRAY /dev/md1 metadata=1.2 name=localhost.localdomain:1 UUID=e59b6269:7af24168:193c51d0:65b33fd9
[root@localhost /]# dracut --regenerate-all --force
[root@localhost /]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.21.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.21.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3003b47aedb040f6baaf6fce8c6b8386
Found initrd image: /boot/initramfs-0-rescue-3003b47aedb040f6baaf6fce8c6b8386.img
done
[root@localhost /]# grub2-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
[root@localhost /]# grub2-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
[root@localhost /]# exit
exit
[root@localhost ~]# umount /mnt/centos/proc
[root@localhost ~]# umount /mnt/centos/sys
[root@localhost ~]# umount /mnt/centos/dev
[root@localhost ~]# umount /mnt/centos
[root@localhost ~]# reboot
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
Connection to srv closed by remote host.
Connection to srv closed.

STEP 8) Create one more RAID1 device for the swap

Create a new RAID1 for the swap partition and configure the /dev/sdb with parted. Add the new RAID1 device in /dev/default/grub and generate the grub2 configuration file.

[root@srv0 ~]# ssh srv
root@srv's password: 
Last login: Wed Apr  4 11:38:19 2018 from 192.168.0.110

[root@localhost ~]# parted /dev/sda --script print
Model: ATA SanDisk SD6SB2M5 (scsi)
Disk /dev/sda: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4194kB  3146kB               primary  bios_grub
 2      4194kB  16.0GB  16.0GB               primary  raid
 3      16.0GB  50.0GB  34.0GB               primary  raid
 4      50.0GB  512GB   462GB                primary  raid

[root@localhost ~]# parted /dev/sdb --script print
Model: ATA SanDisk SD6SB2M5 (scsi)
Disk /dev/sdb: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4194kB  3146kB               primary  bios_grub
 2      4194kB  16.0GB  16.0GB  ext4         primary
 3      16.0GB  50.0GB  34.0GB               primary  raid
 4      50.0GB  512GB   462GB                primary

[root@localhost ~]# parted /dev/sdb --script set 2 raid on
[root@localhost ~]# parted /dev/sdb --script set 4 raid on
[root@localhost ~]# mdadm --create --verbose --metadata=1.2 /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
mdadm: /dev/sdb2 appears to contain an ext2fs file system
       size=15621120K  mtime=Wed Apr  4 12:24:37 2018
mdadm: size set to 15612928K
Continue creating array? yes
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      15612928 blocks super 1.2 [2/2] [UU]
      [====>................]  resync = 21.5% (3371072/15612928) finish=0.9min speed=210692K/sec
      
md1 : active raid1 sdb3[1] sda3[0]
      33186816 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      15612928 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sdb3[1] sda3[0]
      33186816 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
[root@localhost ~]# mkswap /dev/md0
Setting up swapspace version 1, size = 15612924 KiB
no label, UUID=0916f8c5-079d-4780-af38-89411fa7ec24
[root@localhost ~]# cat /etc/fstab |grep swap
UUID=20c3afea-87ae-4716-8a65-323bd9e6eae6 swap                    swap    defaults        0 0
[root@localhost ~]# sed -i "s/20c3afea-87ae-4716-8a65-323bd9e6eae6/0916f8c5-079d-4780-af38-89411fa7ec24/g" /etc/fstab
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      15612928 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sdb3[1] sda3[0]
      33186816 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
[root@localhost ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Apr  4 11:00:01 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=38407879-7399-492c-bad6-d8a3ef0297d4 /                       ext4    defaults        1 1
#UUID=9b98bd49-34bd-43a3-89b9-32c36df722b2 /boot                   ext2    defaults        1 2
#UUID=7f44f0b8-cbbe-4e70-a763-112675cf9a2c /tmp                    ext4    noexec,nosuid,nodev        1 2
UUID=0916f8c5-079d-4780-af38-89411fa7ec24 swap                    swap    defaults        0 0
[root@localhost ~]# mdadm -E /dev/sda2
/dev/sda2:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 2e122130:2eefd9ec:5ad5b846:6bd10d6b
           Name : localhost.localdomain:0  (local to host localhost.localdomain)
  Creation Time : Wed Apr  4 13:11:03 2018
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 31225856 (14.89 GiB 15.99 GB)
     Array Size : 15612928 (14.89 GiB 15.99 GB)
    Data Offset : 16384 sectors
   Super Offset : 8 sectors
   Unused Space : before=16232 sectors, after=0 sectors
          State : clean
    Device UUID : 7ef8d502:96208fd4:bbed302a:37063c83

    Update Time : Wed Apr  4 13:12:42 2018
  Bad Block Log : 512 entries available at offset 136 sectors
       Checksum : c808e2cc - correct
         Events : 17


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
[root@localhost ~]# nano /etc/default/grub 
[root@localhost ~]# cat /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="rd.md.uuid=e59b6269:7af24168:193c51d0:65b33fd9 rd.md.uuid=2e122130:2eefd9ec:5ad5b846:6bd10d6b crashkernel=auto console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"

[root@localhost ~]# mdadm --detail --scan > /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf 
ARRAY /dev/md1 metadata=1.2 name=localhost.localdomain:1 UUID=e59b6269:7af24168:193c51d0:65b33fd9
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=2e122130:2eefd9ec:5ad5b846:6bd10d6b
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.21.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.21.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3003b47aedb040f6baaf6fce8c6b8386
Found initrd image: /boot/initramfs-0-rescue-3003b47aedb040f6baaf6fce8c6b8386.img
done
[root@localhost ~]# reboot
Connection to srv closed by remote host.
Connection to srv closed.
[root@srv0 ~]# 

So we changed our root filesystem device configuration from a single partition to a RAID1 device for redundancy and better performance!

[root@srv0 ~]# ssh srv
root@srv's password: 
Last login: Wed Apr  4 13:35:55 2018 from 192.168.0.110
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1         32G  1.6G   28G   6% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  8.5M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
tmpfs           3.2G     0  3.2G   0% /run/user/0
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        273M         30G        8.5M        199M         30G
Swap:           14G          0B         14G
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sda2[0] sdb2[1]
      15612928 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda3[0] sdb3[1]
      33186816 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
[root@localhost ~]#

STEP 9) Create the storage device

The storage device is a RAID5 setup with 4 hard disks available in the current machine (but it is the same with two devices except the RAID is RAID1). The idea is to separate the storage from the root filesystem that’s why we have separate two RAID devices.

[root@localhost ~]# parted /dev/sdc --script mklabel gpt
[root@localhost ~]# parted /dev/sdc --script mkpart primary 0% 4M
[root@localhost ~]# parted /dev/sdc --script mkpart primary 4M 16G
[root@localhost ~]# parted /dev/sdc --script mkpart primary 16G 50G
[root@localhost ~]# parted /dev/sdc --script mkpart primary 50G 100%
[root@localhost ~]# parted /dev/sdc --script set 1 bios_grub on
[root@localhost ~]# parted /dev/sdc --script set 2 raid on
[root@localhost ~]# parted /dev/sdc --script set 3 raid on
[root@localhost ~]# parted /dev/sdc --script set 4 raid on
[root@localhost ~]# parted /dev/sdd --script mklabel gpt
[root@localhost ~]# parted /dev/sdd --script mkpart primary 0% 4M
[root@localhost ~]# parted /dev/sdd --script mkpart primary 4M 16G
[root@localhost ~]# parted /dev/sdd --script mkpart primary 16G 50G
[root@localhost ~]# parted /dev/sdd --script mkpart primary 50G 100%
[root@localhost ~]# parted /dev/sdd --script set 1 bios_grub on
[root@localhost ~]# parted /dev/sdd --script set 2 raid on
[root@localhost ~]# parted /dev/sdd --script set 3 raid on
[root@localhost ~]# parted /dev/sdd --script set 4 raid on
[root@localhost ~]# mdadm --create --verbose /dev/md2 --level=5 --raid-devices=4 --chunk=1024 /dev/sda4 /dev/sdb4 /dev/sdc4 /dev/sdd4
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: size set to 451147776K
mdadm: automatically enabling write-intent bitmap on large array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md2 : active raid5 sdd4[4] sdc4[2] sdb4[1] sda4[0]
      1353443328 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [4/3] [UUU_]
      [>....................]  recovery =  0.9% (4316984/451147776) finish=36.2min speed=205570K/sec
      bitmap: 0/4 pages [0KB], 65536KB chunk

md0 : active raid1 sda2[0] sdb2[1]
      15612928 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda3[0] sdb3[1]
      33186816 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
[root@localhost ~]# mkfs.ext4 /dev/md2
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=256 blocks, Stripe width=768 blocks
84590592 inodes, 338360832 blocks
16918041 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2487222272
10326 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done       

[root@localhost ~]# blkid | grep md2
/dev/md2: UUID="0ba39ec9-a1fc-4593-a704-6171cb2a3403" TYPE="ext4" 
[root@localhost ~]# nano /etc/fstab 
[root@localhost ~]# mkdir -p /mnt/storage
[root@localhost ~]# mount /mnt/storage
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1         32G  1.6G   28G   6% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  8.6M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
tmpfs           3.2G     0  3.2G   0% /run/user/0
/dev/md2        1.3T   77M  1.2T   1% /mnt/storage

QEMU full virtualization – CPU emulations (enable/disable CPU flags/instruction sets) of QEMU 2.0.0

After the two QEMU full virtualization howtos

You can use QEMU with a nearly native full virtualization. Here are some important tips for the guest CPU to consider when using QEMU directly (without any virtualization manager like virt-manager, libvirt and so on).

TIP 1)Choose your host CPU emulation

You can see what options are available for host emulation with:

srv@local ~$ qemu-system-x86_64 -cpu help

x86           qemu64  QEMU Virtual CPU version 2.0.0                  
x86           phenom  AMD Phenom(tm) 9550 Quad-Core Processor         
x86         core2duo  Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz 
x86            kvm64  Common KVM processor                            
x86           qemu32  QEMU Virtual CPU version 2.0.0                  
x86            kvm32  Common 32-bit KVM processor                     
x86          coreduo  Genuine Intel(R) CPU           T2600  @ 2.16GHz 
x86              486                                                  
x86          pentium                                                  
x86         pentium2                                                  
x86         pentium3                                                  
x86           athlon  QEMU Virtual CPU version 2.0.0                  
x86             n270  Intel(R) Atom(TM) CPU N270   @ 1.60GHz          
x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)   
x86           Penryn  Intel Core 2 Duo P9xxx (Penryn Class Core 2)    
x86          Nehalem  Intel Core i7 9xx (Nehalem Class Core i7)       
x86         Westmere  Westmere E56xx/L56xx/X56xx (Nehalem-C)          
x86      SandyBridge  Intel Xeon E312xx (Sandy Bridge)                
x86          Haswell  Intel Core Processor (Haswell)                  
x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)           
x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)          
x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)          
x86       Opteron_G4  AMD Opteron 62xx class CPU                      
x86       Opteron_G5  AMD Opteron 63xx class CPU                      
x86             host  KVM processor with all supported host features (only available in KVM mode)

Recognized CPUID flags:
  pbe ia64 tm ht ss sse2 sse fxsr mmx acpi ds clflush pn pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de vme fpu
  hypervisor rdrand f16c avx osxsave xsave aes tsc-deadline popcnt movbe x2apic sse4.2|sse4_2 sse4.1|sse4_1 dca pcid pdcm xtpr cx16 fma cid ssse3 tm2 est smx vmx ds_cpl monitor dtes64 pclmulqdq|pclmuldq pni|sse3
  smap adx rdseed rtm invpcid erms bmi2 smep avx2 hle bmi1 fsgsbase
  3dnow 3dnowext lm|i64 rdtscp pdpe1gb fxsr_opt|ffxsr mmxext nx|xd syscall
  perfctr_nb perfctr_core topoext tbm nodeid_msr tce fma4 lwp wdt skinit xop ibs osvw 3dnowprefetch misalignsse sse4a abm cr8legacy extapic svm cmp_legacy lahf_lm
  pmm-en pmm phe-en phe ace2-en ace2 xcrypt-en xcrypt xstore-en xstore
  kvm_pv_unhalt kvm_pv_eoi kvm_steal_time kvm_asyncpf kvmclock kvm_mmu kvm_nopiodelay kvmclock
  pfthreshold pause_filter decodeassists flushbyasid vmcb_clean tsc_scale nrip_save svm_lock lbrv npt

The host server will expose different instruction set to the guest server (the emulated CPU), so when you choose your host to emulate for example “qemu64” with:

qemu-system-x86_64 -enable-kvm  \
-cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic -smp 2,maxcpus=8 \
-daemonize -vnc 192.168.0.10:1 \
-drive file=/mnt/storage/qemu/roofs/srv_virt.qcow2,index=0,cache=none,aio=threads,if=virtio \
-cdrom /mnt/storage/images/install-amd64-minimal-20140327.iso -boot d \
-net nic,model=virtio,macaddr=$(< /sys/class/net/macvtap0/address) \
-net tap,fd=3 3<>/dev/tap$(< /sys/class/net/macvtap0/ifindex) \
-balloon virtio -m 8192 \
-monitor telnet:127.0.0.1:5801,server,nowait -writeconfig /opt/qemu/config/srv_virt.qcow2.conf

The guest server (the virtual machine) will have the following CPU and instruction set:

vendor_id       : GenuineIntel
cpu family      : 6
model           : 6
model name      : QEMU Virtual CPU version 2.0.0
stepping        : 3
microcode       : 0x1
cpu MHz         : 2133.408
cache size      : 4096 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 4
wp              : yes
flags           : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm rep_good nopl pni ssse3 cx16 sse4_1 x2apic popcnt hypervisor lahf_lm
bogomips        : 4266.81
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 6
model name      : QEMU Virtual CPU version 2.0.0
stepping        : 3
microcode       : 0x1
cpu MHz         : 2133.408
cache size      : 4096 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 4
wp              : yes
flags           : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm rep_good nopl pni ssse3 cx16 sse4_1 x2apic popcnt hypervisor lahf_lm
bogomips        : 4266.81
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

A base set of instructions (flags) with the explicitly included by our command with

+ssse3,+sse4.1,+sse4.2,+x2apic

. The format:

-cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic

IF you choose the last option:

-cpu host

the host server will try to emulate and expose to the virtual machine its processor and all flags:

qemu-system-x86_64 -enable-kvm  \
-cpu host -smp 2,maxcpus=8 \
-daemonize -vnc 192.168.0.10:1 \
-drive file=/mnt/storage/qemu/roofs/srv_virt.qcow2,index=0,cache=none,aio=threads,if=virtio \
-cdrom /mnt/storage/images/install-amd64-minimal-20140327.iso -boot d \
-net nic,model=virtio,macaddr=$(< /sys/class/net/macvtap0/address) \
-net tap,fd=3 3<>/dev/tap$(< /sys/class/net/macvtap0/ifindex) \
-balloon virtio -m 8192 \
-monitor telnet:127.0.0.1:5801,server,nowait -writeconfig /opt/qemu/config/srv_virt.qcow2.conf

The virtual machine:

[root@vm0 ~]# cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5606  @ 2.13GHz
stepping        : 2
microcode       : 0x1
cpu MHz         : 2133.408
cache size      : 8192 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm tsc_adjust
bogomips        : 4266.81
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

The host server:

[root@srv0 ~]# cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5606  @ 2.13GHz
stepping        : 2
microcode       : 0x14
cpu MHz         : 1200.000
cache size      : 8192 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm arat
bogomips        : 4266.41
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

TIP 2) Disable certain CPU flags (instruction sets)

As you can see with the above CPU options you can hide your exact type of processor and you could disable specific CPU flags (instruction sets) to the user’s virtual machine. The purpose is up to the user and one reason for example could be not offer “avx” (or “avx2”) to discourage crypto mining with the virtual machine. Or limit the SSE2/3/4/4.2/SSSE3 and other “multimedia” instruction sets to discourage video encoding and so on. Probably you would like to be used It’s up to you what to offer to the virtual machine user.
Here is the command to emulate the host CPU with all supported flags but disable “sse4.1” and “sse4.2”:
The syntax:

-cpu host,-sse4.1,-sse4.2

And the qemu command is:

qemu-system-x86_64 -enable-kvm \
-cpu host,-sse4.1,-sse4.2 \
-smp 2,maxcpus=8 \
-daemonize -vnc 192.168.0.10:1 \
-drive file=/mnt/storage/qemu/roofs/srv_virt.qcow2,index=0,cache=none,aio=threads,if=virtio \
-cdrom /mnt/storage/images/install-amd64-minimal-20140327.iso -boot d \
-net nic,model=virtio,macaddr=$(< /sys/class/net/macvtap0/address) \
-net tap,fd=3 3<>/dev/tap$(< /sys/class/net/macvtap0/ifindex) \
-balloon virtio -m 8192 \
-monitor telnet:127.0.0.1:5801,server,nowait -writeconfig /opt/qemu/config/srv_virt.qcow2.conf

So the virtual machine lacks the disabled flags:

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl pni pclmulqdq ssse3 cx16 pcid x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm tsc_adjust

TIP 3) Number of virtual processors in the virtual machine

The syntax

-smp 2,maxcpus=8

of the qemu command:

qemu-system-x86_64 -enable-kvm  -cpu host \
-smp 2,maxcpus=8 \
-daemonize -vnc 192.168.0.10:1 \
-drive file=/mnt/storage/qemu/roofs/srv_virt.qcow2,index=0,cache=none,aio=threads,if=virtio \
-cdrom /mnt/storage/images/install-amd64-minimal-20140327.iso -boot d \
-net nic,model=virtio,macaddr=$(< /sys/class/net/macvtap0/address) \
-net tap,fd=3 3<>/dev/tap$(< /sys/class/net/macvtap0/ifindex) \
-balloon virtio -m 8192 \
-monitor telnet:127.0.0.1:5801,server,nowait -writeconfig /opt/qemu/config/srv_virt.qcow2.conf

will start up the virtual machine with 2 processors and you can hot add a cpu up to 8 total in any time you want with the management console listening on 127.0.0.1:5801.

Howto do QEMU full virtualization with bridged networking

This howto rather continues the previous one “Howto do QEMU full virtualization with MacVTap networking” with the exception it will be showed how to use a classic setup of the networking – the use of bridge device. Because this setup requires a specific configuration for every Linux distro if we do not just add the bridge manually it is separated in this howto. For the clear and full howto, we would repeat the two first steps just to enable this howto to be independent of the original one mentioned above.
So use full virtualization under Linux you can use QEMU and no other library or manager like virt-manager. QEMU is simple enough and with a couple of parameters to it, you can start KVM virtual machines with near-native performance. To use KVM you must enable it in the BIOS of your server (or desktop machine).

Here are the main steps:

STEP 1) Enable KVM in the BIOS

  • For Intel machine you must find option Intel Virtualization Technology (or Intel VT-x) probably in BIOS menu of Chipset, Advanced CPU Configuration or other.
  • For AMD machine the virtualization cannot be disabled so it is enabled by default, but you can check for additional virtualization features to enable like Virtualization Extensions, Vanderpool and other.
  • Enable also additional features – Intel VT-d or AMD IOMMU, if they are available.

Reboot your machine and check if the KVM is supported:

srv@local ~$ cat /proc/cpuinfo |grep -E "vmx|svm"
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts
...

STEP 2) Install QEMU

Under CentOS 7 you can just install couple of packets – that’s all you need:

yum install -y qemu qemu-common qemu-img qemu-kvm-common qemu-system-x86 qemu-user bridge-utils

Or under Ubuntu

apt-get install qemu-kvm bridge-utils

STEP 3) Prepare the network 1 – the bridge device

Under CentOS 7 add the following configuration file

/etc/sysconfig/network-scripts/ifcfg-br0

with the content of

DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR0=192.168.0.1
PREFIX0=24
#GATEWAY0=192.168.0.1
NETMASK=255.255.255.0
IPV6_FAILURE_FATAL=no
NM_CONTROLLED=no
ZONE=public

If you want to use a real IP set to your virtual machine, you should set a real IP here and uncomment the GATEWAY0 with the real gateway IP. If real IP is used then you should include the main Internet network interface to the bridge by adding at the end of the configuration file /etc/sysconfig/network-scripts/ifcfg-eth0 (if eth0 is your network interface):

...
BRIDGE=br0

And restart the network

srv@local ~$ systemctl restart network

Under Ubuntu add to the file

/etc/network/interfaces

the following:

# Bridge
auto br0
iface br0 inet static
  address 192.168.0.10
  netmask 255.255.255.0
#  gateway 192.168.0.1
  bridge_ports none
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0

If you want to use real IP set to your virtual machine, you should set a real IP here and uncomment the GATEWAY0 with the real gateway IP and replace the “none” in the option “bridge_ports” with the name of your main Internet network interface. For example:

  ...
  bridge_ports eth0
  ...

And restart the network

srv@local ~$ /etc/init.d/networking restart

Or we can add the bridge device manually:

srv@local ~$ brctl addbr br0
srv@local ~$ ip link set dev br0 up
srv@local ~$ ip addr add 192.168.0.1/24 dev br0

If we use real IP we have to add the main Internet network interface to the bridge, so when you set up the network in our virtual machine with a real IP it will work with no more additional configurations, but if we use a local IPs like our setup here and we want to have Internet in our virtual machine we must enable masquerade and linux routing. You can do it with:

srv@local ~$ echo 1 > /proc/sys/net/ipv4/ip_forward
#NAT with firewalld
srv@local ~$ firewall-cmd --add-masquerade --permanent
#NAT with iptables
srv@local ~$ iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

Use either firewalld or iptables setup, depends on your system configuration, just check if firewalld is running with:

srv@local ~$ firewall-cmd --list-all

If you receive an error, saying command not found or firewalld is not running, you should use the “NAT with iptables”
So the network is ready!

STEP 4) Prepare the network 2 – the tun/tap for the virtual machine

After we have added a bridge device tun/tap device, which will be used for the QEMU virtual machine must be added:

srv@local ~$ ip tuntap add tap0 mode tap
srv@local ~$ brctl addif br0 tap0

STEP 5) Create a QEMU hard drive

Create a 100G file

srv@local ~$ cd /mnt/storage1/disks/
srv@local ~$ qemu-img create -f qcow2 vm_harddisk.qcow2 100G
Formatting 'vm_harddisk.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536 lazy_refcounts=off 

or you can enable encryption (but on every start of your virtual machine you must set the key through the qemu console to start the virtual machine):

srv@local ~$ qemu-img create -f qcow2 vm_harddisk_e.bin -o encryption 100G
Formatting 'vm_harddisk_e.bin', fmt=qcow2 size=107374182400 encryption=on cluster_size=65536 lazy_refcounts=off

STEP 6) Boot up the QEMU KVM virtual server

srv@local ~$ qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -runas qemu -daemonize -vnc 127.0.0.1:1 \
-drive file=/mnt/storage1/disks/vm_harddisk.qcow2,index=0,cache=none,aio=threads,if=virtio \
-boot d -net nic,model=virtio,macaddr=00:00:00:00:00:01 -net tap,ifname=tap0 \
-balloon virtio -m 2048 -monitor telnet:127.0.0.1:5801,server,nowait

The command above will :

  • “-enable-kvm” – enable the KVM – full virtualization with near native performance
  • “-cpu host” – will expose all supported host CPU features (only supported in KVM mode)
  • “-smp 4” – sets 4 processors to the virtual machine
  • “-daemonize” – start the command in daemon mode
  • “-runas qemu” – run under user, you can run thwo whole virtual machine from a user created especially for it, no need to run it with root, even it is recommended to run it under unprivileged user
  • “-vnc 192.168.1.10:1” – start a VNC server on this IP:PORT = 192.168.1.10:5901, the IP must present on the server or you can use 0.0.0.0:1 for 0.0.0.0:5901, but in every situation limit the access by a firewall
  • “-drive file=/mnt/storage1/disks/vm_harddisk.qcow2,index=0,cache=none,aio=threads,if=virtio” – set the main hard drive of the system
  • “-boot d” – boot from the first hard drive
  • “-net nic,model=virtio,macaddr=00:00:00:00:00:01 -net tap,ifname=tap0” – set the network interface using the tap device created by STEP 3) and STEP 4)
  • “-balloon virtio” – use balloon driver to be able to hot add or hot remove RAM (newer version this option is depricated and it can be skipped)
  • “-m 2048” – set virtual RAM size to megs
  • “-monitor telnet:127.0.0.1:5801,server,nowait” – set the management console for the this virtual server, you can connect with:
    srv@local ~$ telnet 127.0.0.1 5801
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    QEMU 2.0.0 monitor - type 'help' for more information
    (qemu) 
    <Press "CTRL+]">
    telnet> Connection closed.
    

    When quitting the management console you must NOT exit the console with quite/exit or CTRL+d, becuause it will terminate the virtual server, you must disconnect from the console with “CTRL+]” and then quit the telnet shell. With the console you can hot add/remove CPU, RAM, network cards, pci devices, harddrives, start/stop/shutdown/reset the virtual machine and a lot more.

Boot the virtual machine from the hard drive given by “-drive” with network “-net” (couple of options), the RAM uses baloon memory and could be adjusted on-the-fly and sets the vncserver to listen for connection on port IP:port = 192.168.1.1:5901 (probably you’ll want to change this with a the real IP of your server, but be careful to set up a firewall rule for 5901 – the vnc port) and a management console listening on IP:port 127.0.0.1:5801.

* Boot the virtual server from a virtual CD/DVD

Probably the first time booting you might need to boot from an installation disk, this could be done by the following command:

srv@local ~$ qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -runas qemu -daemonize -vnc 127.0.0.1:1 -cdrom /mnt/storage1/disks/isos/CentOS-7-x86_64-NetInstall-1708.iso -boot c -drive file=/mnt/storage1/disks/vm_harddisk.qcow2,index=0,cache=none,aio=threads,if=virtio -net nic,model=virtio,macaddr=00:00:00:00:00:01 -net tap,ifname=tap0 -balloon virtio -m 2048 -monitor telnet:127.0.0.1:5805,server,nowait

The changes:

  1. “-boot c” – First boot device is now CD/DVD. “c” is for CD, “d” is for disk
  2. “-cdrom /mnt/storage1/disks/isos/CentOS-7-x86_64-NetInstall-1708.iso” – added the installation disk to the virtual machine

A newer QEMU version may need adding “script=no,downscript=no” to the tap0 interface!

srv@local ~$ qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -runas qemu -daemonize -vnc 127.0.0.1:1 -cdrom /mnt/storage1/disks/isos/CentOS-7-x86_64-NetInstall-1708.iso -boot c -drive file=/mnt/storage1/disks/vm_harddisk.qcow2,index=0,cache=none,aio=threads,if=virtio -net nic,model=virtio,macaddr=00:00:00:00:00:01 -net tap,ifname=tap0,script=no,downscript=no -m 2048 -monitor telnet:127.0.0.1:5805,server,nowait

Howto do QEMU full virtualization with MacVTap networking

To use full virtualization under linux you can use QEMU and no other library or manager like virt-manager. QEMU is simple enough and with couple of parameters to it you can start KVM virtual machines with near native performance. To use KVM you must enable it in the BIOS of your server (or desktop machine).

Here a several simple step to start a KVM virtual server:

STEP 1) Enable KVM in the BIOS

  • For Intel machine you must find option Intel Virtualization Technology (or Intel VT-x) probably in BIOS menu of Chipset, Advanced CPU Configuration or other.
  • For AMD machine the virtualization cannot be disabled so it is enabled by default, but you can check for additional virtualization features to enable like Virtualization Extensions, Vanderpool and other.
  • Enable also additional features – Intel VT-d or AMD IOMMU, if they are available.

Reboot your machine and check if the KVM is supported:

srv@local ~$ cat /proc/cpuinfo |grep -E "vmx|svm"
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts
...

STEP 2) Install QEMU

Under CentOS 7 you can just install couple of packets – that’s all you need:

yum install -y qemu qemu-common qemu-img qemu-kvm-common qemu-system-x86 qemu-user bridge-utils

Or under Ubuntu

apt-get install qemu-kvm bridge-utils

STEP 3) Prepare the network

srv@local ~$ ip link add link enp8s0f1 name macvtap0 type macvtap mode bridge
srv@local ~$ ip link set macvtap0 up

Here we create a macvtap0 device in bridge mode, these commands will create a tap device bridged to the network interface “enp8s0f1” (in our case, you must replace this device name with the device name you want to bridge your virtual machine network, probably the main interface of your server/desktop machine?). Only these two commands are needed, no other devices or network reload is needed.
The device will show in “ip addr”

7: macvtap0@enp8s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether 2e:51:7e:bb:44:ee brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2c51:7eff:febb:44ee/64 scope link 
       valid_lft forever preferred_lft forever

This setup could expose the MAC address of the macvtap device to the router port connected

STEP 4) Create a QEMU hard drive

Create a 100G file

srv@local ~$ cd /mnt/storage1/disks/
srv@local ~$ qemu-img create -f qcow2 vm_harddisk.qcow2 100G
Formatting 'vm_harddisk.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536 lazy_refcounts=off 

or you can enable encryption (but on every start of your virtual machine you must set the key through the qemu console to start the virtual machine):

srv@local ~$ qemu-img create -f qcow2 vm_harddisk_e.bin -o encryption 100G
Formatting 'vm_harddisk_e.bin', fmt=qcow2 size=107374182400 encryption=on cluster_size=65536 lazy_refcounts=off

STEP 5) Boot up the QEMU KVM virtual server

srv@local ~$ qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -runas qemu -daemonize -vnc 127.0.0.1:1 \
-drive file=/mnt/storage1/disks/vm_harddisk.qcow2,index=0,cache=none,aio=threads,if=virtio \
-boot d -net nic,model=virtio,macaddr=$(cat /sys/class/net/macvtap0/address) \
-net tap,fd=3 3<>/dev/tap$(cat /sys/class/net/macvtap0/ifindex) \
-balloon virtio -m 2048 -monitor telnet:127.0.0.1:5801,server,nowait

The command above will :

  • “-enable-kvm” – enable the KVM – full virtualization with near native performance
  • “-cpu host” – will expose all supported host CPU features (only supported in KVM mode)
  • “-smp 4” – sets 4 processors to the virtual machine
  • “-daemonize” – start the command in daemon mode
  • “-runas qemu” – run under user, you can run thwo whole virtual machine from a user created especially for it, no need to run it with root, even it is recommended to run it under unprivileged user
  • “-vnc 192.168.1.10:1” – start a VNC server on this IP:PORT = 192.168.1.10:5901, the IP must present on the server or you can use 0.0.0.0:1 for 0.0.0.0:5901, but in every situation limit the access by a firewall
  • “-drive file=/mnt/storage1/disks/vm_harddisk.qcow2,index=0,cache=none,aio=threads,if=virtio” – set the main hard drive of the system
  • “-boot d” – boot from the first hard drive
  • “-net nic,model=virtio,macaddr=$(cat /sys/class/net/macvtap0/address) -net tap,fd=3 3<>/dev/tap$(cat /sys/class/net/macvtap0/ifindex)” – set the network interface using the tap device created by macvtap0 device (STEP 3)
  • “-balloon virtio” – use balloon driver to be able to hot add or hot remove RAM
  • “-m 2048” – set virtual RAM size to megs
  • “-monitor telnet:127.0.0.1:5801,server,nowait” – set the management console for the this virtual server, you can connect with:
    srv@local ~$ telnet 127.0.0.1 5801
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    QEMU 2.0.0 monitor - type 'help' for more information
    (qemu) 
    <Press "CTRL+]">
    telnet> Connection closed.
    

    When quitting the management console you must NOT exit the console with quite/exit or CTRL+d, becuause it will terminate the virtual server, you must disconnect from the console with “CTRL+]” and then quit the telnet shell. With the console you can hot add/remove CPU, RAM, network cards, pci devices, harddrives, start/stop/shutdown/reset the virtual machine and a lot more.

Boot the virtual machine from the hard drive given by “-drive” with network “-net” (couple of options), the RAM uses baloon memory and could be adjusted on-the-fly and sets the vncserver to listen for connection on port IP:port = 192.168.1.1:5901 (probably you’ll want to change this with a the real IP of your server, but be careful to set up a firewall rule for 5901 – the vnc port) and a management console listening on IP:port 127.0.0.1:5801.

* Boot the virtual server from a virtual CD/DVD

Probably the first time booting you might need to boot from an installation disk, this could be done by the following command:

srv@local ~$ qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -runas qemu -daemonize -vnc 127.0.0.1:1 -cdrom /mnt/storage1/disks/isos/CentOS-7-x86_64-NetInstall-1708.iso -boot c -drive file=/mnt/storage1/disks/vm_harddisk.qcow2,index=0,cache=none,aio=threads,if=virtio -net nic,model=virtio,macaddr=$(cat /sys/class/net/macvtap0/address) -net tap,fd=3 3<>/dev/tap$(cat /sys/class/net/macvtap0/ifindex) -balloon virtio -m 2048 -monitor telnet:127.0.0.1:5801,server,nowait

The changes:

  1. “-boot c” – First boot device is now CD/DVD. “c” is for CD, “d” is for disk
  2. “-cdrom /mnt/storage1/disks/isos/CentOS-7-x86_64-NetInstall-1708.iso” – added the installation disk to the virtual machine

Generate a new Groestlcoin address (wallet) and list accounts and addresses

The generation of a new Groestlcoin address is super simple, just use

groestlcoin-cli

and personally create your new address. DO NOT TRUST any online or website or any other Internet source to generate your Groestlcoin wallet address for you. DO IT YOURSELF with the official software from the official site!
And for those of you, which do not have “groestlcoin-cli” command or even do not know what is this, check out our howtos here:

  1. Install Ubuntu 16 LTS (comming soon)
  2. Running a Groestlcoin node (wallet cli) from source under Ubuntu 16 LTS

Go to your directory where is the groestlcoin-cli binary and execute the following command (the path and directories in the following examples are based on the above howto):

srv@local:~$ cd ~/groestlcoin-core/bin/
srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli getnewaddress mygroestlcoin
FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ
srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli encryptwallet "my secret pass"
wallet encrypted; Groestlcoin server stopping, restart to run with encrypted wallet. The keypool has been flushed and a new HD seed was generated (if you are using HD). You need to make a new backup.

The groestlcoind daemon was stopped and you need to start it again if you want to make transactions or to get your balance.
With Groestlcoin Core Wallet you can create an account, which could be a group of groestlcoin addresses (this is a groestlcoin address: “FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ”) or just use the default with no name of the account.
It is important to encrypt your wallet with a password, because if the wallet is unprotected with a password anyone could steal it! Then enter a password for your wallet protection is the second command above!

This sequence of numbers and alphabets

FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ

is your public Groestlcoin address, which could be used to receive Groestlcoins – the coins of the Groestlcoin network.

After generating the address two things must be done:

  1. Backup your Groestlcoin wallet address file (wallet.dat), which is placed in your home directory under “.groestlcoin”:
    srv@local:~/groestlcoin-core/bin$ ls -altr ~/.groestlcoin/
    srv@local:~$ ls -altr ~/.groestlcoin/
    total 476
    -rw------- 1 ubuntu ubuntu      0 Mar 27 21:41 .lock
    -rw------- 1 ubuntu ubuntu      0 Mar 27 21:41 db.log
    -rw------- 1 ubuntu ubuntu     37 Mar 27 21:41 banlist.dat
    drwx------ 3 ubuntu ubuntu   4096 Mar 27 22:18 blocks
    drwxr-xr-x 7 ubuntu ubuntu   4096 Mar 28 01:25 ..
    -rw------- 1 ubuntu ubuntu 145650 Mar 28 14:16 peers.dat
    -rw------- 1 ubuntu ubuntu     17 Mar 28 14:16 mempool.dat
    -rw------- 1 ubuntu ubuntu  16625 Mar 28 14:16 fee_estimates.dat
    -rw------- 1 ubuntu ubuntu  73728 Mar 28 14:16 wallet.dat
    -rw------- 1 ubuntu ubuntu      5 Mar 28 14:17 groestlcoin.pid
    -rw------- 1 ubuntu ubuntu     75 Mar 28 14:17 .cookie
    drwxrwxr-x 5 ubuntu ubuntu   4096 Mar 28 14:17 .
    drwx------ 2 ubuntu ubuntu   4096 Mar 28 14:18 chainstate
    drwx------ 2 ubuntu ubuntu   4096 Mar 28 14:18 database
    -rw------- 1 ubuntu ubuntu 206800 Mar 28 14:27 debug.log
    srv@local:~$ 
    

    The best practice is to backup all the files under “~/.groestlcoin/”, too!

  2. Backup your password for the private key!

Accounts

List all accounts in the wallet

srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli listaccounts
{
  "": 0.00000000,
  "mygroestlcoin": 0.00000000
}

List all Groestlcoin addresses in a given account:

srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli getaddressesbyaccount ""
[
  "FYM6aAQdmg6tziT4trPb777xNfPaaUnfqp", 
  "FamX8GYBuLFkLSAbyZ7M55vFW6AECoYKEV", 
  "Fp9PwAgfTqaF3aJ4zGGLjGKP7iEMdsrR3Z"
]
srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli getaddressesbyaccount "mygroestlcoin"
[
  "FeNFjh81VDJvZrdvi8EotKuJ8es8cCz7bZ", 
  "FrrnHESU8Utqk1ZjhQZjpWwc5cjKgHwCaS"
]

* It is absolutely necessary your crypto wallet addresses to have a password for security reasons and DO NOT FORGET IT you cannot recover the password therefore your access to the wallet! If you lose your password you lose ALL your funds in the address! It’s better to write it down somewhere on a safe physical place. You can print it on a sheet of paper and place it somewhere safe!

* All available commands with “groestlcoin-cli

groestlcoin-cli help
== Blockchain ==
getbestblockhash
getblock "hash" ( verbose )
getblockchaininfo
getblockcount
getblockhash index
getblockheader "hash" ( verbose )
getchaintips
getdifficulty
getmempoolancestors txid (verbose)
getmempooldescendants txid (verbose)
getmempoolentry txid
getmempoolinfo
getrawmempool ( verbose )
gettxout "txid" n ( includemempool )
gettxoutproof ["txid",...] ( blockhash )
gettxoutsetinfo
preciousblock "hash"
verifychain ( checklevel numblocks )
verifytxoutproof "proof"

== Control ==
getinfo
getmemoryinfo
help ( "command" )
stop

== Generating ==
generate numblocks ( maxtries )
generatetoaddress numblocks address (maxtries)

== Mining ==
getblocktemplate ( TemplateRequest )
getmininginfo
getnetworkhashps ( blocks height )
prioritisetransaction <txid> <priority delta> <fee delta>
submitblock "hexdata" ( "jsonparametersobject" )

== Network ==
addnode "node" "add|remove|onetry"
clearbanned
disconnectnode "node" 
getaddednodeinfo ( "node" )
getconnectioncount
getnettotals
getnetworkinfo
getpeerinfo
listbanned
ping
setban "ip(/netmask)" "add|remove" (bantime) (absolute)
setnetworkactive true|false

== Rawtransactions ==
createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime )
decoderawtransaction "hexstring"
decodescript "hex"
fundrawtransaction "hexstring" ( options )
getrawtransaction "txid" ( verbose )
sendrawtransaction "hexstring" ( allowhighfees )
signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )

== Util ==
createmultisig nrequired ["key",...]
estimatefee nblocks
estimatepriority nblocks
estimatesmartfee nblocks
estimatesmartpriority nblocks
signmessagewithprivkey "privkey" "message"
validateaddress "groestlcoinaddress"
verifymessage "groestlcoinaddress" "signature" "message"

== Wallet ==
abandontransaction "txid"
addmultisigaddress nrequired ["key",...] ( "account" )
addwitnessaddress "address"
backupwallet "destination"
dumpprivkey "groestlcoinaddress"
dumpwallet "filename"
getaccount "groestlcoinaddress"
getaccountaddress "account"
getaddressesbyaccount "account"
getbalance ( "account" minconf includeWatchonly )
getnewaddress ( "account" )
getrawchangeaddress
getreceivedbyaccount "account" ( minconf )
getreceivedbyaddress "groestlcoinaddress" ( minconf )
gettransaction "txid" ( includeWatchonly )
getunconfirmedbalance
getwalletinfo
importaddress "address" ( "label" rescan p2sh )
importmulti '[<json import requests>]' '<json options>' 
importprivkey "groestlcoinprivkey" ( "label" rescan )
importprunedfunds
importpubkey "pubkey" ( "label" rescan )
importwallet "filename"
keypoolrefill ( newsize )
listaccounts ( minconf includeWatchonly)
listaddressgroupings
listlockunspent
listreceivedbyaccount ( minconf includeempty includeWatchonly)
listreceivedbyaddress ( minconf includeempty includeWatchonly)
listsinceblock ( "blockhash" target-confirmations includeWatchonly)
listtransactions ( "account" count from includeWatchonly)
listunspent ( minconf maxconf  ["address",...] )
lockunspent unlock ([{"txid":"txid","vout":n},...])
move "fromaccount" "toaccount" amount ( minconf "comment" )
removeprunedfunds "txid"
sendfrom "fromaccount" "togroestlcoinaddress" amount ( minconf "comment" "comment-to" )
sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] )
sendtoaddress "groestlcoinaddress" amount ( "comment" "comment-to" subtractfeefromamount )
setaccount "groestlcoinaddress" "account"
settxfee amount
signmessage "groestlcoinaddress" "message"
walletlock
walletpassphrase "passphrase" timeout
walletpassphrasechange "oldpassphrase" "newpassphrase"

Running a Groestlcoin node (wallet cli) from source under Ubuntu 16 LTS

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

groestlcoind

from the Groestlcoin Core package: https://www.groestlcoin.org/groestlcoin-core-wallet/ This program will start and wait for the network synchronization – our Groestlcoin node will receive all the blockchains of the network!
Installing (or compiling it) the Groestlcoin Core 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 Groestlcoin wallet address, DO NOT TRUST any sites, which offer you a creation of Groestlcoin 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 Groestlcoin wallet address so controls your funds! It is so important that we repeat it in EVERY cryptocurrency howto! Just Install or compile a Groestlcoin Core node software – Running a Groestlcoin node (cli) from source under Ubuntu 16 LTS and you’ll everything you need to manage your Groestlcoin funds!
It’s worth mentioning again this section of Groestlcoin (Wallet) 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 “groestlcoind” program (the official Groestlcoin software), which will create an Groestlcoin node and after network synchronization could be used to create an Groestlcoin node.

Three simple rules could almost eliminate leaking your private key to hackers, which in blockchain world means losing your money…

With Groestlcoin you can still use ordinary hard drive, but it will be much slower than SSDs.

USE SSD

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

STEP 2) Building from source an Groestlcoin (Wallet) node

Check out our howto “Running a Groestlcoin node (cli) from source under Ubuntu 16 LTS“.

STEP 3) Start the Groestlcoin node

if you have followed the howto in STEP 2) you probably have “groestlcoind” installed in “~/groestlcoin-core/bin”, so run it with:

ubuntu@srv.local:~/groestlcoin-core/bin$ ./groestlcoind &> ./groestlcoind.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 Groestlcoin (wallet) 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 groestlcoin
ubuntu@srv.local:~$ cd groestlcoin-core/bin/
ubuntu@srv.local:~/groestlcoin-core/bin$ while true; do ./groestlcoind &> ./groestlcoind.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/.groestlcoin/

If you want to move it on another server or directory (or device) you must copy this directory to the new location.
When you run “groestlcoind” it will check the current state of the network and the current state of your groestlcoin (wallet) 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 groestlcoin network to be used for all kind of actions in the network (create a wallet, transfer funds and more).
Here is the “~/.groestlcoin” direcotry:

srv@local:~$ ls -altr .groestlcoin/
total 24356
drwxr-xr-x 7 ubuntu ubuntu     4096 Mar 27 21:41 ..
-rw------- 1 ubuntu ubuntu        0 Mar 27 21:41 .lock
-rw------- 1 ubuntu ubuntu        6 Mar 27 21:41 groestlcoin.pid
-rw------- 1 ubuntu ubuntu        0 Mar 27 21:41 db.log
-rw------- 1 ubuntu ubuntu       75 Mar 27 21:41 .cookie
drwx------ 2 ubuntu ubuntu     4096 Mar 27 21:41 chainstate
drwx------ 3 ubuntu ubuntu     4096 Mar 27 21:41 blocks
drwx------ 2 ubuntu ubuntu     4096 Mar 27 21:41 database
-rw------- 1 ubuntu ubuntu    90112 Mar 27 21:41 wallet.dat
-rw------- 1 ubuntu ubuntu     1106 Mar 27 21:41 peers.dat
-rw------- 1 ubuntu ubuntu       37 Mar 27 21:41 banlist.dat
drwxrwxr-x 5 ubuntu ubuntu     4096 Mar 27 21:41 .
-rw------- 1 ubuntu ubuntu 24809419 Mar 27 21:48 debug.log
srv@local:~$ 

You can monitor all activity and synchronization of the groestlcoin (wallet) node in

debug.log

Here is the log of the node start:

2018-03-27 21:41:57 Groestlcoin version v2.13.3
2018-03-27 21:41:57 InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1
2018-03-27 21:41:57 Default data directory /home/ubuntu/.groestlcoin
2018-03-27 21:41:57 Using data directory /home/ubuntu/.groestlcoin
2018-03-27 21:41:57 Using config file /home/ubuntu/.groestlcoin/groestlcoin.conf
2018-03-27 21:41:57 Using at most 125 connections (1024 file descriptors available)
2018-03-27 21:41:57 Using 32 MiB out of 32 requested for signature cache, able to store 1048576 elements
2018-03-27 21:41:57 Using 4 threads for script verification
2018-03-27 21:41:57 scheduler thread start
2018-03-27 21:41:57 HTTP: creating work queue of depth 16
2018-03-27 21:41:57 No rpcpassword set - using random cookie authentication
2018-03-27 21:41:57 Generated RPC authentication cookie /home/ubuntu/.groestlcoin/.cookie
2018-03-27 21:41:57 HTTP: starting 4 worker threads
2018-03-27 21:41:57 Using BerkeleyDB version Berkeley DB 5.3.28: (September  9, 2013)
2018-03-27 21:41:57 Using wallet wallet.dat
2018-03-27 21:41:57 init message: Verifying wallet...
2018-03-27 21:41:57 CDBEnv::Open: LogDir=/home/ubuntu/.groestlcoin/database ErrorFile=/home/ubuntu/.groestlcoin/db.log
2018-03-27 21:41:57 Bound to [::]:1331
2018-03-27 21:41:57 Bound to 0.0.0.0:1331
2018-03-27 21:41:57 Cache configuration:
2018-03-27 21:41:57 * Using 2.0MiB for block index database
2018-03-27 21:41:57 * Using 8.0MiB for chain state database
2018-03-27 21:41:57 * Using 290.0MiB for in-memory UTXO set
2018-03-27 21:41:57 init message: Loading block index...
2018-03-27 21:41:57 Opening LevelDB in /home/ubuntu/.groestlcoin/blocks/index
2018-03-27 21:41:57 Opened LevelDB successfully
2018-03-27 21:41:57 Using obfuscation key for /home/ubuntu/.groestlcoin/blocks/index: 0000000000000000
2018-03-27 21:41:57 Opening LevelDB in /home/ubuntu/.groestlcoin/chainstate
2018-03-27 21:41:57 Opened LevelDB successfully
2018-03-27 21:41:57 Using obfuscation key for /home/ubuntu/.groestlcoin/chainstate: 0000000000000000
2018-03-27 21:41:57 LoadBlockIndexDB: last block file = 0
2018-03-27 21:41:57 LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=0, size=0, heights=0...0, time=1970-01-01...1970-01-01)
2018-03-27 21:41:57 Checking all blk files are present...
2018-03-27 21:41:57 LoadBlockIndexDB: transaction index disabled
2018-03-27 21:41:57 Initializing databases...
2018-03-27 21:41:57 Pre-allocating up to position 0x1000000 in blk00000.dat
2018-03-27 21:41:57 init message: Verifying blocks...
2018-03-27 21:41:57  block index              18ms
2018-03-27 21:41:57 init message: Loading wallet...
2018-03-27 21:41:57 nFileVersion = 2130300
2018-03-27 21:41:57 Keys: 0 plaintext, 0 encrypted, 0 w/ metadata, 0 total
2018-03-27 21:41:57 Performing wallet upgrade to 60000
2018-03-27 21:41:57 keypool added key 1, size=1
2018-03-27 21:41:57 keypool added key 2, size=2
2018-03-27 21:41:57 keypool added key 3, size=3
2018-03-27 21:41:57 keypool added key 4, size=4
2018-03-27 21:41:57 keypool added key 5, size=5
2018-03-27 21:41:57 keypool added key 6, size=6
2018-03-27 21:41:57 keypool added key 7, size=7
2018-03-27 21:41:57 keypool added key 8, size=8
2018-03-27 21:41:57 keypool added key 9, size=9
2018-03-27 21:41:57 keypool added key 10, size=10
2018-03-27 21:41:57 keypool added key 11, size=11
2018-03-27 21:41:57 keypool added key 12, size=12
2018-03-27 21:41:57 keypool added key 13, size=13
2018-03-27 21:41:57 keypool added key 14, size=14
2018-03-27 21:41:57 keypool added key 15, size=15
2018-03-27 21:41:57 keypool added key 16, size=16
2018-03-27 21:41:57 keypool added key 17, size=17
2018-03-27 21:41:57 keypool added key 18, size=18
2018-03-27 21:41:57 keypool added key 19, size=19
2018-03-27 21:41:57 keypool added key 20, size=20
2018-03-27 21:41:57 keypool added key 21, size=21
2018-03-27 21:41:57 keypool added key 22, size=22
2018-03-27 21:41:57 keypool added key 23, size=23
2018-03-27 21:41:57 keypool added key 24, size=24
2018-03-27 21:41:57 keypool added key 25, size=25
2018-03-27 21:41:57 keypool added key 26, size=26
2018-03-27 21:41:58 keypool added key 27, size=27
2018-03-27 21:41:58 keypool added key 28, size=28
2018-03-27 21:41:58 keypool added key 29, size=29
2018-03-27 21:41:58 keypool added key 30, size=30
2018-03-27 21:41:58 keypool added key 31, size=31
2018-03-27 21:41:58 keypool added key 32, size=32
2018-03-27 21:41:58 keypool added key 33, size=33
2018-03-27 21:41:58 keypool added key 34, size=34
2018-03-27 21:41:58 keypool added key 35, size=35
2018-03-27 21:41:58 keypool added key 36, size=36
2018-03-27 21:41:58 keypool added key 37, size=37
2018-03-27 21:41:58 keypool added key 38, size=38
2018-03-27 21:41:58 keypool added key 39, size=39
2018-03-27 21:41:58 keypool added key 40, size=40
2018-03-27 21:41:58 keypool added key 41, size=41
2018-03-27 21:41:58 keypool added key 42, size=42
2018-03-27 21:41:58 keypool added key 43, size=43
2018-03-27 21:41:58 keypool added key 44, size=44
2018-03-27 21:41:58 keypool added key 45, size=45
2018-03-27 21:41:58 keypool added key 46, size=46
2018-03-27 21:41:58 keypool added key 47, size=47
2018-03-27 21:41:58 keypool added key 48, size=48
2018-03-27 21:41:58 keypool added key 49, size=49
2018-03-27 21:41:58 keypool added key 50, size=50
2018-03-27 21:41:58 keypool added key 51, size=51
2018-03-27 21:41:58 keypool added key 52, size=52
2018-03-27 21:41:58 keypool added key 53, size=53
2018-03-27 21:41:58 keypool added key 54, size=54
2018-03-27 21:41:58 keypool added key 55, size=55
2018-03-27 21:41:58 keypool added key 56, size=56
2018-03-27 21:41:58 keypool added key 57, size=57
2018-03-27 21:41:58 keypool added key 58, size=58
2018-03-27 21:41:58 keypool added key 59, size=59
2018-03-27 21:41:58 keypool added key 60, size=60
2018-03-27 21:41:58 keypool added key 61, size=61
2018-03-27 21:41:58 keypool added key 62, size=62
2018-03-27 21:41:58 keypool added key 63, size=63
2018-03-27 21:41:58 keypool added key 64, size=64
2018-03-27 21:41:58 keypool added key 65, size=65
2018-03-27 21:41:58 keypool added key 66, size=66
2018-03-27 21:41:58 keypool added key 67, size=67
2018-03-27 21:41:58 keypool added key 68, size=68
2018-03-27 21:41:58 keypool added key 69, size=69
2018-03-27 21:41:58 keypool added key 70, size=70
2018-03-27 21:41:58 keypool added key 71, size=71
2018-03-27 21:41:58 keypool added key 72, size=72
2018-03-27 21:41:58 keypool added key 73, size=73
2018-03-27 21:41:58 keypool added key 74, size=74
2018-03-27 21:41:58 keypool added key 75, size=75
2018-03-27 21:41:58 keypool added key 76, size=76
2018-03-27 21:41:58 keypool added key 77, size=77
2018-03-27 21:41:58 keypool added key 78, size=78
2018-03-27 21:41:58 keypool added key 79, size=79
2018-03-27 21:41:58 keypool added key 80, size=80
2018-03-27 21:41:58 keypool added key 81, size=81
2018-03-27 21:41:58 keypool added key 82, size=82
2018-03-27 21:41:58 keypool added key 83, size=83
2018-03-27 21:41:58 keypool added key 84, size=84
2018-03-27 21:41:58 keypool added key 85, size=85
2018-03-27 21:41:58 keypool added key 86, size=86
2018-03-27 21:41:58 keypool added key 87, size=87
2018-03-27 21:41:58 keypool added key 88, size=88
2018-03-27 21:41:58 keypool added key 89, size=89
2018-03-27 21:41:58 keypool added key 90, size=90
2018-03-27 21:41:58 keypool added key 91, size=91
2018-03-27 21:41:58 keypool added key 92, size=92
2018-03-27 21:41:58 keypool added key 93, size=93
2018-03-27 21:41:58 keypool added key 94, size=94
2018-03-27 21:41:58 keypool added key 95, size=95
2018-03-27 21:41:58 keypool added key 96, size=96
2018-03-27 21:41:58 keypool added key 97, size=97
2018-03-27 21:41:58 keypool added key 98, size=98
2018-03-27 21:41:58 keypool added key 99, size=99
2018-03-27 21:41:58 keypool added key 100, size=100
2018-03-27 21:41:58 keypool added key 101, size=101
2018-03-27 21:41:58 keypool reserve 1
2018-03-27 21:41:58 keypool keep 1
2018-03-27 21:41:58  wallet                  453ms
2018-03-27 21:41:58 setKeyPool.size() = 100
2018-03-27 21:41:58 mapWallet.size() = 0
2018-03-27 21:41:58 mapAddressBook.size() = 1
2018-03-27 21:41:58 UpdateTip: new best=00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023 height=0 version=0x00000070 log2_work=20.000001 tx=1 date='2014-03-20 19:13:49' progress=0.000007 cache=0.0MiB(0tx)
2018-03-27 21:41:58 mapBlockIndex.size() = 1
2018-03-27 21:41:58 Failed to open mempool file from disk. Continuing anyway.
2018-03-27 21:41:58 nBestHeight = 0
2018-03-27 21:41:58 torcontrol thread start
2018-03-27 21:41:58 init message: Loading addresses...
2018-03-27 21:41:58 ERROR: Read: Failed to open file /home/ubuntu/.groestlcoin/peers.dat
2018-03-27 21:41:58 Invalid or missing peers.dat; recreating
2018-03-27 21:41:58 init message: Loading banlist...
2018-03-27 21:41:58 ERROR: Read: Failed to open file /home/ubuntu/.groestlcoin/banlist.dat
2018-03-27 21:41:58 Invalid or missing banlist.dat; recreating
2018-03-27 21:41:58 init message: Starting network threads...
2018-03-27 21:41:58 net thread start
2018-03-27 21:41:58 init message: Done loading
2018-03-27 21:41:58 dnsseed thread start
2018-03-27 21:41:58 addcon thread start
2018-03-27 21:41:58 Loading addresses from DNS seeds (could take a while)
2018-03-27 21:41:58 opencon thread start
2018-03-27 21:41:58 msghand thread start
2018-03-27 21:41:58 5 addresses found from DNS seeds
2018-03-27 21:41:58 dnsseed thread exit
2018-03-27 21:41:58 receive version message: /Groestlcoin:2.13.3/: version 70015, blocks=2020505, us=18.220.186.120:43158, peer=0
2018-03-27 21:41:59 Pre-allocating up to position 0x100000 in rev00000.dat
2018-03-27 21:41:59 UpdateTip: new best=00000973d52019a3fdda1b1f346e1d76cbf12f8fdd9fbf0ade33bc1da89cb2e9 height=1 version=0x00000070 log2_work=21.000001 tx=2 date='2014-03-22 13:41:11' progress=0.000014 cache=0.0MiB(1tx)
2018-03-27 21:41:59 UpdateTip: new best=000005a19e5880b2e85af1ece6a7a853dd786081915c9e5744da7d9d49e036b2 height=2 version=0x00000070 log2_work=21.584964 tx=3 date='2014-03-22 13:41:12' progress=0.000020 cache=0.0MiB(2tx)
2018-03-27 21:41:59 UpdateTip: new best=00000b7b176cc31f551ff383a57c1ef468b63d2b29ca0819d6728e74892868d5 height=3 version=0x00000070 log2_work=22.000001 tx=4 date='2014-03-22 13:41:14' progress=0.000027 cache=0.0MiB(3tx)

Last couple of lines shows that the synchronization process is running…

With “groestlcoin-cli” we can check the process of synchronization:

srv@local:~/groestlcoin-core/bin$ ./groestlcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 1592616,
  "headers": 2020535,
  "bestblockhash": "0000000002e22d910805ded76c2ecf8538b71bde259a87d42eb0f461874ac470",
  "difficulty": 29.7853045557759,
  "mediantime": 1495007637,
  "verificationprogress": 0.9850607167871146,
  "chainwork": "0000000000000000000000000000000000000000000000000238bd35306e983c",
  "pruned": false,
  "softforks": [
    {
      "id": "bip34",
      "version": 2,
      "reject": {
        "status": true
      }
    }, 
    {
      "id": "bip66",
      "version": 3,
      "reject": {
        "status": true
      }
    }
  ],
  "bip9_softforks": {
    "csv": {
      "status": "active",
      "startTime": 1484956800,
      "timeout": 1498003200,
      "since": 1439424
    },
    "segwit": {
      "status": "active",
      "startTime": 1484956800,
      "timeout": 1498003200,
      "since": 1439424
    },
    "bip65": {
      "status": "active",
      "startTime": 1484956800,
      "timeout": 1498003200,
      "since": 1439424
    }
  }
}

You can see we are at 1592616 of total 2020535. When “blocks” count equalize with the “headers” your Groestlcoin (wallet) node is synchronized successfully and the debug.log will just only output a couple of lines every minutes:

2018-03-27 22:25:49 UpdateTip: new best=000000000002c7e048092df98fd1d15f0e16e444f1c98f8777b826640e614e32 height=2020547 version=0x20000000 log2_work=60.941936 tx=2701441 date='2018-03-27 22:25:22' progress=1.000000 cache=94.0MiB(426839tx)
2018-03-27 22:25:56 UpdateTip: new best=0000000000063fc891f7a82e86ed43c30fd31c749955d7f0389b89a968fde322 height=2020548 version=0x20000000 log2_work=60.941946 tx=2701442 date='2018-03-27 22:25:49' progress=1.000000 cache=94.0MiB(426840tx)

The starting date of the line will differ with couple of seconds of the date in the transaction – the “date=” after the “tx=”.
Now you can start using your Groestlcoin (wallet) node for transactions and

At present with SSD and 16G RAM on a intel i7 processor and a fast Internet connection 100Mbps the full synchronization took about 40 minutes and 2G of storage space.
You are ready to use “groestlcoin-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 Groestlcoin node (cli only) under Ubuntu 16 LTS

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

groestlcoind

and is part of the official package named

Groestlcoin Core

It includes the full capabilities of Groestlcoin wallet and a private Groestlcoin node. Building it from the source you’ll have your private and secure Groestlcoin, which could be used to make secure transactions and receive funds in Groestlcoin network and a lot more! DO IT YOURSELF – the most secure way of generating a Groestlcoin wallet address, making transactions such as send and receive coins and storing your wallets.

STEP 1) Update your system and install dependencies

sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install build-essential libssl-dev libboost-all-dev libdb5.3 libdb5.3-dev libdb5.3++-dev libtool automake libevent-dev bsdmainutils git ntp make g++ gcc autoconf cpp ngrep iftop sysstat autotools-dev pkg-config libminiupnpc-dev libzmq3-dev

STEP 2) Get the “Groestlcoin Core” code and compile it

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

git clone https://github.com/groestlcoin/groestlcoin
cd groestlcoin
export CFLAGS="-march=native -O2 -msse3 -fomit-frame-pointer -pipe"
export CXXFLAGS="${CFLAGS}"
export CHOST="x86_64-pc-linux-gnu"
./autogen.sh
./configure --prefix=/home/ubuntu/groestlcoin-core
make -j 8
make install

The above example assumes your home directory is “/home/ubuntu/” (the username of ubuntu), replace “/home/ubuntu/” with the directory where you want to install or the simplest way is to check your home directory and use it – “/home/[user_home_directory]/groestlcoin-core”. When compiled and installed the applications from the “Groestlcoin Core” package will be installed in “/home/[user_home_directory]/groestlcoin-core” or in our case “/home/ubuntu/groestlcoin-core”

STEP 3) Check is everything is OK

ls command shows the additional programs in the package.

srv@local:~/groestlcoin-core$ cd /home/ubuntu/groestlcoin-core/bin/
srv@local:~/groestlcoin-core/bin$ ./groestlcoind --version
Groestlcoin Core Daemon version v2.13.3
Copyright (C) 2014-2017 The Groestlcoin Core developers
Copyright (C) 2009-2017 The Bitcoin Core developers

Please contribute if you find Groestlcoin Core useful. Visit
<https://groestlcoin.org> for further information about the software.
The source code is available from <https://github.com/Groestlcoin/groestlcoin>.

This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <http://www.opensource.org/licenses/mit-license.php>.

This product includes software developed by the OpenSSL Project for use in the
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
by Eric Young and UPnP software written by Thomas Bernard.

srv@local:~/groestlcoin-core/bin$ ls
groestlcoin-cli  groestlcoind  groestlcoin-tx

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

* Here is the help output of “groestlcoind” – the Groestlcoin node daemon:

buntu@ip-172-31-14-157:~/groestlcoin-core/bin$ ./groestlcoind --help
Groestlcoin Core Daemon version v2.13.3

Usage:
  groestlcoind [options]                     Start Groestlcoin Core Daemon

Options:

  -?
       Print this help message and exit

  -version
       Print version and exit

  -alertnotify=<cmd>
       Execute command when a relevant alert is received or we see a really
       long fork (%s in cmd is replaced by message)

  -blocknotify=<cmd>
       Execute command when the best block changes (%s in cmd is replaced by
       block hash)

  -checkblocks=<n>
       How many blocks to check at startup (default: 6, 0 = all)

  -checklevel=<n>
       How thorough the block verification of -checkblocks is (0-4, default: 3)

  -conf=<file>
       Specify configuration file (default: groestlcoin.conf)

  -daemon
       Run in the background as a daemon and accept commands

  -datadir=<dir>
       Specify data directory

  -dbcache=<n>
       Set database cache size in megabytes (4 to 16384, default: 300)

  -loadblock=<file>
       Imports blocks from external blk000??.dat file on startup

  -maxorphantx=<n>
       Keep at most <n> unconnectable transactions in memory (default: 100)

  -maxmempool=<n>
       Keep the transaction memory pool below <n> megabytes (default: 300)

  -mempoolexpiry=<n>
       Do not keep transactions in the mempool longer than <n> hours (default:
       72)

  -par=<n>
       Set the number of script verification threads (-4 to 16, 0 = auto, <0 =
       leave that many cores free, default: 0)

  -pid=<file>
       Specify pid file (default: groestlcoin.pid)

  -prune=<n>
       Reduce storage requirements by pruning (deleting) old blocks. This mode
       is incompatible with -txindex and -rescan. Warning: Reverting
       this setting requires re-downloading the entire blockchain.
       (default: 0 = disable pruning blocks, >550 = target size in MiB
       to use for block files)

  -reindex-chainstate
       Rebuild chain state from the currently indexed blocks

  -reindex
       Rebuild chain state and block index from the blk*.dat files on disk

  -sysperms
       Create new files with system default permissions, instead of umask 077
       (only effective with disabled wallet functionality)

  -txindex
       Maintain a full transaction index, used by the getrawtransaction rpc
       call (default: 0)

Connection options:

  -addnode=<ip>
       Add a node to connect to and attempt to keep the connection open

  -banscore=<n>
       Threshold for disconnecting misbehaving peers (default: 100)

  -bantime=<n>
       Number of seconds to keep misbehaving peers from reconnecting (default:
       86400)

  -bind=<addr>
       Bind to given address and always listen on it. Use [host]:port notation
       for IPv6

  -connect=<ip>
       Connect only to the specified node(s)

  -discover
       Discover own IP addresses (default: 1 when listening and no -externalip
       or -proxy)

  -dns
       Allow DNS lookups for -addnode, -seednode and -connect (default: 1)

  -dnsseed
       Query for peer addresses via DNS lookup, if low on addresses (default: 1
       unless -connect)

  -externalip=<ip>
       Specify your own public address

  -forcednsseed
       Always query for peer addresses via DNS lookup (default: 0)

  -listen
       Accept connections from outside (default: 1 if no -proxy or -connect)

  -listenonion
       Automatically create Tor hidden service (default: 1)

  -maxconnections=<n>
       Maintain at most <n> connections to peers (default: 125)

  -maxreceivebuffer=<n>
       Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000)

  -maxsendbuffer=<n>
       Maximum per-connection send buffer, <n>*1000 bytes (default: 1000)

  -maxtimeadjustment
       Maximum allowed median peer time offset adjustment. Local perspective of
       time may be influenced by peers forward or backward by this
       amount. (default: 4200 seconds)

  -onion=<ip:port>
       Use separate SOCKS5 proxy to reach peers via Tor hidden services
       (default: -proxy)

  -onlynet=<net>
       Only connect to nodes in network <net> (ipv4, ipv6 or onion)

  -permitbaremultisig
       Relay non-P2SH multisig (default: 1)

  -peerbloomfilters
       Support filtering of blocks and transaction with bloom filters (default:
       1)

  -port=<port>
       Listen for connections on <port> (default: 1331 or testnet: 17777)

  -proxy=<ip:port>
       Connect through SOCKS5 proxy

  -proxyrandomize
       Randomize credentials for every proxy connection. This enables Tor
       stream isolation (default: 1)

  -rpcserialversion
       Sets the serialization of raw transaction or block hex returned in
       non-verbose mode, non-segwit(0) or segwit(1) (default: 1)

  -seednode=<ip>
       Connect to a node to retrieve peer addresses, and disconnect

  -timeout=<n>
       Specify connection timeout in milliseconds (minimum: 1, default: 5000)

  -torcontrol=<ip>:<port>
       Tor control port to use if onion listening enabled (default:
       127.0.0.1:9051)

  -torpassword=<pass>
       Tor control port password (default: empty)

  -upnp
       Use UPnP to map the listening port (default: 0)

  -whitebind=<addr>
       Bind to given address and whitelist peers connecting to it. Use
       [host]:port notation for IPv6

  -whitelist=<IP address or network>
       Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
       CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
       times. Whitelisted peers cannot be DoS banned and their
       transactions are always relayed, even if they are already in the
       mempool, useful e.g. for a gateway

  -whitelistrelay
       Accept relayed transactions received from whitelisted peers even when
       not relaying transactions (default: 1)

  -whitelistforcerelay
       Force relay of transactions from whitelisted peers even if they violate
       local relay policy (default: 1)

  -maxuploadtarget=<n>
       Tries to keep outbound traffic under the given target (in MiB per 24h),
       0 = no limit (default: 0)

Wallet options:

  -disablewallet
       Do not load the wallet and disable wallet RPC calls

  -keypool=<n>
       Set key pool size to <n> (default: 100)

  -fallbackfee=<amt>
       A fee rate (in GRS/kB) that will be used when fee estimation has
       insufficient data (default: 0.0002)

  -mintxfee=<amt>
       Fees (in GRS/kB) smaller than this are considered zero fee for
       transaction creation (default: 0.00001)

  -paytxfee=<amt>
       Fee (in GRS/kB) to add to transactions you send (default: 0.0001)

  -rescan
       Rescan the block chain for missing wallet transactions on startup

  -salvagewallet
       Attempt to recover private keys from a corrupt wallet on startup

  -spendzeroconfchange
       Spend unconfirmed change when sending transactions (default: 1)

  -txconfirmtarget=<n>
       If paytxfee is not set, include enough fee so transactions begin
       confirmation on average within n blocks (default: 6)

  -usehd
       Use hierarchical deterministic key generation (HD) after BIP32. Only has
       effect during wallet creation/first start (default: 1)

  -upgradewallet
       Upgrade wallet to latest format on startup

  -wallet=<file>
       Specify wallet file (within data directory) (default: wallet.dat)

  -walletbroadcast
       Make the wallet broadcast transactions (default: 1)

  -walletnotify=<cmd>
       Execute command when a wallet transaction changes (%s in cmd is replaced
       by TxID)

  -zapwallettxes=<mode>
       Delete all wallet transactions and only recover those parts of the
       blockchain through -rescan on startup (1 = keep tx meta data e.g.
       account owner and payment request information, 2 = drop tx meta
       data)

ZeroMQ notification options:

  -zmqpubhashblock=<address>
       Enable publish hash block in <address>

  -zmqpubhashtx=<address>
       Enable publish hash transaction in <address>

  -zmqpubrawblock=<address>
       Enable publish raw block in <address>

  -zmqpubrawtx=<address>
       Enable publish raw transaction in <address>

Debugging/Testing options:

  -uacomment=<cmt>
       Append comment to the user agent string

  -debug=<category>
       Output debugging information (default: 0, supplying <category> is
       optional). If <category> is not supplied or if <category> = 1,
       output all debugging information.<category> can be: addrman,
       alert, bench, cmpctblock, coindb, db, http, libevent, lock,
       mempool, mempoolrej, net, proxy, prune, rand, reindex, rpc,
       selectcoins, tor, zmq.

  -help-debug
       Show all debugging options (usage: --help -help-debug)

  -logips
       Include IP addresses in debug output (default: 0)

  -logtimestamps
       Prepend debug output with timestamp (default: 1)

  -minrelaytxfee=<amt>
       Fees (in GRS/kB) smaller than this are considered zero fee for relaying,
       mining and transaction creation (default: 0.0001)

  -maxtxfee=<amt>
       Maximum total fees (in GRS) to use in a single wallet transaction or raw
       transaction; setting this too low may abort large transactions
       (default: 0.10)

  -printtoconsole
       Send trace/debug info to console instead of debug.log file

  -shrinkdebugfile
       Shrink debug.log file on client startup (default: 1 when no -debug)

Chain selection options:

  -testnet
       Use the test chain

Node relay options:

  -bytespersigop
       Equivalent bytes per sigop in transactions for relay and mining
       (default: 20)

  -datacarrier
       Relay and mine data carrier transactions (default: 1)

  -datacarriersize
       Maximum size of data in data carrier transactions we relay and mine
       (default: 83)

  -mempoolreplacement
       Enable transaction replacement in the memory pool (default: 1)

Block creation options:

  -blockmaxweight=<n>
       Set maximum BIP141 block weight (default: 3000000)

  -blockmaxsize=<n>
       Set maximum block size in bytes (default: 750000)

  -blockprioritysize=<n>
       Set maximum size of high-priority/low-fee transactions in bytes
       (default: 0)

RPC server options:

  -server
       Accept command line and JSON-RPC commands

  -rest
       Accept public REST requests (default: 0)

  -rpcbind=<addr>
       Bind to given address to listen for JSON-RPC connections. Use
       [host]:port notation for IPv6. This option can be specified
       multiple times (default: bind to all interfaces)

  -rpccookiefile=<loc>
       Location of the auth cookie (default: data dir)

  -rpcuser=<user>
       Username for JSON-RPC connections

  -rpcpassword=<pw>
       Password for JSON-RPC connections

  -rpcauth=<userpw>
       Username and hashed password for JSON-RPC connections. The field
       <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
       canonical python script is included in share/rpcuser. This option
       can be specified multiple times

  -rpcport=<port>
       Listen for JSON-RPC connections on <port> (default: 1441 or testnet:
       17766)

  -rpcallowip=<ip>
       Allow JSON-RPC connections from specified source. Valid for <ip> are a
       single IP (e.g. 1.2.3.4), a network/netmask (e.g.
       1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
       option can be specified multiple times

  -rpcthreads=<n>
       Set the number of threads to service RPC calls (default: 4)

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

ubuntu@ip-172-31-14-157:~/groestlcoin-core/bin$ ./groestlcoin-cli --help
Groestlcoin Core RPC client version v2.13.3

Usage:
  groestlcoin-cli [options] <command> [params]  Send command to Groestlcoin Core
  groestlcoin-cli [options] help                List commands
  groestlcoin-cli [options] help <command>      Get help for a command

Options:

  -?
       This help message

  -conf=<file>
       Specify configuration file (default: groestlcoin.conf)

  -datadir=<dir>
       Specify data directory

Chain selection options:

  -testnet
       Use the test chain

  -regtest
       Enter regression test mode, which uses a special chain in which blocks
       can be solved instantly. This is intended for regression testing
       tools and app development.

  -rpcconnect=<ip>
       Send commands to node running on <ip> (default: 127.0.0.1)

  -rpcport=<port>
       Connect to JSON-RPC on <port> (default: 1441 or testnet: 17766)

  -rpcwait
       Wait for RPC server to start

  -rpcuser=<user>
       Username for JSON-RPC connections

  -rpcpassword=<pw>
       Password for JSON-RPC connections

  -rpcclienttimeout=<n>
       Timeout during HTTP requests (default: 900)

  -stdin
       Read extra arguments from standard input, one per line until EOF/Ctrl-D
       (recommended for sensitive information such as passphrases)

* Here is the commands “groestlcoin-cli” supports – the cli management tool for Groestlcoin wallet address

./groestlcoin-cli help
== Blockchain ==
getbestblockhash
getblock "hash" ( verbose )
getblockchaininfo
getblockcount
getblockhash index
getblockheader "hash" ( verbose )
getchaintips
getdifficulty
getmempoolancestors txid (verbose)
getmempooldescendants txid (verbose)
getmempoolentry txid
getmempoolinfo
getrawmempool ( verbose )
gettxout "txid" n ( includemempool )
gettxoutproof ["txid",...] ( blockhash )
gettxoutsetinfo
preciousblock "hash"
verifychain ( checklevel numblocks )
verifytxoutproof "proof"

== Control ==
getinfo
getmemoryinfo
help ( "command" )
stop

== Generating ==
generate numblocks ( maxtries )
generatetoaddress numblocks address (maxtries)

== Mining ==
getblocktemplate ( TemplateRequest )
getmininginfo
getnetworkhashps ( blocks height )
prioritisetransaction <txid> <priority delta> <fee delta>
submitblock "hexdata" ( "jsonparametersobject" )

== Network ==
addnode "node" "add|remove|onetry"
clearbanned
disconnectnode "node" 
getaddednodeinfo ( "node" )
getconnectioncount
getnettotals
getnetworkinfo
getpeerinfo
listbanned
ping
setban "ip(/netmask)" "add|remove" (bantime) (absolute)
setnetworkactive true|false

== Rawtransactions ==
createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime )
decoderawtransaction "hexstring"
decodescript "hex"
fundrawtransaction "hexstring" ( options )
getrawtransaction "txid" ( verbose )
sendrawtransaction "hexstring" ( allowhighfees )
signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )

== Util ==
createmultisig nrequired ["key",...]
estimatefee nblocks
estimatepriority nblocks
estimatesmartfee nblocks
estimatesmartpriority nblocks
signmessagewithprivkey "privkey" "message"
validateaddress "groestlcoinaddress"
verifymessage "groestlcoinaddress" "signature" "message"

== Wallet ==
abandontransaction "txid"
addmultisigaddress nrequired ["key",...] ( "account" )
addwitnessaddress "address"
backupwallet "destination"
dumpprivkey "groestlcoinaddress"
dumpwallet "filename"
encryptwallet "passphrase"
getaccount "groestlcoinaddress"
getaccountaddress "account"
getaddressesbyaccount "account"
getbalance ( "account" minconf includeWatchonly )
getnewaddress ( "account" )
getrawchangeaddress
getreceivedbyaccount "account" ( minconf )
getreceivedbyaddress "groestlcoinaddress" ( minconf )
gettransaction "txid" ( includeWatchonly )
getunconfirmedbalance
getwalletinfo
importaddress "address" ( "label" rescan p2sh )
importmulti '[<json import requests>]' '<json options>' 
importprivkey "groestlcoinprivkey" ( "label" rescan )
importprunedfunds
importpubkey "pubkey" ( "label" rescan )
importwallet "filename"
keypoolrefill ( newsize )
listaccounts ( minconf includeWatchonly)
listaddressgroupings
listlockunspent
listreceivedbyaccount ( minconf includeempty includeWatchonly)
listreceivedbyaddress ( minconf includeempty includeWatchonly)
listsinceblock ( "blockhash" target-confirmations includeWatchonly)
listtransactions ( "account" count from includeWatchonly)
listunspent ( minconf maxconf  ["address",...] )
lockunspent unlock ([{"txid":"txid","vout":n},...])
move "fromaccount" "toaccount" amount ( minconf "comment" )
removeprunedfunds "txid"
sendfrom "fromaccount" "togroestlcoinaddress" amount ( minconf "comment" "comment-to" )
sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] )
sendtoaddress "groestlcoinaddress" amount ( "comment" "comment-to" subtractfeefromamount )
setaccount "groestlcoinaddress" "account"
settxfee amount
signmessage "groestlcoinaddress" "message"

* Here is the output of the building process

srv@local:~$ sudo apt-get -y update
...
srv@local:~$ sudo apt-get -y upgrade
...
srv@local:~$ sudo apt-get -y install build-essential libssl-dev libboost-all-dev libdb5.3 libdb5.3-dev libdb5.3++-dev libtool automake libevent-dev bsdmainutils git ntp make g++ gcc autoconf cpp ngrep iftop sysstat autotools-dev pkg-config libminiupnpc-dev libzmq3-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
bsdmainutils is already the newest version (9.0.6ubuntu3).
git is already the newest version (1:2.7.4-0ubuntu1.3).
libdb5.3 is already the newest version (5.3.28-11ubuntu0.1).
The following additional packages will be installed:
  binutils cpp-5 dpkg-dev fakeroot g++-5 gcc-5 icu-devtools libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl 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 libcc1-0 libcilkrts5 libdb5.3++ libdpkg-perl libevent-core-2.0-5 libevent-extra-2.0-5 libevent-openssl-2.0-5
  libevent-pthreads-2.0-5 libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libhwloc-dev libhwloc-plugins libhwloc5
  libibverbs-dev libibverbs1 libicu-dev libisl15 libitm1 liblsan0 libltdl-dev libltdl7 libminiupnpc10 libmpc3 libmpx0 libnet1 libnuma-dev
  libopenmpi-dev libopenmpi1.10 libopts25 libpciaccess0 libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal
  libpython2.7-stdlib libquadmath0 libsensors4 libsodium18 libssl-doc libstdc++-5-dev libtsan0 libubsan0 libzmq5 linux-libc-dev m4 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 zlib1g-dev
Suggested packages:
  autoconf-archive gnu-standards autoconf-doc gettext binutils-doc cpp-doc gcc-5-locales debian-keyring g++-multilib g++-5-multilib gcc-5-doc
  libstdc++6-5-dbg gcc-multilib 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 libboost-doc graphviz libboost1.58-doc gccxml libmpfrc++-dev libntl-dev
  xsltproc doxygen docbook-xml docbook-xsl default-jdk fop glibc-doc db5.3-doc libhwloc-contrib-plugins icu-doc libtool-doc minissdpd opennmpi-doc
  lm-sensors libstdc++-5-doc gfortran | fortran95-compiler gcj-jdk make-doc ntp-doc opencl-icd gfortran openmpi-checkpoint python-doc python-tk
  python2.7-doc binfmt-support isag
The following NEW packages will be installed:
  autoconf automake autotools-dev binutils build-essential cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 icu-devtools iftop libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl 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 libcc1-0 libcilkrts5 libdb5.3++ libdb5.3++-dev libdb5.3-dev libdpkg-perl libevent-core-2.0-5 libevent-dev
  libevent-extra-2.0-5 libevent-openssl-2.0-5 libevent-pthreads-2.0-5 libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1
  libhwloc-dev libhwloc-plugins libhwloc5 libibverbs-dev libibverbs1 libicu-dev libisl15 libitm1 liblsan0 libltdl-dev libltdl7 libminiupnpc-dev
  libminiupnpc10 libmpc3 libmpx0 libnet1 libnuma-dev libopenmpi-dev libopenmpi1.10 libopts25 libpciaccess0 libpython-dev libpython-stdlib
  libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libquadmath0 libsensors4 libsodium18 libssl-dev libssl-doc libstdc++-5-dev
  libtool libtsan0 libubsan0 libzmq3-dev libzmq5 linux-libc-dev m4 make manpages-dev mpi-default-bin mpi-default-dev ngrep ntp ocl-icd-libopencl1
  openmpi-bin openmpi-common pkg-config python python-dev python-minimal python2.7 python2.7-dev python2.7-minimal sysstat zlib1g-dev
0 upgraded, 178 newly installed, 0 to remove and 3 not upgraded.
Need to get 105 MB of archives.
After this operation, 470 MB of additional disk space will be used.
......
......
......
srv@local:~$ git clone https://github.com/groestlcoin/groestlcoin
Cloning into 'groestlcoin'...
remote: Counting objects: 99702, done.
remote: Total 99702 (delta 0), reused 0 (delta 0), pack-reused 99701
Receiving objects: 100% (99702/99702), 89.71 MiB | 41.15 MiB/s, done.
Resolving deltas: 100% (69017/69017), done.
Checking connectivity... done.
srv@local:~$ cd groestlcoin
srv@local:~/groestlcoin$ ./autogen.sh
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'.
libtoolize: copying file 'build-aux/m4/libtool.m4'
libtoolize: copying file 'build-aux/m4/ltoptions.m4'
libtoolize: copying file 'build-aux/m4/ltsugar.m4'
libtoolize: copying file 'build-aux/m4/ltversion.m4'
libtoolize: copying file 'build-aux/m4/lt~obsolete.m4'
configure.ac:45: installing 'build-aux/compile'
configure.ac:45: installing 'build-aux/config.guess'
configure.ac:45: installing 'build-aux/config.sub'
configure.ac:28: installing 'build-aux/install-sh'
configure.ac:28: installing 'build-aux/missing'
Makefile.am: installing 'build-aux/depcomp'
parallel-tests: installing 'build-aux/test-driver'
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'.
libtoolize: copying file 'build-aux/m4/libtool.m4'
libtoolize: copying file 'build-aux/m4/ltoptions.m4'
libtoolize: copying file 'build-aux/m4/ltsugar.m4'
libtoolize: copying file 'build-aux/m4/ltversion.m4'
libtoolize: copying file 'build-aux/m4/lt~obsolete.m4'
configure.ac:10: installing 'build-aux/compile'
configure.ac:5: installing 'build-aux/config.guess'
configure.ac:5: installing 'build-aux/config.sub'
configure.ac:9: installing 'build-aux/install-sh'
configure.ac:9: installing 'build-aux/missing'
Makefile.am: installing 'build-aux/depcomp'
parallel-tests: installing 'build-aux/test-driver'
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'.
libtoolize: copying file 'build-aux/m4/libtool.m4'
libtoolize: copying file 'build-aux/m4/ltoptions.m4'
libtoolize: copying file 'build-aux/m4/ltsugar.m4'
libtoolize: copying file 'build-aux/m4/ltversion.m4'
libtoolize: copying file 'build-aux/m4/lt~obsolete.m4'
configure.ac:72: installing 'build-aux/compile'
configure.ac:22: installing 'build-aux/config.guess'
configure.ac:22: installing 'build-aux/config.sub'
configure.ac:32: installing 'build-aux/install-sh'
configure.ac:32: installing 'build-aux/missing'
Makefile.am:12: warning: user variable 'GZIP_ENV' defined here ...
/usr/share/automake-1.15/am/distdir.am: ... overrides Automake variable 'GZIP_ENV' defined here
src/Makefile.am: installing 'build-aux/depcomp'
src/Makefile.am:479: warning: user target '.mm.o' defined here ...
/usr/share/automake-1.15/am/depend2.am: ... overrides Automake target '.mm.o' defined here
parallel-tests: installing 'build-aux/test-driver'
srv@local:~/groestlcoin$ export CFLAGS="-march=native -O2 -msse3 -fomit-frame-pointer -pipe"
srv@local:~/groestlcoin$ export CXXFLAGS="${CFLAGS}"
srv@local:~/groestlcoin$ export CHOST="x86_64-pc-linux-gnu"
srv@local:~/groestlcoin$ ./configure --prefix=~/groestlcoin-core
srv@local:~/groestlcoin$ ./configure --prefix=/home/ubuntu/groestlcoin-core
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking whether make supports nested variables... (cached) yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=c++11... yes
checking whether std::atomic can be used without link library... yes
checking whether we are using the GNU Objective C++ compiler... no
checking whether g++ -std=c++11 accepts -g... no
checking dependency style of g++ -std=c++11... gcc3
checking how to print strings... printf
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -std=c++11 -E
checking for ld used by g++ -std=c++11... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ -std=c++11 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ -std=c++11 option to produce PIC... -fPIC -DPIC
checking if g++ -std=c++11 PIC flag -fPIC -DPIC works... yes
checking if g++ -std=c++11 static flag -static works... yes
checking if g++ -std=c++11 supports -c -o file.o... yes
checking if g++ -std=c++11 supports -c -o file.o... (cached) yes
checking whether the g++ -std=c++11 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for ar... /usr/bin/ar
checking for ranlib... /usr/bin/ranlib
checking for strip... /usr/bin/strip
checking for gcov... /usr/bin/gcov
checking for lcov... no
checking for python3.6... no
checking for python3.5... /usr/bin/python3.5
checking for genhtml... no
checking for git... /usr/bin/git
checking for ccache... no
checking for xgettext... no
checking for hexdump... /usr/bin/hexdump
checking for readelf... /usr/bin/readelf
checking for c++filt... /usr/bin/c++filt
checking for objcopy... /usr/bin/objcopy
checking whether C++ compiler accepts -Werror... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking whether byte ordering is bigendian... no
checking whether gcc is Clang... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking whether more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking whether strerror_r is declared... yes
checking for strerror_r... yes
checking whether strerror_r returns char *... yes
checking whether the linker accepts -Wl,--large-address-aware... no
checking for __attribute__((visibility))... yes
checking for __attribute__((dllexport))... no
checking for __attribute__((dllimport))... no
checking for library containing clock_gettime... none required
checking whether C++ compiler accepts -fPIC... yes
checking whether C++ compiler accepts -Wstack-protector... yes
checking whether C++ compiler accepts -fstack-protector-all... yes
checking whether C++ preprocessor accepts -D_FORTIFY_SOURCE=2... yes
checking whether C++ preprocessor accepts -U_FORTIFY_SOURCE... yes
checking whether the linker accepts -Wl,--dynamicbase... no
checking whether the linker accepts -Wl,--nxcompat... no
checking whether the linker accepts -Wl,--high-entropy-va... no
checking whether the linker accepts -Wl,-z,relro... yes
checking whether the linker accepts -Wl,-z,now... yes
checking whether C++ compiler accepts -fPIE... yes
checking whether the linker accepts -pie... yes
checking endian.h usability... yes
checking endian.h presence... yes
checking for endian.h... yes
checking sys/endian.h usability... no
checking sys/endian.h presence... no
checking for sys/endian.h... no
checking byteswap.h usability... yes
checking byteswap.h presence... yes
checking for byteswap.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/prctl.h usability... yes
checking sys/prctl.h presence... yes
checking for sys/prctl.h... yes
checking whether strnlen is declared... yes
checking whether daemon is declared... yes
checking whether le16toh is declared... yes
checking whether le32toh is declared... yes
checking whether le64toh is declared... yes
checking whether htole16 is declared... yes
checking whether htole32 is declared... yes
checking whether htole64 is declared... yes
checking whether be16toh is declared... yes
checking whether be32toh is declared... yes
checking whether be64toh is declared... yes
checking whether htobe16 is declared... yes
checking whether htobe32 is declared... yes
checking whether htobe64 is declared... yes
checking whether bswap_16 is declared... yes
checking whether bswap_32 is declared... yes
checking whether bswap_64 is declared... yes
checking for MSG_NOSIGNAL... yes
checking for visibility attribute... yes
checking for Berkeley DB C++ headers... default
configure: WARNING: Found Berkeley DB other than 4.8; wallets opened by this build will not be portable!
checking for main in -ldb_cxx-4.8... no
checking for main in -ldb_cxx... yes
checking miniupnpc/miniwget.h usability... yes
checking miniupnpc/miniwget.h presence... yes
checking for miniupnpc/miniwget.h... yes
checking for main in -lminiupnpc... yes
checking miniupnpc/miniupnpc.h usability... yes
checking miniupnpc/miniupnpc.h presence... yes
checking for miniupnpc/miniupnpc.h... yes
checking for main in -lminiupnpc... (cached) yes
checking miniupnpc/upnpcommands.h usability... yes
checking miniupnpc/upnpcommands.h presence... yes
checking for miniupnpc/upnpcommands.h... yes
checking for main in -lminiupnpc... (cached) yes
checking miniupnpc/upnperrors.h usability... yes
checking miniupnpc/upnperrors.h presence... yes
checking for miniupnpc/upnperrors.h... yes
checking for main in -lminiupnpc... (cached) yes
checking for QT... no
checking for QT... no
configure: WARNING: Qt dependencies not found; groestlcoin-qt frontend will not be built
checking whether to build Groestlcoin Core GUI... no (Qt5)
checking for boostlib >= 1.47.0... yes
checking whether the Boost::System library is available... yes
checking for exit in -lboost_system... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... yes
checking whether the Boost::Program_Options library is available... yes
checking for exit in -lboost_program_options... yes
checking whether the Boost::Thread library is available... yes
checking for exit in -lboost_thread... yes
checking whether the Boost::Chrono library is available... yes
checking for exit in -lboost_chrono... yes
checking for mismatched boost c++11 scoped enums... ok
checking for SSL... yes
checking for CRYPTO... yes
checking for EVENT... yes
checking for EVENT_PTHREADS... yes
checking for ZMQ... yes
checking whether EVP_MD_CTX_new is declared... no
checking whether to build groestlcoind... yes
checking whether to build utils (groestlcoin-cli groestlcoin-tx)... yes
checking whether to build libraries... yes
checking if ccache should be used... no
checking if wallet should be enabled... yes
checking whether to build with support for UPnP... yes
checking whether to build with UPnP enabled by default... no
checking whether to build test_groestlcoin... no
checking whether to reduce exports... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating libgroestlcoinconsensus.pc
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating doc/man/Makefile
config.status: creating share/setup.nsi
config.status: creating share/qt/Info.plist
config.status: creating src/test/buildenv.py
config.status: creating qa/pull-tester/tests_config.py
config.status: creating contrib/devtools/split-debug.sh
config.status: creating src/config/bitcoin-config.h
config.status: src/config/bitcoin-config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
=== configuring in src/univalue (/home/ubuntu/groestlcoin/src/univalue)
configure: running /bin/bash ./configure --disable-option-checking '--prefix=/home/ubuntu/groestlcoin-core'  'CXXFLAGS=-march=native -O2 -msse3 -fomit-frame-pointer -pipe' 'CFLAGS=-march=native -O2 -msse3 -fomit-frame-pointer -pipe' '--disable-shared' '--with-pic' '--with-bignum=no' '--enable-module-recovery' --cache-file=/dev/null --srcdir=.
checking whether make supports nested variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating pc/libunivalue.pc
config.status: creating pc/libunivalue-uninstalled.pc
config.status: creating univalue-config.h
config.status: univalue-config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
=== configuring in src/secp256k1 (/home/ubuntu/groestlcoin/src/secp256k1)
configure: running /bin/bash ./configure --disable-option-checking '--prefix=/home/ubuntu/groestlcoin-core'  'CXXFLAGS=-march=native -O2 -msse3 -fomit-frame-pointer -pipe' 'CFLAGS=-march=native -O2 -msse3 -fomit-frame-pointer -pipe' '--disable-shared' '--with-pic' '--with-bignum=no' '--enable-module-recovery' --cache-file=/dev/null --srcdir=.
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking how to print strings... printf
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking whether make supports nested variables... (cached) yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for ar... /usr/bin/ar
checking for ranlib... /usr/bin/ranlib
checking for strip... /usr/bin/strip
checking for gcc... gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... gcc3
checking if gcc supports -std=c89 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-unused-function -Wno-long-long -Wno-overlength-strings... yes
checking if gcc supports -fvisibility=hidden... yes
checking for __int128... yes
checking for __builtin_expect... yes
checking native compiler: gcc... ok
checking for x86_64 assembly availability... yes
checking for CRYPTO... yes
checking for main in -lcrypto... yes
checking for EC functions in libcrypto... yes
checking for javac... no
configure: WARNING: cannot find JDK; try setting $JAVAC or $JAVA_HOME
checking jni headers... none
configure: WARNING: jni headers/dependencies not found. jni support disabled
checking whether byte ordering is bigendian... no
configure: Using static precomputation: yes
configure: Using assembly optimizations: x86_64
configure: Using field implementation: 64bit
configure: Using bignum implementation: no
configure: Using scalar implementation: 64bit
configure: Using endomorphism optimizations: no
configure: Building ECDH module: no
configure: Building ECDSA pubkey recovery module: yes
configure: Using jni: no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libsecp256k1.pc
config.status: creating src/libsecp256k1-config.h
config.status: src/libsecp256k1-config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
Fixing libtool for -rpath problems.

Options used to compile and link:
  with wallet   = yes
  with gui / qt = no
  with zmq      = yes
  with test     = no
  with bench    = no
  with upnp     = yes
  debug enabled = no

  target os     = linux
  build os      = 

  CC            = gcc
  CFLAGS        = -march=native -O2 -msse3 -fomit-frame-pointer -pipe
  CPPFLAGS      =  -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS
  CXX           = g++ -std=c++11
  CXXFLAGS      = -march=native -O2 -msse3 -fomit-frame-pointer -pipe
  LDFLAGS       = 

srv@local:~/groestlcoin$ make -j 8
Making all in src
make[1]: Entering directory '/home/ubuntu/groestlcoin/src'
make[2]: Entering directory '/home/ubuntu/groestlcoin/src'
  CXX      crypto/libgroestlcoinconsensus_la-aes.lo
  CXX      crypto/libgroestlcoinconsensus_la-hmac_sha256.lo
  CXX      crypto/libgroestlcoinconsensus_la-hmac_sha512.lo
  CXX      crypto/libgroestlcoinconsensus_la-sha1.lo
  CXX      crypto/libgroestlcoinconsensus_la-sha256.lo
  CXX      crypto/libgroestlcoinconsensus_la-sha512.lo
  CXX      crypto/libgroestlcoinconsensus_la-ripemd160.lo
  CXX      libgroestlcoinconsensus_la-arith_uint256.lo
  CXX      consensus/libgroestlcoinconsensus_la-merkle.lo
  CXX      libgroestlcoinconsensus_la-hash.lo
  CXX      sphlib/libgroestlcoinconsensus_la-groestl.lo
  CXX      libgroestlcoinconsensus_la-groestlcoin-hash.lo
  CXX      primitives/libgroestlcoinconsensus_la-block.lo
  CXX      primitives/libgroestlcoinconsensus_la-transaction.lo
  CXX      libgroestlcoinconsensus_la-pubkey.lo
  CXX      script/libgroestlcoinconsensus_la-groestlcoinconsensus.lo
  CXX      script/libgroestlcoinconsensus_la-interpreter.lo
  CXX      script/libgroestlcoinconsensus_la-script.lo
  CXX      script/libgroestlcoinconsensus_la-script_error.lo
  CXX      libgroestlcoinconsensus_la-uint256.lo
  CXX      libgroestlcoinconsensus_la-utilstrencodings.lo
make[3]: Entering directory '/home/ubuntu/groestlcoin/src/secp256k1'
gcc -I. -g -O2 -Wall -Wextra -Wno-unused-function -c src/gen_context.c -o gen_context.o
  CXX      groestlcoind-groestlcoind.o
  CXX      libgroestlcoin_server_a-addrman.o
  CXX      libgroestlcoin_server_a-addrdb.o
  CXX      libgroestlcoin_server_a-bloom.o
  CXX      libgroestlcoin_server_a-blockencodings.o
  CXX      libgroestlcoin_server_a-chain.o
gcc gen_context.o -o gen_context
./gen_context
  CC       src/libsecp256k1_la-secp256k1.lo
  CXX      libgroestlcoin_server_a-checkpoints.o
  CXX      libgroestlcoin_server_a-httprpc.o
  CCLD     libsecp256k1.la
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
make[3]: Leaving directory '/home/ubuntu/groestlcoin/src/secp256k1'
  CXX      libgroestlcoin_server_a-httpserver.o
  CXX      libgroestlcoin_server_a-init.o
  CXX      libgroestlcoin_server_a-dbwrapper.o
  CXX      libgroestlcoin_server_a-merkleblock.o
  CXX      libgroestlcoin_server_a-miner.o
  CXX      libgroestlcoin_server_a-net.o
  CXX      libgroestlcoin_server_a-net_processing.o
  CXX      libgroestlcoin_server_a-noui.o
  CXX      policy/libgroestlcoin_server_a-fees.o
  CXX      policy/libgroestlcoin_server_a-policy.o
  CXX      libgroestlcoin_server_a-pow.o
  CXX      libgroestlcoin_server_a-rest.o
  CXX      rpc/libgroestlcoin_server_a-blockchain.o
  CXX      rpc/libgroestlcoin_server_a-mining.o
  CXX      rpc/libgroestlcoin_server_a-misc.o
  CXX      rpc/libgroestlcoin_server_a-net.o
  CXX      rpc/libgroestlcoin_server_a-rawtransaction.o
  CXX      rpc/libgroestlcoin_server_a-server.o
  CXX      script/libgroestlcoin_server_a-sigcache.o
  CXX      script/libgroestlcoin_server_a-ismine.o
  CXX      libgroestlcoin_server_a-timedata.o
  CXX      libgroestlcoin_server_a-torcontrol.o
  CXX      libgroestlcoin_server_a-txdb.o
  CXX      libgroestlcoin_server_a-txmempool.o
  CXX      libgroestlcoin_server_a-ui_interface.o
  CXX      libgroestlcoin_server_a-validation.o
  CXX      libgroestlcoin_server_a-validationinterface.o
  CXX      libgroestlcoin_server_a-versionbits.o
  CXX      libgroestlcoin_common_a-amount.o
  CXX      libgroestlcoin_common_a-base58.o
  CXX      libgroestlcoin_common_a-groestlcoin.o
  CXX      libgroestlcoin_common_a-coins.o
  CXX      libgroestlcoin_common_a-compressor.o
  CXX      libgroestlcoin_common_a-core_read.o
  CXX      libgroestlcoin_common_a-core_write.o
  CXX      libgroestlcoin_common_a-key.o
  CXX      libgroestlcoin_common_a-keystore.o
  CXX      libgroestlcoin_common_a-netaddress.o
  CXX      libgroestlcoin_common_a-netbase.o
  CXX      libgroestlcoin_common_a-protocol.o
  CXX      libgroestlcoin_common_a-scheduler.o
  CXX      script/libgroestlcoin_common_a-sign.o
  CXX      script/libgroestlcoin_common_a-standard.o
  CXX      libgroestlcoin_common_a-warnings.o
make[3]: Entering directory '/home/ubuntu/groestlcoin/src/univalue'
  CXX      lib/libunivalue_la-univalue.lo
  CXX      lib/libunivalue_la-univalue_read.lo
  CXX      lib/libunivalue_la-univalue_write.lo
  CXX      support/libgroestlcoin_util_a-lockedpool.o
  CXX      libgroestlcoin_util_a-chainparamsbase.o
  CXXLD    libunivalue.la
ar: `u' modifier ignored since `D' is the default (see `U')
make[3]: Leaving directory '/home/ubuntu/groestlcoin/src/univalue'
  CXX      compat/libgroestlcoin_util_a-glibc_sanity.o
  CXX      compat/libgroestlcoin_util_a-glibcxx_sanity.o
  CXX      compat/libgroestlcoin_util_a-strnlen.o
  CXX      libgroestlcoin_util_a-random.o
  CXX      rpc/libgroestlcoin_util_a-protocol.o
  CXX      support/libgroestlcoin_util_a-cleanse.o
  CXX      libgroestlcoin_util_a-sync.o
  CXX      libgroestlcoin_util_a-threadinterrupt.o
  CXX      libgroestlcoin_util_a-util.o
  CXX      libgroestlcoin_util_a-utilmoneystr.o
^[[B  CXX      libgroestlcoin_util_a-utilstrencodings.o
  CXX      libgroestlcoin_util_a-utiltime.o
  CXX      wallet/libgroestlcoin_wallet_a-crypter.o
  CXX      wallet/libgroestlcoin_wallet_a-db.o
  CXX      wallet/libgroestlcoin_wallet_a-rpcdump.o
  CXX      wallet/libgroestlcoin_wallet_a-rpcwallet.o
  CXX      wallet/libgroestlcoin_wallet_a-wallet.o
  CXX      wallet/libgroestlcoin_wallet_a-walletdb.o
  CXX      policy/libgroestlcoin_wallet_a-rbf.o
  CXX      zmq/libgroestlcoin_zmq_a-zmqabstractnotifier.o
  CXX      zmq/libgroestlcoin_zmq_a-zmqnotificationinterface.o
  CXX      zmq/libgroestlcoin_zmq_a-zmqpublishnotifier.o
  CXX      libgroestlcoin_consensus_a-arith_uint256.o
  CXX      consensus/libgroestlcoin_consensus_a-merkle.o
  CXX      libgroestlcoin_consensus_a-hash.o
  CXX      sphlib/libgroestlcoin_consensus_a-groestl.o
  CXX      libgroestlcoin_consensus_a-groestlcoin-hash.o
  CXX      primitives/libgroestlcoin_consensus_a-block.o
  CXX      primitives/libgroestlcoin_consensus_a-transaction.o
  CXX      libgroestlcoin_consensus_a-pubkey.o
  CXX      script/libgroestlcoin_consensus_a-groestlcoinconsensus.o
  CXX      script/libgroestlcoin_consensus_a-interpreter.o
  CXX      script/libgroestlcoin_consensus_a-script.o
  CXX      script/libgroestlcoin_consensus_a-script_error.o
  CXX      libgroestlcoin_consensus_a-uint256.o
  CXX      libgroestlcoin_consensus_a-utilstrencodings.o
  CXX      crypto/crypto_libgroestlcoin_crypto_a-aes.o
  CXX      crypto/crypto_libgroestlcoin_crypto_a-hmac_sha256.o
  CXX      crypto/crypto_libgroestlcoin_crypto_a-hmac_sha512.o
  CXX      crypto/crypto_libgroestlcoin_crypto_a-ripemd160.o
  CXX      crypto/crypto_libgroestlcoin_crypto_a-sha1.o
  CXX      crypto/crypto_libgroestlcoin_crypto_a-sha256.o
  CXX      crypto/crypto_libgroestlcoin_crypto_a-sha512.o
  CXX      leveldb/db/leveldb_libleveldb_a-builder.o
  CXX      leveldb/db/leveldb_libleveldb_a-c.o
  CXX      leveldb/db/leveldb_libleveldb_a-dbformat.o
  CXX      leveldb/db/leveldb_libleveldb_a-db_impl.o
  CXX      leveldb/db/leveldb_libleveldb_a-db_iter.o
  CXX      leveldb/db/leveldb_libleveldb_a-dumpfile.o
  CXX      leveldb/db/leveldb_libleveldb_a-filename.o
  CXX      leveldb/db/leveldb_libleveldb_a-log_reader.o
  CXX      leveldb/db/leveldb_libleveldb_a-log_writer.o
  CXX      leveldb/db/leveldb_libleveldb_a-memtable.o
  CXX      leveldb/db/leveldb_libleveldb_a-repair.o
  CXX      leveldb/db/leveldb_libleveldb_a-table_cache.o
  CXX      leveldb/db/leveldb_libleveldb_a-version_edit.o
  CXX      leveldb/db/leveldb_libleveldb_a-version_set.o
  CXX      leveldb/db/leveldb_libleveldb_a-write_batch.o
  CXX      leveldb/table/leveldb_libleveldb_a-block_builder.o
  CXX      leveldb/table/leveldb_libleveldb_a-block.o
  CXX      leveldb/table/leveldb_libleveldb_a-filter_block.o
  CXX      leveldb/table/leveldb_libleveldb_a-format.o
  CXX      leveldb/table/leveldb_libleveldb_a-iterator.o
  CXX      leveldb/table/leveldb_libleveldb_a-merger.o
  CXX      leveldb/table/leveldb_libleveldb_a-table_builder.o
  CXX      leveldb/table/leveldb_libleveldb_a-table.o
  CXX      leveldb/table/leveldb_libleveldb_a-two_level_iterator.o
  CXX      leveldb/util/leveldb_libleveldb_a-arena.o
  CXX      leveldb/util/leveldb_libleveldb_a-bloom.o
  CXX      leveldb/util/leveldb_libleveldb_a-cache.o
  CXX      leveldb/util/leveldb_libleveldb_a-coding.o
  CXX      leveldb/util/leveldb_libleveldb_a-comparator.o
  CXX      leveldb/util/leveldb_libleveldb_a-crc32c.o
  CXX      leveldb/util/leveldb_libleveldb_a-env.o
  CXX      leveldb/util/leveldb_libleveldb_a-env_posix.o
  CXX      leveldb/util/leveldb_libleveldb_a-filter_policy.o
  CXX      leveldb/util/leveldb_libleveldb_a-hash.o
  CXX      leveldb/util/leveldb_libleveldb_a-histogram.o
  CXX      leveldb/util/leveldb_libleveldb_a-logging.o
  CXX      leveldb/util/leveldb_libleveldb_a-options.o
  CXX      leveldb/util/leveldb_libleveldb_a-status.o
  CXX      leveldb/port/leveldb_libleveldb_a-port_posix.o
  CXX      leveldb/helpers/memenv/leveldb_libmemenv_a-memenv.o
  CXX      groestlcoin_cli-groestlcoin-cli.o
  CXX      rpc/libgroestlcoin_cli_a-client.o
  CXX      groestlcoin_tx-groestlcoin-tx.o
  CXXLD    libgroestlcoinconsensus.la
  AR       libgroestlcoin_server.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       libgroestlcoin_common.a
  CXX      libgroestlcoin_util_a-clientversion.o
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       libgroestlcoin_zmq.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       libgroestlcoin_consensus.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       crypto/libgroestlcoin_crypto.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       leveldb/libleveldb.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       leveldb/libmemenv.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       libgroestlcoin_util.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  AR       libgroestlcoin_cli.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  CXXLD    groestlcoin-cli
  AR       libgroestlcoin_wallet.a
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
  CXXLD    groestlcoind
  CXXLD    groestlcoin-tx
make[2]: Leaving directory '/home/ubuntu/groestlcoin/src'
make[1]: Leaving directory '/home/ubuntu/groestlcoin/src'
Making all in doc/man
make[1]: Entering directory '/home/ubuntu/groestlcoin/doc/man'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/ubuntu/groestlcoin/doc/man'
make[1]: Entering directory '/home/ubuntu/groestlcoin'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/ubuntu/groestlcoin'
srv@local:~/groestlcoin$ make install
Making install in src
make[1]: Entering directory '/home/ubuntu/groestlcoin/src'
make[2]: Entering directory '/home/ubuntu/groestlcoin/src'
make[3]: Entering directory '/home/ubuntu/groestlcoin/src'
 /bin/mkdir -p '/home/ubuntu/groestlcoin-core/lib'
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libgroestlcoinconsensus.la '/home/ubuntu/groestlcoin-core/lib'
libtool: install: /usr/bin/install -c .libs/libgroestlcoinconsensus.so.0.0.0 /home/ubuntu/groestlcoin-core/lib/libgroestlcoinconsensus.so.0.0.0
libtool: install: (cd /home/ubuntu/groestlcoin-core/lib && { ln -s -f libgroestlcoinconsensus.so.0.0.0 libgroestlcoinconsensus.so.0 || { rm -f libgroestlcoinconsensus.so.0 && ln -s libgroestlcoinconsensus.so.0.0.0 libgroestlcoinconsensus.so.0; }; })
libtool: install: (cd /home/ubuntu/groestlcoin-core/lib && { ln -s -f libgroestlcoinconsensus.so.0.0.0 libgroestlcoinconsensus.so || { rm -f libgroestlcoinconsensus.so && ln -s libgroestlcoinconsensus.so.0.0.0 libgroestlcoinconsensus.so; }; })
libtool: install: /usr/bin/install -c .libs/libgroestlcoinconsensus.lai /home/ubuntu/groestlcoin-core/lib/libgroestlcoinconsensus.la
libtool: install: /usr/bin/install -c .libs/libgroestlcoinconsensus.a /home/ubuntu/groestlcoin-core/lib/libgroestlcoinconsensus.a
libtool: install: chmod 644 /home/ubuntu/groestlcoin-core/lib/libgroestlcoinconsensus.a
libtool: install: /usr/bin/ranlib /home/ubuntu/groestlcoin-core/lib/libgroestlcoinconsensus.a
libtool: finish: PATH="/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/sbin" ldconfig -n /home/ubuntu/groestlcoin-core/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /home/ubuntu/groestlcoin-core/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the ' -D__LIBTOOL_IS_A_FOOL__ ' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/home/ubuntu/groestlcoin-core/bin'
  /bin/bash ../libtool   --mode=install /usr/bin/install -c groestlcoind groestlcoin-cli groestlcoin-tx '/home/ubuntu/groestlcoin-core/bin'
libtool: install: /usr/bin/install -c groestlcoind /home/ubuntu/groestlcoin-core/bin/groestlcoind
libtool: install: /usr/bin/install -c groestlcoin-cli /home/ubuntu/groestlcoin-core/bin/groestlcoin-cli
libtool: install: /usr/bin/install -c groestlcoin-tx /home/ubuntu/groestlcoin-core/bin/groestlcoin-tx
 /bin/mkdir -p '/home/ubuntu/groestlcoin-core/include'
 /usr/bin/install -c -m 644 script/groestlcoinconsensus.h '/home/ubuntu/groestlcoin-core/include'
make[3]: Leaving directory '/home/ubuntu/groestlcoin/src'
make[2]: Leaving directory '/home/ubuntu/groestlcoin/src'
make[1]: Leaving directory '/home/ubuntu/groestlcoin/src'
Making install in doc/man
make[1]: Entering directory '/home/ubuntu/groestlcoin/doc/man'
make[2]: Entering directory '/home/ubuntu/groestlcoin/doc/man'
make[2]: Nothing to be done for 'install-exec-am'.
 /bin/mkdir -p '/home/ubuntu/groestlcoin-core/share/man/man1'
 /usr/bin/install -c -m 644 bitcoind.1 bitcoin-qt.1 bitcoin-cli.1 bitcoin-tx.1 '/home/ubuntu/groestlcoin-core/share/man/man1'
make[2]: Leaving directory '/home/ubuntu/groestlcoin/doc/man'
make[1]: Leaving directory '/home/ubuntu/groestlcoin/doc/man'
make[1]: Entering directory '/home/ubuntu/groestlcoin'
make[2]: Entering directory '/home/ubuntu/groestlcoin'
make[2]: Nothing to be done for 'install-exec-am'.
 /bin/mkdir -p '/home/ubuntu/groestlcoin-core/lib/pkgconfig'
 /usr/bin/install -c -m 644 libgroestlcoinconsensus.pc '/home/ubuntu/groestlcoin-core/lib/pkgconfig'
make[2]: Leaving directory '/home/ubuntu/groestlcoin'
make[1]: Leaving directory '/home/ubuntu/groestlcoin'
srv@local:~/groestlcoin$ cd ../groestlcoin-core/bin/
srv@local:~/groestlcoin-core/bin$ ls
groestlcoin-cli  groestlcoind  groestlcoin-tx

Missing network interface 10G Intel X520 with error failed to load because of unsupported SFP+

If you have server with 10G Intel X520 network card

05:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)

and you wonder why your system did not have network and even no interface is shown with the commands

ip addr and ifconfig -a

, it is probably because you used unsupported SFP+ module.
In the “dmesg” you’ll see two line regarding the problem with the interface:

[ 3142.439304 ] ixgbe 0000:05:00.0: failed to load because an unsupported SFP+ or QSFP module type was detected.
[ 3142.439306 ] ixgbe 0000:05:00.0: Reload the driver after installing a supported module.

Only tested modules are supported by default and it’s probably normal there are a great deal of different SFP+ devices and the creators of the kernel driver would not be able to test all the different SFP+ modules in the world, so all tested SFP+ modules work by default and all other not tested need to enable an option in the kernel to instruct the driver to use them!

Enable the unsupported SF+ module of Intel X520. The kernel module name is “ixgbe”:

  • Built-in kernel module, when the ixgbe is build in the kernel, you must pass a configuration parameters to the kernel boot line
    ixgbe.allow_unsupported_sfp=1
    

    Under CentOS 7 and Ubuntu 16/17/18 you can do the following:
    Edit

    /etc/default/grub

    and add at the end of the GRUB_CMDLINE_LINUX the above line. So it should look like:

    GRUB_CMDLINE_LINUX=" ixgbe.allow_unsupported_sfp=1"
    

    And then for CentOS 7 execute:

    grub2-mkconfig -o /boot/grub2/grub.cfg
    

    And for Ubuntu/Debian:

    grub-mkconfig -o /boot/grub/grub.cfg
    

    DO NOT forget to execute a grub2 make configuration command, because the grub2 configuration file must be regenerated to include the option you’ve set.

  • Most linux distros use ixgbe as a kernel module, so they load the module with the initrd image after booting the kernel. We must instruct how the kernel module will be loaded from the initrd image, so the initrd image must be changed. Here is how to do it properly for CentOS 7 and Ubuntu/Debian:
    For the both distros execute the command:

    echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf
    

    It will create a configuration file for the ixgbe kernel module with the configuration you see between the double quotes. And then reinstall the kernel!!! Because the initrd image will be regenerated. If you do not want to reinstall the current kernel, you must manually regenerate the initrd image.
    Regenerate all the initrd images for the all installed kernels.
    Under CentOS 7:

    dracut --regenerate-all --force
    

    Under Ubuntu/Debian:

    update-initramfs -u -k all
    

Basic review of Eclipse Angular IDE with hello world app

This is a basic review of the Eclipse new Angular IDE. What is the basic functionality of the IDE and how we can work with it. The main purpose is to show what it looks like creating an angular project.

STEP 1) Launch the Angular IDE and select the Workspace you used for your projects.

main menu
Angular IDE

STEP 2) Eclipse IDE started for the first time – no projects opened and no history projects.

main menu
eclipse-workspace

STEP 3) Create project by clicking the down array (the second icon from the left) and then Angular Project

main menu
Angular Project

STEP 4) A new window will pop up asking for the name of the project and as you can see you can tune the specific versions of Angular CLI, Node.js and NPM. Click “Next”.

main menu
New Angular Project

STEP 5) Here you see the commands that will be executed by the eclipse IDE to create a new Angular Project. Click “Finish”.

main menu
New Angular Project Finish

STEP 6) The commands of the previous step are executed and the needed packages and their dependecies will be installed. There a progress status with percetages right bottom of the IDE. When the percetages reach 100% the view for the angular project will be opened.

main menu
Creating the Angular Project

STEP 7) Angular project opened, the “main.ts” file is showed in the typescript editor. A proper hilighting of typescript language.

main menu
ReviewIDEApp

STEP 8) We open the “app.component.ts” file in the typescript editor and we add “body” variable for testing the IDE.

main menu
ReviewIDEApp – app.component.ts

STEP 9) The html file of the AppComponent – it has a proposals (autocomplete) even in the angular string interpolation {{}}. So we use the proposal of our AppComponent variable “body”.

main menu
ReviewIDEApp – app.component.html

STEP 10) There is a tab “Servers” left bottom with all the Angular CLI applications. We have only one ReviewIDEApp, mark it and then click on the “play” button and the project will be built and started on the local ip port 4200.

main menu
ReviewIDEApp – Servers

STEP 11) in the terminal you can see all the commands and their output. Our angular application is being built.

main menu
ReviewIDEApp – Terminal

STEP 12) Again in the “Servers” tab we see our application is running on http://localhost:4200/ Also you see our modification of the default code.

main menu
ReviewIDEApp – running – build OK

STEP 13) Open your browser and load http://localhost:4200/ you’ll see something similar and our variable “body” (“Hello World”) showed in the header.

main menu
ReviewIDEApp – browser http://localhost:4200/

STEP 14) Create a new angular component with the IDE is simple, just mark your application in the “Project Explorer” -> right mouse click -> “New” -> “Component”.

main menu
New Component

STEP 15) Set the “Element Name” and you also could click on “Advanced” to see more options for the component creation.

main menu
New Angular CLI Component

STEP 16) For example you can uncheck “Create component with Unit Test (–spec)” and then Next. It will not generate the spec file.

main menu
New Angular CLI Component – Advanced

STEP 17) You see the commands to be executed in the terminal and then click “Finish” to execute the commands.

main menu
New Angular CLI Component – Generated Command

STEP 18) The files for the component are generated – ts (typescript file), html (the template file) and css (the style file). The three file are placed in a separate directory with the name of the component. The typescript file has the skeleton of your angular component.

main menu
myfirstcom.component.ts

STEP 19) As you can see the CLI inlcuded the component we created from the previous step in our global app.module file.

main menu
app.modules.ts

STEP 20) Create a new angular pipe with the IDE is simple, just mark your application in the “Project Explorer” -> right mouse click -> “New” -> “Pipe”.

main menu
New Pipe

STEP 21) Set the “Element Name” and you also could click on “Advanced” to see more options for the pipe creation.

main menu
New Angular CLI Pipe

STEP 22) For example you can uncheck “Create component with Unit Test (–spec)” and then Next. It will not generate the spec file.

main menu
New Angular CLI Pipe – Advanced

STEP 23) You see the commands to be executed in the terminal and then click “Finish” to execute the commands.

main menu
New Angular CLI Pipe – Generated Command

STEP 24) One typescript file is generated. The typescript mypipe.pipe.ts file has the skeleton of a pipe component. There is the definition of the pipe class implementing the the mandatory class “PipeTransform” and the method transform to override.

main menu
mypipe.pipe.ts

STEP 25) Create a new angular service with the IDE is simple, just mark your application in the “Project Explorer” -> right mouse click -> “New” -> “Service” and you’ll see the window for creating a service. Enter “Element Name”, click “Advanced” to see more options for the angular services.

main menu
New Angular CLI Service

STEP 26) You see the commands to be executed in the terminal and then click “Finish” to execute the commands.

main menu
New Angular CLI Service – Generated Command

STEP 27) The typescript file for our service is generated: a an exported class with blank constuctor.

main menu
myserver.service.ts

STEP 28) There is autocomplete for the import directive.

main menu
import – autocomplete

STEP 29) There is autocomplete for the exported class of the imported file/library.

main menu
import class – autocomplete

STEP 30) There is autocomplete for the component names in the html. If you write “
main menu
html component autocomplete

STEP 31) Our component works!

main menu
Our app in the Browser

STEP 32) There is an autocomplete of the all html tags.

main menu
Html template file

STEP 33) There is an autocomplete of the all html tags.

main menu
Html template file

STEP 34) Information is available for all properties.

main menu
Property information

STEP 35) Autocomplete proposal for all the available classes of an import.

main menu
Autocomplete proposal for classes

STEP 36) Autocomplete proposal fired in a funtion body.

main menu
Autocomplete proposal of keywords

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.