From a0403a95ef0509aee974dfe50d00ef084b6b315e Mon Sep 17 00:00:00 2001 From: Dirk von Suchodoletz Date: Sat, 24 Jun 2006 20:20:56 +0000 Subject: Massive changes for distro specific configurations (mkdxsinitrd, distro-specs/*) ... git-svn-id: http://svn.openslx.org/svn/openslx/ld4@249 95ad53e4-c205-0410-b2fa-d234c58c8868 --- initrd/distro-specs/ubuntu/functions-default | 390 +++++++++++++++++++++++++++ 1 file changed, 390 insertions(+) create mode 100644 initrd/distro-specs/ubuntu/functions-default (limited to 'initrd/distro-specs/ubuntu/functions-default') diff --git a/initrd/distro-specs/ubuntu/functions-default b/initrd/distro-specs/ubuntu/functions-default new file mode 100644 index 00000000..e1d1c0c7 --- /dev/null +++ b/initrd/distro-specs/ubuntu/functions-default @@ -0,0 +1,390 @@ +# Description: configuration script for general Ubuntu to configure +# linux diskless clients (executed within initial ramdisk +# after genconfig) +# +# Author(s): Dirk von Suchodoletz , 23-06-2006 +# Nico Dietrich +# Felix Endres +# +# Copyright: (c) 2006 - RZ Universitaet Freiburg +# +# Version: 0.3.0a + +# empty functions are defined at the beginning of /etc/functions + +# distro specific stuff to initialize +preinit () { + echo "Creating dhcp user" + echo "dhcp:x:101:">>/etc/group + echo "dhcp:x:101:101::/nonexistent:/bin/false" >>/etc/passwd + + # load unix module to provide sockets (is compiled into kernel on + # the live CDs!?) + modprobe ${MODPRV} unix || error "$df_errumod" nonfatal +} + +# distro specific function called from servconfig script +config_distro () { +# add the halt link to the 0 and 6 runlevel directories + ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt + ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot + + # set default runlevel + sed -e "s/.*initdefault/id:${D_INITDEFAULT}:initdefault/" -i /mnt/etc/inittab +} + +# AUS SuSE-9.3 +# udev/hotplug - auto device discovery service +udev_hotplug () { + local result=0 + [ -d /etc/hotplug -a -d /etc/hotplug.d ] || error "$df_errhotpl" nonfatal + echo "Enabling hotplug/udev" + udevstart || result=1 + udevd -d || result=1 + return $result +} + +# linking runlevel scripts +rllinker () { +local script="$1" +local start="$2" +local stop="$3" +# empty runlevel links - decision on running certain services is +# passed via configuration +for i in rc2.d/K$stop$script rc3.d/K$stop$script \ + rc2.d/S$start$script rc3.d/S$start$script ; do + if ! [ -f /mnt/etc/init.d/$script ]; then + echo "Target `pwd`../$script does not exist. Skipping links" + break + else + ln -sf ../init.d/$script /mnt/etc/$i + echo "Linked $script" + fi +done +} + +# group of functions for the normal runlevels - first parameter is start +# second stop +# function for ntp configuration +config_ntp () { +local start=07 +local stop=14 +if [ -f /mnt/etc/init.d/ntp ] ; 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 &>/dev/null + if [ "x$start_ntp" = "xinitial" ] ; then + echo -e "# entry added by $0: $date" \ + >>/mnt/etc/${D_INITDIR}/boot.ld + echo "ntpdate -s -b $ntp_servers >${LOGFILE} 2>&1 &" \ + >>/mnt/etc/${D_INITDIR}/boot.ld + else + rllinker "ntp" "$start" "$stop" + fi +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 + rllinker "atd" "14" "04" +fi +} + +# function for configuration of cron services +config_cron () { +if [ "x$start_cron" = "xyes" ] ; then + if [ -f /mnt/etc/init.d/cron ] ; then + rllinker "cron" "18" "02" + # 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 +} + +# syslog service +config_syslog () { +if [ "x$start_syslog" = "xyes" ] ; then + echo -e "# /etc/syslog.conf - file generated by $0" >/mnt/etc/syslogd.conf + echo "kern.warn;*.err;authpriv.none\t/dev/tty10\n\ +#kern.warn;*.err;authpriv.none\t|/dev/xconsole\n\ +#*.emerg\n\n*.=warn;*.=err\t\t\t-/var/log/warn\n\ +#*.crit\t\t\t\t/var/log/warn\n*.*;mail.none;news.none\t\t\ +#-/var/log/messages" >> /mnt/etc/syslogd.conf +# test -n "$log_servers" && \ +# for logserver in $log_servers; do +# echo -e "*.*;*.*;*.*;*kern.!*\t@$logserver" >>/mnt/etc/syslog.conf +# done + rllinker "sysklogd" "02" "18" +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 + rllinker "ssh" "12" "10" + 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 + rllinker "snmpd" "24" "02" + testmkd /mnt/var/lib/net-snmp >/dev/null 2>&1 + fi + # fixme!! + # write service monitor depending on services started + fi +} + +# consolefont +consolefont () { +echo -e "setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1" \ + >>/mnt/etc/${D_INITDIR}/boot.ld +} +"20" "02" +# acpi and powersave +config_acpi () { + rllinker "acpid" "02" "19" + rllinker "acpi-support" "20" "02" +} + +# configure gdm as display manager +config_gdm () { + # start the display manager as early as possible, but avoid that is + # started twice during bootup - quickhack ... + #ln -sf /etc/${D_INITDIR}/xdm /mnt/etc/${D_INITDIR}/rc5.d/S01xdm + ln -sf ../${D_INITDIR}/gdm /mnt/etc/rc3.d/K20gdm + echo -e "\t/etc/${D_INITDIR}/gdm start >${LOGFILE} 2>&1\n\ + \t( sleep 120; ln -sf /etc/${D_INITDIR}/gdm /etc/rc3.d/S01gdm \ + >${LOGFILE} 2>&1) &\n" >>/mnt/etc/${D_INITDIR}/boot.ld + # append gdm user + echo "gdm:x:113:">>/etc/group + echo "gdm:x:106:113:Gnome Display Manager:/var/lib/gdm:/bin/false" >>/etc/passwd + +echo -e "# /etc/gdm/gdm.conf - file generated by $0\n\ + +[daemon] +AutomaticLoginEnable=false +AutomaticLogin= +TimedLoginEnable=false +TimedLogin= +TimedLoginDelay=30 +Greeter=/usr/lib/gdm/gdmgreeter +DefaultPath=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games +RootPath=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games +User=gdm +Group=gdm +LogDir=/var/log/gdm +PidFile=/var/run/gdm.pid +PostLoginScriptDir=/etc/gdm/PostLogin/ +PreSessionScriptDir=/etc/gdm/PreSession/ +PostSessionScriptDir=/etc/gdm/PostSession/ +DisplayInitDir=/etc/gdm/Init +XKeepsCrashing=/etc/gdm/XKeepsCrashing +RebootCommand=/sbin/shutdown -r now \"Rebooted from gdm menu.\" +HaltCommand=/sbin/shutdown -h now \"Halted from gdm menu.\" +SuspendCommand=/usr/sbin/pmi action sleep +HibernateCommand=/usr/sbin/pmi action hibernate +ServAuthDir=/var/lib/gdm +BaseXsession=/etc/gdm/Xsession +SessionDesktopDir=/etc/X11/sessions/:/etc/dm/Sessions/:/usr/share/gdm/BuiltInSessions/:/usr/share/xsessions/ +DefaultSession=default.desktop +UserAuthDir= +UserAuthFBDir=/tmp +UserAuthFile=.Xauthority +StandardXServer=/usr/X11R6/bin/X +Xnest=/usr/X11R6/bin/Xnest -br -audit 0 -name Xnest +FirstVT=7 +VTAllocation=true +SoundProgram=/usr/lib/gdmplay +[security] +AllowRoot=false +AllowRemoteRoot=false +AllowRemoteAutoLogin=false +RelaxPermissions=0 +CheckDirOwner=true +DisallowTCP=true +[xdmcp] +Enable=false +[gui] +GtkTheme=Human +AllowGtkThemeChange=true +GtkThemesToAllow=Human,HighContrast,HighContrastInverse,LowContrast +[greeter] +ConfigAvailable=false +Browser=true +MinimalUID=1000 +Exclude=bin,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,gdm,postgres,pvm,rpm +IncludeAll=true +LocaleFile=/etc/gdm/locale.conf +SystemMenu=true +SecureSystemMenu=false +DefaultWelcome=true +DefaultRemoteWelcome=true +BackgroundColor=#523921 +UseCirclesInEntry=true +GraphicalTheme=Human +GraphicalThemeDir=/usr/share/gdm/themes/ +GraphicalThemeRand=false +SoundOnLogin=true +SoundOnLoginFile=/usr/share/sounds/question.wav +[chooser] +HostImageDir=/usr/share/hosts/ +Hosts= +Broadcast=true +Multicast=false +[debug] +Enable=false +[servers] +0=Standard +[server-Standard] +name=Standard server +command=/usr/X11R6/bin/X -br -audit 0 +flexible=true +[server-Terminal] +name=Terminal server +command=/usr/X11R6/bin/X -br -audit 0 -terminate +flexible=false +handled=false +[server-Chooser] +name=Chooser server +command=/usr/X11R6/bin/X -br -audit 0 +flexible=false +chooser=true + + + +[debug] +Enable=$debug" >/mnt/etc/gdm/gdm.conf + +if [ "x$start_x" = "xindirect" ] ; then + # when X server consumes to much mem set X -terminate + echo -e "\n[servers]\n0=Terminal -audit 0 -indirect \ +$host_name\n\n\ +[server-Terminal]\nname=Terminal server\ncommand=/usr/X11R6/bin/X \ +-audit 0\n\ +flexible=true\nhandled=true\nchooser=true" >>/mnt/etc/opt/gnome/gdm/gdm.conf +else + echo -e "\n[servers]\n0=Standard\n\n\ +[server-Standard]\nname=Standard server\ncommand=/usr/X11R6/bin/X\n\ +flexible=true\nhandled=true" >>/mnt/etc/opt/gnome/gdm/gdm.conf +fi +} + +# configure kdm as display manager +config_kdm () { + ln -sf ../${D_INITDIR}/kdm /mnt/etc/rc3.d/K20kdm + echo -e "\t/etc/${D_INITDIR}/kdm start >${LOGFILE} 2>&1\n\ + \t( sleep 120; ln -sf /etc/${D_INITDIR}/kdm /etc/rc3.d/S01kdm \ + >${LOGFILE} 2>&1) &\n" >>/mnt/etc/${D_INITDIR}/boot.ld +} + +# configure hal, dbus, resmgr and services like that +config_dreshal () { +if [ "x$start_dreshal" = "xyes" ]; then + : +fi +} + +# initialize boot.ld - 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" +case "$switch" in + init) + echo -e "#!/bin/sh\n# skeleton of /etc/${D_INITDIR}/$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" \ + >/mnt/etc/${D_INITDIR}/$name + echo -e "\n\ncase \"\$1\" in\n start)\techo -n \"$info\"" \ + >>/mnt/etc/${D_INITDIR}/$name + chmod u+x /mnt/etc/${D_INITDIR}/$name + ;; + close) + echo -e "\t;;\n stop)\n\t;;\nesac\nexit 0" \ + >>/mnt/etc/${D_INITDIR}/$name + ;; +esac +} + +# fixme!! taken from SuSE10.0 untested here ... +# prepare virtual machine environment (vmware, vmplayer) +config_vmware () { +rllinker "vmware-prep" "18" "02" +rllinker "vmware" "20" "02" +# during vmware sessions linux should not handle usb events/devices +testmkd /mnt/var/X11R6/bin +echo '#!/bin/sh'>> /mnt/etc/udev/rules.d/01-udev-vm.rules +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, \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, \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 +} + +# configure automounter +config_automount () { +if [ -f /mnt/etc/init.d/autofs ] ; then + testmkd /var/lock/subsys + echo -e "# /etc/auto.master - file generated by $0:\n\ +/misc\t/etc/auto.misc" >/mnt/etc/auto.master + echo -e "# /etc/auto.misc - file generated by $0:\n" \ + > /mnt/etc/auto.misc + if [ -n "${automnt_src}" ] ; then + # local directory and home directory server from machine-setup + [ -z "${automnt_dir}" ] && automnt_dir="/home" + strinstr "/" "${automnt_dir}" && error "$df_erratpld" nonfatal + automnt_dir=${automnt_dir#/} + echo -e "/home\t/etc/auto.${automnt_dir}\n" >> /mnt/etc/auto.master + echo -e "# /etc/auto.${automnt_dir} created by $0:\n" \ + > /mnt/etc/auto.${automnt_dir} + echo -e "*\t-rsize=32768,wsize=32768,tcp,rw\t${automnt_src}/&" \ + >> /mnt/etc/auto.${automnt_dir} + fi + echo -e "# /etc/sysconfig/autofs - file modified by\n#\t$0:\n#" \ + > /etc/autofs + sed -e "s,AUTOFS_OPTIONS.*,AUTOFS_OPTIONS=\"--timeout 3\"," \ + /mnt/etc/${D_SYSCONFDIR}/autofs >> /etc/autofs + cp /etc/autofs /mnt/etc/${D_SYSCONFDIR}/autofs + config_portmap + rllinker "autofs" "18" "04" +fi +} + +# start portmapper (needed at least for nfs and nis services) +config_portmap () { + rllinker "portmap" "02" "20" +} + +# start NIS (fixmee - does the service is really named ypbind??) +config_nis () { + rllinker "ypbind" "06" "16" +} -- cgit v1.2.3-55-g7522