Linux系统启动流程
Linux系统从按下开机按钮到等待用户输入用户名、密码,这中间到底发生了什么,本文接下来将要简单讲解一下Linux系统的启动过程。
Linux系统启动流程大致是这样的:
BIOS(Boot Sequence) --> MBR(GRUB,446) --> Kernel --> initrd --> (ROOTFS)/sbin/init(/etc/inittab)
下面详细讲一下其中的每一步。
1. BIOS
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序。 主板在接通电源后,BIOS会第一个获得系统的控制权。BIOS首先会对系统硬件进行检测(POST, Power On Self Test, 上电自检),自检测过程大致为:加电-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-显卡等。如果关键部件有问题,计算机会发出报警声。 自检一切正常后BIOS会调用一些设备自身ROM中的初始化代码,对这些设备进行初始化,比如显卡。这时可以看到一些初始化信息,介绍生产厂商、芯片类型等内容。 最后,BIOS会根据COMS中设置的启动顺序(Boot Sequence),依次尝试启动。当启动设备是硬盘时,BIOS会把系统控制权交给硬盘MBR中的bootloader。 http://baike.baidu.com/link?url=3u5SmrzMeDuUNAo9rqDc4Vxo8mN0n-7OCLMurOs4yxGXL1ffjnIh0BAsyFm5Elai4ijwxk8dQEVKEHhqWtbHoa
2. MBR
MBR是Master Boot Record的简写, 即主引导记录。MBR记录一般在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoader(引导程序),后 4*16 的 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA。 大多数Linux系统使用GRUB作为BootLoader。GRUB可以引导多种操作系统,它可以识别磁盘文件系统的格式,所以只需要内核文件名和内核所在分区就可以加载内核,通过/boot/grub/grub.conf文体来配置这些信息。 GRUB是模块化的,运行时经历如下阶段:
Stage 1 Stage1 的代码保存在MBR中前446字节。 将MBR导出为文件后查看 # dd if=/dev/sda count=1 of=/tmp/MBR 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.000283544 s, 1.8 MB/s # file /tmp/MBR /tmp/MBR: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x8480e, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 1024000 sectors; partition 2: ID=0x8e, starthead 221, startsector 1026048, 82860032 sectors, code offset 0x48
/boot/grub/stage1 是stage 1未作修改的代码备份。 # file /boot/grub/stage1 /boot/grub/stage1: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, GRUB version 0.94, code offset 0x48
Stage 1_5 Stage1_5的代码允许GRUB识别多种类型的文件系统,识别每个文件系统的代码的代码保存在/boot/grub/*stage1_5 的文件中。 # cd /boot/grub # ls *stage1_5 e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 xfs_stage1_5 fat_stage1_5 jfs_stage1_5 ufs2_stage1_5 ffs_stage1_5 minix_stage1_5 vstafs_stage1_5
Stage 2 Stage 2 代码读取/boot/grub/grub.conf文件,决定如何加载内核,Stage2的代码保存在文件/boot/grub/stage2中: # ls -al /boot/grub/stage2 -rw-r--r--. 1 root root 125976 Jun 28 2012 /boot/grub/stage2
3. Kernel
GRUB的最后阶段stage2会根据/boot/grub/grub.conf文件中的配置加载kernel到内存中,并将系统控制权交给kernel。
4. initrd
initrd是"initial RAM disk"的缩写,随kernel一起被GRUB加载进内存,在系统引导过程中挂载的一个临时根文件系统。 Linux内核在设计风格上属于单内核,文件系统、进程管理、内存管理都需要内核来完成,这样势必会造成内核代码非常庞大。为了减少linux内核的大小,Linux系统内核被分成了内核和内核模块,内核会根据平台需要动态加载内核模块,非核心功能通常做成内核模块,比如大多数设备驱动。 这样势必会产生矛盾,比如,如果Linux内核中没有集成识别ext3文件系统的模块,而ext3模块却在ext3文件系统中。这时,Linux内核访问文件系统需要拿到这个模块,而这个模块又在文件系统中。这样就能看出使用initrd的必要了。 在linux 2.5内核开始引入initramfs技术,作用与initrd类似,都是 由内核执行其上的某个程序(initrd是nuxrc, initramfs是/init)。区别是 nuxrc不是以PID=1执行的, 因为 1这个进程ID是给/sbin/init保留的。initrd机制找到真正的根设备后将其设备号写入/proc/sys/kernel/real-root-dev, 然后控制转移到内核由 其装载根文件系统并启动/sbin/init。initramfs机制中/init以PID=1执行,由init装载根文件 系统并用exec转到真正的/sbin/init, 这样简化了启动流程,减少了启动时间。
5.init
/sbin/init进程是Linux启动的第一个进程,PID=1。Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经淡出历史舞台,新系统 UpStart 和 systemd 各有特点。 sysvinit读取的一个主配置文件是/etc/inittab,文件格式参考这里主要定义的设置有: 1. 定义默认启动级别 2. 系统初始化阶段调用rc.sysinit 3. 调用rc脚本,传入运行级别作为参数,启动和关闭对应级别的服务 4. ctrl+alt+del组合按键的动作 5. 6个虚拟终端 7. 运行级别为5时启动窗口显示管理器 而UpStart则仅保留sysvinit的inittab文件中默认启动级别,其它的配置分散到了/etc/init/*.conf多个文件中。
<span style="font-size:14px;">[rising@centos ~]$ ls /etc/init
control-alt-delete.conf prefdm.conf rcS-emergency.conf readahead-disable-services.conf tty.conf
init-system-dbus.conf quit-plymouth.conf rcS-sulogin.conf serial.conf
kexec-disable.conf rc.conf readahead-collector.conf splash-manager.conf
plymouth-shutdown.conf rcS.conf readahead.conf start-ttys.conf</span>
init程序(sysvinit)读取或运行的文件顺序如下: init -> inittab -> rc.sysinit -> rc -> rc.local -> mingetty tty[1-6] -> X11/prefdm
/etc/inittab的任务:
1、设定默认运行级别;
2、运行系统初始化脚本;
3、运行指定运行级别对应的目录下的脚本;
4、设定Ctrl+Alt+Del组合键的操作;
5、定义UPS电源在电源故障/恢复时执行的操作;
6、启动虚拟终端(2345级别);
7、启动图形终端(5级别);
/etc/rc.d/rc.sysinit完成的任务:
1、激活udev和selinux;
2、根据/etc/sysctl.conf文件,来设定内核参数;
3、设定时钟时钟;
4、装载键盘映射;
5、启用交换分区;
6、设置主机名;
7、根文件系统检测,并以读写方式重新挂载;
8、激活RAID和LVM设备;
9、启用磁盘配额;
10、根据/etc/fstab,检查并挂载其它文件系统;
11、清理过期的锁和PID文件;
/etc/rc.d/rc文件中
经验总结:
以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。
本文来自系统大全http://www.win7cn.com/如需转载请注明!推荐:win7纯净版
相关文章
- win11如何添加控制面板?win11控制面板快捷方式添加方法
- win11如何设置绿色护眼模式?win11绿色护眼模式开启教程
- win11开始菜单怎么固定软件?win11开始菜单固定软件设置方法
- win10不显示新安装硬盘怎么办?win10新安装硬盘找不到解决方法
- win10分辨率无法设置怎么办?win10分辨率不能修改解决方法
- win10如何修改开机问候语?win10系统开机问候语更改教程
- win7电脑怎么整理磁盘碎片?win7系统磁盘碎片整理操作方法
- win7系统修改用户名后无法登录账号怎么解决?
- 360浏览器如何开启桌面搜索栏?360浏览器桌面搜索栏启动教程
- Word怎么切换成正常模式?Word兼容模式修改为正常模式教程
系统下载排行榜71011xp
番茄花园 GHOST WIN7 SP1 X64 快速稳定版 V2017.03 (64位
2深度技术 GHOST WIN7 SP1 X64 稳定安全版 V2017.02(64位
3雨林木风 GHOST WIN7 SP1(32位)装机版 V2017.03
4深度技术 GHOST WIN7 SP1 X86 专业装机版 V2017.03(32位
5电脑公司 GHOST WIN7 SP1 X86 经典旗舰版 V2017.03(32位
6深度技术 GHOST WIN7 SP1 X86 稳定安全版 V2017.02
7深度技术 GHOST WIN7 SP1 X64 专业装机版 V2017.03(64位
8电脑公司 GHOST WIN7 SP1 X64 经典旗舰版 V2017.03(64位
9电脑公司 GHOST WIN7 SP1 X64 新春贺岁版 V2017.02(64位
10电脑公司 GHOST WIN7 SP1 X86 新春贺岁版 V2017.02(32位
win10系统下载 Win10 1607 精简安装版 LTSB长期服务版
2Win10专业工作站版最新镜像 V2022.06
3微软原版Win10 ISO镜像64位(win10纯净版)
4深度技术 Ghost Win10 64位 国庆特别版 V2021.10
5电脑公司Ghost Win10 64位装机版V2017.03
6雨晨 Win10 1703 15063.250 64位 极速精简版
7JUJUMAO Win8.1 Up3 X64 极速精简版v2019.11
8win10系统下载 稳安快 Win10 x64 极速精简版 V1.0
9lopatkin Win10专业精简版 V2022.05
10Win10 21H2 纯净版镜像 V2021
Win11PE网络纯净版 V2021
2风林火山 Ghost Win11 64位 专业正式版 V2021.10
3Win11官方纯净版 V2021
4Win11 23H2 25115 官方原版镜像 V2022.05
5新一代系统 JUJUMAO Win11专业版 64位 v2021.08
6雨林木风 Ghost Win11 64位 正式版 V2021.10
7微软MSDN原版Win11系统 V2021
8Win11 22000.282正式版镜像 V2021.10
9深度技术 Ghost Win11 64位 专业版 V2021.10
10微软Win11游戏系统 V2021.10
深度技术 GHOST XP SP3 电脑专用版 V2017.03
2深度技术 GGHOST XP SP3 电脑专用版 V2017.02
3Win7系统下载 PCOS技术Ghost WinXP SP3 2017 夏季装机版
4萝卜家园 GHOST XP SP3 万能装机版 V2017.03
5番茄花园 GHOST XP SP3 极速体验版 V2017.03
6雨林木风 GHOST XP SP3 官方旗舰版 V2017.03
7电脑公司 GHOST XP SP3 经典旗舰版 V2017.03
8雨林木风GHOST XP SP3完美纯净版【V201710】已激活
9萝卜家园 GHOST XP SP3 完美装机版 V2016.10
10雨林木风 GHOST XP SP3 精英装机版 V2017.04
热门教程
装机必备 更多+
重装工具