ntpd 煙

ntpd 煙

現在、組み込みLinuxシステムの起動時間を改善しようとしています。これが可能であると考えられる1つの方法は、ntp init.dスクリプトを延期することです。

デーモンはイーサネット接続を介してサーバーと同期しようとします。ただし、必ずしもこの接続を維持するわけではなく、同期しようとしたときに起動に時間がかかります。私たちのシステムではntpは重要ではないので、後で始めることができます。

私が望むのは、ntpd init.dスクリプトが約5分間待ち、残りのブート操作をブロックしないようにすることです。

これは私が使用しているinit.dフォルダのS49です。

    #! /bin/sh
    #
    # System-V init script for the openntp daemon
    #

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DESC="network time protocol daemon"
    NAME=ntpd
    DAEMON=/usr/sbin/$NAME
    NTPDATE_BIN=/usr/bin/ntpdate

    # Gracefully exit if the package has been removed.
    test -x $DAEMON || exit 0

    # Read config file if it is present.
    if [ -r /etc/default/$NAME ]
    then
        . /etc/default/$NAME
    fi

    case "$1" in
    start)
        if [ -x $NTPDATE_BIN ] ; then
            echo -n "Getting initial time via ntp"
            $NTPDATE_BIN $NTPDATE_OPTS $NTPSERVERS > /dev/null 2>&1
            echo "."
        fi

        echo -n "Starting $DESC: $NAME"
        start-stop-daemon -S -q -x $DAEMON
        echo "."
        ;;
    stop) echo -n "Stopping $DESC: $NAME"
        start-stop-daemon -K -q -n $NAME
        echo "."
        ;;
    reload|force-reload) echo -n "Reloading $DESC configuration..."
        start-stop-daemon -K -q -n $NAME -s 1
        echo "done."
            ;;
    restart) echo "Restarting $DESC: $NAME"
        $0 stop
        sleep 1
        $0 start
        ;;
    *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;
    esac

    exit 0

答え1

初期化スクリプトに見られるように、ntpdate開始にかかる時間のために遅延が発生します。

これは、NTPを設定する際に最も一般的な間違いの1つです。使用目的は、起動時にエラーなしで終了することntpdateです。ntpd時間に非常に大きな違いが検出された場合は、これを行います。しかし、ntpd私にはこの時差を無視する能力がある。そのため、ntpdateこの機能を設定する必要はありません。

ntpdate回避策は、この機能を無効にして使用することです。

これを行うには、次のように/etc/default/ntpd作成するだけです。

NTPDATE_BIN="-"
DAEMON="/usr/sbin/ntpd -g"

NTPDATE_BIN="-"初期化スクリプトの次の部分は次のとおりです。

if [ -x $NTPDATE_BIN ] ; then

という実行可能ファイルがあることを確認し-、存在しない場合はその部分をスキップします。
 

これはDAEMON="/usr/sbin/ntpd -g"次のとおりです。

start-stop-daemon -S -q -x $DAEMON

このオプションは、より大きな時間差を許容するように指示しますntpdntpd -g-g

答え2

case "$1" in
start)
    if [ -x $NTPDATE_BIN ] ; then
        echo -n "Getting initial time via ntp"
        $NTPDATE_BIN $NTPDATE_OPTS $NTPSERVERS > /dev/null 2>&1
        echo "."
    fi

ntpdateが実行可能であることが確認されると、ntpdateは起動時に他のすべてとは無関係に実行されます。この動作を停止するには、パッケージマネージャを使用してntpdateを削除するか、バイナリを手動で移動する必要があります。

スクリプトを変更することもオプションですが、更新すると上書きされる可能性があります。

関連情報