Linux启动芯片的初始代码,Linux系统初始化流程(简述)
1,POST[power on self test]:
接通电源后,CPU通过出厂指定的存储地址读取代码[主板芯片上的ROM],然后测试内存,风扇,显示设备等是否正常,并通过BOIS的Boot Sequence设定的启动次序(此时磁盘设备在硬件平台上被主板等其他组件所识别,硬盘设备可以是硬盘,U盘,光盘等,可以从这些磁盘设备上启动OS)加载选定的那个磁盘设备第0磁道第0扇区的MBR。
2,MBR(512bytes)组成:446 --> bytes bootloader;64bytes --> 分区表;2bytes -->特殊标记
其中bootloader主要功能如下:
1)选定启动的操作系统
2)加载内核和给内核提供根的驱动模块文件initrd ,此文件被同时加载到内存中,它其实就是一个虚拟的根文件系统,内核把此文件当磁盘用),此模块和压缩的kernel文件放在同一个基本磁盘分区上。
bootloader是在安装系统时os安装到自己的文件系统中,而GRUB引导程序在此时会被启动。
GRUB具体分三个引导阶段:
1st
stage:位于MBR中,为了引导2nd stage
1.5
stage:位于boot基本磁盘分区中,为识别内核文件所在的文件系统提供文件系统识别扩展
2nd
stage:位于boot基本磁盘分区中,GRUB的引导程序,当stage2被加载时,GRUB根据请求的情况显示一个内核清单(/etc/grub.conf中定义)
如下图:
在grub目录下
Grub的功能
1、选择要启动的内核或系统;
能隐藏选择界面
2、交互式接口
e:
编辑模式
3、基于密码保护
启用内核映像
定义在相应的title下
传递参数(进入编辑模式)
定义在全局段中
下图grub.conf基本内容:
3,kernel文件加载到内存中后自解压,并识别initrd文件在内存中仿真的伪文件系统,加载驱动模块(运行/linuxrc或者/init脚本,sysroot下的真正根文件系统设备挂载到/下,初始根文件系统挂载到initrd/下,然后释放虚拟文件系统),挂载真正意义上的根目录文件系统并启动第一个用户级进程
init 进程。
4,内核主动调用第一个进程/sbin/init。其主要功能是准备软件执行的环境,包括系统主机名,网络设置,语系处理,文件系统格式及其他服务的启动等。init会读取/etc/inittab的配置文件。inittab定义了init的处理流程,其流程是:1、取得runlevel即默认执行等级的相关等级2、使用/etc/rc.d/rc.sysinit进行系统初始化,其主要工作是设置好整个系统的环境。3、确认启动进入级别,通过/etc/rc.d/rc根据启动的级别来决定启动的服务选项,4、执行用户自定义开机启动程序/etc/rc.d/rc.local5、执行终端机模拟程序mingetty来启动login进程,等待用户登入
Linux启动芯片的初始代码,Linux系统初始化流程(简述)相关推荐
- linux启动网络服务的命令,linux重启服务命令
linux重启服务命令 重启:service 服务名 restart 或systemctl restart 服务名 service和systemctl 1.service命令 service命令其实是 ...
- 开机流程简介--init 处理系统初始化流程 (/etc/rc.d/rc.sysinit)
init 处理系统初始化流程 (/etc/rc.d/rc.sysinit) 还记得上面提到 /etc/inittab 里头有这一句' si::sysinit:/etc/rc.d/rc.sysinit ...
- Linux系统初始化流程
linux系统的启动,指的是从系统加电到系统控制台显示"login:"登录提示符为止的系统运行阶段,与这部分动作密切相关的代码主要是: 四个汇编程序:bootsect.S setu ...
- winsetup制作linux启动盘,winsetupfromusb怎样做linux启动盘
[WinSetupFromUSB使用方法]这是个功能非常强大的自启动U盘制作工具,可以完成 WinXP/Vista/Win7的U盘安装,完成同盘多Windows安装源的U盘制作以及Linux启动安装等 ...
- Linux断点方法,一种基于Linux问题断点的定位方法及系统与流程
本发明属于Linux断点解决技术领域,涉及一种基于Linux问题断点的定位方法及系统. 背景技术: 在Linux的日常测试过程中,经常会遇见一些未知的原因下系统启动过程中突然出现的宕机,黑屏等现象.导 ...
- gtp6 linux 启动_Win10更新后导致双系统(LinuxWindows)开机引导失败出现grub rescue的修复办法...
Windows10更新有一定几率会破坏grub,找不到grub引导文件,所以我们要让它找到引导文件. 当屏幕上提示:grub resume> 时. 1.set命令查看当前grub引导指向哪个盘. ...
- nasm实现的用vmware运行自做的linux启动盘的引导代码
这个小的代码的编写和运行还是能让自己对系统启动有一个更深的认识,不过有个不懂的就是怎么用ISO镜像文件启动,怎么将引导代码写入ISO镜像文件,依然没有找到很好的方法解决 当计算机电源被打开后,它会先进 ...
- img文件制作linux启动u盘,如何在Linux系统中制作可启动img/iso镜像文件
img/iso文件是镜像文件,在Linux系统操作中有时需要制作镜像文件,那么制作镜像文件的方法有哪些呢?下面小编就给大家介绍下如何下Linux下制作可启动img/iso文件. 制作镜像文件有三种方法 ...
- 记录linux启动次数的脚本,类UNIX系统中启动脚本记录
#程序运行时进程名称(唯一) EXE_NAME="" #此语句表示先杀掉存在的进程 for PID in `ps -ef | grep -v grep | grep Java | ...
最新文章
- [BUUCTF-pwn]——wdb_2018_2nd_easyfmt
- IntelliJ IDEA导入一个已经存在的子模块
- 整合Struts2、Spring、Hibernate构建J2EE应用
- listen(int fd, int backlog)中的backlog含义
- java常用算法分析和实现 amp,Java常用算法实现
- 有权限的网页能分享内页?_有哪些舍不得分享的办公软件?
- 【BZOJ1096】仓库建设,斜率优化DP练习
- 从零开始,DIY一个jQuery(2)
- HubbleDotNet 基本语法
- spinlock变量没有初始化
- SQL Server2005彻底卸载
- Ubuntu16.04安装PostgreSQL并使用pgadmin3管理数据库_图文详解
- 在Linux上安装和配置CSF防火墙
- 六大危害不容忽视 笔记本外接显示器杂谈
- c语言编译作用,叙述 C语言编译
- Commonsense and Named Entity Aware Knowledge Grounded Dialogue Generation
- 从军事走向民用,惯导定位能否破解室内导航难题?
- list of freely available programming books
- Blink SQL DDL语句概述
- python dataload
热门文章
- Yuchuan_Linux_C编程之二 GCC编译
- springboot_通过Actuator了解应用程序运行时的内部状况
- 值类型与引用类型数据运算
- 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
- 2016-02-24 获取设备 通知开关
- [ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠
- AppLoader发布
- 黑客SQL服务器入侵实战演习
- “先粗后精”的实例分割,BPR:使用Crop-then-Refine的性能提高方法
- 中科院副研究员高林:面向可视媒体分析与合成的深度几何学习方法分享