Posted on

How to Install Ubuntu Arm Server on the Raspberry Pi Compute Module 3

A few weeks ago, the Ubuntu team released a pre-built 64-bit Ubuntu Arm Server Raspberry Pi image that can be downloaded and flashed to an SD Card, that is compatible with both the Raspberry Pi 3B and Raspberry Pi 3B+ single board computers. As we documented in our original article detailing the new Ubuntu build, in the past you needed to build a kernel, create a root filesystem, and then install the necessary firmware and drivers. But now with this new ready-made image, there is no longer a need for any of those difficult and time consuming tasks. While the image was intended to be run on standard Raspberry Pi 3B and 3B+ hardware, with some small modifications it can be installed and run on the Raspberry Pi Compute Module 3 as well.

First and foremost, you will need to start with the new 64-bit Raspberry Pi 3 Ubuntu Arm Server image, which can be downloaded here: http://cdimage.ubuntu.com/releases/18.04/beta/

Once downloaded, you will need to unzip / extract the image file from the compressed archive file.

Next, using a Raspberry Pi Compute Module IO Board or Waveshare Compute Module IO Board Plus, you will need to flash the image file to the Compute Module 3’s onboard eMMC. Instructions for that process can be found here: https://www.raspberrypi.org/documentation/hardware/computemodule/cm-emmc-flashing.md

After the flash process is complete, there should be 2 partitions on the eMMC, ‘boot’ and ‘system’. Mount the ‘boot’ partition of the eMMC so that you can view and edit the files on it.

The first change to be made is to the ‘config.txt’ file. Open it up and change the kernel line, add an initramfs, add an arm_control line, and comment out the device tree address as such:

kernel=vmlinuz
initramfs initrd.img followkernel
arm_control=0x200
#device_tree_address=0x02000000

Save and exit.

While the partition is still mounted, you need to add an additional file to the top level directory of the partition as well. In this ‘boot’ partition, you will notice there are .dtb files for the Raspberry Pi 3B. But since we are adapting this Ubuntu image for the Compute Module 3, we need to add the CM3’s .dtb file here as well. A copy of the Compute Module 3’s .dtb can be extracted from a stock Raspbian image, but for convenience a copy can be downloaded from the Raspberry Pi GitHub here: https://github.com/raspberrypi/firmware/blob/master/boot/bcm2710-rpi-cm3.dtb

Simply download it, then copy it to the mounted ‘boot’ partition.

At this point, all necessary changes are complete, and it’s time to boot up and check our work! Unmount the ‘boot’ partition, power down the Compute Module, and then change the IO Board to standard boot mode via it’s jumper setting. Reapply power, and the boot process should begin! The first boot takes a few minutes, as cloud-init runs a series of one-time setup processes to resize the rootFS, setup networking, generate SSH keys, create a container environment, and other tasks. But, after a few minutes you should be able to login to your new 64-bit Ubuntu Arm Server for Raspberry Pi Compute Module with a default username and password of ‘ubuntu’ via SSH or a console!

Posted on

64-bit Ubuntu Raspberry Pi 3 Arm Server Image Now Available

This morning there is some great news for fans of the popular Raspberry Pi 3 single board computer, looking to run 64-bit Ubuntu Arm Server on their board!

 

The Ubuntu team, with support from Arm, has released a ready-made image that can be written to an SD Card and directly booted on a Raspberry Pi 3B or 3B+, with no configuration necessary.  We were able to give this image a test, and although it is technically considered a beta, it seems most everything is working and all of the standard functionality one would expect from Ubuntu Server intact!

 

You can download the image here:  http://cdimage.ubuntu.com/releases/18.04/beta/

How to Install Ubuntu on the Raspberry Pi 3

Once the image is downloaded, it needs to be extracted, and can then be written to an SD Card.  Of course, the higher the read and write speed of the SD Card, the better overall system performance will be.

 

After getting the image written and inserted in to the Pi, take note that the first boot may take a few minutes while the OS goes through a few setup routines.

 

A quick run through the system showed the basic console hardware requirements of HDMI, USB, and Ethernet all worked out of the box, as well as WiFi.  SSH is enabled and working, and normal software installation and updating via ‘apt’ package management is working great.  As an added bonus, the image comes with ‘cloud-init’ setup to automatically expand the partition on the SD Card to the maximum capacity of the card, generate SSH keys, configure networking for the LXD container runtime (which is also preinstalled), and finally force a password change upon first login to the system.

 

