首页 > 其他分享 >RedHat 开机起动流程[摘]

RedHat 开机起动流程[摘]

时间:2023-09-04 16:35:45浏览次数:40  
标签:15 .. RedHat 23 May 起动 init 开机 root


# 版权宣告: 1999 Copyright OLS3 All rights reserved.

# 作者: OLS3 (卧龙小三)
# 本讲义仅供台南县 87 学年度网络管理进阶研习班上课之用.
# 学员可保存一份自用, 供日后网管时参考备查.
# 作者保有一切形式的著作权.
# 欲作其它用途者, 需经作者授权同意.
# 未经作者授权同意之前, 请勿转载刊登.

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, 执行其中一个, 接着命令提示符号 $ 便出现在屏幕上, 等待您输入命令.

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


 

标签:15,..,RedHat,23,May,起动,init,开机,root
From: https://blog.51cto.com/u_16245757/7352081

相关文章

  • Linux开机启动方案
    Linux系统-部署-运维系列导航一.系统服务如果组件已经安装为系统服务,默认服务文件为xxx.service,存储在/usr/lib/systemd/system可以使用以下2种方式设置开机启动systemctl方式systemctlenable/disablexxx指令设置/取消开机启动--查看是否开机启动[root@localhosts......
  • 本地开机启动jar
    1:首先有个可运行的jar包本地以ruiyi代码为例打包2:编写bat命令---命名为.bat即可@echooffjava-jarD:\everyDay\test\RuoYi\target\RuoYi.jar3:设置为开机自启动启动快捷键win+r----输入shell:startup---打开启动文档夹把bat文件复制过来4:关机重启--发现自动启动了5:在浏览器输入ja......
  • redis7.2.0 centos源码编译安装并设置开机自启动
    下载源码包wgethttps://github.com/redis/redis/archive/7.2.0.tar.gztar-zxf7.2.0.tar.gz编译编码编译编码cdredis-7.2.0make&&makeinstall此时默认redis-serverredis-cli等命令行安装到目录/usr/local/bin/目录中。如果你想安装命令行到指定目录中你可以指定......
  • Python+Flask设置接口开机自启动
    Windows系统适用创建一个批处理文件(例如 start_flask_api.bat),内容如下:@echooffcd/dC:\path\to\your\flask\app//你要启动程序的路径pythonapp.py//你要启动的程序将批处理文件添加到Windows的启动项中:按下Win+R键打开"运行"对话框,输入 shell:startup 并按回车......
  • linux之将程序改为系统启动&开机自动启动
    1.sudovim/etc/systemd/system/django_ops.service2.填入以下内容[Unit]Description=MyCustomServiceAfter=network.target[Service]ExecStart=/data/soft/django_ops/django_ops.shRestart=always[Install]WantedBy=multi-user.targetViewCode3.所用脚本内......
  • buildroot 构建根文件系统(2)开机自启动脚本
    一、开发背景构建最小系统后成功运行后,有些应用或者脚本需要开机自启动,不要手动操作二、开发需求开机启动用户路径下的test.sh脚本/root/test.sh三、开发环境LinuxUbuntu 4.15.0-65-generic+ buildroot-2023.02.3+i.mx6d(cortex-A9)四、实现步骤1......
  • RedHat 7.3 升级Greenplum到6.25.1遇坑
    近日,在一企业Greenplum6.11.2的数据库集群中,执行gprecoverseg-F遇到问题,报错:gprecoversegutilitycouldn'tsynchronizedownsegmentsERROR","XX000","couldnotreceivedatafromWALstream:ERROR:requestedWALsegment00000003000000D60000000Fhas......
  • 【INFINI Workshop 深圳站】8 月 31 日一起动手实验玩转 Easysearch
    8月31日下午和INFINILabs的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。欢迎大家免费报名参加。活动时间:2023-08-3113:30~17:30活动地点:广东深圳南山区科发路91号华润置地大厦D座5层05A会议室......
  • gunicorn开机自启
    gunicorn设置开机自启参考博客:ubuntu配置gunicorn开机启动可能是史上最全面易懂的Systemd服务管理教程!(强烈建议收藏)需要开机运行项目,使用systemctl来控制gunicorn开机启动systemctl配置文件官方文档:systemd.service在/etc/systemd/system下增加文件project.servic......
  • centos7实现开机自启动Python脚本
    在Linux系统中,你可以使用不同的方法来实现开机自启动Python脚本和确保守护进程不挂掉。以下是一些常用的方法:1.开机自启动Python脚本:使用rc.local文件(适用于一些旧的系统):编辑/etc/rc.local文件,将你希望在系统启动时运行的命令或脚本添加到文件中。确保给脚本提供正确的路径。......