#!/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