#!/bin/bash function first_stage(){ set -e echo foo first_stage #echo -n "luks password: " #read -s luks_password_in #export LUKS_PASSWORD=$luks_password_in #echo echo -n "root password: " read -s root_password_in export ROOT_PASSWORD=$root_password_in echo #echo -n "user password: " #read -s user_password_in #export USER_PASSWORD=$user_password_in #echo lsblk -ftpo NAME,FSTYPE,LABEL,UUID,FSAVAIL,MOUNTPOINT select DEVICE in $(lsblk -frpno NAME); do echo using $DEVICE break done export DEVICE apt install -y debootstrap cryptsetup btrfs-progs lvm2 if [ -d /dev/vg0 ]; then mount | grep target | awk '{print $3}'| sort -r | while read LINE; do umount -l $LINE; done if [ -b /dev/vg0/swap ]; then swapoff /dev/vg0/swap || true fi vgchange -an /dev/vg0 fi if [ -b /dev/mapper/cryptlvm ]; then cryptsetup luksClose cryptlvm fi wipefs -a ${DEVICE} ( echo o echo n echo p echo 1 echo echo +1G echo n echo p echo 2 echo echo echo w ) | fdisk ${DEVICE} echo mkfs.ext4 ${DEVICE}1 yes | mkfs.ext4 ${DEVICE}1 #( #echo $LUKS_PASSWORD #echo $LUKS_PASSWORD #)| cryptsetup luksFormat ${DEVICE}2 #echo $LUKS_PASSWORD | cryptsetup luksOpen ${DEVICE}2 cryptlvm #unset LUKS_PASSWORD pvcreate ${DEVICE}2 vgcreate vg0 ${DEVICE}2 export LVM_SIZE=$(dev_size ${DEVICE}2) export SWAP_SIZE=$(($(mem_size)/1024/1024)) export ROOT_SIZE=$(($LVM_SIZE/1024/1024-$SWAP_SIZE-512)) echo lvcreate /dev/vg0 --name=root --size=${ROOT_SIZE}M lvcreate /dev/vg0 --name=root --size=${ROOT_SIZE}M yes | mkfs.btrfs /dev/vg0/root echo lvcreate /dev/vg0 --name=swap --size=${SWAP_SIZE}M lvcreate /dev/vg0 --name=swap --size=${SWAP_SIZE}M mkswap /dev/vg0/swap swapon /dev/vg0/swap echo mount /dev/vg0/root $TARGET mount /dev/vg0/root $TARGET echo debootstrap sid $TARGET debootstrap sid $TARGET mount ${DEVICE}1 $TARGET/boot echo mount ${DEVICE}1 $TARGET/boot genfstab -U $TARGET | tee $TARGET/etc/fstab UUID=$(lsblk -lpo NAME,UUID | grep ${DEVICE}2 | awk '{print $2}') #echo cryptlvm UUID=${UUID} none luks > $TARGET/etc/crypttab } function second_stage(){ set -e export DEBIAN_FRONTEND=noninteractive ( echo $ROOT_PASSWORD echo $ROOT_PASSWORD ) | passwd unset ROOT_PASSWORD echo -n > /etc/motd sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list apt update #apt install -y linux-image-amd64 grub2 cryptsetup btrfs-progs lvm2 firmware-iwlwifi locales tzdata keyboard-configuration console-common zsh intel-microcode apt install -y linux-image-amd64 grub2 btrfs-progs lvm2 locales tzdata keyboard-configuration console-common intel-microcode grub-install ${DEVICE} mkdir /snap btrfs subvolume snapshot / /snap/$(date +%Y-%m-%d_basesystem) #apt install -y task-mate-desktop mate-desktop-environment-extra #( #echo $USER_PASSWORD #echo $USER_PASSWORD #echo #echo #echo #echo #echo #) | adduser jedi #unset USER_PASSWORD #HOME=/home/jedi #btrfs subvolume snapshot / /snap/$(date +%Y-%m-%d_user_gui) #apt install -y git virt-manager telegram-desktop firefox thunderbird geany vlc pidgin inkscape meld kicad blender #git clone git://github.com/robbyrussell/oh-my-zsh.git $HOME/.oh-my-zsh #chmod 0755 $HOME/.oh-my-zsh #chown -R jedi:jedi $HOME #chsh --shell /bin/zsh jedi echo second_stage done } function post_install_stage(){ sleep 0.5 mount | grep target | awk '{print $3}'| sort -r | while read LINE; do umount -l $LINE; done }