Linux【NO.7】:系统启动流程

推荐连接:

必备知识点



Linux系统的组成部分

动态视角:内核+根文件系统
功能组成结构视角:硬件、内核(管理整个硬件功能)、库(库调用:libcall)、程序(特别的接口程序shell)

内核:进程管理、内存管理、网络协议栈、文件系统、驱动程序、安全功能
    IPC:Inter Process Communication进程通信

运行中的系统环境可分为两层

  • 用户空间:应用程序(进程或线程)
  • 内核空间:内核代码(系统调用)

内核设计流派

  • 单内核设计:把所有功能集成于同一个程序;Linux
  • 微内核设计:每种功能使用一个单独的子系统实现;Windows,Solaris

Linux内核特点

  • 支撑模块化:内核文件:.ko(kernel object)
  • 支持模块运行时动态装载或卸载;
站在编译好的视角看,其组成部分:
    核心文件:/boot/vmlinuz-VERSION-release
    模块文件:/lib/modules/VSERSION-release
        如果有内核有多个版本,则其下有多个目录

ramdisk:
用于实现系统初始化的基于内存的磁盘设备ramdisk

ramdisk:
用于实现系统初始化的基于内存的磁盘设备ramdisk
    为什么需要:操作系统启动时,需要把ramdisk装载到内存中,而后根把它当作一个磁盘来使用,从而识别成根文件系统,其lib/modules目录下有当前真正的根设备的驱动程序,借助于ramdisk从而把真正的根挂载上,挂载上之后ramdisk把所有权利交给真正的根;
        ramdisk非必须的:取决于系统从何而来,内核是如何制作的,是为了面对多种需求还是只是当前需求的;
CentOS 5 : /boot/initrd-VERSION-release.img #基于ram的磁盘; 磁盘印象文件
CentOS 6,7 : /boot/initramfs-VERSION-release.img #基于ram的文件系统
    内存的数据本来就应该在内存中,磁盘上的设备虽然有buffer和cache,但太慢了,所以要把磁盘中很多数据临时加载到内存中供访问;
    但本来基于内存的磁盘设备ramdisk就是内存,就没有必须要再缓存一次,
        为了避免双缓冲双缓存的:从而使得其到达提速的目的;

ramdisk

演示:
[[email protected] ~]# uname  -r
3.10.0-229.el7.x86_64

[[email protected] ~]# ls /boot/ #内核文件
config-3.10.0-229.el7.x86_64
grub
grub2
initramfs-0-rescue-0e6e23af771842c8bf3aeb3ae70b2a33.img
initramfs-3.10.0-229.el7.x86_64.img          #ramdisk临时根
initramfs-3.10.0-229.el7.x86_64kdump.img
initrd-plymouth.img
symvers-3.10.0-229.el7.x86_64.gz
System.map-3.10.0-229.el7.x86_64
vmlinuz-0-rescue-0e6e23af771842c8bf3aeb3ae70b2a33
vmlinuz-3.10.0-229.el7.x86_64  #核心文件

[[email protected] ~]# ls /lib/modules  #模块文件在/lib/modules下
3.10.0-229.el7.x86_64
[[email protected] ~]# ls /lib/modules/3.10.0-229.el7.x86_64/kernel/
arch  crypto  drivers  fs  kernel  lib  mm  net  sound
arch       与平台相关的特有代码
crypto     加密解密组件
drivers    驱动
fs         文件系统
kernel     内核追踪用到的组件
lib
mm         内存管理功能
net        网络功能
sound      跟声音相关的驱动程序、解码器等

[[email protected] ~]# ls /lib/modules/3.10.0-229.el7.x86_64/kernel/kernel/ 内核追踪用到的组件
trace
[[email protected] ~]# ls /lib/modules/3.10.0-229.el7.x86_64/kernel/fs/ 文件系统
binfmt_misc.ko  ceph    dlm    fat      gfs2   lockd       nfs_common  overlayfs  udf
btrfs           cifs    exofs  fscache  isofs  mbcache.ko  nfsd        pstore     xfs
cachefiles      cramfs  ext4   fuse     jbd2   nfs         nls         squashfs

演示:内核文件、模块文件

