16.5 Linux /sbin/init

简介: 在内核加载完毕,并完成硬件检测与驱动程序加载后,此时主机硬件已经准备完毕,内核会主动呼叫第一个进程,也就是 /sbin/init,此配置文件最主要的功能就是准备软件执行的环境,包括系统的主机名、网络设定、语言、文件系统格式及其他服务的启动等。

在内核加载完毕,并完成硬件检测与驱动程序加载后,此时主机硬件已经准备完毕,内核会主动呼叫第一个进程,也就是 /sbin/init,此配置文件最主要的功能就是准备软件执行的环境,包括系统的主机名、网络设定、语言、文件系统格式及其他服务的启动等。

这里和 CentOS 5.x 系统相比也有较大变化。在 CentOS 5.x 系统中,主要通过 init 进程的配置文件 /etc/inittab 来设定系统,并启动 Linux。但是在 CentOS 6.x 系统中,由于用 Upstart 启动服务来替换以前的 init,所以在 /etc/inittab 配置文件中只能定义系统的默认运行级别,而其他的功能是靠 /etc/init/ 目录中的其他配置文件实现的。

大家可以把 /etc/init/ 目录中的配置文件看成以前 /etc/inittab 这个文件功能的分拆。

本章开头提到,由 /sbin/init 进程可通过 /etc/init/rcS.conf 配置文件,分别找到 /etc/rc.d/rc.sysinit 配置文件和 /etc/inittab 配置文件,前者用于初始化系统,配置计算机的初始环境;后者用于确定系统的默认运行级别。

接下来,先介绍 /etc/rc.d/rc.sysinit 配置文件。如果我们使用 Vim 查看 /etc/rc.d/rc.sysinit 配置文件,就会发现这个这个配置文件主要进行了以下几项工作:

  • 获得网络环境和主机类型;
  • 测试设备:除了挂载内存设备 /proc 之外,还会主动侦测系统上是否具有 usb 设备,如果有,则会主动加载 usb 的驱动程序,并尝试挂载 usb 文件系统;
  • 开机启动画面 Plymouth(代替了以往的 RHGB);
  • 判断是否启用 SELinux;
  • 显示开机过程中的欢迎画面;
  • 初始化硬件;
  • 用户自定义模块的加载,用户可以在 /etc/sysconfig/modules/*.modules 加入自订的模块,则此时会被加载到系统当中;
  • 配置内核的参数,系统会主动去读取 /etc/sysctl.conf 这个文件的配置参数,使内核的功能成为我们想要的样子。
  • 设置主机名。
  • 同步存储器。
  • 设备映射器及相关的初始化。
  • 初始化软件磁盘阵列 (RAID)。
  • 初始化 LVM 的文件系统功能。
  • 检验磁盘文件系统 (fsck)。
  • 设置磁盘配额 (quota)。
  • 重新以可读写模式挂载系统磁盘。
  • 更新 quota (非必要)。
  • 启动系统虚拟随机数生成器。
  • 配置机器(非必要)。
  • 清除开机过程中的临时文件。
  • 创建 ICE 目录。
  • 启动交换分区(swap)。
  • 将开机信息写入 /var/log/dmesg 文件中。

在以上过程中,比较值得注意的是自定模块的加载。在 CentOS 中,如果我们想要加载核心模块的话,就可以将整个模块写入到 /etc/sysconfig/modules/*.modules 中。当然,此过程并不是必须的,通常我们的默认模块已经够用,除非对硬件太新,不得不自己加载模块,否则无需刻意添加任何模块。

可以看到,/etc/rc.d/rc.sysinit 配置文件已经将基本的系统配置数据都写好了,我们可以查询 /var/log/dmesg 文件或使用 dmesg 命令查看系统在启动时到底发生了什么。当然,我们也可以通过这个命令来看看 Linux 服务器的硬件信息。

有关 /etc/inittab 配置文件的内容,放到了下节进行详细介绍。

目录
相关文章
|
7月前
49Linux - 系统管理(关机重启:reboot、shutdown、init)
49Linux - 系统管理(关机重启:reboot、shutdown、init)
22 0
|
1天前
|
算法 Linux Shell
【Linux】systemv init和systemd的区别
【Linux】systemv init和systemd的区别
41 0
|
1天前
|
Unix Linux 程序员
ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
86 0
|
7月前
|
Linux Python
linux中运行sudo rosdep init遇到的一些问题和解决方案
linux中运行sudo rosdep init遇到的一些问题和解决方案
|
11月前
|
Linux
Linux系统init: prefdm main process terminated with status问题
Linux系统init: prefdm main process terminated with status问题
245 0
|
11月前
|
安全 Linux
在企业里linux你用什么关机?shudown?halt?poweroff?init 0? 你是否不知道他们的区别,而娘下大错?
在企业里linux你用什么关机?shudown?halt?poweroff?init 0? 你是否不知道他们的区别,而娘下大错?
227 0
|
运维 Ubuntu Linux
linux下init机制与systemd管理机制
linux下init机制与systemd管理机制
365 0
|
安全 Linux Shell
Linux 下的init 0,1,2,3,4,5,6知识介绍
Linux 下的init 0,1,2,3,4,5,6知识介绍
215 0
|
Linux Ubuntu
Linux基础命令---init
init        init是所有进程的父进程,它由内核执行,可以启动其他所有的进程。init指令在启动时会参考/etc/inittab文件的配置,完成其他进程的启动。init通常不会由用户进程执行,并且期望进程id为1。
1176 0
|
Linux
linux网络驱动初始化module_init函数跟踪
module_init函数对做驱动开发的同学是在太熟悉了,但是关于底层的知识可能大家有些不愿去了解,而其中知识对于网络初始化也直接相关,所以先将此分享。 在驱动程序中有module_init函数,该函数定义在文件 include/linux/module.h中(以前好像在include/linux/init.h中),如下。
2294 0