我的编程空间,编程开发者的网络收藏夹
学习永远不晚

CentOS6 启动流程是怎样的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

CentOS6 启动流程是怎样的

CentOS6 启动流程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

我们在使用Linux操作系统的时候,我们只需按下电源键,等待,然后输入账户和密码就可以使用Linux操作系统了。那么在按下电源到输入账号和密码之前,操作系统都做了些什么?下面就来讲述在这段时间发生的动作。

一、Linux启动流程详解

下图就是启动流程的大致过程:

CentOS6 启动流程是怎样的

二、POST加电自检

POST(PowerOnSelfTest)首先对每一个设备进行检查。完成后会寻找存有引导记录的设备,找到后读入操作系统引导记录,然后将系统控制权交给引导记录,并由引导记录来完成系统的顺利启动。

三、MBR引导

MBR(Master Boot Record) MBR记录一般是在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoder,后 4*16 的 64 个字节是存放分区信息的,*** 2 个字节是校验信息,一般是 5***A。

四、GRUB(GRand Unified Bootloader)、加载内核

就是MBR中的前 446 个字节,是BooTLoader的一种,它的作用是要选择要启动的内核。

1、GRUB程序的组成:

CentOS6 启动流程是怎样的

主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5组成。对于这些部分我的理解是这样:

  • device.map:存放的是内核文件的根分区

  • menu.lis:是grub.conf的链接文件,但是这个名字我觉得更与它的功能接近,就是菜单列表。里卖弄设置了可以选择的内核菜单。存放于stage2中。

  • stage:用于grub引导程序过大,所以分2段引导,***段存放在MBR中,第二段存放于内核文件系统中,***段引导完成后可以找到第二段。 但是,第二段是存放于内核文件系统中的,此时还没有格式化文件系统,如何可以访问到第二段的 menu.lst 呢??就需要借助于中间层 stage1_5,有它来协助 stage1 段来访问 stage2 段。stage1_5通常位于 stage1 字段后的 63 个扇区。 由于stage2 在内存中存放可以使用的文件系统不确定,所以这就是有多个 stage1_5 的原因了。

2、grub.conf 文件参数意义

default=1    # 默认启动的内核title, 0 表示是***个  timeout=5    # 默认等待时间  splashimage=(hd0,0)/grub/splash.xpm.gz    # 指定菜单的背景图片的路径。为xpm格式,采用gzip压缩,只能为14bits色  hiddenmenu    # 隐藏菜单  title CentOS (2.6.32-358.el6.x86_64)    # 标题名,用户可自定义      root (hd0,0)    # 指定 grub 的根位置      # 指定 kernel 文件的位置,还要指出 root(系统启动后) 的位置,挂载方式 ro,这项很关键。      # 加载后会启动 init 进程。      kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet      # 在内核启动过程中装载根文件系统时有用      initrd /initramfs-2.6.32-358.el6.x86_64.img

initramfs-2.6.32-358.el6.x86_64.img 的本质是????

# initramfs 是以 gzip 压缩的 cpio 格式的文件。内核启动时将他作为一个临时的根文件系统。  # grub 的 stage2 将initrd加载到内存里,让后将其中的内容释放到内容中,  # 内核便去执行init脚本,这时内核将控制权交给了init文件处理。  # init 它也主要是加载各种存储介质相关的设备驱动程序。当所需的驱动程序加载完后,  # 会创建一个根设备,然后将根文件系统rootfs以只读的方式挂载。  # 这一步结束后,释放未使用的内存,转换到真正的根文件系统上面去,同时运行/sbin/init程序,  # 执行系统的1号进程。此后系统的控制权就全权交给/sbin/init进程了。

CentOS6 启动流程是怎样的

如何制作 initramfs 呢?

# 可以使用 dircut 命令,用法如下:  # 只有在 initramfs 文件损毁的时候会使用到  [root@server ~]# dracut /mnt/initramfs-`uname -r`.img `uname -r`  [root@server ~]# du -sh /mnt/initramfs-2.6.32-358.el6.x86_64.img   16M /mnt/initramfs-2.6.32-358.el6.x86_64.img  [root@server ~]# du -sh /boot/initramfs-2.6.32-358.el6.x86_64.img   16M /boot/initramfs-2.6.32-358.el6.x86_64.img  # 详细介绍,可使用这个链接:https://zh.opensuse.org/index.php?title=SDB:Dracut&variant=zh-cn#.E5.90.AF.E7.94.A8_dracut_.E7.94.9F.E6.88.90.E7.9A.84_initramfs

3、grub的功能

1)提供菜单,并提供交互式接口

e: 进入编辑模式

CentOS6 启动流程是怎样的

2)选择要启动的内核或系统

允许传递引导参数给内核

选择界面可隐藏

# 可以自启动是通过 grub 像内核传递参数。  # 应用之一是:修改 root 密码(忘记密码),使用 e 选项,传递单用户指令。

