Magellan Linux

Diff of /trunk/mkinitrd-magellan/mkinitrd.in

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 901 by niro, Wed Aug 5 19:20:53 2009 UTC revision 1516 by niro, Wed Sep 7 17:48:06 2011 UTC
# Line 44  NOSTRIP=false Line 44  NOSTRIP=false
44    
45  CONFMODS="${MODULES}"  CONFMODS="${MODULES}"
46  MODULES=""  MODULES=""
47    INITEXEC="/sbin/init"
48    
49  compress=1  compress=1
50  allowmissing=""  allowmissing=""
# Line 53  force="" Line 54  force=""
54  verbose=""  verbose=""
55  img_vers=""  img_vers=""
56  builtins=""  builtins=""
57  modulefile=/etc/modules.conf  modulefile="/etc/modules.conf"
58    modprobeconf="/etc/modprobe.d/*"
59  rc=0  rc=0
60    
61  IMAGESIZE=4000  IMAGESIZE=4000
# Line 75  usage() Line 77  usage()
77   echo "       [--image-version] [--force-scsi-probe | --omit-raid-modules]"   echo "       [--image-version] [--force-scsi-probe | --omit-raid-modules]"
78   echo "       [--with=<module>] [--force-lvm-probe | --omit-lvm-modules]"   echo "       [--with=<module>] [--force-lvm-probe | --omit-lvm-modules]"
79   echo "       [--builtin=<module>] [--initramfs | --loopback] [--no-strip]"   echo "       [--builtin=<module>] [--initramfs | --loopback] [--no-strip]"
80   echo "       [--fstab=<fstab>] [--nocompress] <initrd-image> <kernel-version>"   echo "       [--fstab=<fstab>] [--nocompress] [--initexec=<init>]"
81     echo "       <initrd-image> <kernel-version>"
82   echo   echo
83   echo "       (ex: $(basename $0) /boot/initrd-2.2.5-15.img 2.2.5-15)"   echo "       (ex: $(basename $0) /boot/initrd-2.2.5-15.img 2.2.5-15)"
84    
# Line 91  moduledep() Line 94  moduledep()
94    
95   echo "Looking for deps of module $1"   echo "Looking for deps of module $1"
96   deps=$(awk 'BEGIN { searched=ARGV[2]; ARGV[2]=""; rc=1 } \   deps=$(awk 'BEGIN { searched=ARGV[2]; ARGV[2]=""; rc=1 } \
97   function modname(filename) { match(filename, /\/([^\/]+)\.k?o:?$/, ret); return ret[1] } \   function modname(filename) { match(filename, /\/([^\/]+)\.k?o.?g?z?:?$/, ret); return ret[1] } \
98   function show() { if (orig == searched) { print dep; orig=""; rc=0; exit } } \   function show() { if (orig == searched) { print dep; orig=""; rc=0; exit } } \
99   /^.*kernel/ { show(); \   /^.*kernel/ { show(); \
100   orig=modname($1); dep=""; \   orig=modname($1); dep=""; \
# Line 129  findmodule() Line 132  findmodule()
132    
133   case "${MODULES} " in   case "${MODULES} " in
134   *"/${modName}.ko "*) return ;;   *"/${modName}.ko "*) return ;;
135     *"/${modName}.ko.gz "*) return ;;
136   esac   esac
137    
138   if echo ${builtins} | egrep -q '(^| )'${modName}'( |$)'   if echo ${builtins} | egrep -q '(^| )'${modName}'( |$)'
# Line 161  findmodule() Line 165  findmodule()
165   done   done
166   fi   fi
167    
168   for modExt in o.gz o ko   for modExt in o.gz o ko ko.gz
169   do   do
170   for modDir in /lib/modules/${kernel}/updates /lib/modules/${kernel}   for modDir in /lib/modules/${kernel}/updates /lib/modules/${kernel}
171   do   do
# Line 249  findstoragedriver() Line 253  findstoragedriver()
253   modalias=$(cat modalias)   modalias=$(cat modalias)
254   for driver in $(modprobe --set-version ${kernel} --show-depends ${modalias} 2>/dev/null| awk '{ print gensub(".*/","","g",$2) }')   for driver in $(modprobe --set-version ${kernel} --show-depends ${modalias} 2>/dev/null| awk '{ print gensub(".*/","","g",$2) }')
255   do   do
256   findmodule ${driver%%.ko}   findmodule ${driver%%.*}
257   done   done
258   popd >/dev/null 2>&1   popd >/dev/null 2>&1
259   done   done
# Line 414  while [ $# -gt 0 ]; do Line 418  while [ $# -gt 0 ]; do
418   --initramfs) IMAGE_TYPE=initramfs ;;   --initramfs) IMAGE_TYPE=initramfs ;;
419   --loopback) IMAGE_TYPE=loopback ;;   --loopback) IMAGE_TYPE=loopback ;;
420   --no-strip) NOSTRIP=true ;;   --no-strip) NOSTRIP=true ;;
421     --initexec*)
422     if echo $1 | grep -q '=' ; then
423     INITEXEC=$(echo $1 | sed 's/^--initexec=//')
424     else
425     INITEXEC=$2
426     shift
427     fi
428     ;;
429   *)   *)
430   if [ -z "${target}" ]   if [ -z "${target}" ]
431   then   then
# Line 472  fi Line 484  fi
484  ####### get modules ##########  ####### get modules ##########
485    
486  echo "Creating ${IMAGE_TYPE} initrd image"  echo "Creating ${IMAGE_TYPE} initrd image"
 modulefile=/etc/modprobe.conf  