All said, this means the Ubuntu Arm Server image is ready to use immediately upon writing the SD Card and booting the Pi!

 

In the past, it was technically possible to bootstrap a system using a custom built kernel and an Ubuntu rootfs, then add Pi-specific firmware and drivers.  After that you had to add users, manually install networking, and add even basic system utilities.  That process required in-depth knowledge of system installation and configuration, and was not something most users could tackle on their own.  However, thanks to the efforts of the Ubuntu Arm team in creating this new ready-made image, no advanced knowledge of the Linux build process is required, and even casual Raspberry Pi users can be up and running easily!

 

One final thing to keep in mind, is that this image is fully intended to be a 64-bit Ubuntu Arm Server platform!  Use cases such as File or Print servers, DNS, MySQL or other database servers, web front-end caching, or other lightweight services all make sense for this platform.  It can also be used for installation and testing of Aarch64 software, developing and compiling Arm64 applications, exploring containers, or even production workloads where possible!  Small, distributed compute workloads, IoT services, Industrial Internet of Things, environmental monitoring, remote compute capacity in non-traditional settings, or many other uses cases are all possible.  While a desktop *can* be installed, due to the limited memory on the Raspberry Pi, only a lightweight desktop like LXDE or XFCE will truly work, with both Mate and Gnome quickly running out of memory, moving to Swap, and then slowing the system to a crawl.   Even so, desktop performance in this image is not optimized, so sticking with the intended use of this image as a Server OS makes the most sense.

 

In summary, thanks to a collaborative effort from Arm and the Ubuntu teams, the community now has a ready-made Raspberry Pi 3B(+) 64-bit Ubuntu Arm Server image!
Posted on

Prototype Raspberry Pi Cluster Board

The first samples of the miniNodes Raspberry Pi Cluster Board have arrived, and testing can now begin!

Thanks to the very gracious Arm Innovator Program, miniNodes was able to design and build this board with the help of Gumstix!  The design includes 5 Raspberry Pi Compute Module slots, an integrated Ethernet Switch, and power delivered to each node via the PCB.  All that is required are the Raspberry Pi CoM’s, and a single power supply to run the whole cluster.

We are in the process of validating the hardware, and ensuring proper functionality, but hope to launch the board soon!

mininodes-raspberry-pi-cluster-board

Posted on

miniNodes ARM Innovators Program Interview

The full Arm Innovators Program interview is now posted, and we are proud to be highlighted by Arm for our innovations in the Arm Server ecosystem!

As you can see, we are currently prototyping a Raspberry Pi Cluster PCB that will hold 5 Raspberry Pi Computer on Module (CoM) boards, with a power input and ethernet switch built in.

This Raspberry Pi Cluster Board will allow the Docker, Kubernetes, OpenFasS, Minio, and other cluster projects to easily develop, test, and build their software in a cheap and convenient way, with no cabling mess.  Home automation, IoT, and hardware hacking are other potential uses for the board.

We’re still a few weeks away from launching, but keep watching this space as we will be sure to make an announcement as soon as it is ready!

mininodes-arm-innovator

Posted on

ARM Server Update, Spring 2017

As always, much has changed in the ARM Server world since our last post!  Here are the highlights of what’s going on in the Linux on ARM Server community:

First and foremost, a huge announcement from Microsoft came at the 2017 Open Compute Project (OCP) U.S. Summit last month.  Microsoft stated they can utilize ARM Servers to power over 50% of their Cloud Workload, and demonstrated two designs, one based on the Cavium ThunderX2, and one based on the Qualcomm Centriq 2400.  They even showed an internal build of Windows Server running on the Qualcomm.

Next, 96Boards showed off all the latest projects and boards they have been working on at Linaro Connect, from IoT to the powerful Qualcomm Snapdragon 820 SBC.

Finally, on the Raspberry Pi front, a new Raspberry Pi Zero was released with WiFi built-in.  This will allow the Raspberry Pi Zero to be more easily adapted to IoT applications, without the need for a USB Wi-Fi adapter or USB ethernet adapter that was previously required.  This simpler solution addresses one of the biggest complaints about the Pi Zero.

 

 

