设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> Linux应用技巧 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Backup your Linux Syst…
Linux ACL 体验
3步骤移植Solaris到Linu…
Linux系统下使用Syslog进…
用Bootsplash制作Linux全…
UFS2新特性之ACL初探
中文环境下acroread打不…
Fedora Core 6已经发布官…
Mozilla反驳Firefox 2漏…
使用Cacti时常见的问题集
  Slackware Linux操作系统启动过程详解         
Slackware Linux操作系统启动过程详解
 

Joe Brockmeier 研究了 Slackware Linux init 进程。他讨论了系统如何初始化服务、各种运行级别是什么,以及如何从缺省安装中添加或除去服务来定制系统。

Linux 用户正日益成熟,这意味着他们想要将系统配置成执行他们希望完成的任务。但目前 Linux 发行版通常都附带了自动配置的设备和启动服务,如 Sendmail 或 Apache。这些发行版没有考虑到的是毫不更改其缺省设置来运行服务,如 Apache -- 用户毫不知情 -- 会让黑客和利用脚本捣乱的人趁虚而入。而且这会用完本可以更好利用的系统资源 -- 比如可以用于 Quake 或您喜欢的编译器的更多处理器时间。由于缺少控制是件“糟糕的事”,因此让我们看一下 Linux 系统引导时在 init 进程期间,在所涉及的各个运行级别上都发生了什么,以及如何在系统运行时定制系统或在运行级别之间切换。

我们的示例使用 x86 平台上的 Slackware Linux 发行版(请参阅本文后面的 参考资料 )。大多数信息可用于其它 Linux 发行版,但在细节处会略有不同。尤其是,与其说 Slackware 的 init 结构类似于 System V 结构,还不如说它更类似于 BSD UNIX 结构,尽管 Slackware 的最新发行版中的程序做了一些让步,它们要将服务添加到启动,但期望这些服务是 System V 目录结构。(请参阅侧栏, “BSD 和系统 V init 脚本之间的差异”。)

所有进程的父代

当 Linux 机器引导时,究竟会发生什么?在计算机的 BIOS 完成其任务后,系统会读取硬盘(或软盘,或 CD-ROM,或 Zip 驱动器……Linux 是非常灵活的)的第一位,并会遇到引导装入程序。虽然 GRUB 和其它装入程序也逐渐变得流行,但通常这就是 Linux 装入程序 (LInux LOader),一般称作 LILO。

然后 LILO 将 Linux 内核装入内存,并开始展示它的魔力。Linux 内核初始化了诸如 SCSI 卡之类的设备,以及其它内核中内置的硬件设备。然后内核运行 init,它是除内核之外在系统运行的第一个进程。如果执行 ps ax | grep 1 ,就会看到 init 的进程 ID (PID) 是 1。

装入 init 之后,它会读取 inittab 以查看下一步做什么。 inittab 告诉 init 要进入什么运行级别,以及在哪里可以找到该运行级别的配置文件。

运行级别

运行级别是由系统上的所有服务在某个给定时间定义的(基本上是操作方式)。Linux 可以有几种操作方式:单用户方式、单用户联网方式、多用户方式、始于 X 窗口的多用户方式,等等。这部分将要说明运行级别的概念、Slackware 上有哪些运行级别,已经它们被叫作什么。

运行级别由数字或字母标明。可惜,不是所有的 Linux 发行版在各个运行级别的称呼问题上都能达成共识。在某些发行版中,运行级别 3 是使用 X 窗口登录的多用户方式。而其它的,如 Slackware,将运行级别 3 指定成使用控制台登录的多用户方式。

据我所知,所有 Linux 发行版都认同运行级别 0 是“停机”、运行级别 1 或 "S" 是单用户方式(稍后将详细说明),运行级别 6 是重新引导系统。Slackware 的运行级别如下:

●运行级别 0 = 系统停机

●运行级别 1 = 单用户方式,主要用于维护

●运行级别 2 = 从不使用

●运行级别 3 = 使用控制台登录的多用户方式

●运行级别 4 = 使用 X11 会话管理器的多用户方式 (XDM, GDM, KDM)

●运行级别 5 = 从不使用

