Comment 19 for bug 728611

Revision history for this message
Colin Watson (cjwatson) wrote :

The problem is that /lib/plymouth/label.so now transitively links to libGL, which lives in /usr/lib/mesa/libGL.so.1 or some other subdirectory of /usr/lib depending on the GL implementation in use (fglrx, nvidia, etc.). This directory isn't on the linker's default search path; instead, it relies on /etc/ld.so.cache having been built appropriately from a configuration including /etc/ld.so.conf.d/GL.conf, which is managed by update-alternatives. The thing that's going wrong here is that /usr/lib/mesa/libGL.so.1 is copied into the initramfs, but it isn't on the linker's search path so /lib/plymouth/label.so fails to load.

I looked at fixing this by copying in /etc/ld.so.conf* and running ldconfig, but this turned out to be very difficult due to the way mkinitramfs symlinks libraries during initramfs creation. I think it's better to have copy_exec check whether the target directory name is only on the linker search path by virtue of /etc/ld.so.conf*, and if so, install to /lib or /usr/lib as appropriate instead.