The Pine64 is an ARMv8 platform with 2GB of RAM and a 1 GB ethernet connection. These specifications make this board attractive as a the base board for an all Open Source Cloud Computing Stack.
Figure 1. Four Node Kubernetes Cluster Setup running on Pine64 and Centos 7.2
1. Install Centos 7.2
Pine64 is a new hardware platform that run AArch64, which is also known as ARMv8 or ARM64. There is a Pine64 Centos 7.2 image download from Project31 [Pi3–1], or you can build your own Centos 7 distro, by following the instruction on the Centos AltArch page [Centos].
You will need a 8 GB microSD card or bigger. On OSX stick the microSD card into an adapter and into your macbook. It will automount. Open the Disk Utility and check the Device setting, which should be of form disk<n>s1, so something like ‘disk2s1’ for n=2. Now unmount the disk and run
sudo dd bs=1m if=CentOS-aarch64-pine64.img of=/dev/rdisk2
Warning: in ‘rdisk2’ the ‘r’ means raw disk and writes orders of magnitude faster on OSX and 2 is the value found above for n.
You can use control-t to monitor the progress. Once done you should update the uEnv.txt file on the microSD card. Add the following line
where the setting is the second number on the sticker on your pine board, if it says something like 0006dc8bce10 then use ‘ethaddr=00:06:dc:8b:ce:10’ [[Pine64–1]]. Note that 00:06:dc is the vendor id. Once done you can eject the card and insert into the Pine64 board. I had no luck getting an HDMI monitor to work so I used the following command to see which new SSH server came online:
nmap -sV -p 22 -open 192.168.1.0/24
Make sure to adjust the network setting you are expecting on your network. This command will give you a list of IP address that run SSH servers and you should be able to find IP address for your Pine64 board. Now you can ssh in using ssh root@<ipaddress> and use the default password of ‘centos’. Check that the /boot/uEnv.txt file contains the ethaddr setting you added, or add it now [Pine64–2].
The initial size of the microSD card is 8 GB. To use the full size of your microSD card [StackX] you need to use
sudo fdisk /dev/mmcblk0
and type ‘p’ to obtain the list of partitions.
/dev/mmcblk0p1 40960 143359 51200 c W95 FAT32 (LBA)
/dev/mmcblk0p2 143360 15138815 7497728 83 Linux
To enlarge the second partition first delete it using ‘d’ and then ‘2’. Then ’n’ for createing a new partition and ‘p’ for ‘primary’. Enter ‘143360’ from the start of the second partition above and accept the default for the end, and type ‘w’ to save the partition settings. Now reboot and finally
and once done reboot again. Now
df -h .
should reflect the full capacity of the card. Finally you should run
to bring Centos fully up to date and lets run ntpd on every node
yum -y install ntp; systemctl start ntpd; systemctl enable ntpd
For DNS resolution I added the following entries to my /etc/hosts file
2. Installing and running Docker
Docker is part of Centos 7, so installing Docker can be done using yum
yum install docker;
systemctl enable docker; systemctl start docker
With the docker daemon now running we can start a simple Centos 7 base container.
docker run -it project31/aarch64-centos:7 bash -l
Note that you can only run docker images build for the aarch64 architecture. The Project31 organization has lots of aarch64 images ready to go for you. For more details see also https://project31.github.io/pine64/
[Pi3–1] Anything Anything running Kubernetes on Aarch64/ARM64, Kurt Stam, https://project31.github.io
[Centos] Install CentOS 7 on your favourite ARMv8 ARM64 AArch64 board, Uli Middelberg, https://github.com/umiddelb/aarch64/wiki/Install-CentOS-7-on-your-favourite-ARMv8-ARM64-AArch64-board
[Pine64–1] pine64 mac_address: http://forum.pine64.org/showthread.php?tid=743&pid=6939#pid6939
[Pine64–2] pine64 subforum on ethernet port: http://forum.pine64.org/showthread.php?tid=2049
[StackX] Resize the root partition: http://raspberrypi.stackexchange.com/questions/499/how-can-i-resize-my-root-partition