热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

红帽linux设置自动启动,RedHat开机启动流程

RedHat开机启动流程:1.LILO取得控制权.PC起动时,会读取开机磁碟第一条cylinder的第一个sector(此即MBR),然後它会试着将读取到的程式码载入记忆体中并且予

RedHat 开机启动流程 :

1. LILO 取得控制权.

PC 起动时, 会读取开机磁碟第一条 cylinder 的第一个 sector(此即 MBR), 然後它会试着将读取到的程式码载入记忆体中并且予以执行. 这些程式码, 就是 LILO. 记不记得, 当初我们安装时, 曾选择将 LILO 放入MBR 呢?!

2. 载入 kernel

Red Hat 的 kernel 放在 /boot 中, 通常档名类似 vmlinuz-2.0.34-0.6, vmlinuz-2.2.5-15

3. kernel 执行第一支程式 /sbin/init

init 会根据 /etc/inittab 这个 initialization table 来决定不同的 run-level 应该如何设定系统.

Red Hat 的 run-level 有以下 7 层: (定义在 /etc/inittab 中)

0 --- halt : 关机 level

1 --- Single user mode : 单人模式, 如果你忘记 root 密码, 这是补救的方式之一.

2 --- Multiuser, without NFS : 多人使用模式, 但没有 NFS 功能, 如果安装时没有使用网路功能, 那麽 level 3 是一样的.

3 --- Full multiuser mode : 这是预定的 run-level

4 --- unused : 这个 run-level 目前尚未定义使用

5 --- X11 : X Windows 使用的 level

6 --- reboot : 重新开机时使用的 level

Linux 系统开机时, 最重要的观念便是这个 run-level , run-level 可以说是 Linux 的系统状态(system states of Linux), 根据不同的情况进入不同的系统状态, 以执行不同的初始化动作.

另外一点, Linux 虽然融合了 System V 及 BSD 的特色, 但在开机起动的部份, 比较接近 System V 的作法, 并且这种方式几乎已成为 Linux 世界的一项标准. 因为它具有容易使用, 功能强大以及富有弹性的特色.

其目录档案结构如下:

/etc/rc.d 中包含:

目录 script 档案

/etc/rc.d/init.d

/etc/rc.d/rc0.d

/etc/rc.d/rc1.d

/etc/rc.d/rc2.d

/etc/rc.d/rc3.d

/etc/rc.d/rc4.d

/etc/rc.d/rc5.d

/etc/rc.d/rc6.d

rc

rc.local

rc.sysinit

rc0.d 便是 run-level 0 起动 script 存放的目录, rc3.d 是 run-level 3, 其它依此类推

不过, rc0.d ~ rc6.d 中的 script 并不是各自独立的, 其实它们都是 symbolic file, 连结到 /etc/rc.d/init.d 中的 script.

比如 rc3.d 目录中的档案列表如下:

total 0

lrwxrwxrwx  1 root  root  20 May 23 15:56 K15postgresql -> ../init.d/postgresql

lrwxrwxrwx  1 root  root  17 May 23 15:56 K20rusersd -> ../init.d/rusersd

lrwxrwxrwx  1 root  root  15 May 23 15:56 K20rwhod -> ../init.d/rwhod

lrwxrwxrwx  1 root  root  16 May 23 15:56 K55routed -> ../init.d/routed

lrwxrwxrwx  1 root  root  17 May 23 15:56 S01kerneld -> ../init.d/kerneld

lrwxrwxrwx  1 root  root  17 May 23 15:56 S10network -> ../init.d/network

lrwxrwxrwx  1 root  root  15 May 23 15:56 S15nfsfs -> ../init.d/nfsfs

lrwxrwxrwx  1 root  root  16 May 23 15:56 S20random -> ../init.d/random

lrwxrwxrwx  1 root  root  16 May 23 15:56 S30syslog -> ../init.d/syslog

lrwxrwxrwx  1 root  root  13 May 23 15:56 S40atd -> ../init.d/atd

