首页 > 系统相关 > Linux操作系统启动流程汇总

Linux操作系统启动流程汇总

时间:2023-02-09 23:02:14浏览次数:62  
标签:操作系统 grub 汇总 --- etc init 内核 Linux

1、内核设计风格:

    单内核: 把所有功能统统都做进内核(Linux)(在Linux系统上,线程被称为"轻量级进程LWP")

        模块化设计=核心+各种外部内核模块(ko,内核专用模块)

                                   扩展:so,共享对象(用户空间中各种进程所用到的共享模块)

                  核心可以动态加载任何的外围内核模块

    微内核:  内核很小,只是一个核心,他那各种的外围程序都做成他的子系统,需要用到哪个子系统,由内核去调动(Windows)

Redhat (红帽) : 核心(核心很小,但核心上布满了孔洞,任何一个模块需要的时候,只需要把它装载进他所在的位置就可以)

               这就是动态加载(我用到哪个模块,模块本身我把它放在外围的路径下,当我们需要时,让核心自动去装载这个功能)

 

模块位置(红帽系列) :1、在/lib/modules/“内核版本号命名的目录”/

                    2、内核的命名:vmlinux-版本号

 

 Linux操作系统启动流程汇总_文件系统

详解

arch :跟你的平台相关的,驱动你的CPU的

crypto :加密解密相关的模块

drivers :驱动

fs :文件系统

kerne :内核自身额外的其他功能

lib :库

net :网络

sound :声卡

 

 

ldd :显示共享库的依赖关系,显示的结果是:  库名称   库路径

 

ramfs :把内存模拟成磁盘来用, (用来识别对应设备的驱动)

chroot :创建一个伪根,语法:chroot  伪根目录     /bin/bash

 

2、运行级别(启动的服务不同,判定的级别不同)

/etc/inittab

0 :halt 关机

1 :单用户模式(直接登录管理员,不需要密码)或使用s

2 :多用户模式,不启用NFS

3 :正常多用户模式(文本模式)

4 :预留

5 :图形界面

6 :reboot重启

3、详解启动过程

bootloader (MBR):由系统安装程序提供

              Linux常用的bootloader有两种

                                      LILO:Linux loader,在8G以上的分区不能引导,在嵌入式系统上使用

                                     GRUB:统一的bootloader

                                                GRUB分为两个阶段:

                                                             stage1 :被装在MBR中,目的用于引导第二阶段

                                                            stage1.5 :  帮助我们识别系统的文件系统,用与支持下一阶段

                                                             stage2 :真正用于引导操作系统,位于内核所在的分区,/boot/grub/

/etc/grub.conf

default=0    --->设定默认启用的title的编号

timeout=5    --->等待用户选择的超时时间(秒)

splashimage=(hd0,0)/grub/splash.xpm.gz    --->指定grub背景图片

hiddenmenu     --->隐藏菜单

title CentOS (2.6.32-358.el6.i686)    --->标题,用于定义当前系统的不同版本的内核(可自由修改)

         root (hd0,0)     --->内核文件所在的设备,对grub而言,所有的硬盘类型一律认为hd, 前面为第几块硬盘,后面为分区,用逗号隔开

         kernel /vmlinuz-2.6.32-358.el6.i686 ro root=/dev/mapper/vg_pc-lv_root rd_   --->内核文件路径及传递给内核的参数

    NO_LUKS rd_LVM_LV=vg_pc/lv_swap crashkernel=128M rd_NO_MD rd_LVM_LV=vg_pc/lv_root   --->

     LANG=zh_CN.UTF-8  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

         initrd /initramfs-2.6.32-358.el6.i686.img    --->ramfs文件路径,"initrd",安装操作系统最后一步生成的。

4、grub界面应用

 Linux操作系统启动流程汇总_重启_02

敲e键 :编辑

敲a键 :修改内核参数

敲c键 :进入命令行界面

选择我的内核敲e键进行编辑,进入二级菜单!

 Linux操作系统启动流程汇总_重启_03

这个时候我们想编辑某一行直接敲e键就可以

对着kernel敲e键,进入编辑界面,可以修改运行级别,编辑完成之后敲回车。

删除一行用d键,新增一行用o

完成之后敲b键,启动系统!

4.1、grub密码

1、使用 grub-md5-crypt命令 ,生成一个用md5加密的字符串

2、复制生成的字符串到/etc/grub.conf文件中,粘贴在title上面,

 Linux操作系统启动流程汇总_运行级别_04

3、重启之后,敲p键输入密码,才能编辑内核

4、想要输入密码才启动系统就把密码复制到title下面。

 

 

查看运行级别

 Linux操作系统启动流程汇总_运行级别_05

第一个是上一次的运行级别

第二个是现在的运行级别

或者  who  -r 命令

 

 

查看内核版本号

uname  -r 简单显示

uname  -a 显示详细

 

4.2 、修复grub

1、使用命令把boot的分区中的grub破坏掉   if=/dev/zero  of=/dev/sda  count=1  bs=400

