でびあんの initrd (10)
次は script/local-premount なソレ。どちらも依存するナニは無い。
$ grep PRERE /local-premount/* ../local-premount/resume:PREREQ="" ../local-premount/resume: echo "$PREREQ" ../local-premount/uswsusp:PREREQ="" ../local-premount/uswsusp: echo "$PREREQ" $
ここも微妙。ちなみに mountroot から呼ばれるソレ的には
- local-top は必要な kernel module の load とか
- local-premount は suspend なソレからの復帰
みたいな形になっている模様。両方ざっくりベースで以下に控えを。
resume
- 起動オプション resume= が指定されてなかったら終了
- 起動オプション resume= の値で resume 再設定
- resume= で指定されたファイルが存在しない場合は終了
- /sys/power/resume が存在したら /bin/resume 実行
uswsusp
s2disk という utility がある模様。hibernate 云々とある。
- noresume が /proc/cmdline にあったら exit
- /sys/class/misc/snapshot/dev が無かったら exit
- kernel が snapshot サポート外、との事
- DEV に cat /sys/class/misc/snapshot/dev の出力をセット
- /dev/snapshot が無かったら mknod している
- major, minorは DEV から取り出している
- /sbin/resume が実行可能でなかったら exit
- /sbin/resume 実行
このあたり、resume とか hibernate あたりを掘る必要あり。
次
script/local-bottom 配下。
# ってデフォルトではファイルがありませんな。これで mountroot を抜けます。以降を全部以下に引用。
maybe_break bottom [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom" run_scripts /scripts/init-bottom [ "$quiet" != "y" ] && log_end_msg # Move virtual filesystems over to the real filesystem mount -n -o move /sys ${rootmnt}/sys mount -n -o move /proc ${rootmnt}/proc while [ ! -x ${rootmnt}${init} ]; do panic "Target filesystem doesn't have ${init}" done # Confuses /etc/init.d/rc if [ -n ${debug} ]; then unset debug fi # Chain to real filesystem maybe_break init exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console
script/init-bottom がナニ。デフォルトで配下にあるのは udev というスクリプト。udev も今一つ理解できてません。ちょっとこのあたりもきちんと確認する必要ありそげ。