热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

linux启动顺序

下面给大家介绍linux启动顺序,更多Linux使用教程请访问Linux视频教程​进行学习!

下面给大家介绍linux启动顺序,更多Linux使用教程请访问Linux视频教程进行学习!

启动第一步--加载 BIOS

当你打开计算机电源,计算机会首先加载 BIOS 信息,BIOS 信息是如此的重要,以至于计

算机必须在最开始就找到它。这是因为 BIOS 中包含了 CPU 的相关信息、设备启动顺序信

息、硬盘信息、内存信息、时钟信息、PnP 特性等等。在此之后,计算机心里就有谱了,

知道应该去读取哪个硬件设备了。

启动第二步--读取 MBR

众所周知,硬盘上第 0 磁道第一个扇区被称为 MBR,也就是 Master Boot Record,即主

引导记录,它的大小是 512 字节,别看地方不大,可里面却存放了预启动信息、分区表信

息。

系统找到 BIOS 所指定的硬盘的 MBR 后,就会将其复制到 0x7c00 地址所在的物理内存中。

其实被复制到物理内存的内容就是 Boot Loader,而具体到你的电脑,那就是 lilo 或者 grub

了。

启动第三步--Boot Loader

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可

以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,

以便为最终调用操作系统内核做好一切准备。

Boot Loader 有若干种,其中 Grub、Lilo 和 spfdisk 是常见的 Loader。

我们以 Grub 为例来讲解吧,毕竟用 lilo 和 spfdisk 的人并不多。

系统读取内存中的 grub 配置信息(一般为 menu.lst 或 grub.lst),并依照此配置信息来

启动不同的操作系统。

启动第四步--加载内核

根据 grub 设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕

一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK,

booting the kernel”。

系统将解压后的内核放置在内存之中,并调用 start_kernel()函数来启动一系列的初始化函

数并初始化各种设备,完成 Linux 核心环境的建立。至此,Linux 内核已经建立起来了,基

于 Linux 的程序应该可以正常运行了。

启动第五步--用户层 init 依据 inittab 文件来设定运行等级

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab 文件,并依据

此文件来进行初始化工作。

其实/etc/inittab 文件最主要的作用就是设定 Linux 的运行等级,其设定形式是“:

id:5:initdefault:”,这就表明 Linux 需要运行在等级 5 上。Linux 的运行等级设定如下:

0:关机

1:单用户模式

2:无网络支持的多用户模式

3:有网络支持的多用户模式

4:保留,未使用

5:有网络支持有 X-Window 支持的多用户模式

6:重新引导系统,即重启

启动第六步--init 进程执行 rc.sysinit

在设定了运行等级后,Linux 系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit 脚本程

序,它做的工作非常多,包括设定 PATH、设定网络配置(/etc/sysconfig/network)、启

动 swap 分区、设定/proc 等等。如果你有兴趣,可以到/etc/rc.d 中查看一下 rc.sysinit 文

件。

启动第七步--启动内核模块

具体是依据/etc/modules.conf 文件或/etc/modules.d 目录下的文件来装载内核模块。

启动第八步--执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行 rc0.d 到 rc6.d 中的相应的脚本程序,来完成相应的初始

化工作和启动相应的服务。

启动第九步--执行/etc/rc.d/rc.local

你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然

rc.local 就是在一切初始化工作后,Linux 留给用户进行个性化的地方。你可以把你想设置

和启动的东西放到这里。

启动第十步--执行/bin/login 程序,进入登录状态

以上就是linux启动顺序的详细内容,更多请关注其它相关文章!


推荐阅读
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 本文通过具体示例探讨了如何在iOS应用中有效使用scrollView,并解决了常见的无法滚动问题。不仅介绍了基础的使用方法,还详细讲解了代码实现的具体步骤。 ... [详细]
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
  • 线段树详解与实现
    本文详细介绍了线段树的基本概念及其在编程竞赛中的应用,并提供了一个具体的线段树实现代码示例。 ... [详细]
  • 在iOS开发过程中,当开发团队使用多台Mac设备时,可能会遇到无法继续申请新证书的问题。本文介绍了如何通过导出.p12文件来解决这一问题,并确保团队成员能够在不同设备上共享同一个证书。 ... [详细]
  • 微信小程序开发指南:创建动态电影选座界面
    本文详细介绍如何在微信小程序中实现一个动态且可视化的电影选座组件,提高用户体验。通过合理的布局和交互设计,使用户能够轻松选择心仪的座位。 ... [详细]
  • 贝壳兰州站启动‘11.11新房节’,百万房源真打折
    随着双十一购物狂欢节的临近,各大电商平台纷纷推出促销活动,今年的双十一尤为特别,房地产市场也加入了这场消费盛宴。贝壳找房宣布,自11月5日起,将在兰州等城市举办‘11.11新房节’,提供大量优惠房源,最高补贴可达140万元。 ... [详细]
  • 材料光学属性集
    材料光学属性集概述了材料在不同光谱下的光学行为,包括可见光透射率、太阳光透射率等关键参数。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • JavaScript 实现图片文件转Base64编码的方法
    本文详细介绍了如何使用JavaScript将用户通过文件输入控件选择的图片文件转换为Base64编码字符串,适用于Web前端开发中图片上传前的预处理。 ... [详细]
  • 华为云HECS:高效能云服务器助力中小企业智能化转型
    华为云凭借其强大的技术创新能力和广泛的服务网络,持续为用户提供高效、稳定、安全的云计算解决方案。本文将深入探讨华为云HECS云服务器如何通过集成智能技术,帮助中小企业实现业务的快速部署与优化。 ... [详细]
author-avatar
余小刚玩guitarvp_996
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有