Linux系统启动的大致过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统启动的大致过程相关的知识,希望对你有一定的参考价值。
参考技术ALinux系统启动的大致过程
Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日。下面我准备了关于Linux系统启动的大致过程,提供给大家参考!
第一阶段:BIOS启动引导阶段;
在该过程中实现硬件的.初始化以及查找启动介质;
从MBR中装载启动引导管理器(GRUB)并运行该启动引导管理
第二阶段:GRUB启动引导阶段;
装载stage1
装载stage1.5
装载stage2
读取/boot/grub.conf文件并显示启动菜单;
装载所选的kernel和initrd文件到内存中
第三阶段:内核阶段:
运行内核启动参数;
解压initrd文件并挂载initd文件系统,装载必须的驱动;
挂载根文件系统
第四阶段:Sys V init初始化阶段:
启动/sbin/init程序;
运行rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统;
读取/etc/inittab文件,运行在/et/rc.d/rc<#>.d中定义的不同运行级别的服务初始化脚本;
打开字符终端1-6号控制台/打开图形显示管理的7号控制台
同时在上述过程中各阶段所需要读取的文件和操作的对象:
Bios启动引导阶段 GRUB启动引导阶段 内核阶段 /init/sysinit阶段
====================================================================================
None /boot/grub/grub.conf /boot/vmlinuz- /etc/rc.d/rc.sysinit
/boot/grub/stage1_5 /boot/initrd- /etc/inittab
/boot/grub/stage2 /etc/rc.d/rc<#>.d
/etc/rc.d/init.d/*
;Linux系统启动流程
1. BIOS
2. 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
- # file /boot/grub/stage1
- /boot/grub/stage1: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3,
- GRUB version 0.94, code offset 0x48
- # 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
- # ls -al /boot/grub/stage2
- -rw-r--r--. 1 root root 125976 Jun 28 2012 /boot/grub/stage2
3. Kernel
4. initrd
5.init
- [[email protected] ~]$ 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
init程序(sysvinit)读取或运行的文件顺序如下:
1、设定默认运行级别;
2、运行系统初始化脚本;
3、运行指定运行级别对应的目录下的脚本;
4、设定Ctrl+Alt+Del组合键的操作;
5、定义UPS电源在电源故障/恢复时执行的操作;
6、启动虚拟终端(2345级别);
7、启动图形终端(5级别);
1、激活udev和selinux;
2、根据/etc/sysctl.conf文件,来设定内核参数;
3、设定时钟时钟;
4、装载键盘映射;
5、启用交换分区;
6、设置主机名;
7、根文件系统检测,并以读写方式重新挂载;
8、激活RAID和LVM设备;
9、启用磁盘配额;
10、根据/etc/fstab,检查并挂载其它文件系统;
11、清理过期的锁和PID文件;
有如下的shell代码,负责运行指定运行级别对应的目录下的脚本,接受一个参数作为运行级别
$I stop
done
for I in /etc/rc$1.d/S*; do
$I start
done
关闭或启动的优先次序,数据越小越优先被选定
先关闭以K开头的服务,后启动以S开头的服务;
系统最后执行的一个脚本。一般被链接为S99local,被/etc/rc.d/rc脚步执行。
以上是关于Linux系统启动的大致过程的主要内容,如果未能解决你的问题,请参考以下文章