summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgentoox_build.sh4
-rwxr-xr-xinstall.sh96
2 files changed, 78 insertions, 22 deletions
diff --git a/gentoox_build.sh b/gentoox_build.sh
index a00baa5..da64d79 100755
--- a/gentoox_build.sh
+++ b/gentoox_build.sh
@@ -17,9 +17,9 @@ fi
#
gitprefix="https://gitgud.io/cloveros/cloveros/raw/master"
-rootpassword=live
+rootpassword=gentoox
username=gentoox
-userpassword=live
+userpassword=gentoox
#builddate="$(date +%Y%m%d).graphite"
builddate="20200127.graphite"
#builddir="build-$(date +%Y%m%d)"
diff --git a/install.sh b/install.sh
index 5b8b96d..2487d5f 100755
--- a/install.sh
+++ b/install.sh
@@ -4,26 +4,25 @@ if [ $(id -u) != "0" ]; then
exit 1
fi
-# post install
-#
-# adjust nproc in make.conf
+set -e
+echo -e 'Welcome to the GentooX setup, the installation script mainly consists of:
+\t- providing this script with a target partition where system will be installed
+\t- extracting precompiled squashfs system image into the specified parition
+\t- setting up GRUB, BIOS or UEFI mode will be used depending how system was booted
+\tGentooX uses openSUSE-style BTRFS root partition & subvolumes for snapshotting with snapper
+\tGentooX requires minimum of 16GB of space, and use of BTRFS is hardcoded
-# setup /etc/fstab
+mounting target partition to /mnt/install
+unsquash -f -i -d /mnt/install/ /mnt/cdrom/image.squashfs
+/usr/local/sbin/genfstab -U >> /mnt/install/etc/fstab
+/usr/local/sbin/arch-chroot /mnt/install/
+grub-install --target=x86_64-efi for UEFI mode or grub-install --target=i386-pc (BIOS only)'
-#plymouth-set-default-theme fade-in
-# adjust /etc/default/grub
-# splash quiet
-
-#rc-update add zfs-import boot
-#rc-update add zfs-mount boot
-
-
-sensors-detect --auto
-rc-update add lm_sensors default
-
-# grub-install
-# grub-mkconfig -o /boot/grub/grub.cfg
+declare -A PART_SCHEME
+PART_SCHEME[a]="Automatic"
+PART_SCHEME[m]="Manual"
+if [[ -d /sys/firmware/efi/ ]]; then UEFI_MODE=y; fi
setup_btrfs () {
@@ -86,8 +85,65 @@ setup_btrfs () {
mount /dev/$DEVICE /mnt/install/tmp -o subvol=@/tmp
mount /dev/$DEVICE /mnt/install/usr/local -o subvol=@/usr/local
mount /dev/$DEVICE /mnt/install/var -o subvol=@/var
-
- umount -l /mnt/install/boot/efi /mnt/install/var /mnt/install/usr/local /mnt/install/tmp /mnt/install/srv /mnt/install/root /mnt/install/opt /mnt/install/home \
- /mnt/install/boot/grub/x86_64-efi /mnt/install/boot/grub/i386-pc /mnt/install/.snapshots /mnt/install
}
+
+while :; do
+ echo
+ read -erp "Automatic partitioning (a) or manual partitioning (will launch gparted)? [a/m] " -n 1 partitioning_mode
+ if [[ $partitioning_mode = "a" ]]; then
+ read -erp "Enter drive to be formatted for GentooX installation: " -i "/dev/sda" drive
+ elif [[ $partitioning_mode = "m" ]]; then
+ if [[ ! -z $UEFI_MODE ]]; then echo "EFI boot detected, please also create EF00 ESP EFI partition..."; fi
+ gparted &> /dev/null &
+ read -erp "Enter formatted partition for GentooX installation: " -i "/dev/sda1" partition
+ else
+ echo "Invalid option"
+ continue
+ fi
+
+ read -erp "Partitioning: ${PART_SCHEME[$partitioning_mode]}
+ Partition: $partition
+ Is this correct? [y/n] " -n 1 yn
+ if [[ $yn == "y" ]]; then
+ break
+ fi
+done
+
+
+if [[ $partitioning_mode = "a" ]]; then
+ if [[ ! -z $UEFI_MODE ]]; then
+ echo -e "o\nn\np\n1\n+256M\n\np\n2\n\n\nw" | gdisk /dev/$drive
+ mkfs.vfat -F32 "${drive}1"
+ UEFI_PART="${drive}1"
+ setup_btrfs "${drive}2"
+ else
+ echo -e "o\nn\np\n1\n\n\nw" | fdisk /dev/$drive
+ setup_btrfs "${drive}1"
+ fi
+else
+ # user done the partitioning
+ read -erp "Enter formatted EF00 ESP partition for EFI: " -i "/dev/sda1" efi_partition
+ setup_btrfs $partition
+fi
+
+echo "extracting precompiled image.squashfs GentooX image to the target partition..."
+unsquash -f -d /mnt/install/ /mnt/cdrom/image.squashfs
+/usr/local/sbin/genfstab -U >> /mnt/install/etc/fstab
+
+mount -t proc none /mnt/install/proc
+mount --rbind /dev /mnt/install/dev
+mount --rbind /sys /mnt/install/sys
+
+cat <<HEREDOC | chroot .
+source /etc/profile && export PS1="(chroot) \$PS1"
+sensors-detect --auto
+rc-update add lm_sensors default
+NCORES=\$(getconf _NPROCESSORS_ONLN)
+sed -i -r "s/^MAKEOPTS=\"([^\"]*)\"$/MAKEOPTS=\"-j\$NCORES\"/g" /etc/portage/make.conf
+sed -i -r "s/^NTHREADS=\"([^\"]*)\"$/NTHREADS=\"\$NCORES\"/g" /etc/portage/make.conf
+#rc-update add zfs-import boot
+#rc-update add zfs-mount boot
+HEREDOC
+
+umount -l /mnt/install/boot/efi /mnt/install/var /mnt/install/usr/local /mnt/install/tmp /mnt/install/srv /mnt/install/root /mnt/install/opt /mnt/install/home /mnt/install/boot/grub/x86_64-efi /mnt/install/boot/grub/i386-pc /mnt/install/.snapshots /mnt/install