archboot/usr/bin/archboot-setup.sh

278 lines
8.5 KiB
Bash
Raw Normal View History

#!/bin/bash
2008-10-20 22:39:25 +02:00
ANSWER="/tmp/.setup"
# use the first VT not dedicated to a running console
2022-03-21 16:11:14 +01:00
# don't use DESTDIR=/mnt because it's intended to mount other things there!
# check first if bootet in archboot
2022-03-18 15:27:21 +01:00
if grep -qw archboot /etc/hostname; then
DESTDIR="/install"
2022-02-07 11:06:41 +01:00
LOG="/dev/tty7"
2022-03-18 15:27:21 +01:00
else
DESTDIR="/"
LOG="/dev/tty8"
fi
2008-10-20 22:39:25 +02:00
# install stages
2021-09-14 14:46:59 +02:00
S_SRC=0 # choose mirror
2008-10-20 22:39:25 +02:00
S_NET=0 # network configuration
S_MKFS=0 # formatting
2009-07-12 19:13:12 +02:00
S_MKFSAUTO=0 # auto fs part/formatting
2008-10-20 22:39:25 +02:00
S_CONFIG=0 # configuration editing
# menu item tracker- autoselect the next item
NEXTITEM=""
2022-03-22 08:10:56 +01:00
# To allow choice in script set EDITOR=""
EDITOR=""
2008-10-20 22:39:25 +02:00
2022-03-22 07:32:37 +01:00
. /usr/lib/archboot/installer/autoconfiguration.sh
. /usr/lib/archboot/installer/autoprepare.sh
. /usr/lib/archboot/installer/base.sh
. /usr/lib/archboot/installer/blockdevices.sh
. /usr/lib/archboot/installer/bootloader.sh
. /usr/lib/archboot/installer/btrfs.sh
. /usr/lib/archboot/installer/common.sh
. /usr/lib/archboot/installer/configuration.sh
. /usr/lib/archboot/installer/mountpoints.sh
. /usr/lib/archboot/installer/network.sh
. /usr/lib/archboot/installer/pacman.sh
. /usr/lib/archboot/installer/partition.sh
. /usr/lib/archboot/installer/storage.sh
2022-03-21 22:25:15 +01:00
set_keyboard() {
if [[ -e /usr/bin/km ]]; then
km --setup && NEXTITEM="1"
elif [[ -e /usr/bin/archboot-km.sh ]]; then
archboot-km.sh --setup && NEXTITEM="1"
else
2022-03-21 22:25:15 +01:00
DIALOG --msgbox "Error:\nkm script not found, aborting keyboard and console setting" 0 0
fi
}
2012-01-09 13:54:09 +01:00
select_source() {
2021-09-26 15:28:45 +02:00
NEXTITEM="2"
2022-03-19 17:04:30 +01:00
set_title
2022-03-18 14:51:50 +01:00
if [[ -e "${LOCAL_DB}" ]]; then
2022-03-18 14:50:21 +01:00
getsource || return 1
else
if [[ ${S_NET} -eq 0 ]]; then
check_nework || return 1
2022-03-18 14:50:21 +01:00
fi
[[ "${RUNNING_ARCH}" == "x86_64" ]] && dotesting
getsource || return 1
fi
NEXTITEM="3"
}
2012-01-09 13:54:09 +01:00
set_clock() {
2011-02-03 21:54:43 +01:00
if [[ -e /usr/bin/tz ]]; then
2021-09-26 15:28:45 +02:00
tz --setup && NEXTITEM="4"
2022-02-07 11:06:41 +01:00
elif [[ -e /usr/bin/archboot-tz.sh ]]; then
archboot-tz.sh --setup && NEXTITEM="4"
else
DIALOG --msgbox "Error:\ntz script not found, aborting clock setting" 0 0
fi
2008-10-20 22:39:25 +02:00
}
2012-10-08 09:14:16 +02:00
prepare_storagedrive() {
S_MKFSAUTO=0
S_MKFS=0
DONE=0
NEXTITEM=""
2021-10-16 09:06:06 +02:00
detect_
2011-02-04 14:34:11 +01:00
while [[ "${DONE}" = "0" ]]; do
if [[ -n "${NEXTITEM}" ]]; then
DEFAULT="--default-item ${NEXTITEM}"
else
DEFAULT=""
fi
CANCEL=""
2022-01-26 12:30:03 +01:00
#shellcheck disable=SC2086
2012-10-08 09:14:16 +02:00
dialog ${DEFAULT} --backtitle "${TITLE}" --menu "Prepare Storage Drive" 12 60 5 \
"1" "Auto-Prepare (erases the ENTIRE storage drive)" \
"2" "Partition Storage Drives" \
2022-01-27 08:27:19 +01:00
"3" "Manage Software Raid, Lvm2 and Luks encryption" \
"4" "Set Filesystem Mountpoints" \
2011-02-04 14:34:11 +01:00
"5" "Return to Main Menu" 2>${ANSWER} || CANCEL="1"
NEXTITEM="$(cat ${ANSWER})"
[[ "${S_MKFSAUTO}" = "1" ]] && DONE=1
case $(cat ${ANSWER}) in
"1")
2009-02-11 12:03:41 +01:00
autoprepare
2011-02-04 14:34:11 +01:00
[[ "${S_MKFSAUTO}" = "1" ]] && DONE=1
;;
"2")
partition ;;
"3")
create_special ;;
"4")
2009-02-11 22:31:52 +01:00
PARTFINISH=""
ASK_MOUNTPOINTS="1"
mountpoints ;;
*)
DONE=1 ;;
esac
done
2011-02-04 14:34:11 +01:00
if [[ "${CANCEL}" = "1" ]]; then
NEXTITEM="4"
2021-09-26 15:28:45 +02:00
else
NEXTITEM="5"
fi
}
2012-01-09 13:54:09 +01:00
configure_system() {
2011-06-10 16:57:49 +02:00
destdir_mounts || return 1
## PREPROCESSING ##
# only done on first invocation of configure_system and redone on canceled configure system
2011-02-04 14:34:11 +01:00
if [[ ${S_CONFIG} -eq 0 ]]; then
2013-07-12 12:10:40 +02:00
auto_pacman_mirror
auto_network
auto_parameters
auto_system_files
auto_hwdetect
fi
## END PREPROCESS ##
geteditor || return 1
FILE=""
# main menu loop
while true; do
S_CONFIG=0
2011-02-04 14:34:11 +01:00
if [[ -n "${FILE}" ]]; then
DEFAULT="--default-item ${FILE}"
else
DEFAULT=""
fi
2022-01-26 12:30:03 +01:00
#shellcheck disable=SC2086
2012-07-24 14:01:22 +02:00
DIALOG ${DEFAULT} --menu "Configuration" 21 80 16 \
"/etc/hostname" "System Hostname" \
"/etc/vconsole.conf" "Virtual Console" \
"/etc/locale.conf" "Locale Setting" \
"/etc/fstab" "Filesystem Mountpoints" \
"/etc/mkinitcpio.conf" "Initramfs Config" \
"/etc/modprobe.d/modprobe.conf" "Kernel Modules" \
"/etc/resolv.conf" "DNS Servers" \
"/etc/hosts" "Network Hosts" \
"/etc/locale.gen" "Glibc Locales" \
"/etc/pacman.d/mirrorlist" "Pacman Mirror List" \
"/etc/pacman.conf" "Pacman Config File" \
"Root-Password" "Set the root password" \
"Return" "Return to Main Menu" 2>${ANSWER} || break
2011-02-04 14:34:11 +01:00
FILE="$(cat ${ANSWER})"
if [[ "${FILE}" = "Return" || -z "${FILE}" ]]; then # exit
S_CONFIG=1
break
2011-02-04 14:34:11 +01:00
elif [[ "${FILE}" = "/etc/mkinitcpio.conf" ]]; then # non-file
2022-03-21 22:25:15 +01:00
set_mkinitcpio
2011-02-04 14:34:11 +01:00
elif [[ "${FILE}" = "/etc/locale.gen" ]]; then # non-file
2022-03-21 22:25:15 +01:00
set_locale
2011-02-04 14:34:11 +01:00
elif [[ "${FILE}" = "Root-Password" ]]; then # non-file
2022-03-21 22:25:15 +01:00
set_password
else #regular file
2022-01-22 19:33:03 +01:00
${EDITOR} "${DESTDIR}""${FILE}"
2009-02-11 12:03:41 +01:00
fi
done
2011-02-04 14:34:11 +01:00
if [[ ${S_CONFIG} -eq 1 ]]; then
# only done on normal exit of configure menu
## POSTPROCESSING ##
# adjust time
auto_timesetting
# /etc/initcpio.conf
run_mkinitcpio
locale_gen
## END POSTPROCESSING ##
NEXTITEM="7"
fi
2008-10-20 22:39:25 +02:00
}
install_bootloader_menu() {
2022-01-05 14:45:36 +01:00
if [[ "${RUNNING_ARCH}" == "aarch64" ]]; then
ANSWER="UEFI"
else
DIALOG --menu "What is your boot system type?" 10 40 2 \
"UEFI" "UEFI" \
"BIOS" "BIOS" 2>${ANSWER} || CANCEL=1
case $(cat ${ANSWER}) in
"UEFI") install_bootloader_uefi ;;
"BIOS") install_bootloader_bios ;;
esac
fi
2011-02-04 14:34:11 +01:00
if [[ "${CANCEL}" = "1" ]]; then
NEXTITEM="7"
2012-07-26 14:33:41 +02:00
else
NEXTITEM="8"
fi
2008-10-20 22:39:25 +02:00
}
mainmenu() {
2011-02-04 14:34:11 +01:00
if [[ -n "${NEXTITEM}" ]]; then
DEFAULT="--default-item ${NEXTITEM}"
else
DEFAULT=""
fi
2022-01-26 12:30:03 +01:00
#shellcheck disable=SC2086
2011-02-04 14:34:11 +01:00
dialog ${DEFAULT} --backtitle "${TITLE}" --title " MAIN MENU " \
2012-07-26 14:33:41 +02:00
--menu "Use the UP and DOWN arrows to navigate menus.\nUse TAB to switch between buttons and ENTER to select." 18 58 14 \
"0" "Set Keyboard And Console Font" \
2012-07-26 14:33:41 +02:00
"1" "Set up Network" \
2021-09-26 15:28:45 +02:00
"2" "Select Source" \
"3" "Set Time And Date" \
"4" "Prepare Storage Drive" \
"5" "Install Packages" \
"6" "Configure System" \
"7" "Install Bootloader" \
"8" "Exit Install" 2>${ANSWER}
2011-02-04 14:34:11 +01:00
NEXTITEM="$(cat ${ANSWER})"
case $(cat ${ANSWER}) in
"0")
set_keyboard ;;
"1")
2012-07-26 14:33:41 +02:00
donetwork ;;
"2")
select_source
update_environment ;;
"3")
2021-09-26 15:28:45 +02:00
set_clock ;;
"4")
2021-09-26 15:28:45 +02:00
prepare_storagedrive ;;
"5")
2012-07-26 14:33:41 +02:00
install_packages ;;
"6")
2012-07-26 14:33:41 +02:00
configure_system ;;
"7")
2012-07-26 14:33:41 +02:00
install_bootloader ;;
"8")
[[ -e /tmp/.setup-running ]] && rm /tmp/.setup-running
clear
echo ""
echo "If the install finished successfully, you can now type 'reboot'"
echo "to restart the system."
echo ""
exit 0 ;;
*)
DIALOG --yesno "Abort Installation?" 6 40 && [[ -e /tmp/.setup-running ]] && rm /tmp/.setup-running && clear && exit 0
;;
esac
2008-10-20 22:39:25 +02:00
}
#####################
## begin execution ##
if [[ -e /tmp/.setup-running ]]; then
echo "HINT:"
echo "setup already runs on a different console!"
echo "Please remove /tmp/.setup-running first to launch setup!"
exit 1
2009-02-11 12:03:41 +01:00
fi
: >/tmp/.setup-running
2008-10-20 22:39:25 +02:00
: >/tmp/.setup
2022-03-19 17:04:30 +01:00
set_title
DIALOG --msgbox "Welcome to the Arch Linux Installation program.\n\nThe install process is fairly straightforward, and you should run through the options in the order they are presented.\n\nIf you are unfamiliar with partitioning/making filesystems, you may want to consult some documentation before continuing.\n\nYou can view all output from commands by viewing your VC7 console (ALT-F7). ALT-F1 will bring you back here." 14 65
2008-10-20 22:39:25 +02:00
while true; do
mainmenu
2008-10-20 22:39:25 +02:00
done
clear
exit 0
2009-07-30 18:42:45 +02:00
# vim: set ts=4 sw=4 et: