关于对双系统启动的设置的理解:
开机,进入BIOS之后设置磁盘的启动顺序,就可以登录不同的操作系统。
原因理解如下:
1、BIOS:被刷入ROM中的开机程序,Basic Input/Output System。是一组固化到计算机系统主板上的一段程序,里面保存着计算机最重要的基本输入输出程序、系统基本设置。主要功能就是在计算机启动时进行硬件检测,在计算机启动初期尚未加载操作系统时控制计算机。
在BIOS中的地址,有许多都是固定物理地址,任何BIOS的执行都是一样的。
执行 BIOS 中的硬件系统检测和初始化程序。
- 硬件系统检测:检查 RAM,键盘,显示器,软硬磁盘(如果硬件坏了,可能需要重新更换硬件)
- 初始化程序:在内存物理地址 0 处建立 BIOS 所支持的中断向量,即将 BIOS 提供的中断例程的入口地址登记在中断向量表中。
BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性。在自检完成之后,BIOS 将会调用 int 19h 进行操作系统的引导。int 19h 将要完成的内容是:将磁盘 0 面 0 磁道 1 扇区的内容读取到内存 0x7c00 处。
init 19h 会根据BIOS中设置的设置启动顺序来读取设备信息,将第一启动顺序设备上的MBR内容读取到0X7c00处,
2、MBR: 执行MBR
MBR : 是计算机开机以后访问硬盘时所必须要读取的第一个扇区,位于硬盘的第0柱面第0磁道第一扇区,大小为512字节。主引导记录(MBR,Master Boot Record)。MBR 存放分区表信息,告诉计算机操作系统所在的位置。
MBR 分为:
1、BootLoader 占用446字节,存储有操作系统相关信息如操作系统名称、内核位置等,目的是加载内核到内存中运行。
2、分区表(Partition Table)占用64字节,每个主分区占用16字节,所以最多能够有4个主分区。
3、分区表有效性标记(结束标记)占用2字节,固定为55AA
在加载MBR之后会运行Bootloader,其作用:
1、初始化硬件设备
2、建立内存空间的映射图,为最终调用操作系统内核做好一切准备。linux使用内存映射的方式管理。Boot Loader有Grub、Lilo和spfdisk等常见的Loader。
3、加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作系统,将解压后的内核放置在内存之中,至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
4、运行:
第一个程序: /sbin/init
/sbin/init 首先读取/etc/inittab文件,并依据此文件来进行初始化工作,运行开机启动程序。
/etc/inittab文件最主要的作用就是设定Linux的运行等级。
设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。
每个运行级别在/etc/目录下面,都有一个对应的子目录/etc/rc?.d,指定要加载的程序。
ubuntu 没有inittab,运行等级可以在 /etc/init/rc-sysinit.conf 中设置和查看,也可以手动创建inittab 文件
以下为转载内容
5、 执行 rc.sysinit
设定运行等级后执行的第一个用户层文件
该脚本做的工作:
1. 设定 PATH
2.设定网络配置(/etc/sysconfig/network)
3.启动swap分区
4.设定/proc等等。
6. 执行启动内核模块
具体是依据 /etc/modules.conf文件 或 /etc/modules.d 目录下的文件来装载内核模块。
7. 执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行rc0.d ~ rc6.d中相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
8. 执行/etc/rc.d/rc.local
rc.local 是所有init初始化脚本执行完后,用户可以个性化设置的地方,你可以把你想设置和启动的东西放到这里。
9. 执行/bin/login程序,进入登录状态 等待用户输入username和password