Skip to content

Instantly share code, notes, and snippets.

Forked from zengxinhui/
Last active October 21, 2022 21:03
What would you like to do?
Replace Oracle Cloud Linux with Arch Linux ARM remotely



Requirement: Console access.

In Oracle Linux 8.0

wget -qO- | dd bs=1M of=/dev/sda
sync && reboot --force

In Alpine w/ Console access:

Bring up networking

echo -e 'auto eth0\niface eth0 inet dhcp' | tee /etc/network/interfaces
ifup eth0
setup-sshd && mkdir ~/.ssh && vi ~/.ssh/authorized_keys

Per Ref #3

mkdir /media/setup && cp -a /media/sda/* /media/setup
mkdir /lib/setup && cp -a /.modloop/* /lib/setup
/etc/init.d/modloop stop
umount /dev/sda
mv /media/setup/* /media/sda/ && mv /lib/setup/* /.modloop/

Setup apk and bring in pacman

sed -i -e 's:^#\(.*v3.13/community\):\1:' /etc/apk/repositories
apk update && apk add dosfstools e2fsprogs libarchive-tools pacman arch-install-scripts

Disk partitioning & mounting

fdisk /dev/sda #(use gpt table, set esp partition 15 size 512M), set root partition 1 size remaining)
mkfs.ext4 /dev/sda1 && mount /dev/sda1 /mnt
mkfs.vfat /dev/sda15 && mkdir -p /mnt/boot && mount /dev/sda15 /mnt/boot
wget -qO- | bsdtar -xpf - -C /mnt
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt/
pacman-key --init && pacman-key --populate archlinuxarm

EFI boot

pacman -Syu grub efibootmgr
grub-install --efi-directory=/boot --bootloader-id=GRUB

GRUB config

grub-mkconfig -o /boot/grub/grub.cfg

Secure SSH and setup alarm user

sed -i -e 's:^#\(PasswordAuthentication\)\s\+yes:\1 no:' /etc/ssh/sshd_config
su alarm -c 'mkdir -p ~/.ssh && vi ~/.ssh/authorized_keys'

At this point you should be able to issue 'reboot' and use ssh keyless login to remote into new alarm system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment