forked from ChrisTitusTech/ArchTitus
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path0-preinstall.sh
executable file
·98 lines (84 loc) · 4.54 KB
/
0-preinstall.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/env bash
#--------------------------------------------------------------------
# █████╗ ██████╗ ██████╗██╗ ██╗██████╗ █████╗ ██╗ ██╗███████╗
# ██╔══██╗██╔══██╗██╔════╝██║ ██║██╔══██╗██╔══██╗██║ ██║██╔════╝
# ███████║██████╔╝██║ ███████║██║ ██║███████║██║ ██║█████╗
# ██╔══██║██╔══██╗██║ ██╔══██║██║ ██║██╔══██║╚██╗ ██╔╝██╔══╝
# ██║ ██║██║ ██║╚██████╗██║ ██║██████╔╝██║ ██║ ╚████╔╝ ███████╗
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝
#--------------------------------------------------------------------
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
$SCRIPT_DIR/functions/pacman.sh
pacman -S --noconfirm --needed terminus-font
setfont ter-v22b
echo -ne "
--------------------------------------------------------------------
Installing Prerequisites
--------------------------------------------------------------------
"
pacman -S --noconfirm --needed archlinux-keyring gptfdisk grub btrfs-progs xfsprogs dosfstools e2fsprogs
mkdir /mnt &>/dev/null
swapoff -a &>/dev/null
umount -R /mnt &>/dev/null
unset BOOT_PARTITION
unset ROOT_PARTITION
unset SWAP_PARTITION
unset SWAP_TYPE
unset HIBERNATE_TYPE
source "$SCRIPT_DIR/dialogs/mainmenu.sh"
if [[ -z "$BOOT_PARTITION" ]] || [[ -z "$ROOT_PARTITION" ]]; then
source $SCRIPT_DIR/functions/exit.sh
fi
if [ "$(lsblk -plnf -o FSTYPE "$ROOT_PARTITION")" == "btrfs" ]; then
MOUNT_OPTIONS="defaults,noatime,compress=zstd,commit=120"
mount "${ROOT_PARTITION}" /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@swap
btrfs subvolume create /mnt/@opt
btrfs subvolume create /mnt/@var
btrfs subvolume create /mnt/@tmp
btrfs subvolume create /mnt/@.snapshots
btrfs subvolume set-default 5 /mnt
umount /mnt
mount -o $MOUNT_OPTIONS,subvol=@ $ROOT_PARTITION /mnt
mkdir -p /mnt/{home,swap,opt,tmp,var,.snapshots}
mount -o $MOUNT_OPTIONS,subvol=@home $ROOT_PARTITION /mnt/home
mount -o defaults,subvol=@swap $ROOT_PARTITION /mnt/swap
mount -o $MOUNT_OPTIONS,subvol=@opt $ROOT_PARTITION /mnt/opt
mount -o $MOUNT_OPTIONS,subvol=@tmp $ROOT_PARTITION /mnt/tmp
mount -o $MOUNT_OPTIONS,subvol=@var $ROOT_PARTITION /mnt/var
mount -o $MOUNT_OPTIONS,subvol=@.snapshots $ROOT_PARTITION /mnt/.snapshots
else
mount "$ROOT_PARTITION" /mnt
fi
mkdir /mnt/boot &>/dev/null
mount "$BOOT_PARTITION" /mnt/boot/
if ! grep -qs '/mnt' /proc/mounts; then
echo "Drive is not mounted, can not continue"
source $SCRIPT_DIR/functions/exit.sh
fi
echo "DISK=$DISK" >> "$SCRIPT_DIR/install.conf"
echo "BOOT_PARTITION=$BOOT_PARTITION" >> "$SCRIPT_DIR/install.conf"
echo "ROOT_PARTITION=$ROOT_PARTITION" >> "$SCRIPT_DIR/install.conf"
[ -n "$SWAP_PARTITION" ] && echo "SWAP_PARTITION=$SWAP_PARTITION" >> "$SCRIPT_DIR/install.conf"
[ -n "$SWAP_TYPE" ] && echo "SWAP_TYPE=$SWAP_TYPE" >> "$SCRIPT_DIR/install.conf"
[ -n "$HIBERNATE_TYPE" ] && echo "HIBERNATE_TYPE=$HIBERNATE_TYPE" >> "$SCRIPT_DIR/install.conf"
$SCRIPT_DIR/functions/mirrors.sh
echo -ne "
--------------------------------------------------------------------
Arch Install on Main Drive
--------------------------------------------------------------------
"
pacstrap /mnt --noconfirm --needed base base-devel linux linux-firmware vim nano sudo archlinux-keyring wget git libnewt fprintd grub
$SCRIPT_DIR/functions/swap.sh /mnt
echo "# <file system> <dir> <type> <options> <dump> <pass>" > /mnt/etc/fstab
genfstab -U /mnt >> /mnt/etc/fstab
! grep -q "keyserver.ubuntu.com" /mnt/etc/pacman.d/gnupg/gpg.conf && echo "keyserver hkp://keyserver.ubuntu.com" >> /mnt/etc/pacman.d/gnupg/gpg.conf
cp -R "${SCRIPT_DIR}" /mnt/root
cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist
echo -ne "
--------------------------------------------------------------------
System ready for 1-setup.sh
--------------------------------------------------------------------
"