server-scripts/entry.sh

160 lines
3.6 KiB
Bash
Executable File

#!/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
wipefs -a ${DEVICE}2
pvcreate ${DEVICE}2
vgcreate vg0 ${DEVICE}2
export LVM_SIZE=$(dev_size ${DEVICE}2)
if [[ $(($(mem_size)/1024/1024)) -gt 16384 ]]
then
export SWAP_SIZE=16384
else
export SWAP_SIZE=$(($(mem_size)/1024/1024))
fi
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
apt install -y openssh-server
grub-install ${DEVICE}
update-grub
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
bash
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
}