Le 13/03/2012 20:14, Bruce Dubbs a ecrit: > - if [ "$2" == "lib" ]; then > - file=$(PATH=/lib:/usr/lib type -p $1) > + if [ "$2" = "lib" ]; then > + file=$(find /lib /usr/lib -maxdepth 1 -name $1 | head -n 1) > else > - file=$(type -p $1) > + file=$(find /bin /usr/bin /sbin /usr/sbin -maxdepth 1 -name $1 | > head -n 1) > fi > > This segment is in a script that explicitly has #!/bin/bash as the > shell, so "==" is quite as valid as "=". Also the `type` command is a > bash builtin. The changes do the same thing as the current code but > with a different style. I don't think changes are needed. Sorry for the ==. There was no need to change that. OTOH, type -p $1 returns nothing if $1 is an alias. This happened to me because I have
|alias ls='ls --color=auto' in /etc/bashrc. Then of course, `copy ls bin' does not do what it is supposed to do. There are certainly better ways to correct that, but it should be corrected. | > > -binfiles="sh cat cp dd killall ls lsmod mkdir mknod mount " > +binfiles="bash cat cp dd killall ls mkdir mknod mount" > > +ln -s bash $WDIR/bin/sh > > sh is needed in the case where the user has /bin/sh linked to something > other than bash. We could do a test and either add the other file or > create a symlink to bash. agreed. Maybe: binfiles="cat cp dd killall ls mkdir mknod mount" if [ -h /bin/sh ]; then binfiles="$binfiles $(readlink /bin/sh)" ln -s $(readlink /bin/sh) $WDIR/bin/sh fi > > -sbinfiles="udevadm udevd modprobe blkid switch_root mdadm" > +sbinfiles="udevadm modprobe blkid switch_root" > > +# Add mdadm if present > +if [ -x /sbin/mdadm ] ; then sbinfiles="$sbinfiles mdadm"; fi > + > +# Add udevd if present in /sbin (newer versions of udev have it in > +# /lib/udev) > +if [ -x /sbin/udevd ] ; then sbinfiles="$sbinfiles udevd"; fi > > OK, but what about the case when udevd is in /lib/udev/? > We also need to make sure that we get all the libraries that > udevd needs (e.g. libblkid.so.1). The whole /lib/udev hierarchy is copied to the initramfs later. But I forgot about the libraries, you are right. Maybe something like : if [ -x /sbin/udevd ] ; then sbinfiles="$sbinfiles udevd" else ldd /lib/udev/udevd | sed "s/\t//" | cut -d " " -f1>> $unsorted; fi > > -# Create a temporrary working directory > +# Create a temporary working directory > > OK, typo. > > - ln -s lvm $WDIR/sbin/lvchange > - ln -s lvm $WDIR/sbin/lvchange > > We could do that or change these to other lv commands: lvrename, > lvextend, etc. These are only here if the boot fails and drops back to > the shell within the initramfs. agreed. > # Install libraries > > I'd prefer to fix this with: > > sort $unsorted | uniq | while read library ; do > if [ "$library" == "linux-vdso.so.1" ] || > [ "$library" == "linux-gate.so.1" ]; then > continue > fi > > copy $library lib > done agreed. As I told in the report. The initramfs is created, but it does not work. Sorry no time to investigate further tonight. Pierre -- http://linuxfromscratch.org/mailman/listinfo/blfs-dev FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page