标签:default 设置 highlight ase 操作系统 内核 打印机 osi out
引导的主要6个阶段
boot loader
SMPS
(Switching Mode Power Supply)即开关变换器,即服务器电源,当电压检查没问题后,SMPS会发送POWER GOOD信号给主板计数器。一旦主板收到该信号则会停止向CPU发送reset
信号。CPU就开始工作了。然后ROM上有个代码固定跳转到启动区。
POST
(Power-On Self-Test)对硬件进行自检,确保所有硬件工作正常。按F12
或F2
进入BIOS设置。主要检测如下硬件:
而完整自检则还会检测如下信息:
- 主板
- 键盘
- 打印机口
- 硬盘灯
冷重启和热重启区别:
当进行热重启时,将会跳过完整自检,冷重启会执行完整检测
CMOS
里接收存储的时间、日期和一些重要系统信息。BIOS
检查都是好的后开始在MBR
上搜寻可用的操作系统启动字段初始化代码主要从BIOS中加载,一旦BIOS确定从哪些设备上引导系统,它就会加载设备上开头512字节的数据段,即MBR。MBR里有个程序会告诉计算机从哪个分区加载第二阶段的引导程序。
在BIOS执行可用的MBR后,MBR开始查找可用的主分区(primary parition)并标记为可启动项,一般是/dev/hda或sda等
MBR找到可用主分区后开始执行该分区的第一个512字节,即第二级MBR,在LINUX上这个第二级MBR主要指LILO
或GRUB
。MBR只要有3部分
由于分区表只有64bytes,而每个分区大小为16bytes,因此我们最多创建4个主分区(primary partition)。且扩展分区(extended)分区最多有一个。因此要么4个全是主分区,要么(1,2,3)个主分区+一个扩展分区。
因为其太大,512字节无法装下,因此LILO分成了两部分:installer
和runtime
模块,
LILO不关心文件系统和boot镜像,所以会原生态的加载他们。
/boot/grub/grub.conf
,而/etc/grub.conf
文件做了个链接到改配置文件。#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.el5PAE.img
内核在grub配置文件中用root=
标识的。
一旦GRUB或LILO移交控制权给内核后,内核将会执行下列任务:
initrd
模块。(Initrd ramdisk或者initrd是指一个临时文件系统,它在启动阶段被Linux内核调用。initrd主要用于当“根”文件系统被挂载之前,进行准备工作。包含一些编译后的驱动),类似WIN PE系统,比如大白菜装机initrd
提供。一般文件名为initramfs
。/boot
目录下存放内核和initrd文件grub默认从
/boot/grub/menu.lst
或/boot/grub/grub.conf
中读取配置,引导时修改grub、内核的配置不保留,而修改grub.conf
文件则会保留
内核执行步骤:
1. 配置硬件和内存
2. 解压initrd
镜像并挂载和加载必须的驱动
3. 利用insmod和rmmod等加载内核模块
4. 查找硬盘如LVM或raid
5. 卸载initrd
镜像并释放内存
6. 内核通过只读方式读取grub.conf
文件来挂载指定的root parition
7. 运行init
程序
/sbin/init
中查找init
并执行.init
进程。init
会开始读取/etc/inittab
文件并开始设置路径、swap、检查文件系统等。/etc/inittab
文件中的运行级别并启动系统。inittab一般按照如下顺序执行:
- 1. 根据/etc/sysconfig/network
判断系统是否网络启动
- 2. 挂载/proc
并判断驱动程序状态
- 3. 设置系统时间
- 4. 启用虚拟内存,激活和挂载swap分区,/etc/fstab
- 5. 设置主机名和认证信息、网络服务
- 6. 判断根系统并挂载
- 7. 根据/etc/fstab信息挂载文件系统
- 8. 挂载一些可插拔设备和声卡等设备
- 9. 判断磁盘信息和raid信息
- 10. 挂载所有特定分区/etc/fstab
- 11. 执行其他系统任务
init
进程号始终为1.
ps aux
命令中可以看到一些用[]
的进程,这些都是内核进程
而[watchdog/2]
进程后面有数字的标识在哪个处理器上运行。
脚本一般保存在/etc/init.d
下,运行级别在/etc/inittab
文件中定义
drwxr-xr-x 2 root root 4096 Apr 20 2018 init.d
drwxr-xr-x 2 root root 4096 Apr 19 2018 rc0.d
drwxr-xr-x 2 root root 4096 Apr 19 2018 rc1.d
drwxr-xr-x 2 root root 4096 Apr 19 2018 rc2.d
drwxr-xr-x 2 root root 4096 Apr 19 2018 rc3.d
drwxr-xr-x 2 root root 4096 Apr 19 2018 rc4.d
drwxr-xr-x 2 root root 4096 Apr 19 2018 rc5.d
drwxr-xr-x 2 root root 4096 Apr 19 2018 rc6.d
-rwxr-xr-x 1 root root 619 Apr 21 2018 rc.local
rclevel.d
表示不同的运行级别所读取的脚本。而里面的脚本启动和关闭顺序不同
lrwxrwxrwx 1 root root 20 Apr 25 13:06 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx 1 root root 17 Apr 25 13:06 S10network -> ../init.d/network
init从低级别向高级别过渡时,按照递增的顺序start所有带S
开头的脚本,而从高级别向低级别过渡时,则按照数字递减的顺序stop所有带K
的脚本
引导过程中大部分配置文件是调整/etc/sysconfig/
文件来实现。常用的有
shutdown -h = halt
shutdown -r = reboot
标签:default 设置 highlight ase 操作系统 内核 打印机 osi out
原文地址:https://www.cnblogs.com/hbgzy/p/10270578.html