Arch Linux ARM on Odroid U3


Arch Linux ARM

Arch Linux ARM is fully supported and stable on Odroid U3. Reasons why Arch Linux ARM can be a better choice on U3 board.

  • Hardkernel official images are past end of life and on outdated kernel.
  • Arch version provides latest kernel. As of this writing its on 5.0.5.1 version
  • Bleeding edge software packages and kernel. Can be a disadvantage also compared to more tested versions on other linux flavors
  • Light weight system
  • With latest kernel/docker U3 can run all armv7 32 bit docker images making it good for headless systems.

Why Odroid U3 in 2019?

Odroid U3 released in February 2016 was quite fast relative to all SBCs available at that time. It still outperforms the latest Raspberry Pi 3B+ available now.

Odroid U3 (2016) Raspberry Pi 3B+ (2018)
CPU 1.7 GHz Quad core 1.4 GHz Quad core
RAM 2 GB 1 GB
Ethernet 10 / 100 Gigabit (throttled by USB ~300 Mbps)
Wifi NA Dual band (2.4/5GHz)

So if you still have one lying around its a good choice for hard wired headless systems.

# Kernel version as of March 2019 and its already updated to just released 5.x version
$ uname -a

Linux alarmu31 5.0.5-1-ARCH #1 SMP PREEMPT Sat Mar 30 00:25:25 UTC 2019 armv7l GNU/Linux

Installation

Installation is pretty straight forward and is well documented in Arch Linux ARM site - https://archlinuxarm.org/platforms/armv7/samsung/odroid-u3.

I used host as Ubuntu 18.04 x86 machine to install. The only issue I faced was with bsdtar as Ubuntu still ships with an outdated bsdtar and the downloaded image needs a 3.x version. I ended up compiling bsdtar from source.

Installing sudo if not available

pacman -Syyu sudo

Keeping system up to date

Default package manager is pacman on Arch systems. For a full system and index update we can execute.

sudo pacman -Syu

Sample update screenshot

Odroid pacman system update

Install software

Below command will install nginx and nano after updating package repo

pacman -Syy nginx nano

For updating nginx

pacman -Syyu nginx

Fixing Pacman package verification corruption

If we have to re-verify pacman-key in case of corrupted key. This happened to me once, if so this command will come in handy.

pacman-key --populate archlinuxarm

Disabling root user

By default Arch has both “root” and “alarm” users active. Disable root password only after adding “alarm” or group “wheel” (alarm falls in this group) to /etc/sudoers file.

To disable root password,

passwd -l root

Assign static mac for u3 which was changing each reboot

U3 mac will change during each boot if not configured. To enable a preconfigured mac value we can update uboot. Make sure the mac doesn’t collide with any other mac address available in your network. For ease you can use any mac address online generators.

sudo su -

# Install uboot tools
pacman -Syuu uboot-tools

nano /boot/boot.txt

# uncomment and set the mac address to one generated above
./mkscr

reboot

Install ntp for time sync

sudo pacman -Syyu ntp

Install ufw

Its a good idea to install ufw firewall and secure your network traffic by allowing explicit traffic.

sudo pacman -Syy ufw

Sample ufw commands

if you have nfs file share enabled

sudo ufw allow from 192.168.1.0/24 to any port nfs

Allow ssh and rate limit

sudo ufw allow from 192.168.0.0/24 to any port 22

If you want ssh from any ip anywhere but with limit applied

sudo ufw limit SSH

Make sure to enable service on startup

sudo ufw enable
sudo ufw status
sudo systemctl start ufw.service
sudo systemctl enable ufw.service

Setting timezone

sudo timedatectl set-timezone America/Los_Angeles
timedatectl status

or create the link manually

ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime