黄文彪

黄文彪的博客

他的个人主页  他的博客

在debian lenny使用rcconf和sysv-rc-conf引发的init 0命令变成restart

黄文彪  2010年04月24日 星期六 09:07 | 3893次浏览 | 0条评论

突然想研究下在 debian 对开机启动项的管理,于是sudo apt-get install rcconf sysv-rc-conf这两个管理 工具
rcconf 是提供当前runlevel的启动配置的(sudo runlevel可以查看),debian默认是2(不要跟redhat或者其他系列混淆理解,debian的2-5都是一样的,参 看:http://www.debian.org/doc/manuals/reference/ch-system.zh-cn.html#s- runlevels  的2.4.2 运行级别),也就是说rcconf只会修改你当前用户运行级别的启动项;
而sysv-rc-conf就显得庞大多了(但是它们各自所显示的启动项并不完全相同,rcconf显示的比sysv-rc-conf要多出一些.sh的 脚本 选项 ),sysv- rc-conf提供runlevel0-6的启动选项,我会这辈子都记住它们的...因为当我运行sysv-rc-conf时,我想同时参考 rcconf,于是也运行rcconf在另一窗口,参考后先关闭了rcconf,然后在sysv-rc-conf中只修改了runlevel 2的选项,按q退出;然后在sudo sysv-rc-conf查看时,发现runlevel 0与6和S的选项明显发生了变化,关闭了许多本来开启的选项,但是又不记得,胡乱改了改,重启,发现已经不能正常重启,因为runlevel 6肯定被改错了.......总之几经几个小时好多番折腾终于搞定启动和重启,谁知道最后sudo shutdown -h now 或init 0都无法关机,严格来说是变成了重启.......崩溃都来不及,都块天亮了,强制关机睡觉.....
为了保险起见,我开启了vbox中的比较纯的 lenny ,来与本 系统 对 比,算比较安心地完成了修改,开机启动还有一个怪地方:/dev/sda1: Superblock last write time is in the future.  FIXED. 并且无法关机未能解决.....已经在irc.freenode.net中的#debian频道和irc.oftc.net的#debian-zh频道寻 求帮助,并且于各大论坛寻求帮助,暂不折腾了,忙毕设去.................

........................................................................................................................时隔不知道多久

对于/dev/sda1: Superblock last write time is in the future.  FIXED.这个启动时的现象,应该是该文件的配置出了问题/etc/default/rcS,
TMPTIME=0
SULOGIN=no
DELAYLOGIN=no
UTC=yes                #是这里!!!之前可能是误改RCS的启动项后导致这里为no
VERBOSE=no
FSCKFIX=no
RAMRUN=no
RAMLOCK=no
改成yes后,启动时就跟往常一样了。

至于关机问题,一直奇怪当中,在debian的中文邮件列表没啥反应,个人分析如下:
       按理说,init 0就是系统的关闭,在/etc/rc0.d/中最后一个运行的就是/etc/init.d/halt脚本,脚本内容:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          halt
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:      0
# Short-Description: Execute the halt command.
# Description:
### END INIT INFO

NETDOWN=yes

PATH=/sbin:/usr/sbin:/bin:/usr/bin
[ -f /etc/default/halt ] && . /etc/default/halt

. /lib/lsb/init-functions

do_stop () {
    if [ "$INIT_HALT" = "" ]
    then
        case "$HALT" in
          [Pp]*)
            INIT_HALT=POWEROFF
            ;;
          [Hh]*)
            INIT_HALT=HALT
            ;;
          *)
            INIT_HALT=POWEROFF
            ;;
        esac
    fi

    # See if we need to cut the power.
    if [ "$INIT_HALT" = "POWEROFF" ] && [ -x /etc/init.d/ups-monitor ]
    then
        /etc/init.d/ups-monitor poweroff
    fi

    # Don't shut down drives if we're using RAID.
    hddown="-h"
    if grep -qs '^md.*active' /proc/mdstat
    then
        hddown=""
    fi

    # If INIT_HALT=HALT don't poweroff.
    poweroff="-p"
    if [ "$INIT_HALT" = "HALT" ]
    then
        poweroff=""
    fi

    # Make it possible to not shut down network interfaces,
    # needed to use wake-on-lan
    netdown="-i"
    if [ "$NETDOWN" = "no" ]; then
        netdown=""
    fi

    log_action_msg "Will now halt"
    halt -d -f $netdown $poweroff $hddown
}

case "$1" in
  start)
    # No-op
    ;;
  restart|reload|force-reload)
    echo "Error: argument '$1' not supported" >&2
    exit 3
    ;;
  stop)
    do_stop
    ;;
  *)
    echo "Usage: $0 start|stop" >&2
    exit 3
    ;;
esac

:

其中/etc/default/halt里面的内容是:
# Default behaviour of shutdown -h / halt. Set to "halt" or "poweroff".
HALT=poweroff

由于没有/etc/init.d/ups-monitor,该脚本一般应该运行:halt -d -f -i -p -h(并且直接用这个 命令 确实可以关机)!!!!!!那就是说halt脚本没问题!那为何init 0的效果变成restart呢?????明明init 0最后运行的是halt脚本,那。。。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号