Thomas pointed out that default module path may not be correct (Mandriva installs modules under architecture dependent path). Unfortunately rsyslog does not seem to offer any way to query for default configuration values. Here is rather hack - try to load non-existing module and fetch path from error message. Example of error message from version 4.6.4: rsyslogd: could not load module '/lib64/rsyslog/_No_sUcH_MOduLe.so', dlopen: /lib64/rsyslog/_No_sUcH_MOduLe.so: cannot open shared object file: No such file or directory Signed-off-by: Andrey Borzenkov <arvidjaar@xxxxxxx> --- modules.d/98syslog/install | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) diff --git a/modules.d/98syslog/install b/modules.d/98syslog/install index 1fd1b6f..e3d02bf 100755 --- a/modules.d/98syslog/install +++ b/modules.d/98syslog/install @@ -1,6 +1,21 @@ #!/bin/sh if type -P rsyslogd >/dev/null; then - installs="rsyslogd /lib/rsyslog/lmnet.so /lib/rsyslog/imklog.so /lib/rsyslog/imuxsock.so" + # module path can be changed during build and currently rsyslog + # does not provide any means to query for it. Use hack - try to + # load non-existent module and look at error message + R_CONF=/tmp/dracut.rsyslog.conf.$$ + R_ERR=/tmp/dracut.rsyslog.err.$$ + R_MODDIR= + echo '$ModLoad _No_sUcH_MOduLe' > $R_CONF + if [ -s $R_CONF ]; then + rsyslogd -N 1 -f $R_CONF 2> $R_ERR > /dev/null + R_MODDIR=$(grep ' could not load module .*_No_sUcH_MOduLe' $R_ERR) + R_MODDIR=${R_MODDIR#*could not load module \'} + R_MODDIR=${R_MODDIR%\', *} + R_MODDIR=${R_MODDIR%/*} + fi + [ -n "$R_MODDIR" ] || R_MODDIR=/lib/rsyslog + installs="rsyslogd $R_MODDIR/lmnet.so $R_MODDIR/imklog.so $R_MODDIR/imuxsock.so" elif type -P syslogd >/dev/null; then installs="syslogd" elif type -P syslog-ng >/dev/null; then -- To unsubscribe from this list: send the line "unsubscribe initramfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html