Skip to content

Instantly share code, notes, and snippets.

@emolitor
Created June 25, 2019 22:29
Show Gist options
  • Save emolitor/48fc7cbeadb94e1c6dd5077cc8d7b2c0 to your computer and use it in GitHub Desktop.
Save emolitor/48fc7cbeadb94e1c6dd5077cc8d7b2c0 to your computer and use it in GitHub Desktop.
#!/bin/sh
set -ex
PATH=/bin:/sbin:/usr/bin:/usr/sbin
KEYMAP="us us"
USER="***USER***"
ROOT_PASSWORD="***CHANGEME***"
USER_PASSWORD="***CHANGEME***"
HOST=alpine
ROOT_FS=ext4
BOOT_FS=ext4
FEATURES="ata base ide scsi usb virtio $ROOT_FS"
MODULES="sd-mod,usb-storage,$ROOT_FS"
REL=3.10
MIRROR=http://dl-cdn.alpinelinux.org/alpine
REPO=$MIRROR/v$REL/main
APKV=2.10.4-r1
DEV=/dev/sda
BOOT_DEV=${DEV}2
ROOT_DEV=${DEV}3
SWAP_DEV=${DEV}4
ROOT=/mnt
ARCH=$(uname -m)
mkfs.$ROOT_FS -q -L root $ROOT_DEV
mount $ROOT_DEV $ROOT
mkdir -p $ROOT/boot
mkfs.$BOOT_FS -q -L boot $BOOT_DEV
mount $BOOT_DEV $ROOT/boot
curl -s $MIRROR/v$REL/main/$ARCH/apk-tools-static-${APKV}.apk | tar xz
./sbin/apk.static --repository $REPO --update-cache --allow-untrusted --root $ROOT --initdb add alpine-base syslinux dhcpcd
cat << EOF > $ROOT/etc/fstab
$BOOT_DEV /boot $BOOT_FS defaults,noatime 0 1
$ROOT_DEV / $ROOT_FS defaults,noatime 0 1
$SWAP_DEV swap swap defaults 0 0
EOF
echo $REPO > $ROOT/etc/apk/repositories
cat /etc/resolv.conf > $ROOT/etc/resolv.conf
cat << EOF > $ROOT/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
hostname $HOST
EOF
mount --bind /proc $ROOT/proc
mount --bind /dev $ROOT/dev
mount --bind /sys $ROOT/sys
chroot $ROOT /bin/sh -x << CHROOT
apk update
apk add sudo
apk add dropbear
setup-hostname -n $HOST
rc-update -q add acpid default
rc-update -q add crond default
rc-update -q add devfs sysinit
rc-update -q add dhcpcd boot
rc-update -q add dmesg sysinit
rc-update -q add hwdrivers sysinit
rc-update -q add mdev sysinit
rc-update -q add modules boot
rc-update -q add networking boot
rc-update -q add urandom boot
rc-update -q add dropbear default
rc-update -q add ntpd default
echo features=\""$FEATURES"\" > /etc/mkinitfs/mkinitfs.conf
apk add linux-vanilla
extlinux -i /boot
dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of=$DEV
addgroup $USER
adduser -D $USER -G $USER -s /bin/sh
addgroup $USER wheel
CHROOT
printf 'root:%s\n' "${ROOT_PASSWORD}" | chroot $ROOT /usr/sbin/chpasswd
printf '%s:%s\n' "${USER}" "${USER_PASSWORD}" | chroot $ROOT /usr/sbin/chpasswd
umount $ROOT/proc
umount $ROOT/dev
umount $ROOT/sys
umount $ROOT/boot
umount $ROOT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment