Created
June 25, 2019 22:29
-
-
Save emolitor/48fc7cbeadb94e1c6dd5077cc8d7b2c0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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