精华内容
下载资源
问答
  • 80x86系统启动原理

    2012-12-03 15:56:01
    80x86系统启动原理,80X86 平台上的系统实现方法,对系统的启动原理的总结
  • 计算机启动原理X86机器)

    千次阅读 2012-01-14 11:35:54
    计算机启动原理X86机器) 当我们启动计算机的时候,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?下面,本文就给您介绍有关开机原理的...

    计算机启动原理(X86机器)

    当我们启动计算机的时候,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?下面,本文就给您介绍有关开机原理的知识。

      首先让我们来了解一些基本概念。第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。BIOS包括有系统BIOS(即常说的主板BIOS),显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS,其中系统BIOS是本文要讨论的主角,因为计算机的启动过程正是在它的控制下进行的。BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。

      第二个基本概念是内存的地址,我们的机器中一般安装有512MB,1GB,2GB或者更大的内存,这些内存的每一个字节都被赋予了一个地址,以便CPU访问内存。32MB的地址范围用十六进制数表示就是0~1FFFFFFH,其中0~FFFFFH的低端1MB内存非常特殊,因为最初的8086处理器能够访问的内存最大只有1MB,这1MB的低端640KB被称为基本内存,而A0000H~BFFFFH要保留给显示卡的显存使用,C0000H~FFFFFH则被保留给BIOS使用,其中系统BIOS一般占用了最后的64KB或更多一点的空间,显卡BIOS一般在C0000H~C7FFFH处,IDE控制器的BIOS在C8000H~CBFFFH处。

      好了,下面我们就来仔细看看计算机的启动过程吧。

      第一步:当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从地址FFFF0H处开始执行指令,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。

      第二步: 系统BIOS的启动代码首先要做的事情就是进行POST(Power-On Self Test,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,我们几乎无法感觉到它的存在,POST结束之后就会调用其它代码来进行更完整的硬件检测。

      第三步:接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

      第四步:查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。

      第五步:接着系统BIOS将检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度,我们可以在CMOS设置中自行决定使用简单耗时少或者详细耗时多的测试方式。

      第六步: 内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口、软驱等设备,另外绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。

      第七步: 标准设备检测完毕后,系统BIOS内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。

      第八步:到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。

      第九步:接下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS(一小块特殊的RAM,由主板上的电池来供电)之中。通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时我们都能够看到“Update ESCD… Success”这样的信息,不过,某些主板的系统BIOS在保存ESCD数据时使用了与Windows 9x不相同的数据格式,于是Windows9x在它自己的启动过程中会把ESCD数据修改成自己的格式,但在下一次启动机器时,即使硬件配置没有发生改变,系统BIOS也会把ESCD的数据格式改回来,如此循环,将会导致在每次启动机器时,系统BIOS都要更新一遍ESCD,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。

      第十步:ESCD更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。以从C盘启动为例,系统BIOS将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责读取并执行IO.SYS,这是DOS和Windows 9x最基本的系统文件。Windows9x的IO.SYS首先要初始化一些重要的系统数据,然后就显示出我们熟悉的蓝天白云,在这幅画面之下,Windows将继续进行DOS部分和GUI(图形用户界面)部分的引导和初始化工作。

      如果系统之中安装有引导多种操作系统的工具软件,通常主引导记录将被替换成该软件的引导代码,这些代码将允许用户选择一种操作系统,然后读取并执行该操作系统的基本引导代码(DOS和Windows的基本引导代码就是分区引导记录)。

      上面介绍的便是计算机在打开电源开关(或按Reset键)进行冷启动时所要完成的各种初始化工作,如果我们在DOS下按Ctrl+Alt+Del组合键(或从Windows中选择重新启动计算机)来进行热启动,那么POST过程将被跳过去,直接从第三步开始,另外第五步的检测CPU和内存测试也不会再进行。我们可以看到,无论是冷启动还是热启动,系统BIOS都一次又一次地重复进行着这些我们平时并不太注意的事情,然而正是这些单调的硬件检测步骤为我们能够正常使用电脑提供了基础。


    展开全文
  • 大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第59篇文章 文章目录前言centos 6的启动过程1. 加载BIOS硬件信息a) 通电自检b) MBR... 登录系统启动完成启动相关的配置文件1. boot目录2. 运行级别总结

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第59篇文章

    前言

    七月新秋风露早,今天我们一起聊聊Linux启动过程及相关的配置文件。 我们以centos6为例,一起来研究一下它的启动过程

    centos 6的启动过程

    centos6的启动过程,包含以下几个部分

    1. 加载BIOS硬件信息
    2. grub引导
    3. 加载kernel
    4. 加载init进程
    5. 读取/etc/inittab配置文件
    6. 执行 /etc/rc.d/rc.sysinit脚本
    7. 执行/etc/rc.d/rc脚本
    8. 启动mingetty进程,等待用户登录系统
    1. 加载BIOS硬件信息
    a) 通电自检

    系统通电之后,主板的BOIS 运行POST(Power on self test)代码,检测系统外围的一些设备,比如: cpu,内存,显卡,IO,键盘鼠标等。

    b) MBR引导

    检测通过后,根据BIOS里boot设置的(光驱,硬盘,网盘)启动顺序,搜索相应的启动驱动器,并获取第一个启动设备的代号。读取第一个启动设备的MBR的引导加载程序(lilo,grub,spfdisk)启动信息,从MBR中加载启动引导管理器(grub),并运行该启动引导管理,进入grub启动引导阶段。

    注意: MBR引导记录: 用于引导磁盘空间小于2T的空间
    GPT引导记录: 用于引导磁盘空间大于2T的空间

    2. grub引导

    所谓的grub引导,就是读取MBR的boot Loader

    MBR的硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)

    备注: 为什么MBR分区表,只能分四个主分区?

    注:磁盘默认一个扇区大小为:512字节。MBR由以下3部分组成:

    第一部分是:主引导程序(boot loader)占446个字节。主引导程序,它负责从活动分区中装载,并运行系统引导程序。

    第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。每个分区表项长16个字节,164=64字节。为分区项1、分区项2、分区项3、分区项4。64字节只存4个分区表。
    第三部分是MBR有效标识位,占2个字节,固定为55AA。如果这个标志位0xAA55,就认为这个是MBR。
    所以:16
    4+446+2=512

    3. 加载(内核)kernel

    依据 boot loader 的设定,到引导分区加载 Kernel ,Kernel 会开始侦测硬件并加载驱劢程序;

    4. 加载init进程

    在硬件驱动成功后,Kernel 会主动执行 init 程序,而 init 会取得 run-level 信息;
    init是执行的第一个程序,所以他的进程编号pid =1 ,其他的进程都是从它衍生出来的,都是它的子进程。
    前面我们有提到过,对于孤儿进程,一般是送到init进程来处理。

    5. 读取/etc/inittab配置文件

    init 执行 /etc/rc.d/rc.sysinit 文件来准备软件执行的作业环境 (如网络、时区主机名,selinux等);

    6. 执行 /etc/rc.d/rc.sysinit脚本

    init 执行 run-level 下各个服务并启动 (script 方式);

    脚本的内容是:

    • 获取网络环境和主机类型
    • 测试挂载/proc /sys /usb 等装置
    • 决定是否启动selinux
    • 周边设备的侦测
    • 读取.etc.sysctl.conf 档案中的设定值
    • 设定系统时间
    • 设定终端字形
    • 设定RAID,LVM功能
    • 使用fsck检测文件系统
    • 清除开机中的暂存档案 将开机相关信息载入/var/log/dmesg档案中
    7. 执行/etc/rc.d/rc脚本

    init 执行开机后自动运行脚本 /etc/rc.d/rc.local 文件;
    这个脚本主要是一些自动以的开机启动程序,如果你想开启时启动什么内容,可以在里面写
    在这里插入图片描述

    可以看到这里创建了一个 /var/lock/subsys/local 这个文件的创建只是为了证明rc.local 这个脚本已经执行过了,目的在于避免这个脚本重复执行。

    在系统里会有一个star()的函数来判断文件是否已经创建,如果已经创建,后面读取的时候就不会在去重建,避免系统重复启动。

    8. 启动mingetty进程,等待用户登录系统

    所有的服务都运行成功后,接下来进入登录用户系统的操作, 返回init , 这时候初始环境都已经配好了, init 打开虚拟终端机控制程序 mingetty 来启动 login 程序,最后就等待用户登入

    虚拟终端由 mingetty程序产生的:
    语法:
    mingetty [–long-hostname][–noclear][tty]

    在这里插入图片描述

    9. 登录系统,启动完成

    当我们看到mingetty的登录界面的时候,就可以输入用户名和密码了。
    login会接收mingetty传来的用户名作为用户名的参数,先判断用户名不是root,且存在/etc/nologin文件,然后输出nologin的文件内容并退出,这样做一般是为了防止非root用户登录。
    之后就可以根据passwd ,和shadow来验证账号的信息。

    启动相关的配置文件

    1. boot目录
    [root@ecs-c13b ~]# ls /boot
    config-2.6.32-696.el6.x86_64
    config-2.6.32-754.27.1.el6.x86_64
    efi
    grub
    initramfs-2.6.32-696.el6.x86_64.img
    initramfs-2.6.32-754.27.1.el6.x86_64.img
    initrd-2.6.32-754.27.1.el6.x86_64kdump.img
    symvers-2.6.32-696.el6.x86_64.gz
    symvers-2.6.32-754.27.1.el6.x86_64.gz
    System.map-2.6.32-696.el6.x86_64
    System.map-2.6.32-754.27.1.el6.x86_64
    vmlinuz-2.6.32-696.el6.x86_64
    vmlinuz-2.6.32-754.27.1.el6.x86_64
    

    在这里插入图片描述

    查看grub的配置文件

    (图片有注释)

    在这里插入图片描述

    2. 运行级别

    运行级别一共有6个:
     # 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
      # 1 - 单用户模式
      # 2 - 多用户,没有 NFS
      # 3 - 完全多用户模式(标准的运行级)
      # 4 – 系统保留的
      # 5 - X11 (x window)
      # 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 )

    总结

    centos6的启动和centos7有点区别,但大同小异,下一篇文章我们来讨论centos7的启动过程。

    如果是面试问到启动过程:

    加点自检-内核引导-运行init-系统初始化-建立终端-用户登录系统

    我是高胜寒,一个在教培行业,不忘初心的人,欢迎点赞收藏,我们下篇文章再见!

    展开全文
  • x86计算机启动过程分析

    千次阅读 2015-11-20 20:58:43
    x86计算机启动过程分析     计算机的加电和复位  在处理器的众多引脚中,有一个RESET引脚,用于接受复位信号。每当处理器加电,或者RESET引脚的电平由低变高时,处理器都会执行一个硬件初始化以及一个可...

    x86计算机启动过程分析

     

     

    计算机的加电和复位

           在处理器的众多引脚中,有一个RESET引脚,用于接受复位信号。每当处理器加电,或者RESET引脚的电平由低变高时,处理器都会执行一个硬件初始化以及一个可选的内部自测试,然后将所有寄存器的内容初始化到一个预置的状态。比如对于Intel8086来说,将CS寄存器初始化为0xFFFF,其他所有寄存器的内容都为0x0000,包括指令指针寄存器(IP)。

    处理器的主要功能就是取指令和执行指令。加电或复位后,它就会立即尝试去做这样的工作。不过,在这个时候,内存中还没有任何有意义的指令,它该怎么办?

    计算机的存储结构

     

           对于Intel8086来说,它有20根地址线,可访问的空间范围为1MB。范围为0x00000~0xFFFFF,处于各方面考虑,计算机系统设计者将这1MB的空间从物理上分为不同部分。如图,0x00000~0x9FFFF分配给内存条,即我们所熟知的内存,即SDRAM。0xF0000~0xFFFFF为BIOS芯片,即ROM。另外细心的读者可以发现,两者之间还空闲一部分区域,即从0xA0000~0xEFFFF的空间。这部分空间分配给了其他的物理部件,比如显存之类的板卡。


          由于SDRAM存储的数据掉电即失,而ROM存储的数据能长时间保存,掉电也不失,我们根据ROM的特性,将一些程序指令固化在ROM中。使处理器加电后自动执行。不能让处理器饿着,聪明的人类总会有办法让它自己觅食的。所以,计算机开机后,根据CS:IP的初始化值,计算机找到0xFFFF*16+0,即0xFFFF0处的指令执行。这里通常是一个跳转指令,原因是处理器执行时,IP的值是自动增长的,访存空间最多到0xFFFFF,所以程序最多再访问16字节的空间就到达存储器尽头了。

          程序通常还是跳转到ROM中运行,进行硬件的监测,诊断,初始化。它还包括一套软件流程,包括读取从外围键盘输入的数据,显示硬件状况。由于这片ROM完成的是最基本的必备功能,所以得名BIOS(即Basic Input & Output System),BIOS的容量是有限的,在完成最基本的功能后,接下来要做的,就是从辅存(一般是硬盘)读取指令数据到内存条,然后跳转到内存条的地址空间执行。

     

    硬盘中的数据是什么?

    硬盘中存放的就是我们的操作系统,一般位于C盘。BIOS会从硬盘的第一扇区,读取512字节的数据到内存的0x0000:0x7c00位置。这512字节就是大名鼎鼎的主引导扇区,即Bootloader。Bootloader将有关操作系统更详细的信息,读取到内存中来,例如全局描述符表。完成配置后,CPU使用权移交给操作系统。至此,操作系统登场。回顾以下整个过程,CPU的使用权好像接力棒一样从BIOS到Bootloader,再从Bootloader到操作系统。

     

    总结

    如何快速掌握操作系统启动流程呢,我认为以下几点最重要:1.复位后,处理器从哪里执行,即IP指向哪里;2.内存有多大,地址空间从哪里到哪里;3.操作系统存储在什么地方,如何加载操作系统到内存;4.加载操作系统后,内存中的各个段怎么管理。不同的处理器设计不同,所以上述方法也不同。比如ARM架构的处理器,就有ARM的方法。所以,学习操作系统过程中,最主要关注的不是技术,而是结合硬件特性来采取合适的解决方法,万变不离其宗。

     

     

     

     

    展开全文
  • 1.centos6系统启动过程及相关配置文件 1.1centos6系统启动过程 1.1.1. 加载 BIOS 的硬件信息,跟据设定取得第一个可开机引导设置,如:光驱,硬盘,网络,USB; 如果是硬盘为第一引导。 1.1.2. 读取硬盘中 MBR...

    1.centos6系统启动过程及相关配置文件

       1.1centos6系统启动过程

    1.1.1. 加载 BIOS 的硬件信息,跟据设定取得第一个可开机引导设置,如:光驱,硬盘,网络,USB; 如果是硬盘为第一引导。

    1.1.2. 读取硬盘中 MBR 的 boot Loader 就是 grub引导

    GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。

    MBR的硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。

    互动:为什么MBR分区表,只能分4个主分区? 

    注:磁盘默认一个扇区大小为:512字节。MBR由以下3部分组成:

    第一部分是:主引导程序(boot loader)占446个字节。主引导程序,它负责从活动分区中装载,并运行系统引导程序。

    第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。每个分区表项长16个字节,16*4=64字节。为分区项1、分区项2、分区项3、分区项4。64字节只存4个分区表。

    第三部分是MBR有效标识位,占2个字节,固定为55AA。如果这个标志位0xAA55,就认为这个是MBR。

    所以:16*4+446+2=512

    1.1.3. 依据 boot loader 的设定,到引导分区加载 Kernel ,Kernel 会开始侦测硬件并加载驱劢程序;  

    1.1.4. 在硬件驱动成功后,Kernel 会主动执行 init 程序,而 init 会取得 run-level 信息;

    1.1.5. init 执行 /etc/rc.d/rc.sysinit 文件来准备软件执行的作业环境 (如网络、时区等);

    1.1.6. init 执行 run-level 下各个服务并启动 (script 方式);

    1.1.7. init 执行开机后自动运行脚本 /etc/rc.d/rc.local 文件;

    1.1.8. init 执行虚拟终端机控制程序 mingetty 来启动 login 程序,最后就等待用户登入啦;

    详解还是弄个图片比较好理解。如图

    1.2  centos6启动相关的配置文件

    ]# vim /boot/grub/grub.conf

    default=0    设定默认启动菜单项,当系统中有多个内核时,0表示默认加载第1个,1表示第2个内核

    timeout=5    菜单项等待选项时间为5s

    splashimage=(hd0,0)/grub/splash.xpm.gz    指明菜单背景图片路径为

    hiddenmenu  隐藏菜单

    title CentOS (2.6.32-358.6.1.el6.x86_64)  定义菜单项

        root (hd0,0)  grub查找stage2及kernel文件所在设备分区,grub的根

        kernel /vmlinuz-2.6.32-358.6.1.el6.x86_64 ro root=/dev/vg_have/lv_root rd_NO_LUKS LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto rhgb quiet      启动的内核

        initrd /initramfs-2.6.32-358.6.1.el6.x86_64.img      内核匹配的ramfs文件

     

    修改开机系统自动启动级别:

    ]# vim /etc/inittab

    # Default runlevel. The runlevels used are:

    #   0 - halt (Do NOT set initdefault to this)

    #   1 - Single user mode

    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

    #   3 - Full multiuser mode

    #   4 - unused

    #   5 - X11

    #   6 - reboot (Do NOT set initdefault to this)

    #

    id:3:initdefault:           #这里决定系统启动的级别

     

    /etc/rc.d/rc.sysinit  shell脚本 作用:系统初始化: 像:主机名 和/etc/fstab 都在这里指定了,完成了包括mount分区 激活swap 加载modules等重要的工作.

     

    启动对应级别下的服务如: init 3 级别

    /etc/rc.d/rc3.d/(这里的程序/服务S开头的全部开机执行;K开头的表示开机不执行,表明了关机时顺序)

    rcn.d (n为1到6) 是对应于不同的runlevel下起不同的服务. 这些目录下都是一些符号连接, 连接到/etc/rc.d/init.d下的一些文件.以S开头的表示要启动, 以K开头的不启动,第一个字母后面的数值是一个优先级.

     

    所有服务都运行成功后,设置开机自动执行某个命令: /etc/rc.local

     

     

    2. centos7系统启动过程及相关配置文件

    2.1  centos7系统启动过程

    CentOS7引导顺序

    1.      UEFi或BIOS初始化,运行POST开机自检

    2.      选择启动设备

    3.      引导装载程序, centos7是grub2

    4.      加载内核选项 

    5.     加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg

    6.      加载initramfs初始化伪文件系统

    7.      内核初始化,centos7使用systemd代替init

    8.      执行initrd.target所有单元,包括挂载/etc/fstab

    9.      从initramfs根文件系统切换到磁盘根目录

    10.    systemd执行默认target配置,配置文件/etc/systemd/system/default.target

    11.    systemd执行sysinit.target初始化系统及basic.target准备操作系统

    12.    systemd启动multi-user.target下的本机与服务器服务

    13.    systemd执行multi-user.target下的/etc/rc.d/rc.local

    14.    Systemd执行multi-user.target下的getty.target及登录服务

    15.    systemd执行graphical需要的服务

    centos7启动过程如图详解:

     

     

     

    2.2  Systemd运行原理

    Systemd概述:systemd即为system daemon [ˈdi:mən] 守护进程,是linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。

    与多数发行版使用的System V风格init相比,systemd采用了以下新技术: (1) 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能; (2) 用Cgroups代替PID来追踪进程,以此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。

    unit对象:unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息

    Systemd配置文件:

    •       /usr/lib/systemd/system/  #这个目录存储每个服务的启动脚本,类似于之前的/etc/init.d/

    •       /run/systemd/system/   #系统执行过程中所产生的服务脚本,比上面目录优先运行

    •       /etc/systemd/system/   #管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行

     

    注意: 对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启

     

    总结:centos5-6-7 3个系统版本启动过程:

    CentOS 5: SysV init  ;   CentOS 6: Upstart     ;CentOS 7: Systemd

     

    2.3  管理系统服务

    命令: systemctl COMMAND  name.service

    -

    centOS6

    CentOS7

    启动

    service name start

    systemctl start name.service

    停止

    service name stop

    systemctl stop name.service

    重启

    service name restart

    systemctl restart name.service

    状态

    service name status

    systemctl status name.service

    重载或重启服务(先加载,再启动)

    -

    systemctl reload-or-restart name.service

     

    chkconfig命令的对应关系

    -

    centOS6

    CentOS7

    设定某服务开机自启

    chkconfig name on

    systemctl enable name.service

    设定某服务开机禁止启动

    chkconfig name off

    systemctl disable name.service

    查看所有服务的开机自启状态

    chkconfig --list

    systemctl list-unit-files --type service

    用来列出该服务在哪些运行级别下启用和禁用

    chkconfig sshd –list

    ls /etc/systemd/system/*.wants/sshd.service

    查看服务是否开机自启

    -

    systemctl is-enabled name.service

     

    服务状态

     ~]# systemctl list-unit-files      #显示状态

    •       loaded:Unit配置文件已处理

    •       active(running):一次或多次持续处理的运行

    •       active(exited):成功完成一次性的配置

    •       active(waiting):运行中,等待一个事件

    •       inactive:不运行

    •       enabled:开机启动

    •       disabled:开机不启动

    •       static:开机不启动,但可被另一个启用的服务激活

    展开全文
  • Linux 操作系统原理系统启动流程

    千次阅读 2015-11-19 15:52:06
    系统启动流程 控制RHEL7启动过程 编辑gurbcfg RHEL7启动级别 修改系统运行级别 RHEL7破密码步骤 grup2加密防止破密码 initramfs文件前言RHEL7使用GRUB2,引导程序。系统启动流程控制RHEL7启动过程 开机 加载主板BIOS...
  • windows系统启动过程原理全面分析:现在个人用的最多的就是windows XP,要正确使用Windows XP,一定要熟练掌握Windows XP的启动原理。Windows XP的启动过程所执行的操作可以看成是一个操作系统整体环境的快照或缩影,...
  • linux kernel底层涉及到平台硬件模块,比如段/页机制的硬件单元,APIC,接触时感觉比较陌生,虽然bochs可以模拟x86平台,但不能像qemu一样灵活地增删硬件。因此打算用qemu搭建一个用于研究硬件模块的实验环境。
  • x86架构下操作系统启动过程 对于 x86 架构 Linux 0.11 来说,操作系统启动主要执行了以下几段代码 BIOS → bootsect.s → setup.s → head.s → main.c BIOS部分 x86 PC 刚开机时 CPU 处于实模式,寻址方式为计算...
  • 环境描述 安装环境:VMware5.5.3 build-34685 虚拟机内资源:1G内存 7G硬盘空间 CPU 2核  ... 3 理解Linux启动原理  4 试着解决Linux启动不起来等故障 启动日志 ---------------------Power On--------
  • BIOS 加电启动原理

    千次阅读 2019-02-07 15:59:40
    BIOS 加电启动原理 目录 教学视频 0. 背景描述 1.上电加载三部曲 2. 什么是实模式 3. 启动BIOS,准备实模式下的中断向量表和中断服务程序 直达底部 教学视频 BIOS上电过程, BIOS内存布局,BIOS加载中断向量表和...
  • 从无盘启动看 Linux 启动原理

    千次阅读 多人点赞 2020-10-30 18:00:00
    因此我决定使用无盘启动 volumio 顺便研究一下 linux 启动原理。 目标:无盘启动 volumio 系统 0.2 方案 正常 Linux 启动流程大体如下: BIOS 启动,完成自检,选择启动硬件 如果是磁盘系统读取 MBR 从 MBR 指示,...
  • 嵌入式系统原理课后习题练习

    万次阅读 多人点赞 2020-10-16 22:46:17
    嵌入式系统原理及应用----基于ARM Cortex-M3内核的STM32F103系列微控制器 答案仅供参考,不喜勿喷~~ 本人比较懒,后面的就没仔细整
  • Android系统编译原理

    千次阅读 2017-01-20 11:41:31
    Android系统编译原理 [1] 历史  2003年Android公司成立,系统开发  2005年Android被google收购  2007年11月5日,google公司推动成立手机开发联盟(HAL)  2008年9月Android 1.0正式发布,HTC G1使用   ...
  • linux启动原理之-initrd和Debian实例

    千次阅读 2011-02-23 21:00:00
    init/main.c中的start_kernel函数完成了所有的全局特性初始化,这些全局特性包括内核运转所需要的基础设施,比如虚拟内存设施,进程调度设施,中断设施,缓存设施,VFS设施等,接下来启动1号进程的内核部分,...
  • 系统调用是用户程序与系统打交道的唯一入口,因此系统调用的安全直接关系到系统的安全。如果一个用户恶意地不断调用fork()将导致系统负载增加,因此我们有必要...本程序在x86_64构架ubuntu14.04麒麟系统上测试通过。
  • Bridge方式的配置原理和步骤。Bridge方式适用于服务器主机的虚拟化。 问题 客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信。事实上,如果要在安装时使用网络通信,需要提前设置...
  • 基于X86的小型内存Linux操作系统

    千次阅读 2014-06-17 15:21:06
    摘要:X86、LiveCD、LiveUSB   由于工作需要,最近花了点时间真正研究了一下如何纯手工制作一个Linux系统。虽然以前也曾用gentoo、lfs等成功制作过Linux系统,但那都是看着别人的教程一步步完成的,虽然成功了,...
  • NAT方式的配置原理和步骤。NAT方式适用于桌面主机的虚拟化。 问题 客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信。事实上,如果要在安装时使用网络通信,需要提前设置客户机的...
  • Openwrt 系统启动流程

    千次阅读 2019-01-10 11:36:11
    系统概况 /dev/sda1 启动分区 /dev/sda2 根文件系统 系统进程 系统配置 启动过程 系统启动 系统脚本 系统工具 procd uci – 配置文件管理 opkg ...
  • Rust开发操作系统系列:从零制作x86_64位系统 在发表这个文章之前,我曾发布过另一篇文章:Rust开发操作系统系列:全新Hello World系统。那篇文章我发布在云栖社区以及我自己的博客:青藤木子上,但是这是我第一次...
  • linux系统调用原理

    千次阅读 2016-05-12 11:42:20
    x86架构trap_init在系统启动的时候start_kernel会调用trap_init来初始化异常向量表start_kernel trap_init set_system_trap_gate(SYSCALL_VECTOR, &system_call); ... memcpy(&idt[entry], gate, s
  • Linux系统启动流程及系统裁剪

    万次阅读 多人点赞 2016-12-02 19:17:17
    Linux系统启动流程,Linux系统裁剪
  • 已有Windows10系统安装在C盘,硬盘为sata接口的SSD,硬件较为老旧,不支持UEFI启动。先用Diskgenius分出一个分区,不格式化。从U盘启动安装,在选择完分区,安装过程中报错,显示grub同步磁盘信息的时候错误,回到...
  • BIOS的启动原理学习--加载引导程序

    千次阅读 2020-01-27 19:05:08
    在Windows系统以及有图形界面的其他操作系统中要想执行一个程序,必须在窗口中双击它,或者在命令行界面中输入相应的执行命令。从计算机底层机制上讲,这其实是在一个已经运行起来的操作系统的可视化界面或命令行...
  • 前言 前面我们已经了解了计算机硬件的工作原理,以及操作系统的发展。我们知道是内存把计算机硬件和软件联系了起来。不夸张的说,了解了软件在内存中...这一篇我们主要讨论早期x86 CPU和DOS系统对于内存的管理。
  • 第245 页中的“x86: 如何将系统引导至运行级3(多用户级别)”引导至运行级S-在执行系统维护任务(如备份文件系统)后使用。第248 页中的“x86: 如何将系统引导至运行级S(单用户级别)”交互式引导-为测试目的而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,392
精华内容 14,156
关键字:

x86系统启动原理