吃完晚饭了,体力恢复了,那么今天继续分析,上次分析到了/proc已经完了,那么接下去,首先还是看一段代码
[ -f /sbin/livecd-functions.sh ] && livecd_read_commandline
if [ "$(get_KV)" -ge "$(KV_to_int '2.6.0')" ] ; then if [[ -d /sys ]] ; then ebegin "Mounting sysfs at /sys" if [[ ${RC_USE_FSTAB} = "yes" ]] ; then mntcmd=$(get_mount_fstab /sys) else unset mntcmd fi try mount -n ${mntcmd:--t sysfs sysfs /sys -o noexec,nosuid,nodev} eend $? else ewarn "No /sys to mount sysfs needed in 2.6 and later kernels!" fi fi
|
这一大段主要是针对/sys的,首先第一句话
[ -f /sbin/livecd-functions.sh ] && livecd_read_commandline
|
这个是在livecd启动的时候才会用到这个,因为现在已经是安装到硬盘了,所以这里不执行的。
[ "$(get_KV)" -ge "$(KV_to_int '2.6.0')" ]
|
这里需要是两个函数,分别是get_KV和KV_to_int,这两个函数在/sbin/functions.sh里面,先介绍一下KV_to_int()
KV_to_int() { [[ -z $1 ]] && return 1
local KV_MAJOR="$(KV_major "$1")" local KV_MINOR="$(KV_minor "$1")" local KV_MICRO="$(KV_micro "$1")" local KV_int="$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))"
if [[ ${KV_int} -ge 131584 ]] ; then echo "${KV_int}" return 0 fi
return 1 }
|
这个函数主要是由3个函数,KV_MAJOR,KV_MINOR,KV_MICRO,分别获取内核版本的3个值,然后做个比较,最小版本是2.2.0
接下去介绍一下get_KV()
_RC_GET_KV_CACHE="" get_KV() { [[ -z ${_RC_GET_KV_CACHE} ]] \ && _RC_GET_KV_CACHE="$(uname -r)"
echo "$(KV_to_int "${_RC_GET_KV_CACHE}")"
return $? }
|
这个函数就是吧当前内核版本用KV_to_int这个函数处理,并给出返回值.
看完了这两个函数,我们继续返回上面的地方讲解
[ "$(get_KV)" -ge "$(KV_to_int '2.6.0')" ]
|
这个判断成立,然后判断/sys这个目录是否存在[[ -d /sys ]],显然可以继续走下去,这个时候就会在屏幕上显示Mounting sysfs at /sys,下面是开机时候的信息
然后的代码
if [[ ${RC_USE_FSTAB} = "yes" ]] ; then mntcmd=$(get_mount_fstab /sys) else unset mntcmd fi
|
RC_USE_FSTAB这变量在/etc/init.d/rc里面定义的值在no,所以上面这段都不执行
try mount -n ${mntcmd:--t sysfs sysfs /sys -o noexec,nosuid,nodev}
|
这句的话意思就是执行mount -n -t sysfs sysfs /sys -o noexec,nosuid,nodev.在后面两句话都没有,就是判断是否有错误和一个空操作.
ok,/sys分析完了,第二篇,继续出现令人讨厌的To be continue……
阅读(2261) | 评论(0) | 转发(0) |