lrwxrwxrwx  1 root  root  15 May 23 15:56 S40crond -> ../init.d/crond

lrwxrwxrwx  1 root  root  17 May 23 15:56 S40portmap -> ../init.d/portmap

lrwxrwxrwx  1 root  root  15 May 23 15:56 S40snmpd -> ../init.d/snmpd

lrwxrwxrwx  1 root  root  16 May 23 15:56 S45pcmcia -> ../init.d/pcmcia

lrwxrwxrwx  1 root  root  14 May 23 15:56 S50inet -> ../init.d/inet

lrwxrwxrwx  1 root  root  15 May 23 15:56 S55named -> ../init.d/named

lrwxrwxrwx  1 root  root  13 May 23 15:56 S60lpd -> ../init.d/lpd

lrwxrwxrwx  1 root  root  18 May 23 15:56 S75keytable -> ../init.d/keytable

lrwxrwxrwx  1 root  root  18 May 23 15:56 S80sendmail -> ../init.d/sendmail

lrwxrwxrwx  1 root  root  13 May 23 15:56 S85gpm -> ../init.d/gpm

lrwxrwxrwx  1 root  root  15 May 23 15:56 S85httpd -> ../init.d/httpd

lrwxrwxrwx  1 root  root  15 May 23 15:56 S85sound -> ../init.d/sound

lrwxrwxrwx  1 root  root  13 May 23 15:56 S91smb -> ../init.d/smb

lrwxrwxrwx  1 root  root  11 May 23 15:48 S99local -> ../rc.local

各位可以发现: 这些 script 档不是以 S 开头, 就是以 K 开头, 其後再接上二位数字, 并且皆连结到 init.d 目录中的相关 scripts 档.

以 S 开头的, 表示 Start 起动之意, 而 K 开头的, 则是 Kill 杀除之意.

4. init 执行第一支 script : /etc/rc.d/rc.sysinit

rc.sysinit 会设定许多系统变数, 如:

设定 PATH

设定网路: 读取 /etc/sysconfig/network, 以设定 NETWORKING, FORWARD_IPV4, HOSTNAME, DOMAINNAME, GATEWARY, GATEWAYDEV(eth0)

设定 NIS domain name

并且执行 run-level 启动之前所需的许多准备动作, 如:

起动 swapping

checking root filesystems : 检查 root 档案系统

检查系统参数 (/proc), 设定 PNP

清除 /etc/mtab

mount root 及 /proc 档案系统

决定是否使用模组, 载入模组

检查档案系统 (使用 fsck)

挂上其它档案系统

设定 console 字型

打开 quota

清除不必要的档案, 如 lock, pid

设定 clock

serial port 初始化

将开机讯息经由 dmesg 放入 /var/log/dmesg 中

5. init 执行预设的 run-level 目录中所有的 scripts

正常情况下就是 rc3.d, 因为 /etc/inittab 中有一行设定是: id:3:initdefault: 表示预设要执行的 run-level 是 level 3. 因此, 刚刚上面各位看到的 rc3.d 中的 Sxx 及 Kxx 都会被执行.

6. 最後 init 执行 /etc/rc.d/rc.local 这支 script.

rc.local 会在各 run-level 的 script 执行完之後再执行. 您可以将自己想在开机时处理的动作加在这个 script 之中.

7. init 执行完之後, 接着执行 /bin/login 程式

login 程式会提示使用者需输入帐号及密码, 接着编码并确认密码的正确性, 若二者相合, 则为使用者进行初始化环境, 并将控制权交给 shell.

8. shell

假设预设的 shell 是 bash, 则 bash 会先寻找 /etc/profile, 执行其中的指令, 然後搜寻使用者目录中, 是否有 .bash_profile, .bash_login, 或 .profile, 执行其中一个, 接着命令提示符号 $ 便出现在萤幕上, 等待您输入命令.

至此, 完成了整个开机的流程



推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
author-avatar
mobiledu2502873927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有