3)为编辑功能提供保护机制

启用内核文件

选择运行指定的内核得先输入密码

传递参数

使用e命令得先输入密码

[root@server root]# grub-md5-crypt   Password:   Retype password:   $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0  # 上面是生成的加密字符串  # 然后将信息加入到 grub.conf 文件中,格式如下:  password --md5 $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0  # 当然加入 grub.conf 文件的位置不同,加密效果也不一样。  # 加入到 title 之前的话,会加密整个菜单。  # 加入到 title 指内的话,会加密对应的操作系统的入口。

4、安装grub的方式

1)使用grub-install命令

# grub-install [--root-directory=/path/to/somewhere] DEVICE

2)grub交互是命令

CentOS6 启动流程是怎样的

在这里我们自制一个精简grub,当然启动的时候只启动一个bash就可以。示例是在 VMware 虚拟机下完成的。

***步:准备好块新磁盘,分 2 个区出来

CentOS6 启动流程是怎样的

模拟启动时的boot目录,和根目录,并挂载。如下

[root@server ~]# df -H | tail -n 2  /dev/sdd1              518M    11M   481M   3% /mnt/boot  /dev/sdd2              2.2G    71M   2.0G   4% /mnt/sysroot

制作 grub,并生成 grub 的配置文件

制作grub

CentOS6 启动流程是怎样的

拷贝内核文件和 initramfs 文件到 /mnt/boot 目录下,并生成 grub.conf 文件

[root@server ~]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/vmlinuz  [root@server ~]# cp /boot/initramfs-2.6.32-358.el6.x86_64.img /mnt/boot/initramfs.img  [root@server ~]# ll /mnt/boot/  total 20106  drwxr-xr-x 2 root root     1024 Jul 24 20:58 grub  -rw-r--r-- 1 root root 16542269 Jul 24 21:06 initramfs.img  -rwxr-xr-x 1 root root  4043888 Jul 24 21:05 vmlinuz  # 生成的 grub.conf 文件  [root@server ~]# cat /mnt/boot/grub/grub.conf  default=0 timeout=10 title Mini Linux      root (hd0,0)       kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash      initrd /initramfs.img

生成根文件系统

CentOS6 启动流程是怎样的

拷贝使用命令和库到对应根目录下

CentOS6 启动流程是怎样的

将刚才的磁盘镜像作为另一个虚拟机的启动盘。

CentOS6 启动流程是怎样的

CentOS6 启动流程是怎样的

五、启动 init 进程

init 进程是系统启动的***个进程。其他进程都是有此进程控制fork出来的,也就是说,init是其他进程的“祖先”,PID=1。当然,PID=0进程我们称为空闲进程是属于内核的。

init启动后所做的事情:

1、读取/etc/inittab来读取默认级别 假设:读取到的默认级别是 3