●运行级别 6 = 重新引导

●运行级别 S 或 s = 单用户方式

这里没有记录运行级别 7 到 9,在理论上,它们适用于在需要时定制运行级别。但我还没有亲自尝试过创建一个。

运行级别配置

如果您使用的不是 Slackware Linux,那么配置文件的结构与我谈到的结构会大不相同。除了 inittab 文件,所有 Slackware 的启动配置文件都在 /etc/rc.d/ 目录中。

缺省情况下,目录中有 5 个运行级别 rc.* 脚本,如果将 symlink 从 rc.0 加到 rc.6 ,那么可有 6 个。

运行级别 init 脚本是:

●rc.0 = rc.0 文件是到 rc.6 的 symlink

●rc.M = 多用户运行级别 2、3 和 5 的 init 脚本

●rc.K = “管理”运行级别,单用户方式

●rc.S = 系统初始化脚本

●rc.4 = 运行级别 4(自动引导入所选择的 X 会话管理器)的 init 脚本

●rc.6 = 重新引导或停止系统时由 init 执行的脚本

目录中的其余 rc.* 文件用于启动诸如联网、内核模块、PCMCIA、Samba、Apache、Netatalk 和 GPM 的系统服务。如果想要使某个服务(如 Apache)完全不能在任何运行级别上使用,请使用 chmod 将文件的许可权从可执行更改成不可执行。除去该文件也可以到达相同效果,但我不推荐这种做法。也许在以后某个日子您会发现要重新启用服务,但却不知道怎样做。

rc.inet1 脚本负责启动基本联网服务,如设置主机名(IP 和 DHCP)。 rc.inet2 脚本负责启动所有其它 INET 服务,如 NFS、包转发、ssh 服务器和其它联网守护程序。

所有 Slackware /etc/rc.d/rc.* 文件都是 Bash shell 脚本,都可以进行手工编辑。可是对于联网,您可能应该先尝试 netconfig 实用程序。虽然需要手工编辑 /etc/resolv.conf 来添加多个名称服务器,但是它也许能处理您想要执行的所有操作,而且它非常易于使用。

如果您是 Linux 初学者并且要修改系统,那么也许应该确保您有引导软盘,并且应该复制您所有想要编辑的 rc.* 文件。如果拿不定主意,我通常会将文件保存为 rc.*.old ,使它们变成不可执行文件。,使它们变成不可执行文件。

使用运行的系统

好,现在系统已经运行,然而您需要在单用户方式中执行一些操作 -- 该怎么做呢?本文的下一部分将说明如何在系统运行时更改运行级别,而不是通过重新引导来更改运行级别,而且还说明了为什么执行此操作以及何时执行。

telinit 命令:在运行的系统上更改运行级别

telinit 命令可以用于更改运行级别。当以 root 身份执行 telinit S (或者想要更改的任意运行级别)时,它会更改运行级别,关闭前一个运行级别,然后启动下一个。

某种程度上您正在重新引导系统的一部分。然而,关闭与重新启动服务的能力正是 Linux 最可爱的品质之一。想要更改机器的 IP 地址吗?没问题,只要进行一些更改,然后重新启动联网服务就行了。只要一切配置正确,备份和运行是如此迅速,很难分辩是否做过更改。在其它即使更改了桌面上的墙纸都必须重新引导的操作系统上,尝试一下执行此操作 :)

确实需要重新引导或彻底关闭 Linux 机器的唯一情况是如果正在添加或更改硬件,假设您正在使用不能热插拔的设备,或者已经中断且需要使机器脱机以修复损坏。与其它操作系统不同,对于那些不经过重新引导就无法解决问题的产品系统,我从来没有看到过重新引导解决了这些系统上的问题。我曾设法利用诸如 hdparm 的命令来挂起非生产性机器,我希望这种情况发生。

假设您想要执行一些系统维护,而这些系统维护要求系统处于单用户方式。例如,使用 hdparm 调整硬盘。第一步是 su (切换)到 root 用户。

然后执行 telinit 命令使系统进入单用户方式:

telinit S -t 60
Linux联盟收集整理

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-3 0:28:03
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持