- echo -n "Creating initrd $PATH_/minirt26.gz: "
- if isExistent "$PATH_/minirt26.gz" ; then
- echo
- echo "$PATH_/minirt26.gz exists already, skipping initrd creation"
- return 0
- fi
-
- if [ -e '/live/cow' ]; then
- mkInitrdNew
- else
- mkInitrd
- fi
- echo done
-}
-
-function mkInitrdNew
-{
- set -e
- local cfg_="/etc/initramfs-tools/initramfs.conf"
- local tmp_="`mktemp -t terminalserver__initramfsbk.XXXXXX`"
- cp $cfg_ $tmp_
- sed -i 's/^MODULES=.*/MODULES=netboot/' $cfg_
- update-initramfs -u -t 1>/dev/null
- mv $tmp_ $cfg_
-
- local initrd_="/boot/initrd.img-$KERNEL_VERSION_"
- mv $initrd_ $PATH_/minirt26.gz
- mv ${initrd_}.bak $initrd_
- set +e
-}
-
-function mkInitrd
-{
- TMP_DIR_=`mktemp -td terminalserver_initrd.XXXXXX`
- local i=''
- local tmp_loopname=''
-
- # copying original initrd into $INITRD
- execute "rm -r $INITRD_" 2>/dev/null
- execute "cp $ORIGINAL_INITRD_ $TMP_DIR_/minirt26.gz" warn || return 1
- execute "mkdir -p $INITRD_" warn || return 1
- execute "mkdir -p $PATH_/mini-root.orig" warn || return 1
- execute "gunzip $TMP_DIR_/minirt26.gz" warn || return 1
- tmp_loopname=`findNextFreeLoop die`
- execute "mount -o loop=$tmp_loopname $TMP_DIR_/minirt26 $PATH_/mini-root.orig " warn || return 1
- execute "cp -a $PATH_/mini-root.orig/* $INITRD_" warn || return 1
- execute "umount $PATH_/mini-root.orig" warn || return 1
- losetup -d $tmp_loopname &>/dev/null
- tmp_loopname=''
- execute "rmdir $PATH_/mini-root.orig" warn || return 1
- execute "rm $TMP_DIR_/minirt26" warn || return 1
-
- # implanting my initrd changes into the original initrd
-
- # copy programs, check if there are already links with this name to busybox
- for i in $USR_SHARE_/timeout $USR_SHARE_/udhcp-config.sh $USR_SHARE_/cdir $USR_SHARE_/rdir; do
- tmp_name_="${i##*/}"
- isNotExistent "$INITRD_/static/$tmp_name_" eprint || execute "rm $INITRD_/static/$tmp_name_"
- cp $i "$INITRD_/static/$tmp_name_"
- done
- cp $USR_SHARE_/linuxrc $INITRD_/
- mkdir -p $INITRD_/mylib
- mkdir -p $INITRD_/myusr
-
- #
- # which modules should i put into the ramdisk
- #
-
- # find *all* network drivers, but do not include wlan/pcmcia/... related ones
- # blacklist: proteon and depca as they seem to cause problems with udevsettle
- find ${MODULES_PATH_}/${KERNEL_VERSION_}/kernel/drivers/net/ -name \*.ko | \
- grep -v 'wireless\|wan\|hamradio\|wlan\|ppp\|irda\|pcmcia\|depca\|proteon' | \
- sed 's#.*./## ; s#\.ko##' | sort | uniq > $CARDS_DETECTED_BY_DISCOVER
-
- local modules="`cat $CARDS_DETECTED_BY_DISCOVER |xargs` af_packet"
- local modules_dep=""
-
- # get paths of modules + paths of all dependent modules
- echo -n "" >"$TMP_"
- for i in $modules; do
- tmp_=`awk -F: '{if($1~/'"$i".ko'/) {print $0}}' $MODULES_PATH_/$KERNEL_VERSION_/modules.dep`
- echo "${tmp_%%:*}"
- # FIXME ugly sed hack :(
- echo "${tmp_#*:}" | xargs -n1 echo | sed 's/://'
- done \
- | sort | uniq | while read module relax; do
- if [ -n "$module" ]; then
- echo "$module" >> $TMP_