Ticket #3298: mkinitramfs-udevd.patch

File mkinitramfs-udevd.patch, 3.0 KB (added by Pierre Labastie, 13 years ago)
  • postlfs/filesystems/initramfs.xml

    old new  
    6262{
    6363  local file
    6464
    65   if [ "$2" == "lib" ]; then
    66     file=$(PATH=/lib:/usr/lib type -p $1)
     65  if [ "$2" = "lib" ]; then
     66    file=$(find /lib /usr/lib -maxdepth 1 -name $1 | head -n 1)
    6767  else
    68     file=$(type -p $1)
     68    file=$(find /bin /usr/bin /sbin /usr/sbin -maxdepth 1 -name $1 | head -n 1)
    6969  fi
    7070
    7171  if [ -n $file ] ; then
     
    9191
    9292printf "Creating $INITRAMFS_FILE... "
    9393
    94 binfiles="sh cat cp dd killall ls lsmod mkdir mknod mount "
     94binfiles="bash cat cp dd killall ls mkdir mknod mount"
    9595binfiles="$binfiles umount sed sleep ln rm uname"
    9696
    97 sbinfiles="udevadm udevd modprobe blkid switch_root mdadm"
     97sbinfiles="udevadm modprobe blkid switch_root"
    9898
    9999unsorted=$(mktemp /tmp/unsorted.XXXXXXXXXX)
    100100
    101101DATADIR=/usr/share/mkinitramfs
    102102INITIN=init.in
    103103
    104 # Create a temporrary working directory
     104# Create a temporary working directory
    105105WDIR=$(mktemp -d /tmp/initrd-work.XXXXXXXXXX)
    106106
    107107# Create base directory structure
     
    146146# Add lvm if present
    147147if [ -x /sbin/lvm ] ; then sbinfiles="$sbinfiles lvm"; fi
    148148
     149# Add mdadm if present
     150if [ -x /sbin/mdadm ] ; then sbinfiles="$sbinfiles mdadm"; fi
     151
     152# Add udevd if present in /sbin (newer versions of udev have it in
     153# /lib/udev)
     154if [ -x /sbin/udevd ] ; then sbinfiles="$sbinfiles udevd"; fi
     155
    149156for f in $sbinfiles ; do
    150157  ldd /sbin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
    151158  copy $f sbin
     
    157164  ln -s kmod $WDIR/bin/insmod
    158165fi
    159166
     167ln -s bash $WDIR/bin/sh
     168
    160169# Add lvm symlinks if appropriate
    161170if  [ -x /sbin/lvm ] ; then
    162171  ln -s lvm $WDIR/sbin/lvchange
    163   ln -s lvm $WDIR/sbin/lvchange
    164   ln -s lvm $WDIR/sbin/lvchange
    165172  ln -s lvm $WDIR/sbin/lvcreate
    166173  ln -s lvm $WDIR/sbin/lvdisplay
    167174  ln -s lvm $WDIR/sbin/lvscan
     
    180187
    181188# Install libraries
    182189sort $unsorted | uniq | while read lib ; do
     190  lib=$(basename $lib)
    183191  if [ "$lib" == "linux-vdso.so.1" ] ||
    184192     [ "$lib" == "linux-gate.so.1" ]; then
    185193    continue
    186194  fi
    187195
    188   copy $library lib
     196  copy $lib lib
    189197done
    190198
    191199cp -a /lib/udev $WDIR/lib
     
    198206     /lib/modules/$KERNEL_VERSION/kernel/drivers/{scsi,message,pcmcia,virtio} \
    199207     /lib/modules/$KERNEL_VERSION/kernel/drivers/usb/{host,storage}           \
    200208     -type f 2> /dev/null | cpio --make-directories -p --quiet $WDIR
     209  cp /lib/modules/$KERNEL_VERSION/modules.{builtin,order} \
     210        $WDIR/lib/modules/$KERNEL_VERSION
    201211
    202212  depmod -b $WDIR $KERNEL_VERSION
    203213fi
     
    296306  esac
    297307done
    298308
    299 udevd --daemon --resolve-names=never
     309if [ -x /sbin/udevd ]; then
     310UDEV_PATH=/sbin
     311else
     312UDEV_PATH=/lib/udev
     313fi
     314
     315${UDEV_PATH}/udevd --daemon --resolve-names=never
    300316udevadm trigger
    301317udevadm settle
    302318
     
    306322
    307323do_mount_root
    308324
    309 killall -w /sbin/udevd
     325killall -w $UDEV_PATH/udevd
    310326
    311327exec switch_root /.root "$init" "$@"
    312328