diff options
Diffstat (limited to 'hooks-addons/50xorg')
-rw-r--r-- | hooks-addons/50xorg | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/hooks-addons/50xorg b/hooks-addons/50xorg new file mode 100644 index 0000000..b99b9aa --- /dev/null +++ b/hooks-addons/50xorg @@ -0,0 +1,401 @@ +# hooks addon of Xorg +# compatible with Xorg 7.x + + +if [ -z "$TCOS_XFBDEV" ] && [ $TCOS_XORG ]; then +# Xorg stuff + stat_before +if [ "$(pathof Xorg)" = /usr/bin/Xorg ]; then + XORG=7 + #_echo " USING Xorg 7.X dirs" + XORG_PATH=/usr/bin +else + _echo " **ERROR** Xorg not found" + exit +fi + + +cpifexists $XORG_PATH/Xorg /usr/bin +cpifexists $XORG_PATH/xauth /usr/bin +cpifexists $XORG_PATH/mcookie /usr/bin +cpifexists $XORG_PATH/xhost /usr/bin +cpifexists $XORG_PATH/xterm /usr/bin +if [ -e $XORG_PATH/twm ]; then + cpifexists $XORG_PATH/twm /usr/bin +else + _echo " WARNING: twm package not found" +fi + +# some xutils +cpifexists $XORG_PATH/xset /usr/bin +cpifexists $XORG_PATH/xsetroot /usr/bin +cpifexists $XORG_PATH/sessreg /usr/bin +cpifexists $XORG_PATH/xkbcomp /usr/bin + +# bin to wait until Xorg is started +cpifexists ${TCOS_BINS}/waitforX /usr/bin/ + + +cpifexists ${TCOS_BINS}/get_vga_vendor /usr/bin/ + +mkdir -p $DESTDIR/var/log +mkdir -p $DESTDIR/etc/X11/xserver +mkdir -p $DESTDIR/etc/X11/PreRun +mkdir -p $DESTDIR/etc/X11/xserver/ + + +# copy xorg.conf template and generator +cp ${TCOS_CONF}/xorg.conf.tpl ${DESTDIR}/conf/xorg.conf.tpl +install -m 755 ${TCOS_BINS}/configurexorg ${DESTDIR}/sbin/configurexorg +install -m 755 ${TCOS_BINS}/tryXorg.sh ${DESTDIR}/sbin/tryXorg + + +# new xorg.conf.d configuration files +XORG_CONF_PATH=/usr/lib/X11/xorg.conf.d/ +[ -d /usr/share/X11/xorg.conf.d ] && XORG_CONF_PATH=/usr/share/X11/xorg.conf.d/ + +for f in $(find $XORG_CONF_PATH -type f 2>/dev/null); do + mkdir -p $DESTDIR/$XORG_CONF_PATH + cp $f $DESTDIR/$XORG_CONF_PATH +done + + +# include xorg PCI IDS file +mkdir -p ${DESTDIR}/usr/share/xserver-xorg/pci/ +cpifexists ${TCOS_DIR}/inc/xorg.pciids /usr/share/xserver-xorg/pci/ + +mkdir -p $DESTDIR/usr/lib/xorg/modules/ + +# new in xorg 1.5 +[ -e /usr/lib/xorg/protocol.txt ] && cpifexists /usr/lib/xorg/protocol.txt /usr/lib/xorg/ + +# FONTS modules +[ -d /usr/lib/xorg/modules/fonts ] && copydir /usr/lib/xorg/modules/fonts /usr/lib/xorg/modules/ + + +if [ -d /usr/share/fonts/X11 ]; then + TCOS_FONTS_PATH="/usr/share/fonts/X11" + TCOS_FONT_EXTENSION=".gz" + +elif [ ! -L /usr/lib/X11/fonts ]; then + TCOS_FONTS_PATH="/usr/lib/X11/fonts" + TCOS_FONT_EXTENSION="" + + +else + _echo "" + _echo "ERROR: Cant' locate fonts dir, XFS is deprecated, BUG!!!" + _echo "" + TCOS_FONTS_PATH="" + exit +fi + + +if [ "$TCOS_FONTS_PATH" != "" ]; then + mkdir -p $DESTDIR/$TCOS_FONTS_PATH/misc + mkdir -p $DESTDIR/$TCOS_FONTS_PATH/100dpi + + cat << EOF > $DESTDIR/$TCOS_FONTS_PATH/misc/fonts.alias +fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 +7x14 -misc-fixed-medium-r-semicondensed--14-120-75-75-c-60-iso8859-1 +EOF + cpifexists $TCOS_FONTS_PATH/misc/6x13-ISO8859-1.pcf${TCOS_FONT_EXTENSION} $TCOS_FONTS_PATH/misc + cpifexists $TCOS_FONTS_PATH/misc/cursor.pcf${TCOS_FONT_EXTENSION} $TCOS_FONTS_PATH/misc + mkfontdir $DESTDIR/$TCOS_FONTS_PATH/misc + + cpifexists $TCOS_FONTS_PATH/100dpi/helvB24-ISO8859-1.pcf${TCOS_FONT_EXTENSION} $TCOS_FONTS_PATH/100dpi + cpifexists $TCOS_FONTS_PATH/100dpi/helvB08-ISO8859-1.pcf${TCOS_FONT_EXTENSION} $TCOS_FONTS_PATH/100dpi + mkfontdir $DESTDIR/$TCOS_FONTS_PATH/100dpi +fi + +# PCIIDS +if [ -d /usr/share/xserver-xorg/pci ] ; then + mkdir -p $DESTDIR/usr/share/xserver-xorg/ + copydir /usr/share/xserver-xorg/pci /usr/share/xserver-xorg/ +fi + + +# MODULES +mkdir -p $DESTDIR/usr/lib/xorg/modules/input/ + +for _ext in $(ls /usr/lib/xorg/modules/lib*so); do + cpifexists $_ext /usr/lib/xorg/modules/ +done + +for _inp in $(ls /usr/lib/xorg/modules/input/*); do + cpifexists $_inp /usr/lib/xorg/modules/input/ +done + +if [ -d /usr/lib/xorg/modules/linux ]; then + mkdir -p $DESTDIR/usr/lib/xorg/modules/linux + + for _lnx in $(ls /usr/lib/xorg/modules/linux/lib*so); do + cpifexists $_lnx /usr/lib/xorg/modules/linux/ + done +fi + +# DRIVERS and EXTENSIONS +mkdir -p $DESTDIR/usr/lib/xorg/modules/drivers +# essential xorg driver +cpifexists /usr/lib/xorg/modules/drivers/vesa_drv.so /usr/lib/xorg/modules/drivers/ + + +if [ $TCOS_XORG_ALLDRIVERS ]; then + driver_dir=/usr/lib/xorg/modules/drivers + _echo " Xorg: installing all drivers..." + for _drv in $(ls ${driver_dir}/*so|grep -v -e nvidia -e vmware -e vbox); do + cpifexists $_drv ${driver_dir}/ + done + rm -f $DESTDIR/${driver_dir}/nvidia_drv.so +fi + +mkdir -p $DESTDIR/usr/lib/xorg/modules/extensions +# copy linked libs +for _file in $(ls /usr/lib/xorg/modules/extensions/lib*.so| grep -v glx); do + cpifexists $_file /usr/lib/xorg/modules/extensions/ +done + +# delete nvidia/ati glx module +rm -f $DESTDIR/usr/lib/xorg/modules/extensions/libglx.so* +rm -f $DESTDIR/usr/lib/xorg/modules/libwfb.so +rm -f $DESTDIR/usr/lib/xorg/modules/libnvidia-wfb.so.* +rm -rf $DESTDIR/usr/lib/xorg/modules/extensions/libGLcore.so +rm -rf $DESTDIR/usr/lib/libnvidia-* +# for multiarch +rm -rf $DESTDIR/usr/lib/*/libnvidia-* + +# delete linked nvidia driver (10Mb) +rm -f $DESTDIR/usr/lib/libGL* + +LIBGL_PATH=/usr/lib/ +if [ -e /usr/lib/mesa/libGL.so.1 ]; then + LIBGL_PATH=/usr/lib/mesa/ +fi + +# multiarch support +[ -e $LIB_MULTIARCH/libGL.so.1 ] && LIBGL_PATH=$LIB_MULTIARCH +[ -e $LIB_MULTIARCH/mesa/libGL.so.1 ] && LIBGL_PATH=$LIB_MULTIARCH/mesa/ + +# delete vnc extension +rm -f $DESTDIR/usr/lib/xorg/modules/extensions/libvnc.so + +if [ $TCOS_XORG_OPENGL ]; then + _echo " * OpenGL support is ENABLED" + if [ "$(strings $LIBGL_PATH/libGL.so.1|grep -c NVIDIA)" != 0 ] || \ + [ "$(strings /usr/lib/xorg/modules/extensions/libglx.so 2>&1 |grep -c NVIDIA)" != 0 ] || \ + [ "$(strings $LIBGL_PATH/libGL.so.1|grep -c -i fgl)" != 0 ]; then + + if [ -d ${TCOS_PKG_CACHE}/fix-nvidia-ati ]; then + rm -rf $DESTDIR/usr/lib/xorg/modules/libglx.so* + rm -f $DESTDIR/usr/lib/xorg/modules/libnvidia-wfb.so.* + [ -e ${TCOS_PKG_CACHE}/fix-nvidia-ati/libGLcore.so ] && \ + cpifexists ${TCOS_PKG_CACHE}/fix-nvidia-ati/libGLcore.so /usr/lib/xorg/modules/extensions/ + + cpifexists ${TCOS_PKG_CACHE}/fix-nvidia-ati/libglx.so /usr/lib/xorg/modules/extensions/ + cpifexists ${TCOS_PKG_CACHE}/fix-nvidia-ati/libGL.so.1.2 /usr/lib/ + [ -e /usr/lib/libGLU.so.1 ] && cpifexists /usr/lib/libGLU.so.1 /usr/lib/ + [ -f ${TCOS_PKG_CACHE}/fix-nvidia-ati/libwfb.so ] && \ + cpifexists ${TCOS_PKG_CACHE}/fix-nvidia-ati/libwfb.so /usr/lib/xorg/modules/ + _echo " * OpenGL use cached fix-nvidia-ati libs" + else + _echo " ********************************************** " + _echo " WARNING: NVIDIA/ATI libs found !!!!!! " + _echo " " + _echo " Please fix with: gentcos -fix-nvidia-ati " + _echo " or uninstall nvidia/ati drivers " + _echo " " + _echo " OpenGL support will not work on thin clients " + _echo " ********************************************** " + fi + + else + cpifexists /usr/lib/xorg/modules/extensions/libglx.so /usr/lib/xorg/modules/extensions/ + [ -e /usr/lib/xorg/modules/extensions/libGLcore.so ] && \ + cpifexists /usr/lib/xorg/modules/extensions/libGLcore.so /usr/lib/xorg/modules/extensions/ + cpifexists $LIBGL_PATH/libGL.so.1 /usr/lib/ + [ -e /usr/lib/libGLcore.so.1 ] && cpifexists /usr/lib/libGLcore.so.1 /usr/lib/ + [ -e /usr/lib/libGLU.so.1 ] && cpifexists /usr/lib/libGLU.so.1 /usr/lib/ + fi # end of NVIDIA/ATI strings + +if [ -e $DESTDIR/usr/lib/libGL.so.1 ];then + if [ "$(strings $DESTDIR/usr/lib/libGL.so.1|grep -c NVIDIA)" != 0 ] || \ + [ "$(strings $DESTDIR/usr/lib/libGL.so.1|grep -c -i fgl)" != 0 ]; then + rm -rf $DESTDIR/usr/lib/libGL.so.1 + fi +fi + +if [ -e $DESTDIR/usr/lib/libGLcore.so.1 ];then + if [ "$(strings $DESTDIR/usr/lib/libGLcore.so.1|grep -c NVIDIA)" != 0 ] || \ + [ "$(strings $DESTDIR/usr/lib/libGLcore.so.1|grep -c -i fgl)" != 0 ]; then + rm -rf $DESTDIR/usr/lib/libGLcore.so.1 + fi +fi + +else +_echo " * OpenGL support is not enabled!!" +fi # end of $TCOS_XORG_OPENGL + + +# keyboard and keymap + +XORG_XKB_DIR=/usr/share/X11/xkb/ +[ ! -d "${XORG_XKB_DIR}" ] && XORG_XKB_DIR=/etc/X11/xkb/ +mkdir -p ${DESTDIR}/usr/share/X11 + +# copy all dir (some files not needed) +cp -ra ${XORG_XKB_DIR} ${DESTDIR}/usr/share/X11 + +# delete symlinks +find ${DESTDIR}/usr/share/X11/ -type l | xargs rm -f -- + +# keymap DB +[ -e /usr/share/X11/XKeysymDB ] && cpifexists /usr/share/X11/XKeysymDB /usr/share/X11/ + + + + +# xorg locale +mkdir -p $DESTDIR/usr/share/locale +mkdir -p $DESTDIR/usr/lib/X11 +[ -d /usr/lib/X11/locale ] && copydir /usr/lib/X11/locale/ /usr/lib/X11/ +#copydir /usr/lib/X11/config/ /usr/lib/X11/ +[ -e /etc/X11/rgb.txt ] && cpifexists /etc/X11/rgb.txt /etc/X11/ + + + +stat_after "Xorg" + +fi # end of TCOS_XORG +############### XORG SCRIPTS #################### + + + + + + +cat <<EOF > $DESTDIR/sbin/killX +#!/bin/sh +echo \"killing xorg process...\" +killall Xorg 2>/dev/null +EOF +chmod +x $DESTDIR/sbin/killX + +cat <<EOF > $DESTDIR/sbin/restartxorg +#!/bin/sh + +killall Xorg 2>/dev/null + +EOF +chmod +x $DESTDIR/sbin/restartxorg + + +cat <<EOF > $DESTDIR/sbin/startlocalx +#!/bin/sh +export DISPLAY=:0 +export HOME=/root + +if [ -f \$XAUTHORITY ]; then + TCOS_XORG_OPTS="\$TCOS_XORG_OPTS -auth \$XAUTHORITY" +fi + +/sbin/tryXorg --xorgopts="\${TCOS_XORG_OPTS}" & + +waitforX || exit +sleep 1 + +xterm >> /tmp/initramfs.debug 2>&1 & +twm >> /tmp/initramfs.debug 2>&1 & + +# set background color +xsetroot -cursor_name left_ptr -solid "#338899" + +EOF +chmod +x $DESTDIR/sbin/startlocalx + +cat <<EOF > $DESTDIR/sbin/startnx +#!/bin/sh +. /conf/tcos.conf +. /conf/tcos-run-functions +SERVER=\$(read_server "xdmcp-server") +export DISPLAY=:0 +export HOME=/root +export USER_NX_DIR=/root/.nx + +if [ -x /usr/bin/ssh ]; then + ssh -N -p 2022 -l mario -C -2 -L 5000:localhost:2022 ${SERVER} +fi + +if [ -f $\XAUTHORITY ]; then + TCOS_XORG_OPTS="\$TCOS_XORG_OPTS -auth \$XAUTHORITY" +fi + +/sbin/tryXorg --xorgopts="\${TCOS_XORG_OPTS}" & + +waitforX || exit +sleep 1 + +# no window manager for freenx +#twm >> /tmp/initramfs.debug 2>&1 & + +sleep 2 +# set background color +xsetroot -cursor_name left_ptr -solid "#338899" + +/usr/NX/bin/nxclient >> /tmp/initramfs.debug 2>&1 +xterm + +EOF +chmod +x $DESTDIR/sbin/startnx + +cat <<EOF > $DESTDIR/sbin/startremotex +#!/bin/sh +. /conf/tcos.conf +. /conf/tcos-run-functions +SERVER=\$(read_server "xdmcp-server") +export DISPLAY=:0 + +if [ -f \$XAUTHORITY ]; then + TCOS_XORG_OPTS="\$TCOS_XORG_OPTS -auth \$XAUTHORITY" +fi + +/sbin/tryXorg --server=\${SERVER} --xorgopts="\${TCOS_XORG_OPTS} -query \${SERVER}" & + +EOF +chmod +x $DESTDIR/sbin/startremotex + + +# FIXME, not documented + +cat <<EOF > $DESTDIR/sbin/startsshx +#!/bin/sh +. /conf/tcos.conf +. /conf/tcos-run-functions +SERVER=\$(read_server "xdmcp-server") +export DISPLAY=:0 +export HOME=/root + +if [ -f \$XAUTHORITY ]; then + TCOS_XORG_OPTS="\$TCOS_XORG_OPTS -auth \$XAUTHORITY" +fi + +/sbin/tryXorg --xorgopts="\${TCOS_XORG_OPTS}" & + +waitforX || exit +sleep 1 + +remoteuser=\$(read_cmdline_var "sshuser" "root") +remotesshhost=\$(read_cmdline_var "sshhost" "\${SERVER}") +remotesshport=\$(read_cmdline_var "sshport" "2022") +# gnome-session, startkde , startxfce4 +remotesshdesktop=\$(read_cmdline_var "sshdesktop" "startxfce4") + +while [ 1 ]; do + xterm -e "echo \"SSH \${remoteuser}@\${remotesshhost} -p \${remotesshport}...\" ; ssh -X -C -f -l \${remoteuser} \${remotesshhost} -p \${remotesshport} \${remotesshdesktop}" +done + +EOF +chmod +x $DESTDIR/sbin/startsshx + + + + |