设为首页 收藏本站
查看: 1063|回复: 0

[经验分享] RedHat开机启动流程

[复制链接]

尚未签到

发表于 2018-5-13 07:49:34 | 显示全部楼层 |阅读模式
  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, 执行其中一个, 接着命令提示符号 $ 便出现在萤幕上, 等待您输入命令.
  至此, 完成了整个开机的流程

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459321-1-1.html 上篇帖子: RedHat使用DVD镜像架设本地Yum源 下篇帖子: RedHat AS 5安装Oracle常见错误 总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表