manjaro-tools/livecd/setup
udeved 04ccb3cb09 copy util.sh to livecd at build;
use load_config on livecd
2014-12-09 02:29:48 +01:00

237 lines
7.9 KiB
Bash
Executable file

#!/bin/bash
# installer wrapper
TITLE="Manjaro Linux Installation Framework (v0.8.7)"
_yes="Yes"
_no="No"
_cancel="Cancel"
ANSWER="/tmp/.setup"
# main menu selection tracker
CURRENT_SELECTION=""
[[ -r /opt/livecd/util-config.sh ]] && source /opt/livecd/util-config.sh
load_config "/opt/livecd/manjaro-tools.conf"
[[ -r /opt/livecd/util-mount.sh ]] && source /opt/livecd/util-mount.sh
[[ -r /opt/livecd/util-inst.sh ]] && source /opt/livecd/util-inst.sh
[[ -r /opt/livecd/util-lng.sh ]] && source /opt/livecd/util-lng.sh
[[ -r /opt/livecd/util.sh ]] && source /opt/livecd/util.sh
# check if we have a internet connection
ping_check=$(LC_ALL=C ping -c 1 www.manjaro.org | grep "1 received")
# list all net devices with mac adress
net_interfaces() {
for i in $(ls /sys/class/net); do
echo "$i $(cat /sys/class/net/$i/address)"
done
}
# donetwork()
# Hand-hold through setting up networking
#
# args: none
# returns: 1 on failure
donetwork() {
NETPARAMETERS=""
while [[ "${NETPARAMETERS}" = "" ]]; do
# select network interface
INTERFACE=
S_DHCP=
ifaces=$(net_interfaces)
while [[ "${INTERFACE}" = "" ]]; do
DIALOG --ok-label "Select" --menu "Select a network interface" 14 55 7 ${ifaces} 2>${ANSWER}
case $? in
1) return 1 ;;
0) INTERFACE=$(cat ${ANSWER}) ;;
esac
done
# wireless switch
CONNECTION=""
WLAN_HIDDEN=""
WLAN_HEX=""
WLAN_ESSID=""
WLAN_SECURITY=""
WLAN_KEY=""
DIALOG --defaultno --yesno "Is your network device wireless?" 5 40
if [[ $? -eq 0 ]]; then
CONNECTION="wireless"
DIALOG --defaultno --yesno "Is your wireless ESSID hexadecimal?" 5 40
[[ $? -eq 0 ]] && WLAN_HEX="yes"
DIALOG --inputbox "Enter your ESSID" 7 40 "MyNetwork" 2>${ANSWER} || return 1
WLAN_ESSID=$(cat ${ANSWER})
DIALOG --defaultno --yesno "Is your wireless network hidden?" 5 40
[[ $? -eq 0 ]] && WLAN_HIDDEN="yes"
DIALOG --yesno "Is your wireless network encrypted?" 5 40
if [[ $? -eq 0 ]]; then
while [[ "${WLAN_SECURITY}" = "" ]]; do
DIALOG --ok-label "Select" --menu "Select encryption type" 9 40 7 \
"wep" "WEP encryption" \
"wpa" "WPA encryption" 2>${ANSWER}
case $? in
1) return 1 ;;
0) WLAN_SECURITY=$(cat ${ANSWER}) ;;
esac
done
DIALOG --inputbox "Enter your KEY" 5 40 "WirelessKey" 2>${ANSWER} || return 1
WLAN_KEY=$(cat ${ANSWER})
else
WLAN_SECURITY="open"
fi
else
CONNECTION="ethernet"
fi
# dhcp switch
IP=""
DHCLIENT=""
DIALOG --yesno "Do you want to use DHCP?" 5 40
if [[ $? -eq 0 ]]; then
IP="dhcp"
DIALOG --defaultno --yesno "Do you want to use dhclient instead of dhcpcd?" 5 55
[[ $? -eq 0 ]] && DHCLIENT="yes"
S_DHCP=1
else
IP="static"
DIALOG --inputbox "Enter your IP address" 7 40 "192.168.1.23" 2>${ANSWER} || return 1
IPADDR=$(cat ${ANSWER})
DIALOG --inputbox "Enter your gateway" 7 40 "192.168.1.1" 2>${ANSWER} || return 1
GW=$(cat ${ANSWER})
DIALOG --inputbox "Enter your DNS server IP" 7 40 "192.168.1.1" 2>${ANSWER} || return 1
DNS=$(cat ${ANSWER})
fi
DIALOG --yesno "Are these settings correct?\n\nInterface: ${INTERFACE}\nConnection: ${CONNECTION}\nESSID in hexadecimal: ${WLAN_HEX}\nESSID: ${WLAN_ESSID}\nHidden: ${WLAN_HIDDEN}\nEncryption: ${WLAN_SECURITY}\nKey: ${WLAN_KEY}\ndhcp or static: ${IP}\nUse dhclient: ${DHCLIENT}\nIP address: ${IPADDR}\nGateway: ${GW}\nDNS server: ${DNS}" 0 0
case $? in
1) ;;
0) NETPARAMETERS="1" ;;
esac
done
# profile name
NETWORK_PROFILE=""
DIALOG --inputbox "Enter your network profile name" 7 40 "${INTERFACE}-${CONNECTION}" 2>${ANSWER} || return 1
NETWORK_PROFILE=/etc/network.d/$(cat ${ANSWER})
# write profile
echo "CONNECTION='${CONNECTION}'" >${NETWORK_PROFILE}
echo "DESCRIPTION='$NETWORK_PROFILE generated by manjaro setup'" >>${NETWORK_PROFILE}
echo "INTERFACE='${INTERFACE}'" >>${NETWORK_PROFILE}
if [[ "${CONNECTION}" = "wireless" ]]; then
echo "SECURITY='${WLAN_SECURITY}'" >>${NETWORK_PROFILE}
[[ "${WLAN_HEX}" = "yes" ]] && echo "ESSID_TYPE='hex'" >>${NETWORK_PROFILE}
echo "ESSID='${WLAN_ESSID}'" >>${NETWORK_PROFILE}
echo "KEY='${WLAN_KEY}'" >>${NETWORK_PROFILE}
[[ "${WLAN_HIDDEN}" = "yes" ]] && echo "HIDDEN=yes" >>${NETWORK_PROFILE}
fi
echo "IP='${IP}'" >>${NETWORK_PROFILE}
if [[ "${IP}" = "dhcp" ]]; then
[[ "${DHCLIENT}" = "yes" ]] && echo "DHCLIENT=yes" >>${NETWORK_PROFILE}
else
echo "ADDR='${IPADDR}'" >>${NETWORK_PROFILE}
echo "GATEWAY='${GW}'" >>${NETWORK_PROFILE}
echo "DNS=('${DNS}')" >>${NETWORK_PROFILE}
fi
# run netcfg
netcfg -r $(basename ${NETWORK_PROFILE}) >${LOG}
if [[ $? -gt 0 ]]; then
DIALOG --msgbox "Error occured while running netcfg. (see ${LOG} for output)" 0 0
return 1
fi
# http/ftp proxy settings
DIALOG --inputbox "Enter your HTTP proxy server, for example:\nhttp://name:port\nhttp://ip:port\nhttp://username:password@ip:port\n\n Leave the field empty if no proxy is needed to install." 13 65 "" 2>${ANSWER} || return 1
PROXY_HTTP=$(cat ${ANSWER})
DIALOG --inputbox "Enter your FTP proxy server, for example:\nhttp://name:port\nhttp://ip:port\nhttp://username:password@ip:port\n\n Leave the field empty if no proxy is needed to install." 13 65 "" 2>${ANSWER} || return 1
PROXY_FTP=$(cat ${ANSWER})
if [[ "${PROXY_HTTP}" = "" ]]; then
unset http_proxy
else
export http_proxy=${PROXY_HTTP}
fi
if [[ "${PROXY_FTP}" = "" ]]; then
unset ftp_proxy
else
export ftp_proxy=${PROXY_FTP}
fi
DIALOG --msgbox "The network is configured." 8 30
NEXTITEM="2"
S_NET=1
}
mainmenu()
{
if [ -n "$CURRENT_SELECTION" ]; then
DEFAULT="--default-item $CURRENT_SELECTION"
else
DEFAULT=""
fi
DIALOG $DEFAULT --title " ${_mainmenulabel} " \
--menu "${_mainmenuhelp}" 16 55 8 \
"1" "${_stableinstaller}" \
"2" "${_testinginstaller}" \
"3" "${_quittext}" 2>$ANSWER
CURRENT_SELECTION="$(cat $ANSWER)"
case $(cat $ANSWER) in
"1")
DIALOG --infobox "${_loadinginstaller}" 6 40
/opt/livecd/setup-0.8
exit 0
;;
"2")
DIALOG --infobox "${_loadinginstaller}" 6 40
/opt/livecd/setup-0.9
exit 0
;;
"3")
if DIALOG --yesno "${_exitwrapper}" 6 40;then
exit 0
fi
;;
*)
if DIALOG --yesno "${_cancelwrapper}" 6 40;then
exit 0
fi
;;
esac
}
#####################
## begin execution ##
# do UID checking here so someone can at least get usage instructions
if [ "$EUID" != "0" ]; then
echo "error: This script must be run as root."
exit 1
fi
# force to use english
export LANG=en_US.UTF-8
export LC_MESSAGES=en_US.UTF-8
LOCALE=$(get_country)
# Translation
# English
source /opt/livecd/setup-en.lng
# Turkish
if [ "${LOCALE}" = "tr_TR" ]; then
source /opt/livecd/setup-tr.lng
fi
# check for pv
if [ ! -e /usr/bin/pv ]; then
if [ "${ping_check}" != "" ]; then
pacman -Sy pv --noconfirm &> /dev/null
else
DIALOG --msgbox "Package 'pv' is missing. Connect your PC to the Internet and restart the installer!" 12 65
fi
fi
DIALOG --msgbox "${_wrapperwelcomemessage}" 12 65
while true; do
mainmenu
done
exit 0