Грабельки, хорошо присыпанные листвой

Конечно, я на них наступил. На домашней машинке, работающей по совместительству роутером в провайдерские интернеты, в /etc/rc.local было несколько команд. В один прекрасный день, после какого-то апгрейда, они перестали работать. Причём запускаешь вручную после загрузки системы — всё работает.

При внимательном разглядывании после включения всей отладочной информации обнаружилось, что сам по себе скрипт при загрузке системы запускается, но выполняется из него ровно одна команда. Первая: rmmod usbhid. Неудачно, потому что на этот момент модуль usbhid ещё не загружен. А остальные выполняться перестали совсем.

Вопрос для сисадминов нумер раз: угадайте, почему. Вопрос нумер два: какого хрена?

Полные тексты /etc/init.d/rc.local и /etc/rc.local под катом.

/etc/init.d/rc.local:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
	if [ -x /etc/rc.local ]; then
	        [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)"
		/etc/rc.local
		ES=$?
		[ "$VERBOSE" != no ] && log_end_msg $ES
		return $ES
	fi
}

case "$1" in
    start)
	do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

/etc/rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/rmmod usbhid
/sbin/modprobe hid-aureal
/sbin/modprobe usbhid
/usr/local/sbin/masq.sh
exit 0
This entry was posted in Uncategorized and tagged , , . Bookmark the permalink.

Leave a Reply