ArchLinux for Arm as ESXi VM powered by Raspberry Pi

ArchLinux is not as easy to install as other Linux Distributions. Anyway “Arch” would be worth to install, when you require a small and efficient Systems without any Overload – seems like a perfect choice for an Raspberry Pi?

In general, we use Debian for Booting our VM and doing the necessary steps to Download and Install “Arch”. Thanks to GitHub User “rollwagen” – The Notes on Github were used to accomplish the ArchLinux installation.

Requirements

*Amazon Affiliate Link

Advertisements

Preparation

Login to your ESXi and navigate to “Storage>YourDatastore”. Click on “Datastore browser” and “Upload” to upload the Debian ISO to your Datastore – We recommend to create a separate Folder “ISOs” to upload the ISO.

VMware Datastore ISOs

Afterwards click on “Virtual Machines>Create / Register VM” to create the Ubuntu VM.

Enter your wanted name (i.e. same as future Guests Hostname) and

  • Compatibility: ESXi 7.0 virtual machine
  • Guest OS family: Linux
  • Guest OS version: Other 4.x or later Linux (64-bit)

At Page “Customize settings” configure Memory to at least 1GB and set “CD/DVD Drive 1” to “Datastore ISO file” pointing to the Debian ISO you uploaded before.

VMware Arch Linux on Arm

Installation

Click on your new VM and power it on from the top Menu. Use “Console>Open browser console” to start with the remote Installation.

From the Grub Menu, select “Advanced options…>Rescue mode”

  • Set your Language and Keyboard Layout, keep Hostname “debian” and leave Domain “empty”.
  • Set your Timezone

Click “Continue” on the Partitions Dialog and “Execute a shell in the installer environment”

Partitions

We’ll create 2 Partitions from the Rescue Shell:

  • /boot
  • / (root Partition)

Open the Partition Tool “fdisk” by typing

fdisk /dev/sda

Enter “g” to create a GPT Partition Table onto the Disk

Enter the following letters / values:

  • n – to create our Boot Partition
  • 1 – to make our Boot Partition the first Partition (sda1)
  • empty – Leave first sector empty to start from the first available Sector
  • +300M – to make our Boot Partition 300 MB

We need to change the Partition type of the Boot Partition to “EFI System” now. Press

  • t – to change Partition Type
  • 1 – to select the first Partition
  • 1 – to set Partition 1 to “EFI System”

Finally we create our “root” Partition. Enter into fdisk:

  • n – to create our root Partition
  • 2 – to make our root Partition the second Partition (sda2)
  • empty – Leave first sector empty to start from the first available Sector
  • empty – Leave second sector empty to allocate the rest of available Space for the root Partition

Enter “w” to write the Changes to Disk and to quit fdisk.

Format your new Partitions (mkfs.x) and mount these afterwards with the following commands:

mkfs.fat /dev/sda1
mkfs.ext4 /dev/sda2

mkdir /mnt/root
mount /dev/sda2 /mnt/root

mkdir /mnt/root/boot
mount /dev/sda1 /mnt/root/boot

Don’t worry about codepage errors

Go to the local Temp Directory and download the latest ArchLinux Installation Base. Please note – The Dowload Link File is Case-Sensitive (ArchLinuxARM-aarch64-latest.tar.gz)

cd /tmp
wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz

We extract the Installation Base now to the root Folder – It will place the Files into our Boot Partition (mount Point) automatically:

tar -xzf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/root

Get a Cup of Coffee – This may take a while.

Booting into your new System

Ready? – Ok we reboot now and boot once again from the Debian ISO.

reboot

At the Grub Debian Screen, press “c” to enter the grub Command Line

Enter the following Commands to boot from your Disk:

linux (hd0,gpt1)/Image.gz root=/dev/sda2
initrd (hd0,gpt1)/initramfs-linux.img
boot

Don’t worry about a lot of Error Messages while booting – they will be gone on our final reboot.

Login with Username “root” and Password “root”. The Filesystem is mounted as read-only. We need to change this with:

mount -o remount,rw /dev/sda2

Let’s setup the Packagemanager “Pacman” and update our Packages:

pacman-key --init
pacman-key --populate archlinuxarm
pacman -Syu

Boot Loader Setup

We’ll use Grub for booting Arch. First Install the ArchLinux Install-Scripts:

pacman -S arch-install-scripts

Mount the Boot Partition:

mount /dev/sda1 /boot

We’ll now generate our Fstab Table, which contains the essential Mount-Points

genfstab -U / >> /etc/fstab

If you did not Update your System with Pacman before, update the Kernel (select “linux-aarch-64–headers”) with:

pacman -S linux linux-headers

Install Grub by typing:

pacman -S grub efibootmgr
grub-install --target=arm64-efi --efi-directory=/boot --bootloader-id=GRUB --boot-directory=/boot

“grub-mkconfig” will look for “vmlinuz-linux” as Image name, so we’ll just copy the ARM File to the new Name and execute “grub-mkconfig”.

cd /boot
cp Image vmlinuz-linux
grub-mkconfig -o /boot/grub/grub.cfg

Shutdown the System and remove the Debian ISO now:

halt -p

Finalizing your Installation

Power on your VM and Bam! – Grub should appear and boot automatically in your Arch Linux installation.

Logon with Username “root” and Password “root”.

Edit /etc/locale.gen and uncomment “en_US.UTF-8 UFT-8” and optional your own Language.

nano -w /etc/locale.gen

Generate locales by typing:

local-gen

Write your LANG Variable at /etc/locale.conf (i.e.: LANG=en_US.UTF-8 )

nano -w /etc/locale.conf

Set your Keyboard Variable at /etc/vconsole.conf (i.e.: KEYMAP=de-latin1 )

nano -w /etc/vconsole.conf

Set your Hostname to /etc/hostname (i.e.: arch1 )

nano -w /etc/hostname

Reboot and check if everything is as expected (Hostname, Keyboard Layout)

reboot

Optional but highly recommended, change the root Password:

passwd

Congratulations! – You’ve got now a fully running, minimal ArchLinux System. Continue with the Arch Documentation to do the advanced Configuration and Install Software and Services as you like (Link to Documentation).