235 lines
7.8 KiB
Bash
Executable file
235 lines
7.8 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=""
|
|
|
|
source /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
|