--- trunk/mkinitrd/mkinitrd.sh 2005/12/02 14:48:31 290 +++ trunk/mkinitrd/mkinitrd.sh 2005/12/03 18:36:28 292 @@ -1,5 +1,5 @@ #!/bin/bash -# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.1 2005-12-02 14:48:31 niro Exp $ +# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.3 2005-12-03 18:36:28 niro Exp $ # mkinitrd # @@ -646,10 +646,10 @@ # install busybox install -m0755 $(which busybox.mkinitrd) ${DEST}/bin/busybox || die -for i in '[' ash awk basename cat cut chroot clear cp dirname echo env false find \ - grep gunzip gzip insmod ln ls loadkmap losetup lsmod mkdir mknod modprobe more mount mv \ - pivot_root ps pwd rm rmdir rmmod sh sleep tar test touch true umount uname \ - xargs yes zcat chmod chown +for i in '[' ash basename cat cut chroot clear cp dirname echo env false find \ + grep gunzip gzip ln ls loadkmap losetup mkdir mknod modprobe more mount mv \ + ps pwd rm rmdir sh sleep test touch true umount uname \ + xargs yes chmod chown do # static links ln ${DEST}/bin/busybox ${DEST}/bin/${i} || die "${i}" @@ -658,6 +658,9 @@ # install run-init install -m0755 $(which run-init.mkinitrd) ${DEST}/bin/run-init || die +# install insmod.static +install -m0755 $(which insmod.static) ${DEST}/bin/insmod || die + # install udev cp -a /etc/udev ${DEST}/etc || die install -m0755 /sbin/udev.static ${DEST}/bin/udev || die @@ -730,17 +733,56 @@ add_initrd 'echo "-- Setting up hotplug ..."' add_initrd 'echo "/sbin/hotplug" > /proc/sys/kernel/hotplug' -add_initrd 'for i in $(find /lib -type f -name *.ko)' -add_initrd 'do' -add_initrd ' echo "-- Loadin module ${i}"' -add_initrd ' insmod ${i};' -# handle special cases like usb -add_initrd ' if [[ ${i} = usb-storage ]]' -add_initrd ' then' -add_initrd ' echo "Waiting 8 seconds for usb-driver initialization."' -add_initrd ' sleep 8' -add_initrd ' fi' -add_initrd 'done' +# add_initrd 'for i in $(find /lib -type f -name *.ko)' +# add_initrd 'do' +# add_initrd ' echo "-- Loading module ${i}"' +# add_initrd ' insmod ${i};' +# # handle special cases like usb +# add_initrd ' if [ "${i}" = "usb-storage" ]' +# add_initrd ' then' +# add_initrd ' echo "Waiting 8 seconds for usb-driver initialization."' +# add_initrd ' sleep 8' +# add_initrd ' fi' +# add_initrd 'done' + +# loading detected modules with options +for MODULE in ${MODULES} +do + text="" + module=$(echo ${MODULE} | sed "s|.*/||" | sed "s/.k\?o$//") + fullmodule=$(echo ${MODULE} | sed "s|.*/||") + + options=$(sed -n -e "s/^options[ ][ ]*${module}[ ][ ]*//p" ${modulefile} 2>/dev/null) + + if [ -n "${options}" ] + then + echo "Adding module ${module}${text} with options ${options} ..." + else + echo "Adding module ${module}${text} ..." + fi + + add_initrd "echo \"-- Loading ${fullmodule} module\"" + add_initrd "insmod /lib/${fullmodule} ${options}" + + # Hack - we need a delay after loading usb-storage to give things + # time to settle down before we start looking a block devices + if [ "${module}" = "usb-storage" ] + then + add_initrd 'echo Waiting 8 seconds for driver initialization.' + add_initrd 'sleep 8' + fi + if [ "${module}" = "zfcp" -a -f /etc/zfcp.conf ] + then + add_initrd 'echo Waiting 2 seconds for driver initialization.' + add_initrd 'sleep 2' + cat /etc/zfcp.conf | grep -v "^#" | tr "A-Z" "a-z" | while read DEVICE SCSIID WWPN SCSILUN FCPLUN + do + add_initrd "echo -n ${WWPN} > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/port_add" + add_initrd "echo -n ${FCPLUN} > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/${WWPN}/unit_add" + add_initrd "echo -n 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online" + done + fi +done # lvm support if [ -n "${vg_list}" ] @@ -813,10 +855,10 @@ done # create the image +echo "Creating initrd image '${target}' ..." (cd "${DEST}" ; find . | cpio --quiet --dereference -o -H newc | gzip -9 >${IMAGE}) cat ${IMAGE} > ${target} || die - # clean up [ -d ${DEST} ] && rm -rf ${DEST} [ -f ${IMAGE} ] && rm -f ${IMAGE}