でびあんの initrd (3)
昨晩、render() 手続きが若干微妙、と言いつつクタバッている。今日も機械的にナニ。
ええと、以下の手続きは一旦スルーします。
- render
- set_initlist
- reduce_satisfied
- get_prereqs
- count_unsatisfied
- pop_list_item
- reduce_prereqs
とりあえず使われていないみたいなんですが、何をしようとしているのかが分からん、とゆーのも微妙。と思ったら使ってるし。ちょっと call graph 作ってみる。
run_scripts -+- get_prereqs -+- set_initlist | +- reduce_prereqs -+- set_initlist | | | +- reduce_satisfied -+- render | | | | | +- pop_list_item | | | +- render | | | +- count_unsatisfied | | | +- pop_list_item | +- call_scripts
とほほ。使われてないって大ウソじゃん。トップダウンで読む、にトライ。
トップダウンで読んでみる
まず、run_scripts() 手続きの定義が以下。
run_scripts() { initdir=${1} get_prereqs reduce_prereqs call_scripts }
第一引数を initdir に代入している。呼び出し例が以下。
run_scripts /scripts/init-top
引数一つは仕様。基本的にヤる事は書いてある通り。トップダウンって言いつつ、いっちゃんケツの手続きから読んでみたり。
call_scripts() { for cs_x in ${runlist}; do # mkinitramfs verbose output if [ "${verbose}" = "y" ]; then echo "Calling hook ${cs_x}" fi ${initdir}/${cs_x} # allow boot scripts to modify exported boot paramaters if [ -e /conf/param.conf ]; then . /conf/param.conf fi done }
この手続き、run_scripts 手続きの直前で定義されてるんですが、シェルって変数のスコープってグローバルなんでしたっけ?
# スコープもクソも変数定義自体が無いのか ...
ええと、そりゃ良いとして日本語化してみると以下?
- runlist なリストから要素を取り出して cs_x に格納しつつ以下
- $verbose が "y" なら
- "Calling hook ${cs_x}" を echo
- ${initdir} の中にある (はずの) ${cs_x} を実行
- /conf/param.conf が存在するなら
- source /conf/param.conf する
- $verbose が "y" なら
というカンジになりますでしょうか。てーコトは
- runlist には initdir の中にある実行可能なファイルのリストが入っている (はず)
という事なのかな。ちなみにデフォルトでは /conf/param.conf は存在しません。コメントも微妙だなぁ。
とりあえず
一旦、エントリ投入します。余力があれば続行予定。