您的位置:

详解Linux/Oracle启动

一、启动过程

启动过程是Linux/Oracle系统运行时的核心,它包含了从计算机开机直到系统完全加载的所有过程。启动过程的主要步骤包括:BIOS自检、引导加载程序(bootloader)的运行、内核初始化、init初始化进程,以及各种系统服务和各种“守护进程”的启动,并最终启动系统。

在这些过程中,BIOS的自检是启动过程的第一步,BIOS会读取硬件设备并检查它们的运行状况,以确保它们可以正常启动。一旦硬件设备被检查完毕,BIOS就会找到引导加载程序并将其加载进内存。

引导加载程序是Linux系统启动过程的第二步,它可以是GRUB或LILO。引导加载程序的作用是找到Linux内核并将其加载,通常内核和initramfs被一起包含在一个映像文件里面。引导加载程序根据引导配置文件的指定,将内核及initramfs加载到内存中,并控制内核的启动。

内核初始化是启动过程的第三步。在内核初始化过程中,内核会启动核心硬件和设备驱动程序,以便Linux系统能够使用计算机硬件资源。内核还初始化一些基本系统服务,并在最后将控制权交给init程序。

init初始化进程是启动过程的第四步,init程序是Linux系统的第一个进程,所有的用户进程和守护进程都是由init启动的。init不仅启动了其他进程,还在系统运行过程中,负责维护进程的启动和终止。

在init初始化进程之后,各种系统服务和“守护进程”开始启动。各种服务和“守护进程”控制着不同方面的系统功能,例如网络、安全性、日志、邮件等。这些服务和进程会在启动过程中被启动,以保证这些功能在系统运行期间正常工作。

二、启动过程详解

启动过程的详细步骤和流程可以进一步细分如下:

1. BIOS自检

当计算机开机时,计算机会通过一段固定的代码来检查硬件设备。这段代码是在计算机的主板上的只读存储器(read-only memory, ROM)中的。这个过程被称为BIOS自检。该过程主要涵盖以下内容:

(1)电源自检

这个过程涵盖了检查主板上提供了正确的电源卡和电源。在检测到电源故障时,计算机将停止运行。

(2)内存自检

这个过程涵盖了系统内存的检查。它会检查内存所在的� 区域是否存在故障,如果存在问题则报告错误信息。如果内存自检失败,计算机将不能正常启动,并显示错误信息。

(3)硬盘自检

计算机将检查硬盘分区架构。如果扇区上的数据不连续或与硬盘开头的数据不匹配,则导致计算机无法启动。

2. 引导加载程序的运行

BIOS自检完成后,计算机会把控制权交给引导代码(bootloader)。引导加载程序是计算机启动Linux(或其他操作系统)的关键。它的作用是读取压缩过的Linux内核并将其加载到计算机的内存中。

(1)GRUB

GRUB是Linux操作系统中的最流行的引导加载程序之一。GRUB的默认配置文件位于/etc/default/grub,并具有其他配置文件┈┈例如/boot/grub/grub.cfg这样的文件。


$ vi /etc/default/grub

GRUB可以通过menu.lst或grub.cfg文件加载到内存中。管理引导加载程序的最简单方法之一是使用“grub2-mkconfig”命令自动生成配置文件,它将根据系统的硬件配置自动生成设置。


$ grub2-mkconfig -o /boot/grub2/grub.cfg

(2)LILO

LILO是早期的引导加载程序,在在许多Linux发行版中使用。LILO通常由名为lilo.conf的配置文件控制,该文件位于/etc/lilo.conf。


$ vi /etc/lilo.conf

更新LILO配置文件后,需要使用“lilo”命令更新引导加载程序的设置。


$ lilo

3. 内核初始化

一旦内核被加载到计算机的内存中,它会自行启动初始化过程。内核的初始化是指从内核缓存映像文件中将核心代码加载到内存后运行。在内核初始化期间,内核还必须检测设备并加载适当的驱动程序,以便可以使用硬件设备。

(1)/etc/modules.conf,/etc/modprobe.conf或/proc/sys/kernel/modprobe文件

这些文件通常被用来为安装在计算机上的硬件设备指定正确的驱动程序,以便内核可以正确地初始化设备并使其正常工作。

(2)/etc/fstab文件

该文件标识了计算机上的文件系统。这些文件系统必须被挂载后才能使用,所以在初始化过程中,内核会检查并尝试挂载标识的文件系统。

(3)/etc/inittab文件或/etc/event.d目录

这些文件或目录是用来指定计算机上进程的运行级别。

4. init进程的启动

内核启动完毕后,init进程的启动是下一步。init进程是所有Linux系统的第一个进程,它负责启动并监控启动过程中的所有服务和进程。

(1)/etc/inittab文件和/etc/event.d目录

init进程使用/etc/inittab文件(Sysvinit)或/etc/event.d目录(Upstart或Systemd)来确定运行级别以及分配给各种系统服务和守护进程的任务。它在进入运行级别后启动这些服务和进程。

(2)运行级别

Linux系统有7个运行级别,运行级别可以指定启动过程中要运行的操作。运行级别也被用于启动或停止许多服务程序,它们是在系统启动过程中被自动启动的。


$ telinit 3

5. 系统服务和守护进程的启动

一旦init进程启动,它负责启动许多其他进程和“守护进程”,以确保系统能够正常运行。这些服务和进程是在Linux系统初始化过程中启动的,以便系统在初始化后就能获得所有必要的服务和进程。

(1)服务和启动脚本

服务和启动脚本通常位于/etc/init.d/directory,这些服务和脚本都必须是root用户可读可执行的文件。在脚本中,可以配置所启动的服务程序等信息。启动脚本还可以指定服务程序的启动方式,例如启动顺序、停止顺序等等。


$ service sshd restart

(2)daemon进程

除此之外,Linux中还存在许多执行特定任务的“守护进程”,例如httpd守护进程、pop服务器、imap服务器等等。 这些守护进程通常是由init进程启动的,并在系统运行时一直运行。

三、总结

通过以上的内容,我们可以了解到Linux/Oracle启动的过程包括BIOS自检、引导加载程序的运行、内核初始化、init初始化进程,以及各种系统服务和各种“守护进程”的启动,并最终启动系统。

在启动过程中,需要注意BIOS自检、引导加载程序的设置、内核初始化、init进程的启动、系统服务和“守护进程”的启动等诸多细节,以此来保证Linux/Oracle系统的正常运行。