Skip to content

Instantly share code, notes, and snippets.

@ckxng
Last active December 20, 2021 05:29
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ckxng/f73f8432ee96937bb7031b183293f25b to your computer and use it in GitHub Desktop.
Save ckxng/f73f8432ee96937bb7031b183293f25b to your computer and use it in GitHub Desktop.
alpine 3.11 lvm setup
setup-keymap
setup-hostname
setup-interfaces
setup-dns
hostname=$(cat /etc/hostname)
hostname $hostname
domainname=$(grep search /etc/resolv.conf|cut -f2)
rc-service networking start
passwd
setup-timezone
rc-update add networking boot
rc-update add urandom boot
rc-update add acpid default
rc-service acpid start
cat <<EOF >/etc/hosts
127.0.0.1 $hostname $hostname.$domainname localhost localhost.localdomain
::1 $hostname $hostname.$domainname localhost localhost.localdomain
EOF
setup-apkrepos
apk update
setup-sshd
setup-ntp
apk add lvm2 cryptsetup e2fsprogs parted
parted -a optimal /dev/sda mklabel gpt
parted -a optimal /dev/sda mkpart primary fat32 0% 200M
parted -a optimal /dev/sda name 1 esp
parted -a optimal /dev/sda set 1 esp on
parted -a optimal /dev/sda mkpart primary ext4 200M 100%
parted -a optimal /dev/sda name 2 crypto-luks
parted -a optimal /dev/sda --script print
cryptsetup luksFormat --type luks1 /dev/sda2
cryptsetup luksOpen /dev/sda2 lvmcrypt
pvcreate /dev/mapper/lvmcrypt
vgcreate vg0 /dev/mapper/lvmcrypt
lvcreate -L 512M vg0 -n swap
lvcreate -L 2G vg0 -n root
lvcreate -L 512M vg0 -n boot
lvscan
mkfs.ext4 /dev/vg0/root
mkswap /dev/vg0/swap
mount -t ext4 /dev/vg0/root /mnt/
apk add dosfstools
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/vg0/boot
mkdir -v /mnt/boot
mount -t ext4 /dev/vg0/boot /mnt/boot
mkdir -v /mnt/boot/efi
mount -t vfat /dev/sda1 /mnt/boot/efi
swapon /dev/vg0/swap
setup-disk -m sys /mnt/
blkid -s UUID -o value /dev/sda2 > /mnt/root/uuid
echo "lvmcrypt UUID="$(cat /mnt/root/uuid|tr -d '\n')" none luks" >>/mnt/etc/crypttab
echo "/dev/vg0/swap swap swap defaults 0 0" >>/mnt/etc/fstab
. /mnt/etc/mkinitfs/mkinitfs.conf
echo "features=\"$features cryptsetup\"" >/mnt/etc/mkinitfs/mkinitfs.conf
mkinitfs -c /mnt/etc/mkinitfs/mkinitfs.conf -b /mnt/ $(ls /mnt/lib/modules/)
mount -t proc /proc /mnt/proc
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
mount --rbind /sys /mnt/sys
source /etc/profile
export PS1="(chroot) $PS1"
apk add grub grub-efi
apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.11/community efibootmgr
apk del syslinux
echo "GRUB_CMDLINE_LINUX_DEFAULT=\"cryptroot=UUID="$(cat /root/uuid|tr -d '\n')" cryptdm=lvmcrypt\"" >>/etc/default/grub
echo "GRUB_ENABLE_CRYPTODISK=y" >>/etc/default/grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment