# openmamba mambawelcome script # Copyright (c) 2007-2011 by Silvan Calarco # # Released under the terms of the GNU GPLv3 License # VERSION=1.1 TEXTDOMAIN=mambawelcome TEXTDOMAINDIR=/opt/kde3/share/locale/ INSTALL_DATE=`date +%Y%m%d-%H%M` INPUT_FILE=/root/.installer.conf LOG_FILE=/var/log/mambawelcome-$INSTALL_DATE.log KERNEL_RELEASE=`uname -r` DCOP=/opt/kde3/bin/dcop function abort() { [ "$DCOPID" ] && { $DCOP $DCOPID KommanderIf setText progressText $"Installation aborted; press Next to see the error log." $DCOP $DCOPID KommanderIf setText finallabel $"Installation aborted :-(" $DCOP $DCOPID KommanderIf setEnabled next true } exit 1 } function dcop_write() { [ "$DCOPID" ] && { $DCOP $DCOPID KommanderIf setText progressText "$1" $DCOP $DCOPID KommanderIf setText progressBar $2 } } [ "$1" = "-y" ] || { echo $"Warning: this script is intended to be run by mambawelcome.kmdr." echo $" Use $0 -y to actually start the operation." exit 0 } DCOPID=$2 echo $"\ openmamba mambawelcome script - version $VERSION Copyright (c) 2007-2010 by Silvan Calarco " dcop_write $"Configuring..." 5 [ -r $INPUT_FILE ] || { echo $"Error: cannot read input file $INPUT_FILE; aborting." >&2 abort } . $INPUT_FILE # now remove sensible information from input file sed -i "/^INSTALL_ROOT_PASSWORD=.*/d" $INPUT_FILE sed -i "/^INSTALL_USER_PASSWORD=.*/d" $INPUT_FILE # restore original kde config location [ -L /opt/kde/share/config ] && { rm -f /opt/kde/share/config mkdir -p /opt/kde/share/config mv /etc/opt/kde/* /opt/kde/share/config/ rmdir /etc/opt/kde ln -s ../../opt/kde/share/config /etc/opt/kde } dcop_write $"Configuring users and host..." 50 echo $"Configuring users and host" | tee -a $LOG_FILE # configure user [ "$INSTALL_USER" ] && { useradd $INSTALL_USER \ -c "$INSTALL_USER_FULLNAME" \ -G audio,filesharing,sysadmin,packager,lpadmin,video,nopermfs || { echo $"Error: could not create user; skipping." | tee -a $LOG_FILE } sh -c "echo $INSTALL_USER_PASSWORD | passwd $INSTALL_USER --stdin" || { echo $"Error: could not set user password; aborting." | tee -a $LOG_FILE abort } # configure user for autologin if [ "$INSTALL_USER_AUTOLOGIN" = "1" ]; then echo $"Info: enabling user autologin" | tee -a $LOG_FILE [ -e /opt/kde/share/config/kdm/kdmrc ] && { sed -i "s|AutoLoginEnable=.*|AutoLoginEnable=true|" \ /opt/kde/share/config/kdm/kdmrc sed -i "s|AutoLoginUser=.*|AutoLoginUser=$INSTALL_USER|" \ /opt/kde/share/config/kdm/kdmrc } [ -e /etc/lxdm/lxdm.conf ] && { sed -i "s|[#[:space:]]*autologin=.*|autologin=$INSTALL_USER|" \ /etc/lxdm/lxdm.conf } [ -e /etc/gdm/custom.conf ] && { sed -i "s|[#[:space:]]*AutomaticLogin=.*|AutomaticLogin=$INSTALL_USER|" \ /etc/gdm/custom.conf sed -i "s|AutomaticLoginEnable=.*|AutomaticLoginEnable=true|" \ /etc/gdm/custom.conf } else [ -e /opt/kde/share/config/kdm/kdmrc ] && sed -i "s|AutoLoginEnable=.*|AutoLoginEnable=false|" \ /opt/kde/share/config/kdm/kdmrc [ -e /etc/lxdm/lxdm.conf ] && sed -i "s|[#[:space:]]*\(autologin.*\)|#\1|" \ /etc/lxdm/lxdm.conf [ -e /etc/gdm/custom.conf ] && sed -i "s|AutomaticLoginEnable=.*|AutomaticLoginEnable=false|" \ /etc/gdm/custom.conf fi # pre-create user homedir (currently just needed to put TODO txt files on # desktop) cp -a /etc/skel /home/$INSTALL_USER #mkdir /home/$INSTALL_USER/Desktop chmod 711 /home/$INSTALL_USER #cp /usr/share/openmamba/installer/*.txt /home/$INSTALL_USER/Desktop/ mkdir -p /home/$INSTALL_USER/.kde4/Autostart cp /usr/share/openmamba/mambabase/mambabase-autostart.desktop /home/$INSTALL_USER/.kde4/Autostart/mambabase.desktop chmod 711 /home/$INSTALL_USER/.kde4/Autostart/mambabase.desktop # create home kde configuration directory mkdir -p /home/$INSTALL_USER/.kde4/share/config # copy global settings for localizations [ -e /root/.kde4/share/config/kdeglobals ] && \ cp /root/.kde4/share/config/kdeglobals /home/$INSTALL_USER/.kde4/share/config/ [ -e /root/.kde4/share/config/kxkbrc ] && \ cp /root/.kde4/share/config/kxkbrc /home/$INSTALL_USER/.kde4/share/config/ # disable ktip on startup cat > /home/$INSTALL_USER/.kde4/share/config/ktiprc << _EOF [TipOfDay] RunOnStart=false _EOF # set user permissions chown "$INSTALL_USER".users /home/$INSTALL_USER -R } # set root password sh -c "echo $INSTALL_ROOT_PASSWORD | passwd --stdin" || { echo $"Error: could not set user password; aborting." | tee -a $LOG_FILE abort } # set hostname and domain [[ "$INSTALL_HOSTNAME" ]] && { hostname $INSTALL_HOSTNAME sed -i "s|HOSTNAME=.*|HOSTNAME=$INSTALL_HOSTNAME|" \ /etc/sysconfig/network [[ "$INSTALL_DOMAIN" ]] || INSTALL_DOMAIN="localdomain" sed -i "s|\(127\.0\.0\.1\W*\)\(.*\)|\1 $INSTALL_HOSTNAME.$INSTALL_DOMAIN $INSTALL_HOSTNAME localhost.localdomain localhost|" \ /etc/hosts } # set samba configuration file [[ "$INSTALL_WORKGROUP" ]] && { sed -i "s|workgroup =.*|workgroup = $INSTALL_WORKGROUP|" /etc/samba/smb.conf sed -i "s|netbios name =.*|netbios name = $INSTALL_HOSTNAME|" /etc/samba/smb.conf } # update grub device mappings and config /usr/sbin/grub-mkdevicemap -n /usr/sbin/update-grub # configure suspend (from suspend rpm post script) and recreate mkinitramfs grep path_to_resume_device_file /etc/suspend.conf && { SWAPLINE=`/sbin/swapon -s |grep -m1 ^/dev/` SWAPDEV=${SWAPLINE/ */} [ $SWAPDEV ] && sed -i "s||$SWAPDEV|" /etc/suspend.conf } KERNEL_RELEASE=`uname -r` #mkinitramfs /boot/initramfs-$KERNEL_RELEASE.img $KERNEL_RELEASE -f dcop_write $"Installation completed." 100 [ "$DCOPID" ] && $DCOP $DCOPID KommanderIf setEnabled next true echo $"Installation done." | tee -a $LOG_FILE exit 0