#!/bin/sh # apk add blkid parted dosfstools e2fsprogs wget tar set -eu : "${DISK:=m1-install.img}" : "${DISKSIZE:=528M}" readonly SCRIPT="${0##*/}" readonly TMPDIR="$(mktemp -dt "${SCRIPT%.*}".XXXXXX)" readonly APK_KEY="alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub" readonly MIRROR="http://dl-cdn.alpinelinux.org/alpine" readonly LOOPDEV="$(losetup --find)" readonly BOOTDEV="$LOOPDEV"p4 readonly ROOTDEV="$LOOPDEV"p5 cleanup() { set +e mountpoint -q "$TMPDIR"/boot/efi && umount "$TMPDIR"/boot/efi mountpoint -q "$TMPDIR" && umount "$TMPDIR" losetup --detach-all rm -rf "$TMPDIR" } trap cleanup EXIT INT rm -f $DISK truncate -s $DISKSIZE $DISK echo "Paritioning disk" sgdisk --clear \ --set-alignment=2 \ --new=4::+128MiB: --change-name=4:ESP --typecode=4:EF00 \ --new 5::+300MiB: -c 5:root \ "${DISK}" echo "Creating dirs and mounting" losetup -P "$LOOPDEV" "$DISK" mkfs.fat -F 32 -n ESP "$BOOTDEV" mkfs.ext4 -b 4096 -qL root "$ROOTDEV" mount -t ext4 "$ROOTDEV" "$TMPDIR" mkdir -p "$TMPDIR"/boot mkdir -p "$TMPDIR"/boot/efi "$TMPDIR"/etc/apk/keys mount -t vfat "$BOOTDEV" "$TMPDIR"/boot/efi mkdir -p "$TMPDIR"/boot/efi/m1n1 echo "Setup apk keys and repositories" wget -qP "$TMPDIR"/etc/apk/keys https://alpinelinux.org/keys/"$APK_KEY" printf "$MIRROR/edge/%s\n" main community testing > "$TMPDIR"/etc/apk/repositories echo "installing base packages" apk --allow-untrusted --root "$TMPDIR" --arch aarch64 --initdb add \ alpine-base alpine-baselayout alpine-conf kmod openrc \ dbus util-linux blkid chrony \ sysfsutils ssl_client ca-certificates-bundle alpine-keys \ ethtool e2fsprogs e2fsprogs-extra eudev sgdisk \ iwd linux-firmware-none \ nvme-cli agetty terminus-font openresolv tar wget btrfs-progs f2fs-tools \ m1n1 u-boot-asahi mkinitfs \ efibootmgr font-dejavu \ speakersafetyd asahi-fwextract apk --allow-untrusted --root "$TMPDIR" --arch aarch64 --no-script add grub-efi grub-mkfont apk --allow-untrusted --root "$TMPDIR" --arch aarch64 --no-script add linux-asahi echo "Setting up services and inittab" for rc in boot/bootmisc boot/hostname boot/modules boot/sysctl boot/urandom boot/networking \ sysinit/devfs sysinit/hwdrivers sysinit/modules \ sysinit/udev sysinit/udev-settle sysinit/udev-trigger \ shutdown/mount-ro shutdown/killprocs \ default/dbus default/udev-postmount default/chronyd default/local default/speakersafetyd; do ln -s /etc/init.d/"${rc##*/}" "$TMPDIR"/etc/runlevels/"$rc" done echo "preparing scripts for setup" echo 'blacklist brcmfmac' >> $TMPDIR/etc/modprobe.d/blacklist-brcmfmac.conf cat > "$TMPDIR"/root/grub-setup.sh< /boot/grub/grub.cfg exit EOF cat > "$TMPDIR"/etc/default/grub<