2、使用光盘进入系统安装界面,选择 Rescue Install system,进入救援模式。

3、选择语言以及键盘类型,随后问你需不需要开启网络

4、进入Rescue界面,选择Countinue,

5、三个选项(shell:进入命令行模式、fakd:诊断模式、reboot:重启电脑)选择shell

6、进入命令行模式之后输入grub,进入grub界面。

 Linux操作系统启动流程汇总_运行级别_06

7、grub> root  (hd0,0)  --->指定内核分区

8、grub>setup  (hd0)   --->安装grub到指定分区,只需要写磁盘位置就好,不需要分区。

9、grub>find (hd0,0)/    --->搜索内核文件

 

5.1、kernel初始化过程

设备探测

驱动初始化(可能从initramfs文件中装载驱动模块)

以只读方式挂载根文件系统(若以读写模式挂载文件系统,任何一个bug都会导致文件系统崩溃)

装在第一个进程init(PID号1)

 

 

5.2、init(sbin/init)

init是/sbin/init,他要读取的配置文件是/etc/init。

在红帽6.0之后,这个init程序不再使用传统的init 程序(执行速度慢),换成了upstart,,但是文件名依然是init.

         upstart:由Ubuntu公司开发的,实现并行启动好多进程,使用d-bus,这是一种系统内部各子系统之间IPC的机制(IPC:进程间通信)

                基于事件来完成系统之间启动(事件驱动)

                它是由一堆配置文件来协助工作的(有一个目录/etc/init/,都以.conf结尾的,他们都是基于事件驱动的方式来编写的)


         systemd:比upstart还要好的init程序,纯粹完整意义上并行启动多个程序的机制

 

ACTION(红帽5中/etc/init文件详解)

initdefault:设置默认级别

sysinit:系统初始化

wait:等待级别切换至此级别是执行

respawn:一旦程序终止(....tty...),会重新启动

5.3、/etc/rc.d/rc.sysinit完成的任务

激活udev和seLinux;

根据/etc/sysctl.conf文件,来设定内核参数;

设定系统时钟;

装载键盘映射;

启用交换分区;

设置主机名;

根文件系统检测,并以读写方式重新挂载

激活软RAID和LVM设备

启用磁盘配额

清理过期的锁和PID文件

 

 

专业书籍、问题答疑、教学视频、在线实验平台等服务请移步:​​www.noylinux.com​​《零基础趣学Linux》

如果此文章有帮助到您,还请麻烦动动您的小手点个赞,谢谢~
Linux运维技术交流q:962822359

 

 

标签:操作系统,grub,汇总,---,etc,init,内核,Linux
From: https://blog.51cto.com/u_10784316/6047361

相关文章

  • 操作系统概述
    多道分时操作系统多道:从宏观上:三个程序同时在运行(cpu运行那个程序,由调度算法决定)从微观上:就cpu而言,就只有一个程序在运行,只是他们的切换速度非常快,所以就宏观上,他们同时......
  • Linux文件常用操作命令
    一、Linux文件和目录简单操作1.1查看文件ls查看当前目录下的文件如:-a显示所有文件及目录(ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)-l除文件名称......
  • Linux系统怎么配置静态IP?
    使用虚拟机学习Linux可能对新手来说是最简单有效的方式,这里使用的软件是VirtualBox,对新手来说也是比较容易上手的一款软件。如何使用VirtualBox以及如何在VirtualBox......
  • Linux 关于进程管理的总结
    系统计算机运行起来以后,就是由内核和运行在内核之上的众多进程来实现的(kernel+process) 内存分为:   线性内存:              物理内存: 计算机的所有......
  • 关于pip install 错误汇总
    ERROR:Couldnotfindaversionthatsatisfiestherequirement原因镜像错误更改镜像源pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple......
  • 面向对象知识点汇总(小白必会)
    目录Python基础之面向对象一、编程思想1、面向过程2、面向对象二、类与对象的创建1、类的语法结构2、定义与调用3、给对象添加独有属性4、对象独有属性修改三、动态、静态......
  • docker安装(linux)
    1、进入管理模式suroot2、安装必要的系统工具yuminstall-yyum-utilsdevice-mapper-persistent-datalvm23、添加软件源信息yum-config-manager--add-repohttp:/......
  • linux基本功系列之sort命令实战
    前言大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第43篇文章。专栏地址:[linux基本功-基础命令专栏],此专栏是沐风晓月对Linux常用命令的汇总,希......
  • Linux学习-DAY8
    第5章用户身份与文件权限5.1用户身份与能力UID=0:      root用户UID=1~999:  系统用户UID=>1000:   普通用户注意:如果创建用户的时候手动指定了用户U......
  • 操作系统
    操作系统操作系统的概念操作系统:控制和管理整个计算机系统的硬件和软件资源,并合理组织调度计算机的工作和资源分配,以提供给用户和其他软件方便的接口和环境,是计算机系统......