Posted on

ARM Server Linux Update, June 2016

As usual, a lot has changed in just a short time since our last update.  Here are some of the highlights from industry news.

First and foremost, the RaspberryPi 3 has continued to be the most popular ARM single board computer.  It now includes WiFi and Bluetooth, and the official Raspbian operating system has been upgraded to include support for the new features.  While it has a 64-bit processor, for the time being it still uses a 32-bit operating system.

Just a few days ago, we got some detail on the Cavium ThunderX2 processor that is forthcoming.  This is an enterprise-grade processor that will have 54 cores and support up to 100gb of ethernet bandwidth.  It will deliver 2x to 3x the performance of the current ThunderX processor, and should be able to compete head-to-head with Xeon’s in many workloads.

Finally, the Pine64 has been shipping in volume now, with most Kickstarter backers having received their boards.  The Pine64 is based on a 64-bit Allwinner A64 processor, which is not the most powerful around, but it sets a new low-price for 64-bit ARM hardware.  At just $15 for the entry level Pine64, the price of 64-bit ARM hardware has dropped from $3,000 to $15 in the course of about 1 year.  Talk about rapid innovation!

Posted on

Hosted Raspberry Pi 3 Servers Now Available!

miniNodes.com is proud to be the first cloud hosting provider to offer the new Raspberry Pi 3 as a hosted server.  The Raspberry Pi 3 combines a powerful new Broadcom quad-core 64-bit ARM processor, 1gb of RAM, and the reliable Raspbian Stretch linux operating system.  This makes the Raspberry Pi 3 a great platform for a small ARM server that offers plenty of compute capacity for basic services such as hosting a website or email, API hosting and development, lightweight development frameworks such as NodeJS application hosting, Internet of Things gateways and communication servers, IoT endpoints, Azure Edge container hosts, and more.  The Raspberry Pi 3 server is also a great way to experiment with ARM servers in the cloud, and ensure code compatibility with other more powerful ARM servers that are forthcoming.  Each hosted Raspberry Pi 3 server comes with SSH access and a dedicated IP address, making deployments to the server easy and familiar to developers.

Check them out here:  https://www.mininodes.com/product/raspberry-pi-3-server/

Posted on

How-to: Install Varnish and Nginx on Arm Servers

With the release of the Raspberry Pi 3 Model B, we read that Mythic Beasts was hosting a portion of the traffic going to the RaspberryPi.org site on an actual Pi 3! Pretty neat! We took a closer look and realized there wasn’t too much magic going on here, so we decided to write a quick how-to on setting up Varnish to cache content and speed up rendering and delivery of dynamic web pages. Since our little Arm servers are (obviously) not the most powerful platforms around, this can dramatically increase the performance and responsiveness of web servers running on Arm.

This guide will detail how to setup Varnish and Nginx on a Debian 8 “Jessie” Server running on Arm.

First and foremost, we need to perform the actual installation of the software, then we can configure it. We simply run:

sudo apt-get install nginx varnish.

Now, we need to make some changes to setup the environment properly.

The first file we need to take a look at is the Nginx configuration file which should be located at /etc/nginx/sites-available/default

Specifically, we need to move Nginx off of port 80 so that Varnish will be able to take over port 80 traffic. For this example, we will place Nginx on port 8080 instead, so, we update the file to reflect the following:

