てきとうなメモ

本の感想とか技術メモとか

service network start時に実行していること

eth関係のみについてちょっとだけ読んだ

$ service network start

を実行すると、/etc/init.d/networkが実行される。で、こいつはeth0などの各インターフェースiに対して/etc/sysconfig/ifcfg-$iを読み込み条件分岐しながら、/etc/sysconfig/ifupを実行する。

...
        # bring up all other interfaces configured to come up at boot time
        for i in $interfaces; do
                unset DEVICE TYPE SLAVE
                eval $(LANG=C fgrep "DEVICE=" ifcfg-$i)
                eval $(LANG=C fgrep "TYPE=" ifcfg-$i)
                eval $(LANG=C fgrep "SLAVE=" ifcfg-$i)
                ...
                action $"Bringing up interface $i: " ./ifup $i boot
                [ $? -ne 0 ] && rc=1
        done
...

この時のインターフェースのリストには、エイリアスやバックアップファイルは含まれない。

# find all the interfaces besides loopback.
# ignore aliases, alternative configurations, and editor backup files
interfaces=$(ls ifcfg* | \
            LANG=C sed -e "$__sed_discard_ignored_files" \
                       -e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \
                       -e '/ifcfg-[A-Za-z0-9#\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
            LANG=C sort -k 1,1 -k 2n | \
            LANG=C sed 's/ //')

ifupはインターフェースの種類ごとに起動コマンドを呼ぶ。ethの場合は/etc/sysconfig/network-scrips/ifup-ethを呼ぶ

...
OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"

if [ ! -x ${OTHERSCRIPT} ]; then
    OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-eth"
fi

exec ${OTHERSCRIPT} ${CONFIG} $2

ifup-ethの中ではipコマンドでIPアドレスの設定などを行う。その後、後処理スクリプト/etc/sysconfig/network-scripts/ifup-postが呼ばれる

exec /etc/sysconfig/network-scripts/ifup-post ${CONFIG} ${2}

ifup-postの中ではエイリアスの設定スクリプト/etc/sysconfig/network-scripts/ifup-aliasesを呼んだり

if [ "$ISALIAS" = no ] ; then
    /etc/sysconfig/network-scripts/ifup-aliases ${DEVICE} ${CONFIG}
fi

ルーティングの設定スクリプト/etc/sysconfig/network-scripts/ifup-routesを呼んだりする

/etc/sysconfig/network-scripts/ifup-routes ${REALDEVICE} ${DEVNAME}

ifup-routesは設定がなければ特になにもしない。