From 6769513b1c513f966c8f34e24c3b275ca5d254ec Mon Sep 17 00:00:00 2001 From: Paul Guyot Date: Wed, 29 May 2024 15:41:19 +0200 Subject: [PATCH] Add ArchLinux example Signed-off-by: Paul Guyot --- .github/workflows/test-archlinux.yml | 64 ++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/test-archlinux.yml diff --git a/.github/workflows/test-archlinux.yml b/.github/workflows/test-archlinux.yml new file mode 100644 index 0000000..e2faa7a --- /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=$(sudo losetup --find --show --partscan $RUNNER_TEMP/archlinux.img) + # 3. Create and mount the FAT filesystem: + sudo mkfs.vfat ${loopdev}p1 + mkdir boot + sudo mount ${loopdev}p1 boot + # 4. Create and mount the ext4 filesystem: + sudo mkfs.ext4 ${loopdev}p2 + mkdir root + sudo mount ${loopdev}p2 root + # 5. Download and extract the root filesystem: + wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz + sudo -u root bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C root + sync + # 6. Move boot files to the first partition: + sudo mv root/boot/* boot + # 7. Unmount the two partitions: + sudo 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