Releases: startergo/EndeavourOS-ISO-arm64
v2026.02.24-c687f2f
Since EndeavourOS Live ISO now uses KDE, it's too big to fit into GitHub release, so we are using other means of distribution.
Just run:
curl -fsSL https://github.com/startergo/EndeavourOS-ISO-arm64/releases/download/v2026.02.24-c687f2f/helper.sh | bash
in your terminal.
Full Changelog: v2026.02.24-9fcdd0b...v2026.02.24-c687f2f
To install the EndeavourOS from the Live ISO:
cat > install-eos.sh << 'EOF'
#!/bin/bash
#
# EndeavourOS ARM64 one-step installer
# Run from the live ISO as: sudo bash install-eos.sh
#
# Installs to /dev/vda with:
# /dev/vda1 — 512M EFI (mounted at /boot)
# /dev/vda2 — root (ext4)
#
# Edit the variables below before running.
# -------------------------------------------------------
DISK="/dev/vda"
HOSTNAME="endeavouros-vm"
TIMEZONE="America/New_York"
LOCALE="en_US.UTF-8"
USERNAME="user"
ROOT_PASSWORD="root"
USER_PASSWORD="user"
PACKAGES_URL="https://raw.githubusercontent.com/startergo/EndeavourOS-ISO-arm64/main/packages.aarch64"
# KDE Plasma X11 — minimal working base
DE_PACKAGES="xorg-server xf86-video-fbdev xf86-input-libinput \
plasma-desktop plasma-workspace kwin-x11 \
plasma-nm plasma-pa kscreen \
sddm sddm-kcm breeze breeze-gtk kwallet-pam \
konsole dolphin firefox \
xdg-desktop-portal-kde xdg-user-dirs kde-cli-tools"
# -------------------------------------------------------
set -e
EFI_PART="${DISK}1"
ROOT_PART="${DISK}2"
echo ""
echo "==> EndeavourOS ARM64 Installer"
echo " Disk : $DISK"
echo " User : $USERNAME"
echo ""
read -rp "This will ERASE $DISK. Continue? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 1; }
# -------------------------------------------------------
echo ""
echo "==> Fixing keyring..."
pacman-key --init
pacman-key --populate archlinuxarm archlinux endeavouros
pacman -Sy --noconfirm archlinux-keyring archlinuxarm-keyring endeavouros-keyring 2>/dev/null || true
# -------------------------------------------------------
echo ""
echo "==> Fetching full package list..."
curl -fsSL "$PACKAGES_URL" -o /tmp/packages.aarch64
# -------------------------------------------------------
echo ""
echo "==> Partitioning $DISK..."
parted -s "$DISK" \
mklabel gpt \
mkpart ESP fat32 1MiB 513MiB \
set 1 esp on \
mkpart root ext4 513MiB 100%
echo "==> Formatting..."
mkfs.fat -F32 "$EFI_PART"
mkfs.ext4 -F "$ROOT_PART"
echo "==> Mounting..."
mount "$ROOT_PART" /mnt
mkdir -p /mnt/boot
mount "$EFI_PART" /mnt/boot
# Set machine-id before pacstrap so kernel-install hooks work correctly
systemd-machine-id-setup --root=/mnt
# -------------------------------------------------------
echo ""
echo "==> Running pacstrap with minimal working base..."
pacstrap /mnt \
base base-devel \
linux-eos-arm linux-eos-arm-headers linux-firmware \
networkmanager efibootmgr \
sudo nano git curl wget \
pipewire pipewire-pulse pipewire-alsa wireplumber \
spice-vdagent qemu-guest-agent \
$DE_PACKAGES
# -------------------------------------------------------
echo ""
echo "==> Generating fstab..."
genfstab -U /mnt | tee /mnt/etc/fstab
# -------------------------------------------------------
echo ""
echo "==> Detecting kernel and initramfs..."
KERNEL=$(find /mnt/boot -maxdepth 3 \( -name "Image" -o -name "vmlinuz*" \) 2>/dev/null | grep -v ".efi" | head -1)
INITRD=$(find /mnt/boot -maxdepth 3 \( -name "initramfs*.img" -o -name "initrd*" \) 2>/dev/null | grep -v "fallback" | head -1)
if [ -z "$KERNEL" ]; then
echo "ERROR: Kernel not found. /mnt/boot contents:"
find /mnt/boot -maxdepth 4 | head -40
exit 1
fi
echo " Kernel : $KERNEL"
echo " Initrd : $INITRD"
KERNEL_REL="${KERNEL#/mnt/boot}"
INITRD_REL="${INITRD#/mnt/boot}"
ROOT_UUID=$(blkid -s UUID -o value "$ROOT_PART")
# Copy full package list into new root for chroot install
cp /tmp/packages.aarch64 /mnt/tmp/packages.aarch64
# Copy EndeavourOS KDE config from live ISO liveuser into installed system
echo ""
echo "==> Copying EndeavourOS KDE config from live ISO..."
cp -a /etc/skel/. /mnt/etc/skel/
# Copy liveuser KDE config — this is the actual theming/plasma config
mkdir -p /mnt/home/${USERNAME}/.config
mkdir -p /mnt/home/${USERNAME}/.local
cp -a /home/liveuser/.config/. /mnt/home/${USERNAME}/.config/ 2>/dev/null || true
cp -a /home/liveuser/.local/. /mnt/home/${USERNAME}/.local/ 2>/dev/null || true
cp -a /home/liveuser/.gtkrc-2.0 /mnt/home/${USERNAME}/ 2>/dev/null || true
# -------------------------------------------------------
echo ""
echo "==> Writing chroot script..."
cat > /mnt/chroot-install.sh << CHROOT_SCRIPT
#!/bin/bash
set -e
# Timezone
ln -sf /usr/share/zoneinfo/TIMEZONE_PLACEHOLDER /etc/localtime
hwclock --systohc
# Locale
echo "LOCALE_PLACEHOLDER UTF-8" >> /etc/locale.gen
locale-gen
echo "LANG=LOCALE_PLACEHOLDER" > /etc/locale.conf
# Hostname
echo "HOSTNAME_PLACEHOLDER" > /etc/hostname
printf '127.0.0.1\tlocalhost\n::1\tlocalhost\n127.0.1.1\tHOSTNAME_PLACEHOLDER.localdomain HOSTNAME_PLACEHOLDER\n' > /etc/hosts
# Root password
printf 'ROOT_PASSWORD_PLACEHOLDER\nROOT_PASSWORD_PLACEHOLDER\n' | passwd root
# User
groupadd -f nopasswdlogin
useradd -mG wheel,audio,video,storage,network,nopasswdlogin "USERNAME_PLACEHOLDER"
printf 'USER_PASSWORD_PLACEHOLDER\nUSER_PASSWORD_PLACEHOLDER\n' | passwd "USERNAME_PLACEHOLDER"
# Fix ownership of KDE config copied from live ISO
chown -R USERNAME_PLACEHOLDER:USERNAME_PLACEHOLDER /home/USERNAME_PLACEHOLDER/
# Sudoers
sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
# SDDM — force X11, autologin
mkdir -p /etc/sddm.conf.d
cat > /etc/sddm.conf.d/kde.conf << SDDM
[General]
DisplayServer=X11
[Autologin]
User=USERNAME_PLACEHOLDER
Session=plasma
Relogin=false
SDDM
# Getty autologin on tty1 — same mechanism as live ISO
mkdir -p /etc/systemd/system/getty@tty1.service.d
cat > /etc/systemd/system/getty@tty1.service.d/autologin.conf << GETTY
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin USERNAME_PLACEHOLDER - \$TERM
GETTY
# Services
systemctl enable NetworkManager
systemctl enable sddm
systemctl enable qemu-guest-agent
systemctl set-default graphical.target
[[ -f /usr/lib/systemd/system/spice-vdagentd.service ]] && systemctl enable spice-vdagentd
# Install full package list on top of working base
echo "==> Installing full package list..."
pacman -Sy --noconfirm --needed \$(grep -v '^#' /tmp/packages.aarch64 | grep -v '^\$' | \
grep -v 'mkinitcpio-archiso' | grep -v 'clonezilla' | tr '\n' ' ') || true
# systemd-boot
bootctl install --esp-path=/boot
cat > /boot/loader/loader.conf << LOADER
default endeavouros.conf
timeout 3
console-mode max
editor no
LOADER
mkdir -p /boot/loader/entries
cat > /boot/loader/entries/endeavouros.conf << ENTRY
title EndeavourOS
linux KERNEL_REL_PLACEHOLDER
initrd INITRD_REL_PLACEHOLDER
options root=UUID=ROOT_UUID_PLACEHOLDER rw quiet
ENTRY
echo "==> Boot entry written:"
cat /boot/loader/entries/endeavouros.conf
echo "==> Chroot done."
CHROOT_SCRIPT
# Substitute placeholders
sed -i "s|TIMEZONE_PLACEHOLDER|${TIMEZONE}|g" /mnt/chroot-install.sh
sed -i "s|LOCALE_PLACEHOLDER|${LOCALE}|g" /mnt/chroot-install.sh
sed -i "s|HOSTNAME_PLACEHOLDER|${HOSTNAME}|g" /mnt/chroot-install.sh
sed -i "s|ROOT_PASSWORD_PLACEHOLDER|${ROOT_PASSWORD}|g" /mnt/chroot-install.sh
sed -i "s|USERNAME_PLACEHOLDER|${USERNAME}|g" /mnt/chroot-install.sh
sed -i "s|USER_PASSWORD_PLACEHOLDER|${USER_PASSWORD}|g" /mnt/chroot-install.sh
sed -i "s|ROOT_UUID_PLACEHOLDER|${ROOT_UUID}|g" /mnt/chroot-install.sh
sed -i "s|KERNEL_REL_PLACEHOLDER|${KERNEL_REL}|g" /mnt/chroot-install.sh
sed -i "s|INITRD_REL_PLACEHOLDER|${INITRD_REL}|g" /mnt/chroot-install.sh
chmod +x /mnt/chroot-install.sh
# -------------------------------------------------------
echo "==> Running chroot configuration..."
arch-chroot /mnt /bin/bash /chroot-install.sh
rm /mnt/chroot-install.sh
# -------------------------------------------------------
echo ""
echo "==> Unmounting..."
umount -R /mnt
echo ""
echo "================================================"
echo " Installation complete!"
echo " Username : $USERNAME / Password : $USER_PASSWORD"
echo " Root : root / Password : $ROOT_PASSWORD"
echo ""
echo " In the QEMU monitor type: eject icd0"
echo " Then: system_reset"
echo "================================================"
EOF
And then run:
sudo bash install-eos.sh
v2026.02.24-b541eed
Since EndeavourOS Live ISO now uses KDE, it's too big to fit into GitHub release, so we are using other means of distribution.
Just run:
curl -fsSL https://github.com/startergo/EndeavourOS-ISO-arm64/releases/download/v2026.02.24-b541eed/helper.sh | bash
in your terminal.
Full Changelog: v2026.02.24-ac5e0e1...v2026.02.24-b541eed
v2026.02.24-ac5e0e1
Since EndeavourOS Live ISO now uses KDE, it's too big to fit into GitHub release, so we are using other means of distribution.
Just run:
curl -fsSL https://github.com/startergo/EndeavourOS-ISO-arm64/releases/download/v2026.02.24-ac5e0e1/helper.sh | bash
in your terminal.
Full Changelog: v2026.02.24-89fab0d...v2026.02.24-ac5e0e1
v2026.02.24-9fcdd0b
Since EndeavourOS Live ISO now uses KDE, it's too big to fit into GitHub release, so we are using other means of distribution.
Just run:
curl -fsSL https://github.com/startergo/EndeavourOS-ISO-arm64/releases/download/v2026.02.24-9fcdd0b/helper.sh | bash
in your terminal.
Full Changelog: v2026.02.24-b541eed...v2026.02.24-9fcdd0b
v2026.02.24-92e5cf8
Since EndeavourOS Live ISO now uses KDE, it's too big to fit into GitHub release, so we are using other means of distribution.
Just run:
curl -fsSL https://github.com/startergo/EndeavourOS-ISO-arm64/releases/download/v2026.02.24-92e5cf8/helper.sh | bash
in your terminal.
Full Changelog: v2026.02.22-b732dc9...v2026.02.24-92e5cf8
v2026.02.24-89fab0d
Since EndeavourOS Live ISO now uses KDE, it's too big to fit into GitHub release, so we are using other means of distribution.
Just run:
curl -fsSL https://github.com/startergo/EndeavourOS-ISO-arm64/releases/download/v2026.02.24-89fab0d/helper.sh | bash
in your terminal.
Full Changelog: v2026.02.24-92e5cf8...v2026.02.24-89fab0d
v2026.02.22-b732dc9
Since EndeavourOS Live ISO now uses KDE, it's too big to fit into GitHub release, so we are using other means of distribution.
Just run:
curl -fsSL https://github.com/startergo/EndeavourOS-ISO-arm64/releases/download/v2026.02.22-b732dc9/helper.sh | bash
in your terminal.
Full Changelog: v2026.02.20-ab188a9...v2026.02.22-b732dc9