diff --git a/.github/workflows/test-archlinux.yml b/.github/workflows/test-archlinux.yml new file mode 100644 index 0000000..c266621 --- /dev/null +++ b/.github/workflows/test-archlinux.yml @@ -0,0 +1,64 @@ +name: Test ArchLinux +on: + push: + branches: + - 'main' + - 'releases/**' + pull_request: + workflow_dispatch: + +jobs: + # ArchLinux does not come with an image combining root and boot partitions + # This shows how to proceed and could be combined with cache. + test_archlinux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Prepare ArchLinux image + run: | + # https://archlinuxarm.org/platforms/armv7/broadcom/raspberry-pi-2 + dd if=/dev/zero of=$RUNNER_TEMP/archlinux.img bs=1M count=1280 + # 2. At the fdisk prompt, delete old partitions and create a new one: + # using the sed comment trick of https://superuser.com/a/984637 + sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk $RUNNER_TEMP/archlinux.img + o # clear the in memory partition table + n # new partition + p # primary partition + 1 # partition number 1 + # default - start at beginning of disk + +200M # 200 MB boot parttion + t # type + c # W95 FAT32 (LBA) + n # new partition + p # primary partition + 2 # partion number 2 + # default, start immediately after preceding partition + # default, extend partition to end of disk + w # write the partition table + q # and we're done + EOF + # create loopdev + loopdev=$(losetup --find --show --partscan $RUNNER_TEMP/archlinux.img) + # 3. Create and mount the FAT filesystem: + mkfs.vfat ${loopdev}p1 + mkdir boot + mount${loopdev}p1 boot + # 4. Create and mount the ext4 filesystem: + mkfs.ext4 ${loopdev}p2 + mkdir root + mount ${loopdev}p2 root + # 5. Download and extract the root filesystem (as root, not via sudo): + wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz + bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C root + sync + # 6. Move boot files to the first partition: + mv root/boot/* boot + # 7. Unmount the two partitions: + umount boot root + - uses: ./ # pguyot/arm-runner-action@HEAD + with: + base_image: file://$RUNNER_TEMP/archlinux.img + commands: | + # 10. Initialize the pacman keyring and populate the Arch Linux ARM package signing keys: + pacman-key --init + pacman-key --populate archlinuxarm