scripts/upd-instroot does the following: (cd $p/bin; find) | (cd $p/bin; /bin/cpio --quiet -pdmu $p/usr/bin) (cd $p/sbin; find) | (cd $p/sbin; /bin/cpio --quiet -pdmu $p/usr/sbin) moving everything from /sbin to /usr/sbin will break any relative symlinks into /bin or /sbin.. like /usr/bin/udevinfo (which is how HAL discovers devices): /usr/bin/udevinfo -> ../../sbin/udevadm (this was changed 5 days ago for bug #432878) A simple hack to work around this would be to do: ln -sf /sbin/udevadm $p/usr/bin/udevinfo since we have udev in stage1 these days. On the other hand, here's a bash script that should fix up the links: # Fix relative links like /usr/bin/udevinfo -> ../../sbin/udevadm for brokenlink in $(find $p/usr/{bin,sbin} -follow -lname '*'); do target="$(readlink $brokenlink)" for pathbit in bin sbin; do # if it starts with "../../sbin/", remove that newtarget="${target##../../$pathbit/}" # if we removed something, replace it with the proper path if [ "$newtarget" != "$target" ]; then # make it ../sbin/ instead ln -sf "../$pathbit/$newtarget" "$brokenlink" fi done done
Ugh. Added in git
Fixed in current rawhide, AFAICT.