#!/bin/sh set -eu : "${DISK:=/dev/sdc}" readonly SCRIPT="${0##*/}" readonly TMPDIR="$(mktemp -dt "${SCRIPT%.*}".XXXXXX)" readonly BOOTDEV="$DISK"1 readonly ROOTDEV="$DISK"2 readonly APK_KEY="alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub" readonly MIRROR="http://dl-cdn.alpinelinux.org/alpine" cleanup() { set +e mountpoint -q "$TMPDIR"/boot && umount "$TMPDIR"/boot mountpoint -q "$TMPDIR" && umount "$TMPDIR" rm -rf "$TMPDIR" } trap cleanup EXIT INT model='j293' kernver='5.16.0-rc5-a5' kernel="linux-$kernver.tar.gz" if [ ! -f m1n1.macho ]; then wget https://dev.alpinelinux.org/~mps/m1/m1n1.macho fi if [ ! -f $kernel ]; then wget https://dev.alpinelinux.org/~mps/m1/"$kernel" fi echo "Paritioning disk" parted -s "$DISK" mktable gpt > /dev/null parted -s "$DISK" unit s -- mkpart primary ext4 2048 1050623 > /dev/null parted -s "$DISK" unit s -- mkpart primary f2fs 1050624 7888862 > /dev/null echo "Creating dirs and mounting" mkfs.ext4 -qL boot "$BOOTDEV" mkfs.f2fs -fl root "$ROOTDEV" mount -t f2fs "$ROOTDEV" "$TMPDIR" mkdir -p "$TMPDIR"/boot mount -t ext4 "$BOOTDEV" "$TMPDIR"/boot mkdir -p "$TMPDIR"/boot/extlinux "$TMPDIR"/etc/apk/keys 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 > "$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 \ linux-firmware-none util-linux blkid \ sysfsutils ssl_client ca-certificates-bundle alpine-keys \ openssh-server f2fs-tools ethtool e2fsprogs libudev-zero libudev-zero-helper \ wpa_supplicant iwd partuuid=`blkid -o value -s PARTUUID $ROOTDEV` echo $partuuid bootargs="boot-args=root=PARTUUID=\"$partuuid\" rootwait" echo $bootargs tar xf $kernel -C $TMPDIR gzip $TMPDIR/boot/vmlinux-$kernver #cat m1n1.macho <(echo 'boot-args=root=PARTUUID=3d20affd-c082-421b-a111-f5d6b1587fe4 rootwait') ak4.gz ak4.dtb > m1n1-payload.macho cat m1n1.macho <(echo $bootargs) $TMPDIR/boot/vmlinux-$kernver.gz $TMPDIR/boot/dtbs-$kernver/apple/t8103-$model.dtb > m1n1-payload.macho console='console=${console}' echo "Creating extlinux.conf" cat > "$TMPDIR"/boot/extlinux/extlinux.conf<> "$TMPDIR"/etc/fstab 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/mdev sysinit/modules \ shutdown/mount-ro shutdown/killprocs; do ln -s /etc/init.d/"${rc##*/}" "$TMPDIR"/etc/runlevels/"$rc" done sed -i 's/^#ttyS0/ttyS0/' "$TMPDIR"/etc/inittab echo "Finished, cleaning up"