summaryrefslogtreecommitdiffstats
path: root/initramfs/distro-specs/ubuntu/functions-default
blob: d3d55fecde6c277b983e9f58b007c8d0f577e474 (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# Copyright (c) 2003..2006 - RZ Uni Freiburg
# Copyright (c) 2006..2010 - 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 script for general Ubuntu to configure OpenSLX Linux
# stateless clients (executed within initial ramdisk after genconfig) 

# distro specific configuration variables used in the setup functions
# (formerly done via config-*, these variables are disputable ...)
# D_ETCEXCL - list of files, wildcards to be excluded from /etc when using 
# bind mounts
# D_DIRINBINDMNT - lists of directories to be created in bind mounted rw part
# of the client filesystem
# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on 
# TempFS usage
# D_DIRINDXS - directories in client filesystem which should be present anyhow

D_DIRINDXS="/var/run/sysconfig/tmp /var/lib/nobody /var/lib/misc /var/lib/pam \
/var/lib/bluetooth /var/lib/texmf /var/lib/nfs/sm /var/lib/acpi_support \
/var/spool/cron /var/lib/alsa"

# distro specific function called from servconfig script
config_distro () {
  # runlevel system changed significantly compared to pre 9.10 sys-v-init
  # clean up nevertheless
  for dir in rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d ; do
    rm -rf /mnt/etc/${dir}/*
  done
  # remove unneeded init scripts (stuff handled in stage3 which would
  # interface with already existing setup)
  rm bridge-network-interface.conf hostname.conf network*conf >/dev/null 2>&1

  # add the halt link to the 0 and 6 runlevel directories and other useful
  # links
  ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt
  ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot
  ln -sf ../init.d/single /mnt/etc/rc1.d/S90single
  for dir in rc2.d rc3.d rc4.d rc5.d; do
    ln -sf ../init.d/rc.local /mnt/etc/${dir}/S99rc.local
  done

  # remove annoying udev rule set for changing eth interface and cd/dvds
  rm /mnt/etc/udev/rules.d/*persistent*.rules >/dev/null 2>&1

  # for screen sessions
  testmkd /mnt/var/run/screen root:utmp 0775

  # add the slx specific path (/var/opt/openslx/bin) to the PATH variable
  echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile
}

# initial boot looks different since ubuntu upstart
initial_boot () {
  :
}

# function for ntp configuration
config_ntp () {
if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; then
  echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
    >>/mnt/etc/passwd
  testmkd /mnt/var/lib/ntp/var/run/ntp
  :
fi
}
# function for atd
config_atd () {
if [ "x$start_atd" = "xyes" ]; then
  # testmkd /mnt/var/spool/atjobs
  # testmkd /mnt/var/spool/atspool
  # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool
  :
fi
}
# function for configuration of cron services (fixme: to be moved to a plugin?)
config_cron () {
if [ "x$start_cron" = "xyes" ] ; then
  if [ -f /mnt/etc/init.d/cron ] ; then
    :
    # fixme! check for proper permissions!
    testmkd /mnt/var/spool/crontabs
    echo -e "# /etc/crontab - file generated by $0:\n\
#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\
\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \
/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab
  else
    error "$df_errcron" nonfatal
  fi 
fi
}
# secure shell service
config_sshd () {
if [ "x$start_sshd" = "xyes" ] ; then
  if [ -f /mnt/etc/init.d/ssh ] ; then
    #testmkd /mnt/var/run/sshd
    :
  else
    error "$df_errsshd" nonfatal
  fi
fi
}
# snmp agent for remote monitoring
config_snmp () {
if [ "x$start_snmp" = "xyes" ] ; then
  if [ -f /mnt/etc/init.d/snmpd ] ; then
    :
    testmkd /mnt/var/lib/net-snmp
  fi
    # fixme!!
    # write service monitor depending on services started
  fi
}
# acpi and powersave
config_acpi () {
  :
  #Commented out since battery checking is only useful for Notebooks
  #rllinker "acpi-support" 99 2
}
# configure hal, dbus, policykitd and services like that
config_dreshal () {
if [ "x$start_dreshal" = "xyes" ]; then
  testmkd /mnt/var/lib/dbus
  testmkd /mnt/var/lib/misc
  testmkd /mnt/var/cache/hald
  touch /mnt/var/lib/misc/PolicyKit.reload
  chown root:polkituser /mnt/var/lib/misc/PolicyKit.reload
  rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \
         /mnt/etc/dbus-1/system.d/nm-* \
         /mnt/etc/dbus-1/event.d/*NetworkManager*
  sed -i /mnt/etc/PolicyKit/PolicyKit.conf \
      -e "s/\(<\/config>\)/    @@new@@\n\1/" \
      -e "s/@@new@@/<match action=\"@@action@@\">\n@@return@@\n    <\/match>/" \
      -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \
      -e "s/@@return@@/        <return result=\"yes\"\/>/"
  sed -i /mnt/etc/dbus-1/system.d/hal.conf \
      -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/"
  :
  :
  if [ ! -e /mnt/etc/init.d/policykit ] ; then
    testmkd /mnt/var/lib/PolicyKit root:polkituser 1770
    testmkd /mnt/var/lib/PolicyKit-public root:polkituser
  else
    :
  fi
fi
}

# initialize boot.slx - skript to be executed during early system startup
# (before most of the normal boot init scripts)
# this script should operate like a normal runlevel script (fixme!!)
d_mkrlscript () {
local switch="$1"
local name="$2"
local info="$3"
# ToDo: needs to be adapted to upstart mechanism
case "$switch" in
  init)
    echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \
from $0\n# after you applied changes to the creation scripts you have to \
rerun\n# the mkdxsinitrd script to get them applied\n\n\
. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name
    echo -e "\n\ncase \"\$1\" in\n    start)\n\tlog_begin_msg \"$info\"" \
      >>/mnt/etc/init.d/$name
    chmod u+x /mnt/etc/init.d/$name
  ;;
  entry)
    echo -e "\t${info}" >>/mnt/etc/init.d/${name}
  ;;
  close)
    echo -e "\tlog_end_msg 0\n\t;;\n    stop)\n\t;;\nesac\nexit 0" \
      >>/mnt/etc/init.d/$name
  ;;
esac
}
# configure automounter
config_automount () {
if [ -f /mnt/etc/init.d/autofs ] ; then
  testmkd /mnt/var/lock/subsys
  sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \
      -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs
  config_portmap
fi
}
# start portmapper (needed at least for nfsN and nis services)
config_portmap () {
  :
}
# start NIS (fixme - does the service is really named ypbind??)
config_nis () {
  if [ -f /mnt/etc/init.d/ypbind ] ; then
    config_portmap
    testmkd /mnt/var/yp/nicknames
  else
    error "$df_erryp" nonfatal
  fi
}
# name service caching daemon (useful in most cases)
config_nscd () {
  if [ -f /mnt/etc/init.d/nscd ] ; then
    testmkd /mnt/var/cache/nscd
  fi
}