详解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系统的正常运行。

原创文章,作者:YVETU,如若转载,请注明出处:https://www.506064.com/n/317794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
YVETUYVETU
上一篇 2025-01-11 16:28
下一篇 2025-01-11 16:28

相关推荐

  • 如何将Oracle索引变成另一个表?

    如果你需要将一个Oracle索引导入到另一个表中,可以按照以下步骤来完成这个过程。 一、创建目标表 首先,需要在数据库中创建一个新的表格,用来存放索引数据。可以通过以下代码创建一个…

    编程 2025-04-29
  • 如何在Linux中添加用户并修改配置文件

    本文将从多个方面详细介绍在Linux系统下如何添加新用户并修改配置文件 一、添加新用户 在Linux系统下创建新用户非常简单,只需使用adduser命令即可。使用以下命令添加新用户…

    编程 2025-04-27
  • 如何解决linux jar包 invalid or corrupt jarfile问题

    对于许多开发人员和系统管理员在Linux环境下使用Java开发过程中遇到的一个常见的问题是 invalid or corrupt jarfile(无效或损坏的jar文件)错误。当您…

    编程 2025-04-27
  • 在Linux上安装JRE并配置环境变量

    本文将从以下几个方面为您详细阐述如何在Linux系统上,通过自己账户安装JRE,并且配置环境变量。 一、安装JRE 在进行安装前,我们需要下载JRE的安装包并解压,可以从官方网站下…

    编程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用于Linux操作系统的一款照片管理器,它支持多种相机及存储设备,并提供了一系列强大的工具,让用户可以方便地浏览、管理、编辑和导出照片。本文将从多个方面对GTKAM进行…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论