Install CentOS 7 on your favourite ARMv8 ARM64 AArch64 board

Uli Middelberg edited this page Jan 10, 2017 · 13 revisions

With the beginning of 2016 the first affordable ARM64 single board computers became available to the public. While playing with Ubuntu, Debian and Archlinux I was courious to know how much effort would it take to get CentOS 7 up and running on my ODROID-C2 and my Pine64. At the end if have automated this tasks, so you will be able to get your Docker enabled CentOS 7 within a couple of minutes.

This post is a second revision you may find the first one in the GH revision history of this wiki article.

Step 1: Download the CentOS 7 AArch64 userland tar archive

The Alternative Architecture Centos SIG already prepared a tar archive containing a CentOS 7 userland for ARM64 server boards:

curl -sSL -o CentOS-7-aarch64-rootfs-7.3.1611.tar.xz http://mirror.centos.org/altarch/7/isos/aarch64/CentOS-7-aarch64-rootfs-7.3.1611.tar.xz

Step 2: Prepare the target media with a formware-only disk image (SoC bootloader and Linux kernel image)

Most ARM single board computers are shipped with a vendor specific bootloader (mostly u-boot) and Linux kernel image. You may take an existing Debian/Ubuntu/Archlinux disk image and wipe out the root file system contents (but leaving the kernel image (/boot), the kernel modules (/lib/modules) and the firmware files (/lib/firmware) untouched).

Step 3: Copy the rootfs contents to your destination device

Now it is time to copy the CentOS rootfs contents to your target media

sudo tar --numeric-owner -xpJf .../CentOS-7-aarch64-rootfs-1606.tar.xz -C <rootfs> 

You need to modify the contents of <rootfs>/etc/fstab in order to reflect the UUID change for the root device (sudo blkid will tell you the right UUID), like:

UID=595a1820-11ff-4afb-94fe-53d14ae7fd49  /  ext4  defaults  0 0

Step 4: Reboot to CentOS 7 and have fun

After having rebooted into your CentOS 7 environment (the default password for root is 'centos'), you may perform some configuration changes, like:

sudo timedatectl set-timezone Europe/Berlin
sudo localectl set-locale LANG=en_GB.UTF-8
sudo hostnamectl set-hostname c2 --static
sudo hostnamectl set-hostname "ODROID-C2" --pretty

Automated setup procedure: z2d

I've prepared a github repository containing a collection of scripts helping you to set up Ubuntu Core 16.04 / Debian 8 Jessie and CentOS 7 (and Docker) for various ARM devices.

After cloning the repository you will find the scripts in the respective subdirectory, e.g. for the ODROID-C2, the set up is done on the ODROID-C2 via

$ git pull https://github.com/umiddelb/z2d
$ cd z2d/odroid-c2
$ vi centos-00.sh # adjust the target device
$ sh centos-00.sh
$ sh centos-01.sh
$ sudo init 6 # reboot into CentOS 7
# login with user centos
$ sudo bash
# cd /
# sh centos-03.sh

Note: For convenience reasons, this setup uses a precompiled kernel image, but you can of course compile your own kernel from source.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.