487    
488  for n in ${PREMODS}  for n in ${PREMODS}
489  do  do
# Line 487  then Line 498  then
498   for fs in / /boot   for fs in / /boot
499   do   do
500   esc=$(echo ${fs} | sed 's,/,\\/,g')   esc=$(echo ${fs} | sed 's,/,\\/,g')
501   dev=$(mount | awk "/ on ${esc} / { print \$1 }" | sed 's/[0-9]*$//' | cut -d/ -f3)   dev=$(mount | awk "/ on ${esc} / { print \$1 }" | sed 's/[0-9]*$//')
502   if [ "$(echo ${dev} | cut -c1-2)" = sd ]   if [ "$(echo ${dev} | cut -c6-7)" = sd ]
503   then   then
504   if [ $(which kudzu 2>/dev/null) ]   if [ $(which hwinfo 2>/dev/null) ]
505   then   then
506   host=$(kudzu --probe -b scsi |   if [[ -n $(hwinfo --disk --only ${dev} | grep 'Driver Modules' | grep 'usb[_|-]storage') ]]
  gawk '/^device: '${dev}'/,/^host:/ { if (/^host/) { print $2; exit; } }')  
  if [ -d /proc/scsi/usb-storage-${host} -o -f /proc/scsi/usb-storage/${host} ]  
