Magellan Linux

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

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

revision 897 by niro, Wed Aug 5 17:50:57 2009 UTC revision 1188 by niro, Thu Dec 16 01:24:51 2010 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 328  get_blkid() Line 331  get_blkid()
331   local dev="$1"   local dev="$1"
332   [[ -z ${dev} ]] && die "no dev given"   [[ -z ${dev} ]] && die "no dev given"
333    
334   eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')   # check if given device is already an UUID
335     if [[ ${dev/UUID=/}x != ${dev}x ]]
336     then
337     eval "${dev}"
338     else
339     eval $(busybox.mkinitrd blkid ${dev} | grep "${dev}:" | sed 's/.*:\ //')
340     fi
341   echo ${UUID}   echo ${UUID}
342  }  }
343    
# Line 408  while [ $# -gt 0 ]; do Line 417  while [ $# -gt 0 ]; do
417   --initramfs) IMAGE_TYPE=initramfs ;;   --initramfs) IMAGE_TYPE=initramfs ;;
418   --loopback) IMAGE_TYPE=loopback ;;   --loopback) IMAGE_TYPE=loopback ;;
419   --no-strip) NOSTRIP=true ;;   --no-strip) NOSTRIP=true ;;
420     --initexec*)
421     if echo $1 | grep -q '=' ; then
422     INITEXEC=$(echo $1 | sed 's/^--initexec=//')
423     else
424     INITEXEC=$2
425     shift
426     fi
427     ;;
428   *)   *)
429   if [ -z "${target}" ]   if [ -z "${target}" ]
430   then   then
# Line 466  fi Line 483  fi
483  ####### get modules ##########  ####### get modules ##########
484    
485  echo "Creating ${IMAGE_TYPE} initrd image"  echo "Creating ${IMAGE_TYPE} initrd image"
 modulefile=/etc/modprobe.conf  
486    
487  for n in ${PREMODS}  for n in ${PREMODS}
488  do  do
# Line 481  then Line 497  then
497   for fs in / /boot   for fs in / /boot
498   do   do
499   esc=$(echo ${fs} | sed 's,/,\\/,g')   esc=$(echo ${fs} | sed 's,/,\\/,g')
500   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]*$//')
501   if [ "$(echo ${dev} | cut -c1-2)" = sd ]   if [ "$(echo ${dev} | cut -c6-7)" = sd ]
502   then   then
503   if [ $(which kudzu 2>/dev/null) ]   if [ $(which hwinfo 2>/dev/null) ]
504   then   then
505   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} ]  
506   then   then
507   needusb=1   needusb=1
508   fi   fi
# Line 762  do Line 776  do
776   module=$(echo ${MODULE} | sed "s|.*/||" | sed "s/.k\?o$//")   module=$(echo ${MODULE} | sed "s|.*/||" | sed "s/.k\?o$//")
777   fullmodule=$(echo ${MODULE} | sed "s|.*/||")   fullmodule=$(echo ${MODULE} | sed "s|.*/||")
778    
779   options=$(sed -n -e "s/^options[     ][      ]*${module}[      ][      ]*//p" ${modulefile} 2>/dev/null)   options=$(sed -n -e "s/^options[     ][      ]*${module}[      ][      ]*//p" ${modprobeconf} 2>/dev/null)
780    
781   if [ -n "${options}" ]   if [ -n "${options}" ]
782   then   then
# Line 832  then Line 846  then
846   done   done
847  fi  fi
848    
849    # get the right initexec
850    add_initrd "INITEXEC=\"${INITEXEC}\""
851    # support init=* from cmdline
852    add_initrd 'for i in $(cat /proc/cmdline); do if [[ ${i} = init=* ]]; then INITEXEC=${i/init=}; fi; done'
853    
854  add_initrd 'echo "-- Mounting sysroot ..."'  add_initrd 'echo "-- Mounting sysroot ..."'
855  add_initrd '. /etc/rootdev'  add_initrd '. /etc/rootdev'
 add_initrd '[ ! -e ${device} ] && mknod ${device} b ${major} ${minor}'  
856  add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab'  add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab'
857  add_initrd 'mount /sysroot || ash'  add_initrd 'mount /sysroot || ash'
858    
# Line 844  add_initrd 'echo > /proc/sys/kernel/hotp Line 862  add_initrd 'echo > /proc/sys/kernel/hotp
862  # de-silencio  # de-silencio
863  add_initrd 'echo 3 > /proc/sys/kernel/printk'  add_initrd 'echo 3 > /proc/sys/kernel/printk'
864    
865    add_initrd 'BREAK_ENABLED=no'
866    add_initrd 'for i in $(cat /proc/cmdline); do if [[ ${i} = break ]]; then BREAK_ENABLED=yes; fi; done'
867    add_initrd 'if [[ ${BREAK_ENABLED} = yes ]]; then echo "-- Break requested, type 'exit' to resume operation ..."; ash; fi'
868    
869  add_initrd 'echo "-- Switching to real sysroot ..."'  add_initrd 'echo "-- Switching to real sysroot ..."'
870  add_initrd 'umount /dev'  add_initrd 'umount /dev'
871  add_initrd 'umount /sys'  add_initrd 'umount /sys'
872  add_initrd 'umount /proc'  add_initrd 'umount /proc'
873    
874  [[ ${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'
875  if [[ ${IMAGE_TYPE} = loopback ]]  if [[ ${IMAGE_TYPE} = loopback ]]
876  then  then
877   add_initrd 'cd /sysroot'   add_initrd 'cd /sysroot'
878   add_initrd 'pivot_root . initrd'   add_initrd 'pivot_root . initrd'
879   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"
880  fi  fi
881    
882  chmod +x ${DEST}/init || die  chmod +x ${DEST}/init || die
# Line 862  chmod +x ${DEST}/init || die Line 884  chmod +x ${DEST}/init || die
884  # setup root block device  # setup root block device
885  [[ -z ${rootdev} ]] && die "no known rootdev found."  [[ -z ${rootdev} ]] && die "no known rootdev found."
886  echo "device='UUID=$(get_blkid ${rootdev})'" > ${DEST}/etc/rootdev || die  echo "device='UUID=$(get_blkid ${rootdev})'" > ${DEST}/etc/rootdev || die
 echo "major=$(stat -c %t ${rootdev})" >> ${DEST}/etc/rootdev || die  
 echo "minor=$(stat -c %T ${rootdev})" >> ${DEST}/etc/rootdev || die  
887  echo "rootfs='${rootfs}'" >> ${DEST}/etc/rootdev || die  echo "rootfs='${rootfs}'" >> ${DEST}/etc/rootdev || die
888    
889  # install detected modules  # install detected modules

Legend:
Removed from v.897  
changed lines
  Added in v.1188