summaryrefslogtreecommitdiffstats
path: root/initramfs/distro-specs/suse/functions-10.1
blob: 7b32871ed074bf272ca3eae80866d3b3e70e6173 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Copyright (c) 2003 - 2006 - RZ Uni Freiburg
# Copyright (c) 2006, 2007 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
#
# If you have any feedback please consult http://openslx.org/feedback and
# send your feedback to feedback@openslx.org
#
# General information about OpenSLX can be found under http://openslx.org
#
# Configuration functions for SuSE 10.1 which differ from functions defined
# in general SuSE base definitions ...  General changes should be done there,
# version specific changes for the 10.1 go here.

# afs client
# configure afs client
config_afs () {
if [ "x$start_afs" = "xyes" ] ; then
  if [ -f /mnt/etc/init.d/openafs-client ] ; then
    test -d /mnt/afs || error "${df_errafsd}"
    testmkd /mnt/var/cache/openafs
    rllinker "openafs-client" 15 6
    #      echo -e "# /etc/sysconfig/afs-client - file generated by \
    #$0:\n#\t$date\n" >/etc/sysconfig/afs-client.new;
    #      sed -e "s,THIS_CELL_SERVER.*,THIS_CELL_SERVER=\"$cell_serv\"," \
    #        -e "s,PREFERREDSERVERS.*,PREFERREDSERVERS=\"$cell_serv\"," \
    #        -e "s,THIS_CELL.*,THIS_CELL=\"$this_cell\"," \
    #        -e "s,MEMCACHE.*,MEMCACHE=\"yes\"," \
    #        /etc/sysconfig/afs-client >> \
    #            /etc/sysconfig/afs-client.new
    #      mv /etc/sysconfig/afs-client.new /etc/sysconfig/afs-client
  else
    error "${df_errafsn}" nonfatal
  fi
fi
}

# prepare virtual machine environment (vmware, vmplayer)
config_vmware () {
rllinker "vmware" 20 2
# during vmware sessions linux should not handle usb events/devices
# vmplayer and recent versions of vmware do not need this hack
if [ ! -x /mnt/usr/bin/vmplayer ] ; then
  testmkd /mnt/var/X11R6/bin
  echo '#!/bin/sh'> /mnt/var/X11R6/bin/vm-udev
  echo -e "# Script for blocking linux from handling usb \
devices\n# during vmware sessions. If you like to remove certain modules \
add them\n# to the list below - Dirk von Suchodoletz, <dvs@OpenSLX.com>\n\
STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \
/sbin/rmmod usb-storage &>/tmp/null; }\n\
[ x\$ACTION = xremove ] && { [ \$STATE = 0 ] && /sbin/rmmod usb-storage \
&>/dev/null; }\nexit \$STATE" >> /mnt/var/X11R6/bin/vm-udev
  chmod u+x /mnt/var/X11R6/bin/vm-udev
  echo -e "# special entry to block linux from reacting to usb events during \
running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \
Suchodoletz, <dvs@OpenSLX.com>\nSUBSYSTEM==\"usb\", ACTION==\"add\", \
PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\
SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \
    >> /mnt/etc/udev/rules.d/01-udev-vm.rules
fi
}

# set up keytable (function run in hwautocfg)
# kbd runlevel link is in the list of initial runlevel scripts (see 
# config-10.1 file)
keytable () {
# remove unneeded components from the startscript
sed -e "/wanted keytable/,/^fi$/d;/load usb drivers/,/^esac$/d" \
  -i /mnt/etc/${D_INITDIR}/kbd
sed -e "s,KEYTABLE=.*,KEYTABLE=\"${KEYTABLE}\"," \
  -i /mnt/etc/${D_SYSCONFDIR}/keyboard
}

# consolefont and language (function run in hwautocfg)
consolefont () {
sed -e "s,RC_LANG=.*,RC_LANG=\"${LANG}\" # added in initrd," \
    -i /mnt/etc/${D_SYSCONFDIR}/language
}

# check the glx and tvout stuff and configure it
checkgraphix () {
# test if unionfs
case "${XMODULE}" in
  radeon)
    # IGP is not supported with fglrx driver (at least not in some versions)
    # comment if it works properly ...
    strinfile " IGP" /tmp/hwsetup.info && exit
    # check ${XDESC}/ hwsetup.info device string in Cards file and then
    # for needed components
    # not all radeon cards are properly supported by fglrx, so the decision on
    # module might be done via hwsetup!?
    test -e /mnt/lib/modules/${KERNEL}/kernel/drivers/char/drm/fglrx.ko \
      && test -e /mnt/usr/X11R6/lib/modules/drivers/fglrx_drv.* && { 
        XMODULE=fglrx
        # it only works for UnionFS enabled systems
        ln -sf /usr/X11R6/lib/libGL.so.1.2 \
          /mnt/usr/X11R6/lib/libGL.so.1 2>/dev/null
        }
    # check whether to enable tvout. option could be set in machine-setup
    if [ -n "$tvout" ] && [ "$tvout" != "no" -a "$tvout" != "NO" ] ; then
      [ "$tvout" = "yes" ] && tvout="PAL-B"
      TVOUT='\tOption\t\t"TVFormat" "'$tvout
      TVOUT=$TVOUT'"\n\tOption\t\t"DesktopSetup" "horizontal"'
    fi
  ;;
  nv)
    # check for needed components (kernel and libraries)
    test -e /mnt/lib/modules/${KERNEL}/kernel/drivers/char/drm/nvidia.ko \
      && test -e /mnt/usr/X11R6/lib/modules/drivers/nvidia_drv.* && {
        gllib=$(ls /mnt/usr/X11R6/lib/libGL.so.1.0.* 2>/dev/null|sed -n "1p")
        if [ -n "$gllib" ] ; then
          ln -sf ${gllib#/mnt} /mnt/usr/X11R6/lib/libGL.so.1 2>/dev/null
          # same for GLcore lib
          gllib=$(ls /mnt/usr/X11R6/lib/libGLcore.so.1.0.* 2>/dev/null|\
            sed -n "1p")
          ln -sf ${gllib#/mnt} /mnt/usr/X11R6/lib/libGLcore.so.1 2>/dev/null \
            || fail=1
          # load server modules (trick put the path before the official one)
          testmkd /mnt/etc/X11/modules
          ln -sf /usr/X11R6/lib/modules/updates/extensions/libglx.so \
            /mnt/etc/X11/modules/libglx.so || fail=1
          ln -sf /usr/X11R6/lib/modules/updates/drivers/nvidia_drv.so \
            /mnt/etc/X11/modules/nvidia_drv.so || fail=1
          [ -z $fail ] && XMODULE=nvidia
          # ensure proper permissions for nvidia devices - does not work for some reason
          #echo -e "# nvidia stuff added by $0 in InitRamFS\nKERNEL==\"nvidia*|nvidiactl*\",\
#GROUP=\"video\",MODE=\"0666\"" > /mnt/etc/udev/rules.d/10-nvidia-devperms.rules
       fi
       }
  ;;
esac
}