507   then   then
508   needusb=1   needusb=1
509   fi   fi
# Line 765  add_initrd 'echo /sbin/mdev > /proc/sys/ Line 774  add_initrd 'echo /sbin/mdev > /proc/sys/
774  for MODULE in ${MODULES}  for MODULE in ${MODULES}
775  do  do
776   text=""   text=""
777   module=$(echo ${MODULE} | sed "s|.*/||" | sed "s/.k\?o$//")   module=$(echo ${MODULE} | sed "s|.*/||" | sed -e "s/.k\?o.\?g\?z\?$//" -e "s/.gz//")
778   fullmodule=$(echo ${MODULE} | sed "s|.*/||")   fullmodule=$(echo ${MODULE} | sed -e "s|.*/||" -e "s/.gz//")
779    
780   options=$(sed -n -e "s/^options[     ][      ]*${module}[      ][      ]*//p" ${modulefile} 2>/dev/null)   options=$(sed -n -e "s/^options[     ][      ]*${module}[      ][      ]*//p" ${modprobeconf} 2>/dev/null)
781    
782   if [ -n "${options}" ]   if [ -n "${options}" ]
783   then   then
# Line 800  do Line 809  do
809   fi   fi
810  done  done
811    
812    # respect rootdelay kernel param
813    add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in rootdelay=*) ROOTDELAY="${i#*=}";; esac; done'
814    add_initrd 'if [ ! -z "${ROOTDELAY}" ]; then echo "-- Requested a rootdelay of ${ROOTDELAY} seconds ..."; sleep ${ROOTDELAY};fi'
815    
816  # lvm support  # lvm support
817  if [ -n "${vg_list}" ]  if [ -n "${vg_list}" ]
818  then  then
# Line 838  then Line 851  then
851   done   done
852  fi  fi
853    
854    # get the right initexec
855    add_initrd "INITEXEC=\"${INITEXEC}\""
856    # support init=* from cmdline
857    add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in init=*) INITEXEC="${i#*=}";; esac; done'
858    
859  add_initrd 'echo "-- Mounting sysroot ..."'  add_initrd 'echo "-- Mounting sysroot ..."'
860  add_initrd '. /etc/rootdev'  add_initrd '. /etc/rootdev'
861  add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab'  add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab'
# Line 849  add_initrd 'echo > /proc/sys/kernel/hotp Line 867  add_initrd 'echo > /proc/sys/kernel/hotp
867  # de-silencio  # de-silencio
868  add_initrd 'echo 3 > /proc/sys/kernel/printk'  add_initrd 'echo 3 > /proc/sys/kernel/printk'
869    
870    add_initrd 'BREAK_ENABLED=no'
871    add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in break) BREAK_ENABLED=yes;; esac; done'
872    add_initrd 'if [ "${BREAK_ENABLED}" = "yes" ]; then echo "-- Break requested, type 'exit' to resume operation ..."; ash; fi'
873    
874  add_initrd 'echo "-- Switching to real sysroot ..."'  add_initrd 'echo "-- Switching to real sysroot ..."'
875  add_initrd 'umount /dev'  add_initrd 'umount /dev'
876  add_initrd 'umount /sys'  add_initrd 'umount /sys'
877  add_initrd 'umount /proc'  add_initrd 'umount /proc'
878    
879  [[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot /sbin/init $@ </sysroot/dev/console >/sysroot/dev/console'  [[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot ${INITEXEC} $@ </sysroot/dev/console >/sysroot/dev/console'
880  if [[ ${IMAGE_TYPE} = loopback ]]  if [[ ${IMAGE_TYPE} = loopback ]]
881  then  then
882   add_initrd 'cd /sysroot'   add_initrd 'cd /sysroot'
883   add_initrd 'pivot_root . initrd'   add_initrd 'pivot_root . initrd'
884   add_initrd "exec /sbin/chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;exec -a init.new /sbin/init'</dev/console >/dev/console 2>&1"   add_initrd "exec /sbin/chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;exec -a init.new \${INITEXEC}'</dev/console >/dev/console 2>&1"
885  fi  fi
886    
887  chmod +x ${DEST}/init || die  chmod +x ${DEST}/init || die
# Line 876  do Line 898  do
898   if [ -x /usr/bin/strip ] && [[ ${NOSTRIP} = false ]]   if [ -x /usr/bin/strip ] && [[ ${NOSTRIP} = false ]]
899   then   then
900   /usr/bin/strip -g ${verbose} ${MODULE} -o ${DEST}/lib/$(basename ${MODULE}) || die   /usr/bin/strip -g ${verbose} ${MODULE} -o ${DEST}/lib/$(basename ${MODULE}) || die
901     # handle gzip compressed modules right
902     elif [[ ${MODULE##*.} = gz ]]
903     then
904     zcat ${verbose} ${MODULE} > ${DEST}/lib/$(basename ${MODULE} .gz) || die
905   else   else
906   cp ${verbose} -a ${MODULE} ${DEST}/lib || die   cp ${verbose} -a ${MODULE} ${DEST}/lib || die
907   fi   fi

Legend:
Removed from v.901  
changed lines
  Added in v.1516