summaryrefslogtreecommitdiff
path: root/src/core/procedures/interactive
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/procedures/interactive')
-rw-r--r--src/core/procedures/interactive239
1 files changed, 239 insertions, 0 deletions
diff --git a/src/core/procedures/interactive b/src/core/procedures/interactive
new file mode 100644
index 0000000..1f576da
--- /dev/null
+++ b/src/core/procedures/interactive
@@ -0,0 +1,239 @@
+#!/bin/sh
+
+TARGET_DIR="/mnt"
+EDITOR=
+
+
+# clock
+HARDWARECLOCK=
+TIMEZONE=
+
+# partitions
+PART_ROOT=
+
+# default filesystem specs (the + is bootable flag)
+# <mountpoint>:<partsize>:<fstype>[:+]
+DEFAULTFS="/boot:32:ext2:+ swap:256:swap /:7500:ext3 /home:*:ext3"
+
+
+
+start_process ()
+{
+ #####################
+ ## begin execution ##
+
+ # install stages
+ S_SRC=0 # choose install medium
+ S_NET=0 # network configuration
+ S_CLOCK=0 # clock and timezone
+ S_PART=0 # partitioning
+ S_MKFS=0 # formatting
+ S_MKFSAUTO=0 # auto fs part/formatting TODO: kill this
+ S_SELECT=0 # package selection
+ S_INSTALL=0 # package installation
+ S_CONFIG=0 # configuration editing
+ S_GRUB=0 # TODO: kill this - if using grub
+ S_BOOT="" # bootloader installed (set to loader name instead of 1)
+
+ var_UI_TYPE=dia
+
+ notify "Welcome to the Arch Linux Installation program. The install \
+ process is fairly straightforward, and you should run through the options in \
+ the order they are presented. If you are unfamiliar with partitioning/making \
+ filesystems, you may want to consult some documentation before continuing. \
+ You can view all output from commands by viewing your VC7 console (ALT-F7). \
+ ALT-F1 will bring you back here."
+
+ while true
+ do
+ mainmenu
+ done
+
+}
+
+
+phase_preparation ()
+{
+ #TODO: when does grub device map happen in official installer?
+ execute worker runtime_packages
+ notify "Generating GRUB device map...\nThis could take a while.\n\n Please be patient."
+ get_grub_map
+}
+
+mainmenu()
+{
+ if [ -n "$NEXTITEM" ]; then
+ DEFAULT="--default-item $NEXTITEM"
+ else
+ DEFAULT=""
+ fi
+ DIALOG $DEFAULT --title " MAIN MENU " \
+ --menu "Use the UP and DOWN arrows to navigate menus. Use TAB to switch between buttons and ENTER to select." 16 55 8 \
+ "0" "Select Source" \
+ "1" "Set Clock" \
+ "2" "Prepare Hard Drive" \
+ "3" "Select Packages" \
+ "4" "Install Packages" \
+ "5" "Configure System" \
+ "6" "Install Bootloader" \
+ "7" "Exit Install" 2>$ANSWER
+ NEXTITEM="$(cat $ANSWER)"
+ case $(cat $ANSWER) in
+ "0")
+ select_source ;;
+ "1")
+ set_clock ;;
+ "2")
+ prepare_harddrive ;;
+ "3")
+ select_packages ;;
+ "4")
+ installpkg ;;
+ "5")
+ configure_system ;;
+ "6")
+ install_bootloader ;;
+ "7")
+ echo ""
+ echo "If the install finished successfully, you can now type 'reboot'"
+ echo "to restart the system."
+ echo ""
+ exit 0 ;;
+ *)
+ ask_yesno "Abort Installation?" && exit 0
+ ;;
+ esac
+}
+
+
+configure_system()
+{
+ ## PREPROCESSING ##
+ # only done on first invocation of configure_system
+ if [ $S_CONFIG -eq 0 ]; then
+
+ # /etc/pacman.d/mirrorlist
+ # add installer-selected mirror to the top of the mirrorlist
+ if [ "$MODE" = "ftp" -a "${SYNC_URL}" != "" ]; then
+ awk "BEGIN { printf(\"# Mirror used during installation\nServer = "${SYNC_URL}"\n\n\") } 1 " "${TARGET_DIR}/etc/pacman.d/mirrorlist"
+ fi
+
+ # /etc/rc.conf
+ # insert timezone and utc info
+ sed -i -e "s/^TIMEZONE=.*/TIMEZONE=\"$TIMEZONE\"/g" \
+ -e "s/^HARDWARECLOCK=.*/HARDWARECLOCK=\"$HARDWARECLOCK\"/g" \
+ ${TARGET_DIR}/etc/rc.conf
+ fi
+
+
+ interactive_configure_system
+
+ run_mkinitcpio
+ target_locale-gen
+ S_CONFIG=1
+}
+
+
+prepare_harddrive()
+{
+ S_MKFSAUTO=0
+ S_MKFS=0
+ DONE=0
+ NEXTITEM=""
+ while [ "$DONE" = "0" ]; do
+ if [ -n "$NEXTITEM" ]; then
+ DEFAULT="--default-item $NEXTITEM"
+ else
+ DEFAULT=""
+ fi
+ DIALOG $DEFAULT --menu "Prepare Hard Drive" 12 60 5 \
+ "1" "Auto-Prepare (erases the ENTIRE hard drive)" \
+ "2" "Partition Hard Drives" \
+ "3" "Set Filesystem Mountpoints" \
+ "4" "Return to Main Menu" 2>$ANSWER
+ NEXTITEM="$(cat $ANSWER)"
+ case $(cat $ANSWER) in
+ "1")
+ interactive_autoprepare && S_MKFSAUTO=1 ;;
+ "2")
+ if [ "$S_MKFSAUTO" = "1" ]; then
+ notify "You have already prepared your filesystems with Auto-prepare"
+ else
+ interactive_partition && S_PART=1 ;;
+ fi
+ "3")
+ PARTFINISH=""
+ if [ "$S_MKFSAUTO" = "1" ]; then
+ notify "You have already prepared your filesystems with Auto-prepare"
+ else
+ interactive_mountpoints && S_MKFS=1 ;;
+ fi
+ *)
+ DONE=1 ;;
+ esac
+ done
+ NEXTITEM="1"
+}
+
+
+# set_clock()
+# prompts user to set hardware clock and timezone
+#
+# params: none
+set_clock()
+{
+ interactive_set_clock && S_CLOCK=1
+}
+
+#[ $S_SELECT -eq 0 ] && install_pkg && S_INSTALL=1 # user must first select, then install
+# automagic time!
+# any automatic configuration should go here
+#notify "Writing base configuration..."
+#auto_fstab
+#auto_network
+#auto_locale
+
+
+
+# select_packages()
+# prompts the user to select packages to install
+select_packages() {
+ # step dependencies
+ if [ $S_SRC -eq 0 ]; then
+ DIALOG --msgbox "You must select an installation source!" 0 0
+ return 1
+ fi
+
+ # if selection has been done before, warn about loss of input
+ # and let the user exit gracefully
+ if [ $S_SELECT -ne 0 ]; then
+ DIALOG --yesno "WARNING: Running this stage again will result in the loss of previous package selections.\n\nDo you wish to continue?" 10 50 || return 1
+ fi
+
+ interactive_select_packages && S_SELECT=1
+}
+
+
+# donetwork()
+# Hand-hold through setting up networking
+donetwork() {
+ interactive_donetwork && S_NET=1
+}
+
+
+dogrub() {
+ interactive_dogrub && S_GRUB=1
+}
+
+
+# exit if network wasn't configured in installer
+# if [ $S_NET -eq 0 ]; then
+# return 1
+# fi
+
+# ask_yesno "Do you want to use the network settings from the installer in rc.conf and resolv.conf?\n\nIf you used Proxy settings, they will be written to /etc/profile.d/proxy.sh" || return 1
+
+#if [ $S_DHCP -ne 1 ]; then
+# auto_network
+#fi
+ \ No newline at end of file