75 lines
1.4 KiB
Bash
Executable File
75 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
checkUefi() {
|
|
ls /sys/firmware/efi/efivars > /dev/null 2>&1
|
|
if [ $? -ge 1 ]; then
|
|
echo "This scripts supports only UEFI boot mode."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
updateSystemClock() {
|
|
timedatectl set-ntp true
|
|
}
|
|
|
|
showDisks() {
|
|
items=$(lsblk -d -p -n -l -o NAME,SIZE -e 7,11)
|
|
options=()
|
|
|
|
IFS_ORIG=$IFS
|
|
IFS=$'\n'
|
|
for item in ${items}; do
|
|
options+=("${item}" "")
|
|
done
|
|
IFS=$IFS_ORIG
|
|
|
|
result=$(whiptail --title "Select a disk" --menu "" 0 0 0 "${options[@]}" 3>&1 1>&2 2>&3)
|
|
disk=$result
|
|
}
|
|
|
|
partDisks() {
|
|
showDisks
|
|
|
|
result=$(whiptail --yesno "Do you want me to automatically partition and format the disk for you?" 0 0)
|
|
if [ $result -eq 1 ]; then
|
|
gdisk $disk
|
|
return
|
|
fi
|
|
|
|
autoPart
|
|
bootPart=${disk}1
|
|
swapPart=${disk}2
|
|
rootPart=${disk}3
|
|
|
|
formatPart
|
|
mountPart
|
|
}
|
|
|
|
autoPart() {
|
|
# Create new GPT disklabel
|
|
parted $disk mklabel gpt
|
|
|
|
sgdisk $disk -n=1:0:+300M -t=1:ef00
|
|
sgdisk $disk -n=2:0:+1024M -t=2:8200
|
|
sgdisk $disk -n=3:0:0
|
|
}
|
|
|
|
formatPart() {
|
|
mkfs.fat -F 32 "$bootPart"
|
|
mkswap "$swapPart"
|
|
mkfs.ext4 "$rootPart"
|
|
}
|
|
|
|
mountPart() {
|
|
mount "$rootPart" /mnt
|
|
mkdir -p /mnt/boot/efi
|
|
mount "$bootPart" /mnt/boot/efi
|
|
swapon "$swapPart"
|
|
}
|
|
|
|
runScript() {
|
|
whiptail --title "CocoASAIS" --msgbox "Welcome to CocoASAIS!" 0 0
|
|
checkUefi
|
|
updateSystemClock
|
|
partDisks
|
|
} |