diff options
author | Dirk von Suchodoletz | 2007-04-28 13:55:57 +0200 |
---|---|---|
committer | Dirk von Suchodoletz | 2007-04-28 13:55:57 +0200 |
commit | b3a7607012f669d8f83f24cd0d97617ceb50caae (patch) | |
tree | aec8ad2d3884daba14fe80fafe9f26da68fd9e1c /initramfs | |
parent | Cleanups for InitRamFS: busybox is made the main tool ... (diff) | |
download | core-b3a7607012f669d8f83f24cd0d97617ceb50caae.tar.gz core-b3a7607012f669d8f83f24cd0d97617ceb50caae.tar.xz core-b3a7607012f669d8f83f24cd0d97617ceb50caae.zip |
Major changes for stage3/initramfs: busybox is made the main tool ...
mkdxsinitrd is changed accordingly, with some fixes, cleanups to init
and functions ...
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@936 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'initramfs')
-rw-r--r-- | initramfs/initrd-stuff/etc/functions | 8 | ||||
-rwxr-xr-x | initramfs/initrd-stuff/init | 14 | ||||
-rwxr-xr-x | initramfs/mkdxsinitrd | 205 | ||||
-rwxr-xr-x | initramfs/mkdxsinitrd.64bit | 763 |
4 files changed, 76 insertions, 914 deletions
diff --git a/initramfs/initrd-stuff/etc/functions b/initramfs/initrd-stuff/etc/functions index 9265eedb..aef02ad8 100644 --- a/initramfs/initrd-stuff/etc/functions +++ b/initramfs/initrd-stuff/etc/functions @@ -67,8 +67,6 @@ trigger_device_events () { # mini udev of busybox or distro specific udev_hotplug runudev () { if [ -x /bin/mdev ] ; then - [ -c /dev/mem ] ||mknod /dev/mem c 1 1 2>/dev/null - [ -c /dev/zero ] || mknod /dev/zero c 1 5 2>/dev/null mdev -s else udev_hotplug @@ -422,14 +420,10 @@ case $dhcp in dhcpcd $vci -L /var/lib/dhcp -c /bin/dhcpcd.exe -T -t 30 eth0 \ >/dev/null 2>&1 || error "$error_dhcpcd" ;; - pump) - error "$error_pump" - ;; - # udhcpc is part of busybox; then we expect to have mknod installed + # udhcpc is part of busybox udhcpc) [ -n $vci ] && vci="-V $vci" testmkd /usr/share/udhcpc - test -c /dev/urandom || mknod /dev/urandom c 1 9 2>/dev/null ln -s /bin/dhcpmkconfig /usr/share/udhcpc/default.script udhcpc -b -q $vci -s /usr/share/udhcpc/default.script -i eth0 2>/dev/null ;; diff --git a/initramfs/initrd-stuff/init b/initramfs/initrd-stuff/init index abe6b428..42044d53 100755 --- a/initramfs/initrd-stuff/init +++ b/initramfs/initrd-stuff/init @@ -10,7 +10,7 @@ # # General information about OpenSLX can be found at http://openslx.org # -# main script for new type of initial ramdisk for OpenSLX linux diskless +# Main script for new type of initial ramdisk for OpenSLX linux stateless # clients version 4 ############################################################################# @@ -47,8 +47,16 @@ nodnbdcache="yes" devdir="/dev" mount -n -t tmpfs -o 'size=25%,mode=0755' initramfsdevs ${devdir} -# copy basic device files into dev (later udev will handle that) -cp -a /tmp/null /tmp/console /dev +# create basic device files in dev (later udev will handle that) +mknod /dev/mem c 1 1 +mknod /dev/null c 1 3 +mknod /dev/zero c 1 5 +mknod /dev/urandom c 1 9 +mknod /dev/kmsg c 1 11 +mknod /dev/console c 5 1 +mknod /dev/ctl b 241 255 +mknod /dev/bootsplash p + mkdir -p ${devdir}/pts mkdir -p ${devdir}/shm mkdir -p ${devdir}/.udevdb diff --git a/initramfs/mkdxsinitrd b/initramfs/mkdxsinitrd index bfc6b141..5eff4ba7 100755 --- a/initramfs/mkdxsinitrd +++ b/initramfs/mkdxsinitrd @@ -1,16 +1,14 @@ #!/bin/bash +# This program is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING # -# Description: universal (distro independent) generator for initial -# ramdisks for linux diskless clients (stage2 system -# setup) +# If you have any feedback please consult http://openslx.org/feedback and +# send your feedback to feedback@openslx.org # -# Author(s): Dirk von Suchodoletz <dvs@OpenSLX.com>, 04-02-2007 -# Nico Dietrich -# Felix Endres -# <mj0@uni-freiburg.de> (xenbr), 09-01-2007 +# General information about OpenSLX can be found at http://openslx.org # -# Copyright: (c) 2003 - 2006 - RZ Universitaet Freiburg -# (c) 2006, 2007 - OpenSLX GmbH +# Main script for generating the InitRamFS of OpenSLX clients, to constitute +# the Stage3 boot stadium # debug level of script itself DEBUG=1 @@ -69,37 +67,25 @@ SLX_CONFIG_PATH=@@@SLX_CONFIG_PATH@@@ usage() { - echo -e "mkdxsinitrd [-bgh] [-k kernel version] [-i path/file] \ + echo -e "mkdxsinitrd [-dh] [-k kernel version] [-i path/file] \ [-f module(s)] [-n module(s)] [-m module(s)] [-r path] [-s theme]\n\ [-c machine-setup]" echo "OPTIONEN" echo " -c location of client configuration file (machine-setup)" - echo " -g Benutze glibc als Basisbibliothek in der ramdisk." - echo " -b Use busybox instead of separate binaries." - echo " -h Zeige Informationen zur Benutzung." - echo " -k Kernelversion" - echo " mkdxsinitrd versucht die aktuellste Kernelversion zu finden." - echo " Falls dies nicht klappt, oder eine andere Kernelversion" - echo " gewünscht ist kann diese hier angegeben werden (funktioniert" - echo " natürlich nur für auf dem Hostsystem vorhandene Kernelversion" - echo " nen)." + echo " -d use ISC dhclient instead of udhcpcd of busybox" + echo " -h show usage information" + echo " -k kernel version" echo " -i path/file" echo " Optionale Angabe wo die erstellte ramdisk hingeschrieben werden" echo " soll." - echo " -f Modulliste" - echo " Kernelmodule die benutzt werden sollen um das Rootfilesystem" - echo " über das dem Netzwerk zu mounten (z.B. nfs, nbd dnbd)." - echo " -n Modulliste" - echo " Kernelmodule zum Betrieb der Clientnetzwerkkarten (z.B. e100 tg3" - echo " via-rhine)." - echo " -m Modulliste" - echo " Kernelmodule (misc) die nicht von -n bzw. -f abgedeckt werden" - echo " (z.B. xenbr for xen network bridge)." + echo " -f list of blockdev/filesystem modules" + echo " -n list of network adaptor modules" + echo " -m list of misc modules not covered by -f or -n" echo " -r path" echo " Pfad zum Wurzelverzeichnis des Ausgangssystems (Vendor-OS)" echo " (z.B. /var/opt/openslx/stage1/suse-10.2)." echo " -s theme (for splash)" - echo " -d debug (add special modules to initramfs)" + echo " -t tpm support (client security)" echo " -D Name" echo " Name der Distribution der Betriebsystemvorlage" echo " -v Version" @@ -196,8 +182,7 @@ else echo -e "slxconf_date=${DATE}\nslxconf_kernver=${KERNVER}\n\ slxconf_listnwmod=\"${NWMODULES}\"\nslxconf_distro=${DISTRO}-${DISTRO_VER}\n\ slxconf_slxver=\"4.0.8b\"" > ${INSTDIR}/etc/sysconfig/slxsystem.conf - [ "$use_busybox" = 1 ] && sed -e "s,^#!/bin/sh,#!/bin/ash," \ - -i ${INSTDIR}/${FILENAME} + sed -e "s,^#!/bin/sh,#!/bin/ash," -i ${INSTDIR}/${FILENAME} fi fi } @@ -320,7 +305,7 @@ cp -a ${themes}* ${INSTDIR}/usr/share/themes ######################################################################### # End of function declaration -while getopts :bhgk:c:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do +while getopts :hk:c:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do case $a in \:|\?) case $OPTARG in @@ -332,8 +317,6 @@ while getopts :bhgk:c:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do m) echo "-m requires misc module list parameter";; r) echo "-r requires root dir parameter";; s) echo "-s may require theme name";; - t) echo "-t requires tmp dir parameter";; - d) echo "-d requires debug level (integer)";; D) echo "-D requires linux Distribution name";; v) echo "-v requires linux distribution version";; I) echo "-I requires network interface parameter";; @@ -343,9 +326,8 @@ while getopts :bhgk:c:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do esac exit 1 ;; - b) use_busybox=1;; c) CLCONFFILE=$OPTARG;; - g) use_glibc=1;; + d) use_dhclient=1;; k) KERNVER=$OPTARG;; i) INITRD_PATH=$OPTARG ;; f) FSMODULES=$OPTARG;; @@ -353,17 +335,11 @@ while getopts :bhgk:c:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do m) MISCMODULES=$OPTARG ;; r) ROOTDIR=$OPTARG;; s) theme=$OPTARG;; - t) INSTDIR=$OPTARG;; + t) use_tpm=1;; d) IRFSDEBUG=$OPTARG;; D) DISTRO=$OPTARG;; v) DISTRO_VER=$OPTARG;; - I) NET_IF=$OPTARG;; # Not in use - a) acpi_dsdt="$OPTARG";; # Not in use - S) use_selinux=1;; # Not in use l) local_init_script="$OPTARG";; # use for pre/postinit.local? - u) sysfs_root=1 # Not in use - use_udev= - ;; h) usage;; esac done @@ -385,7 +361,7 @@ if [ -z "$INSTDIR" ] ; then fi rm -rf ${INSTDIR} mkdir -p ${INSTDIR}/{dev,proc,tmp,mnt,root,bin,sys,lib} -mkdir -p ${INSTDIR}/var/{lib,run} +mkdir -p ${INSTDIR}/var/{lib,run} ${INSTDIR}/var/lib/nfs/state ln -s /bin ${INSTDIR}/sbin mkdir -p ${INSTDIR}/usr/share # needed for KNOPPIX hwsetup tool not to be confused with ${D_SYSCONFDIR} @@ -482,19 +458,6 @@ esac # at this point ${DISTRO} ${DISTRO_VER} should be fixed copy_distro_stuff ${DISTRO} ${DISTRO_VER} -# binary and corresponding library copies could be avoided if a small -# initial ramdisk environment of its own is generated from busybox, -# dietlibc and similar, see OpenSLX project page ... - -# devices needed rather early (copied from /tmp to /dev in init) -mknod ${INSTDIR}/tmp/console c 5 1 &>/dev/null -mknod ${INSTDIR}/tmp/null c 1 3 &>/dev/null -mknod ${INSTDIR}/tmp/kmsg c 1 11 &>/dev/null -mknod ${INSTDIR}/tmp/ctl b 241 255 &>/dev/null -# suse specific, but might be usable with other distros too -mknod ${INSTDIR}/tmp/bootsplash p &>/dev/null - - if [ -z "$NWMODULES" ] ; then #NWMODULES="forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32 8139too 8139cp" NWMODULES="forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32" @@ -512,99 +475,49 @@ chmod 755 ${INSTDIR}/init \ if [ -d ${ROOTDIR}/lib64 ] ; then ARCH=x86_64 else - ARCH=i386 + ARCH=i586 fi -# test for the existance of busybox -if [ "$use_busybox" = 1 ]; then - [ -x ${SLX_SHARE_PATH}/busybox/busybox.${ARCH} ] || { - unset use_busybox - echo "You wanted to include busybox for ${ARCH}, but did not provide \ -it in ${SLX_SHARE_PATH}/busybox directory."; } -fi -if [ -n "$use_busybox" ] ; then - # somehow the target platform should be defined and proper busybox copied - cp ${SLX_SHARE_PATH}/busybox/busybox ${INSTDIR}/bin - for bbins in [ ar arping ash bunzip2 cat chmod chown chroot cp cpio cut \ - date dd df dmesg du echo env expr fdisk free grep gunzip hwclock \ - insmod id ip kill killall ln ls lsmod mdev mkdir mke2fs mkfs.ext2 \ - mkfs.ext3 mknod mkswap modprobe mount mv nice ping printf ps rdate \ - rm rmmod sed sleep sort swapoff swapon switch_root tar test tftp \ - time touch tr udhcpc umount uptime usleep vconfig vi zcat zcip; do - ln -fs /bin/busybox ${INSTDIR}/bin/$bbins - done - # fake the sh link in busybox environment - echo -e "#!/bin/ash\n/bin/ash \$@" > ${INSTDIR}/bin/sh - chmod a+x ${INSTDIR}/bin/sh - # binaries useful for debugging purposes - if [ $IRFSDEBUG -gt 2 ] ; then - for bbins in \ - strace - do - cobi ${bbins} bin || echo "Program ${bbins} not found" - done - fi -else - # find and copy a shell to be used within initialramfs - for bbins in bash ash sh; do - if cobi ${bbins} bin ; then - ln -fs ${bbins} ${INSTDIR}/bin/sh - [ "${bbins}" != "ash" ] && ln -fs ${bbins} ${INSTDIR}/bin/ash - [ "${bbins}" != "bash" ] && ln -fs ${bbins} ${INSTDIR}/bin/bash - break - else echo "Binary not found (${bbins})"; fi - done - - # find and copy ip setup binaries - for bbins in ip ifconfig; do - if cobi ${bbins} bin ; then - [ "${bbins}" = "ifconfig" ] && cobi route bin - break - else echo "Binary not found"; fi - done - - # needed standard binaries (in init, servconfig, hwautocfg, ... scripts) +# copy the proper busybox depending on architecture (i586 for 32bit and +# x86_64 for 64bit) +cp ${SLX_SHARE_PATH}/busybox/busybox.${ARCH} ${INSTDIR}/bin/busybox +for bbins in [ ar arping ash bunzip2 cat chmod chown chroot cp cpio cut \ + date dd df dmesg du echo env expr fdisk free grep gunzip hwclock \ + insmod id ip kill killall ln ls lsmod mdev mkdir mke2fs mkfs.ext2 \ + mkfs.ext3 mknod mkswap modprobe mount mv nice ping printf ps rdate \ + rm rmmod sed sleep sort swapoff swapon switch_root tar test tftp \ + time touch tr udhcpc umount uptime usleep vconfig vi zcat zcip; do + ln -fs /bin/busybox ${INSTDIR}/bin/$bbins +done +# fake the sh link in busybox environment +echo -e "#!/bin/ash\n/bin/ash \$@" > ${INSTDIR}/bin/sh +chmod a+x ${INSTDIR}/bin/sh +# binaries useful for debugging purposes +if [ $IRFSDEBUG -gt 2 ] ; then for bbins in \ - cat chmod chown chroot cp expr fdisk gzip killall ln ls mkdir \ - mkfs.ext2 modprobe mount rmmod sed sort rm tar umount - do + strace + do cobi ${bbins} bin || echo "Program ${bbins} not found" done +fi - # binaries useful for debugging purposes - if [ $IRFSDEBUG -gt 2 ] ; then - for bbins in \ - date lsmod lsof ps strace time uptime - do - cobi ${bbins} bin || echo "Program ${bbins} not found" - done +# one of the dhcp clients (do we really need any other dhcp client?) +if [ -n "${use_dhclient}" ] ; then + if binfinder $dhcp ; then + cobi $dhcp bin + else + echo "dhclient is not available" fi +fi - # tftp client binary for configuration via file - get machine-setup per - # tftp from dhcp (or specified other) server - for tftp in atftp tftp ; do - binfinder $tftp && break; - done - cobi $tftp bin || echo "Program ${tftp} not found" - cp /lib/libnss_files.so.2 ${INSTDIR}/lib - # one of the dhcp clients - for dhcp in dhclient dhcpcd pump ipconfig ; do - binfinder $dhcp && break; - done - cobi $dhcp bin - - # hotplug/udev type and related stuff - cp -a ${ROOTDIR}/etc/udev ${INSTDIR}/etc +# hotplug/udev type and related stuff / any need for that? +# cp -a ${ROOTDIR}/etc/udev ${INSTDIR}/etc - # type of hotplug/udev/dev (for etc directories see above!!) - for bbins in udev udevd udevstart udevtrigger udevsend ; do - cobi ${bbins} bin &>/dev/null || \ - echo "Program ${bbins} not found; could be most probably ignored" - done - # if nfs is used as clients root filesystem - cobi portmap bin - mkdir -p ${INSTDIR}/var/lib/nfs/state -fi +# type of hotplug/udev/dev (for etc directories see above!!) +# for bbins in udev udevd udevstart udevtrigger udevsend ; do +# cobi ${bbins} bin &>/dev/null || \ +# echo "Program ${bbins} not found; could be most probably ignored" +# done # if nbd or dnbd is used as clients root filesystem if [ -n "${FSMODULES}" ] ; then @@ -620,6 +533,12 @@ for i in ${FSMODULES}; do done fi +# if tpm should be used within InitRamFS ... +if [ -n "${use_tpm}" ] ; then + MISCMODULES="${MISCMODULES} tpm" + # copy the other stuff +fi + # if unionfs cobi unionctl bin &>/dev/null || \ echo "Program unionctl not found; could be ignored ..." @@ -710,6 +629,7 @@ for module in af_packet unix ${NWMODULES} ${FSMODULES} ${MISCMODULES} \ ${ddirprefix}/fs/nfs_common &>/dev/null ;; ext3) + # needed for ext2 support mkdir -p ${ddirprefix}/fs/jbd cp ${rdirprefix}/fs/jbd/jbd.ko \ ${ddirprefix}/fs/jbd @@ -734,6 +654,9 @@ for module in af_packet unix ${NWMODULES} ${FSMODULES} ${MISCMODULES} \ # ${ddirprefix}/drivers/scsi #done ;; + tpm) + # tpm module stuff + ;; esac fi done diff --git a/initramfs/mkdxsinitrd.64bit b/initramfs/mkdxsinitrd.64bit deleted file mode 100755 index f4d77d17..00000000 --- a/initramfs/mkdxsinitrd.64bit +++ /dev/null @@ -1,763 +0,0 @@ -#!/bin/bash -# -# Description: universal (distro independent) generator for initial -# ramdisks for linux diskless clients (stage2 system -# setup) -# -# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 03-10-2006 -# Nico Dietrich -# Felix Endres -# <mj0@uni-freiburg.de> (xenbr), 27-09-2006 -# -# Copyright: (c) 2003 - 2006 - RZ Universitaet Freiburg -# (c) 2006 - openslx.org project -# -# Version: 0.4.5d - -# debug level of script itself -DEBUG=1 -# debug level of the initramfs (to trigger the addition of specific -# binaries and kernel modules) -IRFSDEBUG=1 -COMETCEXCL="XF86Config*\nissue*\nmtab*\nfstab*\n" -COMDIRINDXS="/tmp/scratch /var/lib/nobody" - -# distro specific settings read from configuration file -# D_SYSCONFDIR - system wide configuration settings in /etc - sysconfig in -# SuSE and RedHat, default in Debian and Ubuntu, conf.d in Gentoo -# 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_BINDMNT - any code which is specific in bind mount environment -# D_RCDIRS - runlevel directories relative to /etc -# D_HWMODTOIGNORE - - -# just ensure that variables are set and the user gets an idea if -# something fails -D_SYSCONFDIR="<set in ~/distro-config/distro file>" -D_ETCEXCL="<set in ~/distro-config/distro file>" -D_BINDMPTS="<set in ~/distro-config/distro file>" -D_DIRINBINDMNT="<set in ~/distro-config/distro file>" -D_RODIRSINRW="<set in ~/distro-config/distro file>" -D_DIRINDXS="<set in ~/distro-config/distro file>" -D_BINDMNT="<set in ~/distro-config/distro file>" -D_INITDIR="<set in ~/distro-config/distro file>" -D_INITBOOTD="<set in ~/distro-config/distro file>" -D_RCDIRS="<set in ~/distro-config/distro file>" -D_RCDIRSINRW="<set in ~/distro-config/distro file>" -D_INITSCRIPTS="<set in ~/distro-config/distro file>" -D_XF86CONFFILE="<set in ~/distro-config/distro file>" -D_XFONTPATH="<set in ~/distro-config/distro file>" -D_DEFAULTCOUNTRY="<set in ~/distro-config/distro file>" -# read in the global settings -SLX_CONFIG_PATH=@@@SLX_CONFIG_PATH@@@ -[ -f $SLX_CONFIG_PATH/settings.default ] && \ - . $SLX_CONFIG_PATH/settings.default -[ -f $SLX_CONFIG_PATH/settings.local ] && \ - . $SLX_CONFIG_PATH/settings.local - -######################################################################### -# End of global variable declaration, nothing needed to be changed at -# default below that line - -usage() -{ - echo -e "mkdxsinitrd [-bgh] [-k kernel version] [-i path/file] \ -[-f module(s)] [-n module(s)] [-m module(s)] [-r path] [-s theme]\n" - echo "OPTIONEN" - echo " -g Benutze glibc als Basisbibliothek in der ramdisk." - echo " -b Use busybox instead of separate binaries." - echo " -h Zeige Informationen zur Benutzung." - echo " -k Kernelversion" - echo " mkdxsinitrd versucht die aktuellste Kernelversion zu finden." - echo " Falls dies nicht klappt, oder eine andere Kernelversion" - echo " gewünscht ist kann diese hier angegeben werden (funktioniert" - echo " natürlich nur für auf dem Hostsystem vorhandene Kernelversion" - echo " nen)." - echo " -i path/file" - echo " Optionale Angabe wo die erstellte ramdisk hingeschrieben werden" - echo " soll." - echo " -f Modulliste" - echo " Kernelmodule die benutzt werden sollen um das Rootfilesystem" - echo " über das dem Netzwerk zu mounten (z.B. nfs, nbd dnbd)." - echo " -n Modulliste" - echo " Kernelmodule zum Betrieb der Clientnetzwerkkarten (z.B. e100 tg3" - echo " via-rhine)." - echo " -m Modulliste" - echo " Kernelmodule (misc) die nicht von -n bzw. -f abgedeckt werden" - echo " (z.B. xenbr for xen network bridge)." - echo " -r path" - echo " Pfad zum Wurzelverzeichnis des zu exportierenden Betriebsystems" - echo " (z.B. /export/10.1)." - echo " -s theme (for splash)" - echo " -d debug (add special modules to initramfs)" - echo " -D Name" - echo " Name der Distribution der Betriebsystemvorlage" - echo " -v Version" - echo " Versionskennung der Distribution der Betriebsystemvorlage" - exit 0 -} - -# replaces which command to find executables inside ROOTDIR -binfinder() -{ -local PROGRAM="$1" -local RET=1 -for ELEMENT in bin sbin usr/bin usr/sbin usr/local/bin \ - usr/local/sbin usr/bin/X11; do - if [ -f "${ROOTDIR}/$ELEMENT/$PROGRAM" ] && \ - [ -x "${ROOTDIR}/$ELEMENT/$PROGRAM" ]; then - printf '%s\n' "${ROOTDIR}/$ELEMENT/$PROGRAM" - RET=0 - break - fi -done -return $RET -} - -# copy some binary to given destination. Takes binary in $1 and -# destination in $2 -cobi() -{ -local DEST=$2 -local FPTB=`binfinder $1` -if [ -z ${FPTB} ] ; then - return 1; -elif [ -L ${FPTB} ] ; then - # do not copy the link but the binary the link points to - local LINKDEST=`ls -la ${FPTB} | sed -e "s,.* ,,"` - case $LINKDEST in - /*) FPTB=${ROOTDIR}${LINKDEST} - ;; - *) ;; - esac - cp ${FPTB} ${INSTDIR}/${DEST} -else - cp ${FPTB} ${INSTDIR}/${DEST} -fi -# get an idea which libraries are needed -# fixme: that might not work if executed on different architecture than -# client root is -chroot ${ROOTDIR} ldd ${FPTB#${ROOTDIR}*} >> ${INSTDIR}/tmp/libraries -# possible solution: use the server binary, get library names and look -# them up manually - fixme: does ldd understand foreign architecture -# binaries -} - -# replace copy -repco() -{ -local FILENAME=$1 -DATE=`date +%m-%d-%Y` -# do not forget to define all variables which should be replaced within -# the start and configuration scripts. All comment lines will be deleted. -if [ -d initrd-stuff/${FILENAME} ] ; then - [ -d ${INSTDIR}/${FILENAME} ] || mkdir -p ${INSTDIR}/${FILENAME} -else - if file initrd-stuff/${FILENAME}| grep "ELF" &>/dev/null ; then - cp initrd-stuff/${FILENAME} ${INSTDIR}/${FILENAME} - elif [ -L initrd-stuff/${FILENAME} ] ; then - cp -a initrd-stuff/${FILENAME} ${INSTDIR}/${FILENAME%/*} - else - sed -e "s,@@@INSTDIR@@@,${INSTDIR},g;s,@@@KERNVER@@@,${KERNVER},g" \ - -e "s,@@@DISTRO@@@,${DISTRO}-${DISTRO_VER},g;s,@@@NETIF@@@,${NET_IF},g" \ - -e "s,@@@NWMODULES@@@,${NWMODULES},g" \ - -e "s,@@@COMDIRINDXS@@@,${COMDIRINDXS},g" \ - -e "s,@@@COMETCEXCL@@@,${COMETCEXCL},g" \ - -e "s,@@@DATE@@@,${DATE},g;/^#[^!].*/d" \ - initrd-stuff/${FILENAME} >> ${INSTDIR}/${FILENAME} -# ugly hack for creating a general slx config file instead of "patching" - # the stage3 init - echo -e "slxconf_date=${DATE}\nslxconf_kernver=${KERNVER}\nslxconf_listnwmod=\"${NWMODULES}\"\nslxconf_distro=${DISTRO}-${DISTRO_VER}" > ${INSTDIR}/etc/sysconfig/slxsystem.conf - [ -x busybox -a "$use_busybox" = 1 ] && sed -e "s,^#!/bin/sh,#!/bin/ash," \ - -i ${INSTDIR}/${FILENAME} - fi -fi -} - -copy_distro_stuff() { - # copy first the default distro dependent configuration (variables) and - # function files, then append to each the distro/version specific file - # variables, functions set in default might that way be overwritten by - # definitions in distro/version specific files - # fixme!! files should be taken from /usr/share/openslx/distro-specs - cat distro-specs/$1/config-default >${INSTDIR}/etc/sysconfig/config - cat distro-specs/$1/config-$2 >>${INSTDIR}/etc/sysconfig/config - #[ -f $SLX_CONFIG_PATH/settings.default ] && \ - # cat $SLX_CONFIG_PATH/settings.default >>${INSTDIR}/etc/sysconfig/config - #[ -f $SLX_CONFIG_PATH/settings.local ] && \ - # cat $SLX_CONFIG_PATH/settings.local >>${INSTDIR}/etc/sysconfig/config - cat distro-specs/$1/functions-default >${INSTDIR}/etc/distro-functions - cat distro-specs/$1/functions-$2 >>${INSTDIR}/etc/distro-functions - # would be cool not to copy .svn here ... - # fixme!! works only for etc directories. If dir exists then next copy places - # file into the existing dir - cp -a distro-specs/$1/files-default ${INSTDIR}/etc/sysconfig/files 2>/dev/null - # ... so remove them afterwards ... - find ${INSTDIR}/etc/sysconfig/files \ - -regex ".*/\..*" -exec rm -rf {} 2>/dev/null \; -} - -# This function makes the directory of this script to the present working -# directory -# It is called within precheck() -# Does also work when called by symbolic links (even for nested links). -goto_script_dir() -{ - [ $DEBUG -ge 2 ] && echo "Aufgerufen wurde $0, checking if it is a link" - calleddetails=`ls -l $0` # get the file flags (e.g. lrwxrwxrwx) - [ $DEBUG -ge 2 ] && echo $calleddetails - - calleddir=${0%/*} # Strip the filename from path - [ $DEBUG -ge 2 ] && echo "Wechsele ins Verzeichnis des aufgerufenen scripts/links ($calleddir)" - cd $calleddir - - while index=`expr index "$calleddetails" "l"`; - [ $index -eq 1 ]; do - - [ $DEBUG -ge 2 ] && echo "It is a link" - target=`echo $calleddetails | awk '{print $NF}'` - [ $DEBUG -ge 2 ] && echo "The target of the link is: $target" - hasslash=`expr index "$target" "/"` - if [ $hasslash -ne 0 ]; then - targetpath=${target%/*} # extract the pathname - [ $DEBUG -ge 2 ] && echo "Following link to $targetpath" - cd $targetpath - else - [ $DEBUG -ge 2 ] && echo "It is in the same directory as the link" - fi - targetfile=`basename $target` - [ $DEBUG -ge 2 ] && echo "The target file of the link is: $targetfile" - calleddetails=`ls -l $targetfile` # get the file flags (e.g. lrwxrwxrwx) - [ $DEBUG -ge 2 ] && echo $calleddetails - done - [ $DEBUG -ge 2 ] && pwd - -} - -# add a bootsplash image to the initial ramdisk, only SuSE at the moment -# theming - -add_theme() { - -theme="${theme}" -splashsizes="640x480 800x600 1024x768 1280x1024 1400x1050 1600x1200" -splash_image= -splash_bin=$(chroot $ROOTDIR which splash) -if [ -n "$splashsizes" -a -n "$splash_bin" ]; then - - themes_dir="../theming/openslx/bootsplash" - if [ -d "/opt/openslx/share/themes/${theme}/bootsplash" ]; then - themes_dir="/opt/openslx/share/themes/${theme}/bootsplash" - elif [ -d "$ROOTDIR/etc/bootsplash/themes/${theme}" ]; then - themes_dir="/etc/bootsplash/themes/${theme}" - elif [ -d "$ROOTDIR/usr/share/splash/themes/${theme}" ]; then - themes_dir="/usr/share/splash/themes/${theme}" - fi - - #fixme: very ugly ;) - mkdir -p $ROOTDIR/tmp/bootsplash - cp -a $themes_dir/* $ROOTDIR/tmp/bootsplash - themes=${themes_dir%bootsplash} - echo -e "\n\tUsing ${themes} for themes.\n" - themes_dir=$ROOTDIR/tmp/bootsplash - - if [ -n "$themes_dir" -a \ - -d "$themes_dir" -o -L "$themes_dir" ]; then - for size in $splashsizes; do - bootsplash_picture="$themes_dir/images/bootsplash-$size.jpg" - cfgname="$themes_dir/config/bootsplash-$size.cfg" - if [ ! -r $cfgname ] ; then - echo " disabled for resolution $size " - elif [ ! -r $bootsplash_picture ] ; then - echo " no image for resolution $size " - else - echo -n "${splash_image:+, }$THEME ($size)" - splash_image=" $splash_image ${cfgname#$ROOTDIR} " - fi - done - echo - else - echo "no theme selected" - fi -fi - -# Include bootsplash image -for image in $splash_image; do - # fixme: ugly hack to have the splash binary - chroot $ROOTDIR $splash_bin -s -f $image >> ${INSTDIR}/bootsplash -done - -rm -rf $ROOTDIR/tmp/bootsplash - -# kdm/Xdialog theme -cp -a ${themes}* ${INSTDIR}/usr/share/themes -} - - -######################################################################### -# End of function declaration - -while getopts :bhgk:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do - case $a in - \:|\?) - case $OPTARG in - k) echo "-k requires kernel version parameter";; - i) echo "-i requires initrd path parameter";; - f) echo "-f requires file system module list parameter";; - n) echo "-n requires network module list parameter";; - m) echo "-m requires misc module list parameter";; - r) echo "-r requires root dir parameter";; - s) echo "-s may require theme name";; - t) echo "-t requires tmp dir parameter";; - d) echo "-d requires debug level (integer)";; - D) echo "-D requires linux Distribution name";; - v) echo "-v requires linux distribution version";; - I) echo "-I requires network interface parameter";; - V) echo "-V requires an executable to run inside linuxrc";; - *) echo "Unknown option: -$OPTARG" - echo "Try mkinitrd -h";; - esac - exit 1 - ;; - b) use_busybox=1;; - g) use_glibc=1;; - k) KERNVER=$OPTARG;; - i) INITRD_PATH=$OPTARG ;; - f) FSMODULES=$OPTARG;; - n) NWMODULES=$OPTARG ;; - m) MISCMODULES=$OPTARG ;; - r) ROOTDIR=$OPTARG;; - s) theme=$OPTARG;; - t) INSTDIR=$OPTARG;; - d) IRFSDEBUG=$OPTARG;; - D) DISTRO=$OPTARG;; - v) DISTRO_VER=$OPTARG;; - I) NET_IF=$OPTARG;; # Not in use - a) acpi_dsdt="$OPTARG";; # Not in use - S) use_selinux=1;; # Not in use - l) local_init_script="$OPTARG";; # use for pre/postinit.local? - u) sysfs_root=1 # Not in use - use_udev= - ;; - h) usage;; - esac -done -shift $(expr $OPTIND - 1) - - -######################################################################### -# End of parameter, argument interpretation - -#Change to the directory this script is located in -goto_script_dir - -# set temporary setup directory, clean it and setup basic directory -# structure -if [ -z "$INSTDIR" ] ; then - INSTDIR=/tmp/slx-tmpramfs -fi -rm -rf ${INSTDIR} -mkdir -p ${INSTDIR}/{dev,proc,tmp,mnt,root,bin,sys,lib} -ln -s /bin ${INSTDIR}/sbin -# hack for 64bit systems -#ln -s /lib ${INSTDIR}/lib64 -mkdir -p ${INSTDIR}/usr/share -# needed for KNOPPIX hwsetup tool not to be confused with ${D_SYSCONFDIR} -mkdir -p ${INSTDIR}/etc/sysconfig - -# if still no distro name set, try to find it using significant files - -if [ -z "${DISTRO}" ] ; then - if [ -e ${ROOTDIR}/etc/SuSE-release ] ; then - DISTRO=suse - DISTRO_VER=`grep "VERSION" ${ROOTDIR}/etc/SuSE-release | sed "s/.*= //"` - elif [ -e ${ROOTDIR}/etc/lsb-release ] ; then - . ${ROOTDIR}/etc/lsb-release - DISTRO=${DISTRIB_ID} - DISTRO_VER=${DISTRIB_RELEASE} - elif [ -e ${ROOTDIR}/etc/debian_version ] ; then - if [ $(grep Ubuntu /etc/issue | wc -l) -gt 0 ]; then - DISTRO=Ubuntu - DISTRO_VER=`sed 's/[Uu]buntu \([0-9]*\.[0-9]*\).*/\1/' /etc/issue` - else - DISTRO=debian - DISTRO_VER=`cat ${ROOTDIR}/etc/debian_version` - fi - elif [ -e ${ROOTDIR}/etc/gentoo-release ] ; then - DISTRO=gentoo - # any idea on the versioning scheme?? - DISTRO_VER="" - else - echo -e "Could not detect client distribution type and version. Please \ -specify\nas command line argument (-d <distro-name> -v <distro-version>)" - exit 1; - fi -fi - -# unify the description of distribution and its version -case "${DISTRO}" in - Debian*|debian*|Sarge*|sarge*) - DISTRO=debian - case "${DISTRO_VER}" in - Sarge*|sarge*|3.1*|*) - DISTRO_VER=3.1 - mkdir -p ${INSTDIR}/lib/udev - cp -r ${ROOTDIR}/lib/udev/* ${INSTDIR}/lib/udev/ - ;; - esac - ;; - Ubuntu*|ubuntu*) - DISTRO=ubuntu - case "${DISTRO_VER}" in - Breezy*|breezy*) - DISTRO_VER=5.10 - cp ${ROOTDIR}/lib/libnss_compat.so.2 ${INSTDIR}/lib - ;; - Dapper*|dapper*) - DISTRO_VER=6.06 - ;; - esac - ;; - Gentoo*|gentoo*) - DISTRO=gentoo - case "${DISTRO_VER}" in - 2005*|*) - DISTRO_VER=2005.1 - ;; - esac - ;; - SuSE*|suse*|Suse*|SuSe*|SUSE*|*) - DISTRO=suse - case "${DISTRO_VER}" in - 9*) - DISTRO_VER=9.3 - ;; - 10.0) - DISTRO_VER=10.0 - ;; - 10*) - DISTRO_VER=10.1 - ;; - esac - - ;; -esac -# at this point ${DISTRO} ${DISTRO_VER} should be fixed -copy_distro_stuff ${DISTRO} ${DISTRO_VER} - -# hotplug/udev type and related stuff -cp -a ${ROOTDIR}/etc/udev ${INSTDIR}/etc - -# binary and corresponding library copies could be avoided if a small -# initial ramdisk environment of its own is generated from busybox, -# dietlibc and similar, see odlx project page ... - -# devices needed rather early (copied from /tmp to /dev in init) -mknod ${INSTDIR}/tmp/console c 5 1 &>/dev/null -mknod ${INSTDIR}/tmp/null c 1 3 &>/dev/null -mknod ${INSTDIR}/tmp/kmsg c 1 11 &>/dev/null -mknod ${INSTDIR}/tmp/ctl b 241 255 &>/dev/null -# suse specific, but might be usable with other distros too -mknod ${INSTDIR}/tmp/bootsplash p &>/dev/null - -# test for the existance of busybox -if [ "$use_busybox" = 1 ]; then - [ -x busybox ] || { - unset use_busybox - echo "You wanted to include busybox, but did not provide it in \ - initrd/ directory."; } -fi -if [ -n "$use_busybox" ] ; then - cp busybox ${INSTDIR}/bin - for bbins in [ arping ash cat chmod chown chroot cp date \ - dd df dmesg echo expr fdisk free hwclock insmod ip \ - kill killall ln ls lsmod mkdir mke2fs mkfs.ext2 \ - mkfs.ext3 mknod modprobe mount mv ps rdate rm rmmod \ - sed sort switch_root tar test tftp time udhcpc \ - umount uname usleep vconfig vi; do - ln -s /bin/busybox ${INSTDIR}/bin/$bbins - done - # fake the sh link in busybox environment - echo -e "#!/bin/ash\n/bin/ash \$@" > ${INSTDIR}/bin/sh - chmod a+x ${INSTDIR}/bin/sh -else - # find and copy a shell to be used within initialramfs - for bbins in bash ash sh; do - if cobi ${bbins} bin ; then - ln -fs ${bbins} ${INSTDIR}/bin/sh - [ "${bbins}" != "ash" ] && ln -fs ${bbins} ${INSTDIR}/bin/ash - [ "${bbins}" != "bash" ] && ln -fs ${bbins} ${INSTDIR}/bin/bash - break - else echo "Binary not found (${bbins})"; fi - done - - # find and copy ip setup binaries - for bbins in ip ifconfig; do - if cobi ${bbins} bin ; then - [ "${bbins}" = "ifconfig" ] && cobi route bin - break - else echo "Binary not found"; fi - done - - # needed standard binaries (in init, servconfig, hwautocfg, ... scripts) - for bbins in \ - cat chmod chown chroot cp expr fdisk gzip killall ln ls mkdir \ - mkfs.ext2 modprobe mount rmmod sed sort rm tar umount - do - cobi ${bbins} bin || echo "Program ${bbins} not found" - done - - # binaries useful for debugging purposes - if [ $IRFSDEBUG -gt 2 ] ; then - for bbins in \ - date lsmod lsof ps strace time - do - cobi ${bbins} bin || echo "Program ${bbins} not found" - done - fi - - # tftp client binary for configuration via file - get machine-setup per - # tftp from dhcp (or specified other) server - for tftp in atftp tftp ; do - binfinder $tftp && break; - done - cobi $tftp bin || echo "Program ${tftp} not found" - cp /lib/libnss_files.so.2 ${INSTDIR}/lib -fi - -# one of the dhcp clients -for dhcp in dhclient dhcpcd pump ipconfig ; do - binfinder $dhcp && break; -done -cobi $dhcp bin -mkdir -p ${INSTDIR}/var/{lib,run} - -# type of hotplug/udev/dev (for etc directories see above!!) -for bbins in udev udevd udevstart udevtrigger udevsend - do - cobi ${bbins} bin &>/dev/null || \ - echo "Program ${bbins} not found; could be most probably ignored" -done - -# if nfs is used as clients root filesystem -cobi portmap bin -mkdir -p ${INSTDIR}/var/lib/nfs/state - -# if nbd or dnbd is used as clients root filesystem -if [ -n "${FSMODULES}" ] ; then -for i in ${FSMODULES}; do - case "$i" in - dnbd) - cobi dnbd-client bin - ;; - nbd) - cobi nbd-client bin - ;; - esac -done -fi - -# if unionfs -cobi unionctl bin &>/dev/null || \ - echo "Program unionctl not found; could be ignored ..." - -# if cowloop -cobi cowdev bin &>/dev/null || \ - echo "Program cowdev not found; could be ignored ..." - -# distro specific additional stuff -case "${DISTRO}" in - debian*) - cp ${ROOTDIR}/lib/libnss_compat.so.2 ${INSTDIR}/lib;; -esac - -# add needed libraries depending on choosen binaries. use chroot -# on ldd, otherwise the detection does not work properly. ldd has to be -# static linked binary -# fixme: procedure might have to be changed -for lib in `cat ${INSTDIR}/tmp/libraries 2>/dev/null | \ - sed -e "s,tls,,;s,i686/cmov,," \ - -ne 's:\t\(.* => \)\?\(/.*\) (0x[0-9a-f]*):\2:p' | sort -u` ; do - baselib=`basename ${lib}` - test -e ${INSTDIR}/lib/${baselib} || \ - cp /${ROOTDIR}/${lib} ${INSTDIR}/lib -done -rm ${INSTDIR}/tmp/libraries -# temporaere grosse scheisse -mv ${INSTDIR}/lib ${INSTDIR}/lib64 -mkdir ${INSTDIR}/lib -cp /${ROOTDIR}/lib/ld-linux.so.2 ${INSTDIR}/lib -cp /${ROOTDIR}/lib/libc.so.6 ${INSTDIR}/lib - -# add kernel modules and dependency files -if [ -z "$KERNVER" ] ; then - KERNVER=`ls -l ${ROOTDIR}/boot/vmlinuz | grep vmlinuz | sed "s/.*vmlinuz-//"` -fi -if [ -z "$KERNVER" ] ; then - KERNVER=`ls -l ${ROOTDIR}/vmlinuz | grep vmlinuz | sed "s/.*vmlinuz-//"` -fi -# if no vmlinuz found, go for vmlinuz-x.yz.uv... -if [ -z "$KERNVER" ] ; then - KERNVER=`ls -lt ${ROOTDIR}/boot/vmlinuz* | grep vmlinuz | sed -n "1,1s/.*vmlinuz-//p"` - echo "No vmlinuz-link found. Using kernel version "$KERNVER -fi - -if [ -z "$KERNVER" ] ; then - echo "No kernel version set or detected - please use the -k flag! Exiting..." - exit 1 -fi - -if [ -z "$NWMODULES" ] ; then - #NWMODULES="forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32 8139too 8139cp" - NWMODULES="forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32" -fi -if [ -z "$FSMODULES" ] ; then - FSMODULES="nbd nfs" -fi -if [ -z "$INITRD_PATH" ] ; then - INITRD_PATH="${ROOTDIR}/tmp/slxinitramfs.gz" -fi - -# define modules to put into initial ramdisk for debugging -#DEBUGMODULES="uhci_hcd usbhid" -if [ $IRFSDEBUG -gt 1 ] ; then - DEBUGMODULES="uhci-hcd ohci-hcd usbhid" -else - DEBUGMODULES="" -fi - -# put all needed modules into initial ramdisk -mkdir -p ${INSTDIR}/lib/modules/${KERNVER} -for module in af_packet unix ${NWMODULES} ${FSMODULES} ${MISCMODULES} \ - ${DEBUGMODULES}; do - mod=`cd /${ROOTDIR}; find "lib/modules/${KERNVER}" -name ${module}.ko \ -2>/dev/null` - - if [ -n "$mod" ] ; then - mpath=${INSTDIR}/${mod%/*} - mkdir -p ${mpath} - cp ${ROOTDIR}/$mod ${mpath} - # fixmee!! selection of dependent modules could be handled a little bit - # more clever - rdirprefix="${ROOTDIR}/lib/modules/${KERNVER}/kernel" - ddirprefix="${INSTDIR}/lib/modules/${KERNVER}/kernel" - case "$module" in - e100|8139too|via-rhine|sis900|epic100|sundance|8139cp|eepro100|pcnet32) - cp ${rdirprefix}/drivers/net/mii.ko \ - ${ddirprefix}/drivers/net &>/dev/null - ;; - nfs) - # create directory structure for modules needed and copy them - # to the proper place (as expected by modprobe/modules.dep) - mkdir -p ${ddirprefix}/net/sunrpc - mkdir -p ${ddirprefix}/fs/lockd ${ddirprefix}/fs/nfs_common - cp ${rdirprefix}/net/sunrpc/sunrpc.ko \ - ${ddirprefix}/net/sunrpc &>/dev/null - cp ${rdirprefix}/fs/lockd/lockd.ko \ - ${ddirprefix}/fs/lockd &>/dev/null - cp ${rdirprefix}/fs/nfs_common/nfs_acl.ko \ - ${ddirprefix}/fs/nfs_common &>/dev/null - ;; - ext3) - mkdir -p ${ddirprefix}/fs/jbd - cp ${rdirprefix}/fs/jbd/jbd.ko \ - ${ddirprefix}/fs/jbd - ;; - netloop) - cobi brctl bin &>/dev/null || \ - echo "Program brctl not found; could be ignored ..." - mkdir -p ${ddirprefix}/drivers/xen/netback - mkdir -p ${ddirprefix}/net/bridge - cp ${rdirprefix}/drivers/xen/netback/netloop.ko \ - ${ddirprefix}/drivers/xen/netback &>/dev/null - cp ${rdirprefix}/net/bridge/bridge.ko \ - ${ddirprefix}/net/bridge &>/dev/null - ;; - esac - fi -done -cp ${ROOTDIR}/lib/modules/${KERNVER}/modules.* \ - ${INSTDIR}/lib/modules/${KERNVER} - -# initial ramdisk scripts: init, functions, servconfig, hwautocfg, ... -# copy and replace variable names -for dirs in `find initrd-stuff/* ! -regex ".*/\..*"` ; do - repco ${dirs##initrd-stuff/} -done -chmod 755 ${INSTDIR}/init \ - ${INSTDIR}/bin/{servconfig,hwautocfg,screenres,dhcpmkconfig} - -# add the common default client configuration file - just to ensure to -# have all major variables defined. !!These settings are most probably -# are overwritten by fileget in stage3 within initramfs!! -if [ -f /var/opt/openslx/config/default/initramfs/machine-setup ] ; then - cp /var/opt/openslx/config/default/initramfs/machine-setup \ - ${INSTDIR}/etc/machine-setup - echo "Using /var/opt/openslx/config/default/initramfs/machine-setup" -# use the installed default machine-setup.default -elif [ -f /opt/openslx/share/templates/machine-setup.default ] ; then - cp /opt/openslx/share/templates/machine-setup.default \ - ${INSTDIR}/etc/machine-setup - echo "Using /opt/openslx/share/templates/machine-setup.default" -# just compatibility for older versions -elif [ -f /etc/dxs/client.cfg/machine-setup.default ] ; then - cp /etc/dxs/client.cfg/machine-setup.default \ - ${INSTDIR}/etc/machine-setup - echo "Using /etc/dxs/client.cfg/machine-setup.default" -# fixme: dirty hack if the installer does not creates a normal file -elif [ -f /etc/dxs/client.cfg/machine-setup.default.new ] ; then - cp /etc/dxs/client.cfg/machine-setup.default.new \ - ${INSTDIR}/etc/machine-setup -elif [ -f ../installer/default_files/machine-setup.default ] ; then - cp ../installer/default_files/machine-setup.default \ - ${INSTDIR}/etc/machine-setup - echo "Using ../installer/default_files/machine-setup.default" -else - #inserted password for root for debugging purposes - echo -e "# default for machine-setup does not exist\n# root logins are \ -disabled\nroot_pw='"'$1$T7VD/mmQ$aCP1WEaWplEsHe9khv4kK.'"'" \ - > ${INSTDIR}/etc/machine-setup -fi - -# custom hardware configuration files pcitable.local and Cards.local -# fixme!! New source for these files (instead of templates)! -if [ -f /opt/openslx/share/templates/pcitable.local ] ; then - cat /opt/openslx/share/templates/pcitable.local >> \ - ${INSTDIR}/usr/share/hwdata/pcitable -fi -if [ -f /opt/openslx/share/templates/Cards.local ] ; then - cat /opt/openslx/share/templates/Cards.local >> \ - ${INSTDIR}/usr/share/hwdata/Cards -fi - -# finally copy user-supplied preinit files. The client specific one -# overwrites the system default one. postinit.local may be part of -# fileget tgz (in stage3) -for cfg in default/initramfs/preinit.local \ - ${DISTRO}-${DISTRO_VER}/initramfs/preinit.local \ - default/initramfs/postinit.local \ - ${DISTRO}-${DISTRO_VER}/initramfs/postinit.local ; do - test -f /var/opt/openslx/config/$cfg && \ - cp /var/opt/openslx/config/$cfg ${INSTDIR}/bin -done - -# remove unneeded debug info, fixme not really tested yet -strip ${INSTDIR}/bin/* ${INSTDIR}/lib/* &>/dev/null - -######################################################################### -# End of file copy procedures - -[ -n "${theme}" ] && add_theme - -# finally create the compressed initial ramdisk cpio archive -pushd . > /dev/null 2>&1 - cd ${INSTDIR} - find . ! -name "*~" | cpio -H newc --create | gzip -9 > $INITRD_PATH -popd > /dev/null 2>&1 - |