Browse Source

move start from udev to initqueue/online

master
Brendan Germain 9 years ago
parent
commit
223547feab
  1. 3
      modules.d/98syslog/module-setup.sh
  2. 22
      modules.d/98syslog/parse-syslog-opts.sh
  3. 21
      modules.d/98syslog/rsyslogd-start.sh
  4. 30
      modules.d/98syslog/syslog-genrules.sh

3
modules.d/98syslog/module-setup.sh

@ -29,9 +29,8 @@ install() { @@ -29,9 +29,8 @@ install() {
if [ -n "$_installs" ]; then
inst_multiple cat $_installs
inst_hook cmdline 90 "$moddir/parse-syslog-opts.sh"
inst_hook pre-udev 61 "$moddir/syslog-genrules.sh"
inst_hook cleanup 99 "$moddir/syslog-cleanup.sh"
inst_simple "$moddir/rsyslogd-start.sh" /sbin/rsyslogd-start
inst_hook initqueue/online 70 "$moddir/rsyslogd-start.sh"
inst_simple "$moddir/rsyslogd-stop.sh" /sbin/rsyslogd-stop
mkdir -m 0755 -p ${initdir}/etc/templates
inst_simple "${moddir}/rsyslog.conf" /etc/templates/rsyslog.conf

22
modules.d/98syslog/parse-syslog-opts.sh

@ -9,10 +9,30 @@ @@ -9,10 +9,30 @@
# Don't auto detect syslog but set it
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

detect_syslog() {
syslogtype=""
if [ -e /sbin/rsyslogd ]; then
syslogtype="rsyslogd"
elif [ -e /sbin/syslogd ]; then
syslogtype="syslogd"
elif [ /sbin/syslog-ng ]; then
syslogtype="syslog-ng"
else
warn "Could not find any syslog binary although the syslogmodule is selected to be installed. Please check."
fi
echo "$syslogtype"
[ -n "$syslogtype" ]
}

syslogserver=$(getarg syslog.server -d syslog)
syslogfilters=$(getargs syslog.filter -d filter)
syslogtype=$(getarg syslog.type -d syslogtype)

[ -n "$syslogserver" ] && echo $syslogserver > /tmp/syslog.server
[ -n "$syslogfilters" ] && echo "$syslogfilters" > /tmp/syslog.filters
[ -n "$syslogtype" ] && echo "$syslogtype" > /tmp/syslog.type
if [ -n "$syslogtype" ]; then
echo "$syslogtype" > /tmp/syslog.type
else
syslogtype=$(detect_syslog)
echo $syslogtype > /tmp/syslog.type
fi

21
modules.d/98syslog/rsyslogd-start.sh

@ -1,9 +1,15 @@ @@ -1,9 +1,15 @@
#!/bin/sh

# Triggered by udev and starts rsyslogd with bootparameters
# Triggered by initqueue/online and starts rsyslogd with bootparameters

type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

# prevent starting again if already running
if [ -f /var/run/syslogd.pid ]; then
read pid < /var/run/syslogd.pid
kill -0 $pid && exit 0
fi

rsyslog_config() {
local server=$1
shift
@ -17,17 +23,20 @@ rsyslog_config() { @@ -17,17 +23,20 @@ rsyslog_config() {
for filter in $filters; do
echo "${filter} @${server}"
done
# echo "*.* /tmp/syslog"
#echo "*.* /tmp/syslog"
}

read type < /tmp/syslog.type
read server < /tmp/syslog.server
read filters < /tmp/syslog.filters
[ -z "$filters" ] && filters="kern.*"
read conf < /tmp/syslog.conf
[ -z "$conf" ] && conf="/etc/rsyslog.conf" && echo "$conf" > /tmp/syslog.conf

template=/etc/templates/rsyslog.conf
if [ -n "$server" ]; then
rsyslog_config "$server" "$template" "$filters" > $conf
rsyslogd -c3
if [ $type == "rsyslogd" ]; then
template=/etc/templates/rsyslog.conf
if [ -n "$server" ]; then
rsyslog_config "$server" "$template" "$filters" > $conf
rsyslogd -c3
fi
fi

30
modules.d/98syslog/syslog-genrules.sh

@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
#!/bin/sh

# Creates the syslog udev rules to be triggered when interface becomes online.
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

detect_syslog() {
syslogtype=""
if [ -e /sbin/rsyslogd ]; then
syslogtype="rsyslogd"
elif [ -e /sbin/syslogd ]; then
syslogtype="syslogd"
elif [ /sbin/syslog-ng ]; then
syslogtype="syslog-ng"
else
warn "Could not find any syslog binary although the syslogmodule is selected to be installed. Please check."
fi
echo "$syslogtype"
[ -n "$syslogtype" ]
}

read syslogtype < /tmp/syslog.type
if [ -z "$syslogtype" ]; then
syslogtype=$(detect_syslog)
echo $syslogtype > /tmp/syslog.type
fi
if [ -e "/sbin/${syslogtype}-start" ]; then
printf 'ACTION=="online", SUBSYSTEM=="net", RUN+="/sbin/initqueue --onetime /sbin/'${syslogtype}'-start $env{INTERFACE}"\n' > /etc/udev/rules.d/70-syslog.rules
else
warn "syslog-genrules: Could not find binary to start syslog of type \"$syslogtype\". Syslog will not be started."
fi
Loading…
Cancel
Save