Improvment

This commit is contained in:
Tracker-Friendly 2023-08-30 17:01:05 +01:00
parent ca23fc70b5
commit 7ab1626523
1 changed files with 110 additions and 10 deletions

View File

@ -21,6 +21,10 @@ fi
dialog --title "Welcome" --msgbox "Welcome to the EvolutionOS installer! \n\nThis installer is meant to be straightforward, no need for technical skill. \n\nPress enter to select buttons, tab to move between text boxes, and left / right to move between buttons." 0 0 dialog --title "Welcome" --msgbox "Welcome to the EvolutionOS installer! \n\nThis installer is meant to be straightforward, no need for technical skill. \n\nPress enter to select buttons, tab to move between text boxes, and left / right to move between buttons." 0 0
if [[ $? = 1 ]]; then
exit 1
fi
get_disk_type() { get_disk_type() {
local disk_name="$1" local disk_name="$1"
@ -45,10 +49,11 @@ disk_names=$(lsblk --list --nodeps -o NAME | awk 'NR>1')
# Function to check if the disk is writable # Function to check if the disk is writable
is_disk_writable() { is_disk_writable() {
local disk_name="$1" if [[ "$(cat /sys/block/$choice/ro)" = "1" ]]; then
touch "/mnt/$disk_name" &>/dev/null writable=1
local writable=$? else
rm "/mnt/$disk_name" &>/dev/null writable=0
fi
return $writable return $writable
} }
@ -73,11 +78,15 @@ while true; do
rm /tmp/disk_choice rm /tmp/disk_choice
# Check if the disk is writable # Check if the disk is writable
if ! is_disk_writable "$choice"; then if [[ $(is_disk_writable "$choice") = 1 ]]; then
dialog --title "Disk Not Writable" --msgbox "The selected disk is not writable. Please choose another disk." 8 50 dialog --title "Disk Not Writable" --msgbox "The selected disk is not writable. Please choose another disk." 8 50
continue continue
fi fi
if [[ $? = 1 ]]; then
exit 1
fi
# Check if the disk has partitions # Check if the disk has partitions
partitions=$(lsblk "/dev/$choice" | grep -c "part") partitions=$(lsblk "/dev/$choice" | grep -c "part")
if [ "$partitions" -gt 0 ]; then if [ "$partitions" -gt 0 ]; then
@ -105,6 +114,10 @@ done
for i in $(lsblk --list -o NAME /dev/$choice | awk 'NR>2'); do for i in $(lsblk --list -o NAME /dev/$choice | awk 'NR>2'); do
umount /dev/$i umount /dev/$i
if [[ $? = 32 ]]; then
dialog --msgbox "Specfifed target is busy... Cannot continue" 0 0
exit 1
fi
done done
sfdisk --delete /dev/$choice sfdisk --delete /dev/$choice
@ -119,20 +132,32 @@ if [[ $? = 0 ]]; then
, 200M , 200M
, , , ,
EOF EOF
if [[ $? = 1 ]]; then
dialog --msgbox "Partitioning failed..." 0 0
exit 1
fi
fdisk /dev/$choice <<EOF fdisk /dev/$choice <<EOF
t t
1 1
EOF EOF
if [[ $? = 1 ]]; then
dialog --msgbox "Partitioning failed..." 0 0
exit 1
fi
part1=$(lsblk -n -o NAME --list /dev/$choice | sed -n '2p') part1=$(lsblk -n -o NAME --list /dev/$choice | sed -n '2p')
part2=$(lsblk -n -o NAME --list /dev/$choice | sed -n '3p') part2=$(lsblk -n -o NAME --list /dev/$choice | sed -n '3p')
mkfs.fat -F 32 /dev/$part1 mkfs.fat -F 32 /dev/$part1
dialog --clear --title "Filesystem Type" --menu "Select a filesystem:" 0 0 0 "ext4" "Basic file system (recommended)" "btrfs" "Great for data recovery" "xfs" "High performence, but may need extra RAM" 2>/tmp/fileselect dialog --clear --title "Filesystem Type" --menu "Select a filesystem:" 0 0 0 "ext4" "Basic file system (recommended)" "btrfs" "Great for data recovery" "xfs" "High performence, but may need extra RAM" 2>/tmp/fileselect
if [[ $? = 1 ]]; then if [[ $? = 1 ]]; then
dialog --msgbox "Operation cancled" dialog --msgbox "Operation cancled" 0 0
exit 1 exit 1
fi fi
filesystem=$(cat /tmp/fileselect) filesystem=$(cat /tmp/fileselect)
mkfs.$filesystem /dev/$part2 | dialog --title "Creating file system..." --programbox 24 80 mkfs.$filesystem /dev/$part2 | dialog --title "Creating file system..." --programbox 24 80
if [[ $? = 1 ]]; then
dialog --msgbox "Partitioning failed..." 0 0
exit 1
fi
mount /dev/$part2 /mnt mount /dev/$part2 /mnt
mkdir -p /mnt/boot/efi mkdir -p /mnt/boot/efi
mount /dev/$part1 /mnt/boot/efi mount /dev/$part1 /mnt/boot/efi
@ -149,6 +174,10 @@ EOF
filesystem=$(cat /tmp/fileselect) filesystem=$(cat /tmp/fileselect)
partmpt1=$(lsblk -n -o NAME --list /dev/$choice | sed -n '2p') partmpt1=$(lsblk -n -o NAME --list /dev/$choice | sed -n '2p')
mkfs.$filesystem /dev/$part1 | dialog --title "Creating file system..." --programbox 24 80 mkfs.$filesystem /dev/$part1 | dialog --title "Creating file system..." --programbox 24 80
if [[ $? = 1 ]]; then
dialog --msgbox "Partitioning failed..."
exit 1
fi
fi fi
else else
dialog --msgbox "Ok, you will be dropped into a CLI. Please mount the filesystem, when done, at \"/mnt/\". Note that anything except the default partition disk (ESP, Optional Swap, RootFS) is not offically supported and may not work. Enter exit when you are done." 0 0 dialog --msgbox "Ok, you will be dropped into a CLI. Please mount the filesystem, when done, at \"/mnt/\". Note that anything except the default partition disk (ESP, Optional Swap, RootFS) is not offically supported and may not work. Enter exit when you are done." 0 0
@ -160,6 +189,10 @@ for f in sys proc dev; do
[ ! -d /mnt/$f ] && mkdir /mnt/$f [ ! -d /mnt/$f ] && mkdir /mnt/$f
echo "Mounting /mnt/$f..." echo "Mounting /mnt/$f..."
mount --rbind /$f /mnt/$f mount --rbind /$f /mnt/$f
if [[ $? = 1 ]]; then
dialog --msgbox "Mount failed..."
exit 1
fi
done done
dialog --clear --title "Select install type" --menu "Which installation type would you like to you:" 0 0 0 "local" "Install without internet" "network" "Download from internet" 2>/tmp/installtype dialog --clear --title "Select install type" --menu "Which installation type would you like to you:" 0 0 0 "local" "Install without internet" "network" "Download from internet" 2>/tmp/installtype
@ -184,25 +217,51 @@ mkdir -p /mnt/boot/grub
if [[ $installtype = "local" ]]; then if [[ $installtype = "local" ]]; then
xbps-install -S -y -r /mnt -i -R /var/cache/xbps/ base-system $_grub | dialog --title "Installing base system..." --programbox 24 80 xbps-install -S -y -r /mnt -i -R /var/cache/xbps/ base-system $_grub | dialog --title "Installing base system..." --programbox 24 80
if [[ $? = 1 ]]; then
dialog --msgbox "Bootstrap failed..." 0 0
exit 1
fi
else else
xbps-install -S -y -r /mnt -R https://evolution-linux.github.io/pkg base-system $_grub | dialog --title "Installing base system..." --programbox 24 80 xbps-install -S -y -r /mnt -R https://evolution-linux.github.io/pkg base-system $_grub | dialog --title "Installing base system..." --programbox 24 80
if [[ $? = 1 ]]; then
dialog --msgbox "Bootstrap failed..." 0 0
exit 1
fi
fi fi
xbps-reconfigure -r /mnt -f base-system xbps-reconfigure -r /mnt -f base-system
chroot /mnt xbps-reconfigure -fa | dialog --title "Reconfiguring packages..." --programbox 24 80 chroot /mnt xbps-reconfigure -fa | dialog --title "Reconfiguring packages..." --programbox 24 80
if [[ $? = 1 ]]; then
dialog --msgbox "Configuration failed..."
exit 1
fi
chroot /mnt grub-install --target=$arch --efi-directory=/hoot/efi --bootloader-id=void_grub --recheck chroot /mnt grub-install --target=$arch --efi-directory=/boot/efi --bootloader-id=void_grub --recheck
if [[ $? = 1 ]]; then
dialog --msgbox "GRUB Installation failed..."
exit 1
fi
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
if [[ $? = 1 ]]; then
dialog --msgbox "GRUB Installation failed..."
exit 1
fi
while true; do while true; do
dialog --title "Password" --clear --insecure --passwordbox "Enter Admin (root) password. For security reasons, you cannot log in as admin. Press enter to submit." 0 0 2>/tmp/rootpasswd dialog --title "Password" --clear --insecure --passwordbox "Enter Admin (root) password. For security reasons, you cannot log in as admin. Press enter to submit." 0 0 2>/tmp/rootpasswd
if [[ $? = 1 ]]; then
exit 1
fi
rootpasswd="$(cat /tmp/rootpasswd)" rootpasswd="$(cat /tmp/rootpasswd)"
passwd -R /mnt <<EOF passwd -R /mnt <<EOF
$rootpasswd $rootpasswd
$rootpasswd $rootpasswd
EOF EOF
if [[ $? = 1 ]]; then if [[ $? = 1 ]]; then
dialog --title "Illegal characters" --msgbox "You cannot have those characters in a password. Please enter a new one." dialog --title "Illegal characters" --msgbox "You cannot have those characters in a password. Please enter a new one." 0 0
if [[ $? = 1 ]]; then
exit 1
fi
continue continue
else else
break break
@ -211,10 +270,16 @@ done
while true; do while true; do
dialog --title "Username" --clear --inputbox "Enter shorthand username. This will be created as an super user (able to run as root)." 0 0 2>/tmp/usershort dialog --title "Username" --clear --inputbox "Enter shorthand username. This will be created as an super user (able to run as root)." 0 0 2>/tmp/usershort
if [[ $? = 1 ]]; then
exit 1
fi
shusername="$(cat /tmp/usershort)" shusername="$(cat /tmp/usershort)"
useradd -R /mnt -m $shusername useradd -R /mnt -m $shusername
if [[ $? = 1 ]]; then if [[ $? = 1 ]]; then
dialog --title "Illegal characters" --msgbox "You cannot have those characters in a shorthand username. Please enter a new one." dialog --title "Illegal characters" --msgbox "You cannot have those characters in a shorthand username. Please enter a new one."
if [[ $? = 1 ]]; then
exit 1
fi
continue continue
else else
break break
@ -222,9 +287,17 @@ while true; do
done done
dialog --title "Username" --clear --inputbox "Enter display username." 0 0 2>/tmp/dpusername dialog --title "Username" --clear --inputbox "Enter display username." 0 0 2>/tmp/dpusername
if [[ $? = 1 ]]; then
exit 1
fi
dpusername=$(cat /tmp/dpusername) dpusername=$(cat /tmp/dpusername)
while true; do while true; do
dialog --title "Password" --clear --insecure --passwordbox "Enter user password" 0 0 2>/tmp/userpasswd 0 0 dialog --title "Password" --clear --insecure --passwordbox "Enter user password" 0 0 2>/tmp/userpasswd 0 0
if [[ $? = 1 ]]; then
exit 1
fi
userpasswd="$(cat /tmp/userpasswd)" userpasswd="$(cat /tmp/userpasswd)"
passwd -R /mnt <<EOF passwd -R /mnt <<EOF
$userpasswd $userpasswd
@ -232,13 +305,40 @@ $userpasswd
EOF EOF
if [[ $? = 1 ]]; then if [[ $? = 1 ]]; then
dialog --title "Illegal characters" --msgbox "You cannot have those characters in a password. Please enter a new one." 0 0 dialog --title "Illegal characters" --msgbox "You cannot have those characters in a password. Please enter a new one." 0 0
if [[ $? = 1 ]]; then
exit 1
fi
continue continue
else else
break break
fi fi
done done
chroot /mnt chfn -f "$dpusername" $shusername
chroot /mnt usermod -a -G video $shusername chroot /mnt usermod -a -G video $shusername
if [[ $? = 1 ]]; then
dialog --msgbox "Adding user to video group failed... The system should still work, though you may need to do that later. Installation continuing..."
vguser=1
fi
dialog --title "Done!" --msgbox "Hello, and welcome to my minceraft tutorial" 0 0 chroot /mnt chfn -f "$dpusername" $shusername
if [[ $? = 1 ]]; then
dialog --msgbox "Display username changing failed... The system should still work, though your display name will not be displayed. Installation continuing..."
dpname=1
fi
exitcode=0
if [[ "$vkuser" = "1"; ]]; then
exitcode=2
if [[ "$dpname" = "1" ]]; then
exitcode=4
fi
else
if [[ "$dpname" = "1" ]]; then
exitcode=3
fi
fi
dialog --title "Done!" --msgbox "Installation now complete." 0 0
exit $exitcode