Ajeet Raina Docker Captain, ARM Innovator & Docker Bangalore Community Leader.

A First Look at PineBook Pro – A 14” ARM Linux Laptop For Just $200

3 min read


If you’re a FOSS enthusiast and looking out for a powerful little ARM laptop, PineBook Pro is what you need.

The Pinebook Pro is a Linux and *BSD ARM laptop from PINE64. It is built to be a compelling alternative to mid-ranged Chromebooks that people convert into Linux laptops. It features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, high capacity eMMC storage, a 10,000 mAh capacity battery, and the modularity that only an open-source project can deliver.

The Pinebook Pro is equipped with 4GB LPDDR4 system memory, high capacity eMMC flash storage, and 128Mb SPI boot Flash. The I/O includes 1x micro SD card reader (bootable), 1x USB 2.0, 1x USB 3.0, 1x USB type C Host with DP 1.2 and power-in, PCIe 4x for an NVMe SSD drive (requires an optional adapter), and UART (via the headphone jack by setting an internal switch).

Join Pine64 discord NOW!

PineBook Pro is not an x86 device—it’s a big-little heterogeneous ARM cluster architecture, with two Cortex A72 cores and four Cortex A53 cores. In 2020, this sharply limits the operating system selection—you’re not going to buy a Pinebook Pro and slap Windows on it after you get it

Supported Operating System

If you’re not into Manjaro, that’s fine—the Pine64 project offers a wide selection of additional, downloadable user-installable Pinebook Pro images including Debian, Fedora, NetBSD, Chromium OS, and more.

Many different Operating Systems (OS) are freely available from the open-source community and partner projects. These include various flavors of Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD. Under ‘Pinebook Pro Software Release/OS Image Download Section’ you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software.

Default Manjaro KDE Desktop Quick Start

When you first get your Pinebook Pro and boot it up for the first time, it’ll come with Manjaro using the KDE desktop. On first boot, it will ask for certain information such as your timezone location, keyboard layout, username, password, and hostname. Most of these should be self-explanatory. Note that the hostname it asks for should be thought of as the “codename” of your machine, and if you don’t know what it’s about, you can make something up (use a single word, all lower case, no punctuation; e.g. “pbpro”).

After you’re on the desktop, be sure to update it as soon as possible and reboot after updates are finished installing. If nothing appears when you click on the Networking icon in your system tray to connect to your Wi-Fi, ensure the Wi-Fi privacy switch is not disabled.

Comes with Manjaro Linux Pre-Installed

The Pinebook Pro comes with Manjaro Linux pre-installed. Manjaro is, effectively, Arch Linux but with a set of reasonably sane defaults—”real” Arch might be considered more of a framework upon which to hang a distro, rather than a complete distribution itself.

Installing Docker on Manjaro-ARM OS running on Pine64

Docker doesn’t come with Pine64 Pro Laptop by default but you can install it flawlessly following the below steps:

ssh ajeetraina@
ajeetraina@'s password: 
Welcome to Manjaro-ARM
~~Website: https://manjaro.org
~~Forum:   https://forum.manjaro.org/c/manjaro-arm
~~IRC:     #manjaro-arm on irc.freenode.net
~~Matrix:  #manjaro-arm-public:matrix.org
Last login: Mon Oct  5 09:17:42 2020

Keeping Manjaro ARM Repository up-to-date

 sudo pacman -Syu

Installing Docker 19.03.12

pacman -S docker

Initialising Docker

You might have to reboot your system for Docker to get initialize properly

Running Docker Service

systemctl start docker.service
systemctl enable docker.service

Verifying Docker

[ajeetraina@pine64 ~]$ sudo docker version
[sudo] password for ajeetraina: 
Version:           19.03.12-ce
API version:       1.40
Go version:        go1.14.5
Git commit:        48a66213fe
Built:             Sat Jul 18 02:40:17 2020
OS/Arch:           linux/arm64
Experimental:      false

 Version:          19.03.12-ce
 API version:      1.40 (minimum version 1.12)
 Go version:       go1.14.5
 Git commit:       48a66213fe
 Built:            Sat Jul 18 02:39:40 2020
 OS/Arch:          linux/arm64
 Experimental:     false
 Version:          v1.4.1.m
 GitCommit:        c623d1b36f09f8ef6536a057bd658b3aa8632828.m
 Version:          1.0.0-rc92
 GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 Version:          0.18.0
 GitCommit:        fec3683

Installing Docker Compose

sudo pacman -S docker-compose
[ajeetraina@pine64 ~]$ sudo docker-compose version
docker-compose version 1.27.3, build unknown
docker-py version: 4.3.1
CPython version: 3.8.5
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020

Installing K3s

[ajeetraina@pine64 ~]$ curl -sfL https://get.k3s.io | sh -

Installing Portainer

[ajeetraina@pine64 ~]$ sudo  curl -LO https://raw.githubusercontent.com/portainer/portainer-k8s/master/portainer-nodeport.yaml
[ajeetraina@pine64 ~]$ sudo kubectl apply -f portainer-nodeport.yaml
namespace/portainer created
serviceaccount/portainer-sa-clusteradmin created
clusterrolebinding.rbac.authorization.k8s.io/portainer-crb-clusteradmin created
service/portainer created
deployment.apps/portainer created
[ajeetraina@pine64 ~]$ sudo kubectl get svc -n portainer

NAME        TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)                         AGE
portainer   NodePort   <none>        9000:30777/TCP,8000:30776/TCP   114s
pico@pico1:~$ sudo k3s kubectl describe  po -n portainer
Name:         portainer-5fbd6bb5d8-dxgp4
Namespace:    portainer
Priority:     0
Node:         pico2/
Start Time:   Tue, 10 Nov 2020 22:37:55 -0700
Labels:       app=app-portainer
Annotations:  <none>
Status:       Running
Controlled By:  ReplicaSet/portainer-5fbd6bb5d8
    Container ID:   containerd://70d7a96eaaa5aaf338194ceaaf858d3e2ce2ed74390e17cbceaef9cefdccc092
    Image:          portainerci/portainer:develop
    Image ID:       docker.io/portainerci/portainer@sha256:31ce431595a4e8223e07e992a5d9d2412c05191355723d56d542c08ff64c971f
    Port:           9000/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Tue, 10 Nov 2020 22:38:07 -0700
    Ready:          True
    Restart Count:  0
    Environment:    <none>
      /var/run/secrets/kubernetes.io/serviceaccount from portainer-sa-clusteradmin-token-g9qmz (ro)
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
    Type:        Secret (a volume populated by a Secret)
    SecretName:  portainer-sa-clusteradmin-token-g9qmz
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  4m40s  default-scheduler  Successfully assigned portainer/portainer-5fbd6bb5d8-dxgp4 to pico2
  Normal  Pulling    4m39s  kubelet            Pulling image "portainerci/portainer:develop"
  Normal  Pulled     4m28s  kubelet            Successfully pulled image "portainerci/portainer:develop" in 10.98939761s
  Normal  Created    4m28s  kubelet            Created container portainer
  Normal  Started    4m28s  kubelet            Started container portainer


Please follow and like us:

Have Queries? Join https://launchpass.com/collabnix

Ajeet Raina Docker Captain, ARM Innovator & Docker Bangalore Community Leader.

Leave a Reply

Your email address will not be published. Required fields are marked *

© Copyright Collabnix Inc

Built for Collabnix Community, by Community