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は設定がなければ特になにもしない。