系统启动流程



上图先:

以下只适合PC机的MBR架构的设计

(1)、POST(Power On Self Test)开机加电自检

通电后,自动查看硬件设备在不在

实现POST代码在主板的ROM上;如果没有外部辅助手段框定,ROM上的代码是没法修改的;

  ROM : CMOS

  CMOS中有BIOS : Basic Input and Output System基本输入输出系统

可被CPU加载的:ROM+RAM

(2)、Boot Sequence : 引导过程

转载请注明出处:http://www.cnblogs.com/jasperhsu/p/5095141.html

时间: 2024-10-06 09:37:32

Linux【NO.7】:系统启动流程的相关文章

Linux 内核及系统启动流程

kernel的功能: 进程管理 文件系统 硬件驱动 内存管理 安全功能:SELinux 网络子系统 标准库:glibc 调用:返回 利用别的组件的功能,完成某特定事务 返回值 内核设计流派: 单内核体系: Linux 支持模块化 模块还可以动态装载或卸载 Linux内核:核心 + 外围模块 核心:/boot/vmlinux-VERSION-release 模块:/lib/modules/VERSION-release .ko: kernel object ramdisk: /boot/initr

Python学习之路——Linux基础之系统启动流程

系统启动流程 整体过程:BIOS → MRB → Kernel → init 1.BIOS决定从哪个盘开始读操作系统 主引导记录MBR:共512bytes:前446代表引导信息,中64代表分区信息,后2代表标志位 主引导记录加载boot loader,常见的bootloader有GRUB,GRUB用来控制加载哪个操作系统内核 init 切换系统启动级别 1)init 0 重启 2)init 5 切换到图形界面 3)init 3 命令行界面 在加载系统时按任意键进入识别Kernel步骤,按e修改,

Linux双核SMP系统启动流程(Zynq-ARM-CortexA9)

转载:http://blog.chinaunix.net/uid-20648445-id-3329217.html 1:资料附录:    <ug585-Zynq-7000-TRM.pdf>                            xilinx zynq 7000技术参考手册    <ug821-zynq-7000-swdev.pdf>                          xilinx zynq 7000软件开发手册    <ug925-zynq-z

Linux学习笔记&mdash;&mdash;系统启动流程

CentOS 启动流程 POST --> Boot Sequence(BIOS) --> Boot Loader (MBR) --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别 --> 系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端 POST 加电自检

Linux系统启动流程

一直以来对于电脑的开机过程概念还停留在按下开机键,然后等待自动开启.但是对于开启的这一过程几乎一无所知,包括它如何能够通电后自己启动包括内部的一系列的过程. 目前也只是对Linux系统的启动流程有了一个浅显的认识,但它启动的过程也想以自己的理解来分享一下. 一般Linux系统的开机过程有这么几个步骤: 按下电源键 BIOS自检 系统引导 Linux内核启动 初始化系统 登录系统 其中每个过程中又可细分为很多的子过程.按下电源键这一步自不必多说,我们从BIOS自检说起. BIOS自检 BIOS自检

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

linux基础学习第十九天-系统启动流程(cenots6)以及配置系统服务(chkconfig)

内容:   CentOS 的启动流程   服务管理(chkconfig)   手动制定系统开机服务脚本 一.centos6系统启动流程 综述过程: POST-->BIOS(Boot Sequence)-->MBR(grub,446)-->Kernel-->initramfs(虚根文件)-->(ROOTFS)/sbin/init(/etc/inittab) 步骤详解: 1.POST: POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分.负责完

Linux系统启动流程分析

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 一 系统上电和启动ROM NOR Flash作为启动ROM的系统启动过程 NOR Flash开头处存放启动代码,程序从NOR Flash開始处启动. 配置EMI寄存器,设置好各存储器的地址和存取规则. 配置电源管理模块.各模块上电. 启动代码将位于NOR Flash中的正式运

Linux系统启动流程与内管管理(上)

在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理.内存管理.网络管理.驱动程序.文件系统.安全管理等 rootfs:程序和glibc 库:函数结合,function,调用接口(头文件负责传输) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派 单内核:把所有功能集成与一个程序 如: