# Export relevant variables
export ROOT=
export ROOTDELAY=
export ROOTFLAGS=
export ROOTFSTYPE=
export IPOPTS=
export HWADDR=
export break=
export init=/sbin/init
export quiet=n
export readonly=y
export rootmnt=/root
export debug=
export panic=
export blacklist=
export resume_offset=
接下来是export一些变量。这部分我在网上查看了一些资料,觉得一篇文章写得很详细,所以这部分转载了这篇文章。
- break 由 maybe_break 函
数使用。若 break 的值同 maybe_break 的第
一个参数相同,则 maybe_break 函数调用 panic 函数(注意 panic 函数和 panic 变量是不同的)。 若 panic 变
量为"0"(此处是字符串,其内容是"0",不是整数),则 panic 函数将重新启动机器。其他情况下(包括 panic 变
量为空的情况)都将以交互的方式调出shell,此shell的输入输出使用已经创建好的节点 /dev/console。
- init 此
变量指定在这个脚本最后要执行的进程。 此处 /sbin/init 是系统上所有进程的父进程,负责开启其它进程。当然,你也可以把它换成其他的程序,
甚至是 ls,不一定非要是 /sbin/init,虽然这样你的系统启动之后什么都不能做。
- quiet 指
定为非"y",会显示一些启动的状态信息;若指定为"y"则不显示这些信息。
- rootmnt 最
终进入的系统的根目录所在分区挂载到的目录。在最终进入系统的时候,这个目录下的东西将要转变为你的根目录(可通过
pivot_root 或 chroot 命令,或系统调用。本脚本最后调用的 run-init 是通过 chroot 系统调用的方式实现的。
- readonly 如
果 readonly 等于字符串"y",则以只读方式挂载最终要进入的系统的根
目录所在分区到 ${rootmnt} 目录,其他情况(包括 readonly 为空)以读写方式挂载。
- debug debug mode, 这点会在下一章节说明。
- cryptopts 加
密选项? FIXME:这个的用途?
- ROOTDELAY 在 mountroot 函数中
使用,root设备在ROOTDELAY时间内必须准备好,否则 mountroot 调用 panic 函数导致进入shell或机器重启(具体见 break 的说明)。若不指定 ROOTDELAY 的值,其值
在 mountroot 函数中默认是180妙。
- panic 描
述见 break参数的说明。
唉,最近在写一个程序,所以没时间在网上写这些东西,下次介绍得多一点。