server
listen 8080; {
root /usr/share/nginx/html;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name localhost.localdomain;

(We are not using a fully qualified hostname in this example, so later on we will go update our hosts file to reflect this.)

Next, we can configure Varnish to go look for Nginx on port 8080, by editing the Varnish config file located at /usr/local/etc/varnish/default.vcl and editing the ‘backend’ section. Here is a simple example: (Note – This one has some common WordPress login pages excluded from being cached)

vcl 4.0;
# Based on: https://github.com/mattiasgeniar/varnish-4.0-configuration-templates/blob/master/default.vcl

import std;
import directors;

backend default {
.host = “127.0.0.1”;
.port = “8080”;
}

sub vcl_recv {
# Do not cache following pages (edit as needed for your configuration).
if (!( req.url ~ “wp-(login|admin|comments-post)” )) {
return (pass);
}

# Drop the cookies for everything else
unset req.http.cookie;

# Try a cache-lookup
return (hash);
}

sub vcl_backend_response {
# Below will cache the page for one week.(1s = 1 sec, 1d = 1 day)
set beresp.ttl = 1w;
}

Once Varnish knows where to look for Nginx, we can now set Varnish to take over port 80 that we previously freed up. To do this, we need to modify the Varnish start file, which in this case is located at /etc/systemd/system/varnish.service because we are using Debian. If you are on another distro, this location may vary. We need to change the ‘-a’ flag from -a :6081 to -a :80, then save and close the file.

The last change we need to make is to our hosts file, to ensure that the local network is interpreted correctly. We need to edit the /etc/hosts file, and add a line that translates 127.0.0.1 to localhost and localhost.localdomain:

127.0.0.1 localhost localhost.localdomain

At this point, we could technically restart the Nginx and Varnish services to read in these changes, but a reboot is probably a good idea as well if you can afford it.

Once the server comes back up, you should now have Varnish running on port 80 caching content from your Nginx web server. One way to test this is to go to http://www.isvarnishworking.com, and put in your IP address (keep in mind, you need a public facing IP for this). If everything is working, you should see a message like this:

varnish-nginx-on-arm-server

Additionally, you can run ‘sudo varnishstat’ to see a detailed breakdown of how much caching is being done by Varnish.

So, thanks go to Raspberry Pi for inspiring us to attempt to duplicate their work. Hopefully this helps you install Varnish and Nginx on Arm, and speed up web page rendering on your Pi’s or other small Arm-based devices!

Posted on

HOW-TO: Install Minecraft Server on the Raspberry Pi Server or Ubuntu 18.04 Arm Server

Minecraft is one of the most popular games played online, and installing your own Minecraft Server on Arm is easy! These instructions will allow you to install Minecraft Server on our Raspberry Pi, Raspberry Pi 3, or on our Ubuntu 18.04 Arm Server.

First, we need to connect to our node via SSH.

Once logged in, lets make sure we keep our downloads in our home directory for ease of use:

cd /home

Once in the home directory, we are first going to download and set up Java.

We do that by running:

sudo wget --no-check-certificate http://www.java.net/download/jdk8/archive/b111/binaries/jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz

After Java has finished downloading, we need to extract it:

sudo tar zxvf jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz -C /opt/

If the download and extract were successful, we will test to make sure Java is working by:

sudo /opt/jdk1.8.0/bin/java -version

We should see this, confirming Java is now ready:

java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b111)
Java HotSpot(TM) Client VM (build 25.0-b53, mixed mode)

Finally, let’s remove the downloaded gzip to save a bit of disk space:

sudo rm jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz

Now, it is time to download Minecraft Server!

wget https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar

Once it has finished downloading, we can launch it by running:

sudo /opt/jdk1.8.0/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar

The Raspberry Pi only has 512mb of RAM, so it will not actually allocate 1024…but it will take approximately 400mb or so that is available to it.  The Raspbery Pi 3 and our Ubuntu 18.04 LTS Arm Server both have 1gb of RAM, which definitely helps increase performance of the Arm Minecraft Server.  Of course, the Operating System does take up some of the available memory, but Minecraft Server will probably reserve about 750mb to 800mb of memory to run.  This is plenty.

At this point, Minecraft Server will go through it’s startup routine, and you will be able to join the newly created world by pointing your game to the IP Address of your node (you can also modify game variables by editing the server.properties file, located in your /home directory.)

Posted on

Hosted Raspberry Pi Servers Now Available on miniNodes.com

miniNodes is proud to announce it is the first provider in North America to offer hosted Raspberry Pi servers.  Although they are small in size, Raspberry Pi Model B+ servers are able to perform many of the same functions and roles larger servers typically fulfill.  Raspberry Pi servers can host websites, email, databases, and DNS, can be used for learning programming languages like Python, Ruby, NodeJS, Bash scripting, and Linux administration, and can even be used as Minecraft servers.

Our hosted Raspberry Pi servers come in either 16gb or 32gb sizes, combined of course with the Pi’s ARM Cortex processor and 512mb of RAM.  Each node has a static IP Address, and SSH access.

For more details or to order, see https://www.mininodes.com/product/raspberry-pi-mininode/