#!/usr/bin/env bash # # Initial script for Live operating system # This script are launching before starting init from linux-live script. # Current dir allways must be set to root (/) # All system path must be relative, except initrd dirs ENABLED=yes [ "$ENABLED" != "yes" ] && exit 0 DEBUGMODE=no PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" [ -f etc/inittab ] && sed -i 's/id:.:initdefault:/id:5:initdefault:/' etc/inittab SYSCONF="${ROOTFS}/${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null switch3don(){ echo "COMPOSITING_SERVER_START=no" >${SYSCONF}/compositing-server #Gnome-shell does not supports compiz, so turn on it only in classic mode and only after desktop started if [ -x usr/bin/gnome-shell ] ;then echo -e "COMPOSITING_WM_START=no\nCOMPOSITING_WM=compiz-fusion" >${SYSCONF}/compositing-wm sed -i /COMPOSITING_WM_START/d ${SYSCONF}/config echo COMPOSITING_WM_START=yes >> ${SYSCONF}/config else echo -e "COMPOSITING_WM_START=yes\nCOMPOSITING_WM=compiz-fusion" >${SYSCONF}/compositing-wm fi # [ -f usr/lib/libDrakX/harddrake/autoconf.pm ] && sed -i 's/^ *Xconfig::glx::write({});$/# Xconfig::glx::write({});/' usr/lib/libDrakX/harddrake/autoconf.pm [ -f etc/xdg/kwinrc ] && sed -i s/^Enabled=.*/Enabled=false/ etc/xdg/kwinrc } switch3doff(){ echo "COMPOSITING_SERVER_START=no" >${SYSCONF}/compositing-server echo -e "COMPOSITING_WM_START=no\nCOMPOSITING_WM=compiz-fusion" >${SYSCONF}/compositing-wm sed -i /COMPOSITING_WM_START/d ${SYSCONF}/config # [ -f usr/lib/libDrakX/harddrake/autoconf.pm ] && sed -i 's/^# Xconfig::glx::write({});$/ Xconfig::glx::write({});/' usr/lib/libDrakX/harddrake/autoconf.pm [ -f etc/xdg/kwinrc ] && sed -i s/^Enabled=.*/Enabled=true/ etc/xdg/kwinrc } setupdm(){ if [ -f lib/systemd/system/$1.service ] ;then ln -sf /lib/systemd/system/$1.service etc/systemd/system/display-manager.service ln -sf /lib/systemd/system/graphical.target etc/systemd/system/default.target [[ -f ${SYSCONF}/desktop ]] && sed -i /DISPLAYMANAGER=/d ${SYSCONF}/desktop echo "DISPLAYMANAGER=${1%%-plymouth*}" >> ${SYSCONF}/desktop case ${1%%-plymouth*} in lightdm) # FIX lightdm-greater mkdir -p usr/libexec ln -sf /usr/lib/at-spi-bus-launcher usr/libexec/at-spi-bus-launcher ln -sf init usr/bin/systemd ;; esac fi } setupde(){ if [[ -f usr/share/xsessions/$1.desktop ]] ;then sed -i /DESKTOP=/d ${SYSCONF}/desktop echo "DESKTOP=$1" >> ${SYSCONF}/desktop # ln -sf $1.desktop usr/share/xsessions/default.desktop # cat > usr/share/xsessions/default.desktop <> ${SYSCONF}/desktop DESKTOP=none sed -i /DESKTOP=/d ${SYSCONF}/desktop echo "DESKTOP=$DESKTOP" >> ${SYSCONF}/desktop } [ "$(cmdline_parameter 3ddesktop)" ] && switch3don [ "$(cmdline_parameter no3ddesktop)" ] && switch3doff for i in $(cmdline_value desktop | tr , " " ) ;do case $i in 3d) switch3don ;; no3d) switch3doff ;; xfce) DESKTOP=xfce ;; kde) DESKTOP=kde4 ;; gnome) DESKTOP=gnome ;; gnome-shell|gnome3) DESKTOP=gnomeshell ;; lxde) DESKTOP=lxde ;; lxqt) DESKTOP=lxqt ;; i3) DESKTOP=i3 ;; steam) DESKTOP=steam ;; plasma) DESKTOP=plasma ;; mate) DESKTOP=mate ;; ukui) DESKTOP=ukui ;; none) DISPLAYMANAGER=none && DESKTOP=none ;; lightdm) DISPLAYMANAGER=lightdm ;; kdm) DISPLAYMANAGER=kdm ;; gdm) DISPLAYMANAGER=gdm ;; slim) DISPLAYMANAGER=slim ;; xdm) DISPLAYMANAGER=xdm ;; lxdm) DISPLAYMANAGER=lxdm ;; sddm) DISPLAYMANAGER=sddm ;; lan) sed -i s/ONBOOT=.*/ONBOOT=yes/ ${SYSCONF}/network-scripts/ifcfg-eth0 2>/dev/null ;; nolan) sed -i s/ONBOOT=.*/ONBOOT=no/ ${SYSCONF}/network-scripts/ifcfg-eth0 2>/dev/null ;; *) DESKTOP=${i,,} ;; esac done # Disable Display Manager [[ "${DESKTOP}" == "none" || "${DISPLAYMANAGER}" == "none" ]] && DESKTOP="none" && DISPLAYMANAGER="none" && disabledmde # Autodetect Display Manager [[ -z "${DISPLAYMANAGER}" ]] && for i in slim xdm lxdm kdm gdm sddm lightdm; do [[ -f lib/systemd/system/$i.service ]] && DISPLAYMANAGER=$i done [[ -f lib/systemd/system/${DISPLAYMANAGER}-plymouth.service ]] && setupdm ${DISPLAYMANAGER}-plymouth && rm -f lib/systemd/system/${DISPLAYMANAGER}.service || setupdm ${DISPLAYMANAGER} # Autodetect Display Environment # /usr/share/xsessions/*.desktop for X's sessions and /usr/share/wayland-sessions/*.desktop for Wayland's. [[ -z "${DESKTOP}" ]] && for i in i3 ukui steam lxde lxqt kde4 xfce mate gnome gnomeshell plasma; do [[ -f usr/share/wayland-sessions/$i.desktop ]] && DESKTOP=$i [[ -f usr/share/xsessions/$i.desktop ]] && DESKTOP=$i done setupde ${DESKTOP,,} [[ -z "${DISPLAYMANAGER}" && -z "${DESKTOP}" ]] && disabledmde # Autodetect FirstStart # Если пароли по умолчанию ublinux, то FirstStart grep -q "^root:${DEFAULTROOTPASSWD}:" etc/shadow && grep -q "^$(cat etc/passwd | grep ".*:x:${ADMUID}:" | cut -d: -f1):${DEFAULTPASSWD}:" etc/shadow && touch ${SYSCONF}/firststart || rm -f ${SYSCONF}/firststart # Set default user to Display Manager if [[ "${DISPLAYMANAGER}" == "lightdm" && ${DISPLAYMANAGER_DEFAULTUSER} ]]; then sed -i /DISPLAYMANAGER_DEFAULTUSER=/d ${SYSCONF}/desktop echo "DISPLAYMANAGER_DEFAULTUSER=${DISPLAYMANAGER_DEFAULTUSER}" >> ${SYSCONF}/desktop mkdir -p var/lib/lightdm/.cache/lightdm-gtk-greeter/ echo "[greeter]" > var/lib/lightdm/.cache/lightdm-gtk-greeter/state echo "last-user=${DISPLAYMANAGER_DEFAULTUSER}" >> var/lib/lightdm/.cache/lightdm-gtk-greeter/state chown -Rf 41:41 var/lib/lightdm/ chmod 1770 var/lib/lightdm/ chmod 755 var/lib/lightdm/.cache/lightdm-gtk-greeter/ chmod 644 var/lib/lightdm/.cache/lightdm-gtk-greeter/state fi