/etc/init/*.conf

# 启动级别:(runlevel)  # 0:关机  # 1:单用户模式  # 2:多用户模式,不支持 NFS 功能  # 3:完全多用户模式,支持文本接口  # 4:预留模式  # 5:完全多用户模式,支持图形模式  # 6:关机  # /etc/inittab文件格式如下,这是遵循了CentOS5的风格。  id:3:initdefault:

2、执行初始化系统脚本 /etc/rc.d/rc.sysinit 来初始化脚本

这个大家有机会可以读读,脚本主要的作用如下:

# 获取网络环境与主机类型。首先会读取网络环境设置文件"/etc/sysconfig/network",获取主机名称与默认网关等网络环境。  # 答应文本欢迎信息。  # 挂载/etc/fstab文件中定义的其它文件系统。  # 激活swap  # 检测根文件系统,并以读写方式重新挂载  # 决定是否启动SELinux和udev。  # 接口设备的检测与即插即用(pnp)参数的测试。  # 用户自定义模块的加载。用户可以再"/etc/sysconfig/modules/*.modules"加入自定义的模块,此时会加载到系统中。  # 加载核心的相关设置。按"/etc/sysctl.conf"这个文件的设置值配置功能。  # 设置系统时间(clock)。  # 设置终端的控制台的字形。  # 设置raid及LVM等硬盘功能。  # 以方式查看检验磁盘文件系统。  # 进行磁盘配额quota的转换。  # 重新以读取模式载入系统磁盘。  # 启动quota功能。  # 启动系统随机数设备(产生随机数功能)。  # 清楚启动过程中的临时文件。  # 将启动信息加载到"/var/log/dmesg"文件中。

3、然后执行 /etc/rc.d/rc 脚本

此脚本运行的时候此脚本的时候,会读取/etc/rc.d/rc3.d/下的所有脚本,来控制系统启动的时候启动或者关闭那些服务

CentOS6 启动流程是怎样的

# 这里面的脚本大致分为 2 类,以 S 开头的和以 K 开头的脚本。  # S 代表开机时启动的,K 表示开机时不启动。  # 每个文件的命名格式,例如:S01sysstat S 开机启动 01 启动次序 sysstat 启动脚本名  # 启动的定义是在每个脚本中定义的:例如  # # chkconfig: - 85 15  # 默认级别 启动次序 不启动次序

这些脚本是否开机自启动,可由 chkconfig 命令来管理。

# 常用选项:  # chkconfig --add SRV_SCRIPT 可以将自己写的一些脚本,让此命令统一管理。例如:chkconfig --add httpd  # chkconfig --del SRV_SCRIPT 将服务删除,意思就是服务不由chkconfig这种机制来管理  # chkconfig SRV_SCRIPT {on|off} 设置服务开机是否自启动,默认管理的级别是2345.  # --level 2345 等,指定默认级别,可以与其他选项一起使用

4、执行/etc/rc.d/rc.local脚本,此脚本是启动过程中***启动的一个脚本。

***会执行 /bin/login 登录用户。至此系统启动过程完成。

看完上述内容,你们掌握CentOS6 启动流程是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

CentOS6 启动流程是怎样的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

CentOS6 启动流程是怎样的

CentOS6 启动流程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们在使用Linux操作系统的时候,我们只需按下电源键,等待,然后输入账户和密码就可以使用Linu
2023-06-16

Ubuntu启动流程是怎样的

这篇文章主要介绍“Ubuntu启动流程是怎样的”,在日常操作中,相信很多人在Ubuntu启动流程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ubuntu启动流程是怎样的”的疑惑有所帮助!接下来,请跟
2023-06-17

CentOS系统启动流程是怎样的

这篇文章给大家介绍CentOS系统启动流程是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. CentOS5POST开机自检运行CMOS中的BIOS程序,加载第一个启动磁盘的Bootloader由Bootloa
2023-06-28

Linux系统启动流程是怎么样的

这篇文章主要为大家展示了“Linux系统启动流程是怎么样的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统启动流程是怎么样的”这篇文章吧。linux启动时我们会看到许多启动信息,Li
2023-06-27

Linux中arm64多核启动流程是怎样的

今天小编给大家分享一下Linux中arm64多核启动流程是怎样的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Kernel
2023-06-28

Linux操作系统启动流程是怎么样的

这篇文章主要为大家展示了“Linux操作系统启动流程是怎么样的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux操作系统启动流程是怎么样的”这篇文章吧。Linux操作系统启动流程02 Ce
2023-06-15

Netty NioEventLoop启动过程是怎样的

本篇内容介绍了“Netty NioEventLoop启动过程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!启动分析NioEventL
2023-06-04

Springboot底层启动过程是怎样的

这篇文章主要介绍了Springboot底层启动过程是怎样的的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Springboot底层启动过程是怎样的文章都会有所收获,下面我们一起来看看吧。SpringApplica
2023-07-02

Linux系统启动过程是怎样的

今天就跟大家聊聊有关Linux系统启动过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第三部分:系统初始化在init的配置文件中有这么一行:si::sysinit:/etc
2023-06-16

Linux系统启动过程是怎么样的

小编给大家分享一下Linux系统启动过程是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多;一
2023-06-28

Shuffle流程是怎样的

本篇内容介绍了“Shuffle流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在MapReduce框架中,shuffle是连接Ma
2023-06-04

android启动流程是什么

Android启动流程是指从手机开机到系统完全启动的过程。具体的流程如下:1. 电源按下:当用户按下电源键时,电源管理芯片会向处理器发送一个启动信号。2. 启动引导加载程序(Bootloader):处理器接收到启动信号后,会从内存中的固定地
2023-10-11

Go程序的启动流程是什么

这篇文章主要讲解了“Go程序的启动流程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go程序的启动流程是什么”吧!Go 引导阶段查找入口首先编译上文提到的示例程序:$ GOFLAGS=
2023-06-15

重装系统怎样设置U盘启动的流程教程

u盘安装系统是大家常常采用的重装系统方式,而大家必须在bios设置u盘启动才可以开展安装系统实际操作,那麼bios如何设置u盘启动呢?下面小编要到跟各位说说重装系统怎样设置U盘启动的流程教程,大家一起来瞧瞧吧。1、进到到BIOS界面后更改到
2023-07-19

activity启动流程是什么

Activity启动流程是指在Android应用中启动Activity的一系列操作。它包括以下步骤:1. 调用startActivity()方法:通过调用startActivity()方法,向系统发出启动Activity的请求。2. 系统检
2023-09-11

springboot启动流程是什么

Spring Boot 启动流程如下:1. 初始化应用程序上下文:Spring Boot 应用程序启动时,首先会创建一个 Spring 应用程序上下文(ApplicationContext)对象。该上下文对象是整个应用程序的核心,它包含了应
2023-05-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录