Linux——系统引导流程学习简单笔记

开启电源:

固件 firmware(CMOS/BIOS) →  POST 加电自检 对硬件就行检查

自举程序 BootLoader(GRUB) →  载入内核

载入内核 Kernel 1:驱动硬件

2:启动进程 init


读取执行配置文件/etc/inittab

initdefalut 系统默认运行级别
  ↓
/etc/rc.d/rc.sysinit 执行该脚本
  ↓
etc/rc.d/rc 该脚本判断initdefault
  ↓
/etc/rc.d/rcN.d N = 0 -- 6 然后执行对应的启动目录,启动需要的服务程序

一: 

  date  显示系统时间 、

  hwclock  显示硬件时间  我们可以调整  通过man 帮助文档查看修改

二:

  内核的版本号第二个数字奇数表示测试版本,偶数表示正式版本。

三:

  init进程:

init启动后读取inittab文件,执行缺省运行级别,从

而继续引导过程。在UNIX系统中,init是第一个可

以存在的进程,它的PID恒为1,但它也必须向一个

更高级的功能负责:PID为0的内核调度器(Kernel

scheduler),从而获得CPU时间。

  这里就引出了两个问题:

  如果父进程死亡,子进程还存在的话,这样的进程被称为孤儿进程

  如果子进程死亡,父进程不知道还保持与子进程的通信,那个这样的进程叫做僵尸进程

    我们在系统中是不允许出现这两种进程的。 父进程死亡,子进程也应该消亡

在inittab中,所有条目采取以下格式:

id:run-levels:action:process

id:标识符,一般为两位字母或数字

run-levels:指定运行级别,可以指定多个

action:指定运行状态

process:指定要运行的脚本/命令

  

我们可以通过runlevel命令查看当前系统的运行级别,  通过init 【0-6Ss】 或者  telinit【0-6Ss】改变系统运行级别

action常用取值:

initdefault:指定系统缺省启动的运行级别
sysinit:系统启动执行process中指定的命令

wait:执行process中指定的命令,并等其结束再

运行其他命令

once:执行process中指定的命令,不等待其结束
ctrlaltdel:按下Ctrl+Alt+Del时执行process指定

的命令

powerfail:当出现电源错误时执行process指定的 、命令,不等待其结束

powerokwait:当电源恢复时执行process指定的命令

respawn:一旦process指定的命令中止,便重新运行该命令


  

启动脚本/etc/rc.d/rc.sysinit,完成系统服务程序启动,如系统环境变量设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等。

判断默认运行级别,调用/etc/rc.d/rc脚本,执行相应运行级别目录中的服务程序,完成相应运行级别的初始化设置

/etc/rc.d/init.d   该目录下包含各个运行级别的服务程序脚本    其实/etc/rc.drcN.d是一些软连接,指向了十几存在于/etc/rc.d/init.d的脚本

四:

我们如何设置自动启动程序:

  1:常用的是利用ln -s 首先我们常见自己的脚本,给予可执行权限,然后将它放到/etc/rc.d/init.d,然后再在相应的/etc/rc.drcN.d里面创建软连接即可;

  2: 我们可以通过chkconfig来启动关闭服务

  3:ntsysv 同样

五:

其他:

  运行dmesg检查引导期间的错误

  检查系统日志/var/log/messages,查找可能被dmesg忽略的应用程序错误

原文地址:https://www.cnblogs.com/E-star/p/3408344.html