feat: refined bootstrap, added root bashrc (fresh.sh)

master
Toerd@archlinux 5 years ago
parent d309d02db9
commit 7c5565bb5f

@ -0,0 +1,12 @@
FRESH SCRIPT
------------
Install script for my Arch Linux based workstations.
Heavily inspired by [LARBS](https://github.com/LukeSmithxyz/LARBS).
To get started, run the following code after booting into the installation medium
``` bash
curl https://g.phga.de/toerd/fresh/raw/branch/master/bootstrap.sh | bash
```
Done!

@ -9,25 +9,33 @@ do case $opt in
esac esac
done done
init() {
[ -z "$NAME" ] && read -p "Hostname: " NAME
[ -z "$PASSWD" ] && while [ "$PASSWD" = "$CHECK"]; do
&& read -sp "Root password: " PASSWD && read -sp "Repeat: " CHECK &&
done
# Show some possible disks
[ -z "$DEV" ] && lsblk -nrpo "name,size,model" && read -s "Provide installation medium (e.g. /dev/sda): " DEV
[[ "$DEV" =~ "sd[a-z]" ]] && SUF="1-3" && MODE="SATA"
[[ "$DEV" =~ "nvme[0-9]n[0-9]" ]] && SUF="p1-3" && MODE="NVME"
echo "+---------------------+"
echo "| Archlinux Bootstrap |"
echo "+---------------------+"
echo "HOSTNAME = $NAME"
echo "ROOTPASSWD = $PASSWD"
echo "DEVICEPARTS = $DEV$SUF"
read -s "Do you want to continue with these values (y/n): " cont
[ ! "$cont" = "y" ] && unset NAME PASSWD DEV && init
}
# stop on error # stop on error
set -e set -e
# initialize important values
init
PASSWD=${PASSWD:="toor"} # All values set, start bootstrapping
NAME=${NAME:="archibald"}
DEV=${DEV:="nvme0n1"}
echo "+---------------------+"
echo "| Archlinux Bootstrap |"
echo "+---------------------+"
echo "ROOTPASSWD = $PASSWD"
echo "HOSTNAME = $NAME"
echo -e "DEVICE = $DEV\n"
sleep 2
timedatectl set-ntp true
gdisk <<EOF gdisk <<EOF
o o
y y
@ -51,10 +59,18 @@ y
EOF EOF
mkfs.fat -F 32 -n P_EFI /dev/${DEV}p1 case $MODE in
mkfs.ext4 -L P_ROOT /dev/${DEV}p3 "NVME")
mkswap -L P_SWAP /dev/${DEV}p2 mkfs.fat -F 32 -n P_EFI /dev/${DEV}p1
mkfs.ext4 -L P_ROOT /dev/${DEV}p3
mkswap -L P_SWAP /dev/${DEV}p2
;;
"SATA")
mkfs.fat -F 32 -n P_EFI /dev/${DEV}1
mkfs.ext4 -L P_ROOT /dev/${DEV}3
mkswap -L P_SWAP /dev/${DEV}2
;;
esac
mount -L P_ROOT /mnt # root mount -L P_ROOT /mnt # root
mkdir -p /mnt/boot mkdir -p /mnt/boot
@ -64,14 +80,12 @@ swapon -L P_SWAP # swap
sed -e '/## Germany/,+1!d' /etc/pacman.d/mirrorlist sed -e '/## Germany/,+1!d' /etc/pacman.d/mirrorlist
# for server dhcpcd and other programs are not required -> see good2know # for server dhcpcd and other programs are not required -> see good2know
pacstrap /mnt base base-devel linux linux-firmware vi dhcpcd wpa_supplicant dialog git netctl pacstrap /mnt base base-devel linux linux-firmware vi dhcpcd wpa_supplicant dialog git netctl curl
genfstab -p /mnt > /mnt/etc/fstab genfstab -p /mnt > /mnt/etc/fstab
cat <<EOF > /mnt/root/bootstrap2.sh cat <<EOF > /mnt/root/bootstrap2.sh
#!/bin/bash #!/bin/bash
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc -utc
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
locale-gen locale-gen
@ -84,7 +98,7 @@ mkinitcpio -p linux
pacman -Sy --noconfirm efibootmgr dosfstools gptfdisk pacman -Sy --noconfirm efibootmgr dosfstools gptfdisk
bootctl install bootctl install
# MAYBE: add intel-ucode images, check for amd
cat <<EEE > /boot/loader/entries/arch-uefi.conf cat <<EEE > /boot/loader/entries/arch-uefi.conf
title Arch title Arch
linux /vmlinuz-linux linux /vmlinuz-linux
@ -110,6 +124,10 @@ reflector --country 'Germany' --sort rate --protocol https --save /etc/pacman.d/
printf "${PASSWD}\n${PASSWD}\n" | passwd root printf "${PASSWD}\n${PASSWD}\n" | passwd root
cd && curl -L https://g.phga.de/toerd/fresh/archive/master.tar.gz -o fresh.tar.gz && tar -xzf fresh.tar.gz
# basically a shitty one time job
echo '/root/fresh/fresh.sh' > .bashrc
exit exit
EOF EOF

@ -233,6 +233,34 @@ set_system_stuff() {
# sudo -u $uname /home/$uname/.dotfiles/syncthing/link-confs.sh &>> $logfile # sudo -u $uname /home/$uname/.dotfiles/syncthing/link-confs.sh &>> $logfile
echo "Leave system stuff\n\n" >> $logfile echo "Leave system stuff\n\n" >> $logfile
} }
set_root_bashrc() {
cat <<EOF > /root/.bashrc
# Fix for tramp connections
[ $TERM = "dumb" ] && return
set -o vi
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
PROMPT_COMMAND='history -a'
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
alias ls='ls --color=auto --group-directories-first'
alias grep='grep --color=auto'
alias ll='ls -alSFhv'
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
# PS1 config
export PS1="\[$(tput bold)\]\[\033[38;5;1m\]ROOT\[$(tput sgr0)\]@\w\n->\[$(tput sgr0)\]"
EOF
}
# ACTUAL ROUTINE # ACTUAL ROUTINE
case $todo in case $todo in
@ -250,6 +278,7 @@ case $todo in
set_system_stuff set_system_stuff
# enable_service "--user syncthing" "netctl-auto@wlp3s0" "--user offlineimap@philip_thi" "--user offlineimap@philip_posteo" "--user offlineimap@philip_gmail" # enable_service "--user syncthing" "netctl-auto@wlp3s0" "--user offlineimap@philip_thi" "--user offlineimap@philip_posteo" "--user offlineimap@philip_gmail"
enable_service "netctl-auto@wlp3s0" "systemd-timesyncd" enable_service "netctl-auto@wlp3s0" "systemd-timesyncd"
set_root_bashrc
ready_steady_go ready_steady_go
clear clear
;; ;;

Loading…
Cancel
Save