位置:海鸟网 > IT > linux/Unix >

Linux操作系统之奥秘笔记(前两章BIOS和开机管理程序)

作者:caoleili_2013

Linux操作系统之奥秘笔记(前两章BIOS和开机管理程序)
 
 
 
第一章 Bios
 
启动电源--Initial北桥--将程序装入内存--读南桥COMS data--建立SMBIOS--POST
 
北桥控制CPU、内存
 
南桥控制所有外设
 
BIOS(Basic Input Output System)的主要作用:
 
自动检测并进行初始化; 
 
记录系统设置值(如onboard显卡内存大小);
 
中断处理;
 
加载操作系统。
 
Power on阶段:
 
·Port 80信息
 
·哗哗的警报声
 
·POST(Power On Self Test)硬件检查
 
CPU:列出CPU的基本信息,如速度、Cache大小。
 
RAM:检查内存大小,以及有无损坏
 
HDD:以排线所接的顺序依次列出。
 
CDROM:和硬盘一样顺序依次列出
 
BIOS选项设置:
 
·快速开机:可跳过某些POST阶段的测试
 
·开机顺序:HDD、CD/DVD ROM,USB或网卡开机
 
·BIOS密码
 
·Onboard VGA内存大小:其RAM占物理内存,可调
 
 硬盘的主导扇区:(MBR)--硬盘的第零轨,其中开机管理程序可以将指针带到系统核心的地方,512字节
 
                     Bootloader               Partition table                  Magic  Number
 
                       446字节                     64字节                         2 字节
 
Bootloader(存储开机管理程序):加载扇区、指向kernel
 
·加载扇区
 
boot sector(扇区引导):每个分区的第一个扇区(512字节)
 
··第一个开机画面Bootload提供,第二个界面/选项由Partition中的文件或boot sector所提供的。
 
·加载kernel
 
Partion table(存储硬盘分区表)
 
Magic Number (55AA),使bootloader管理程序辨认出MBR
 
·Linux得到内存大小直接硬件参考,不经BIOS。
 
 
 
主引导分区程序:
 
可以利用bios的驱动,软中断形式提供
 
 
 
第二章 开机管理程序
 
GRUB(GRand Unified Bootloader):(GRUB是一种bootloader)
 
stage1(MBR中bootloader的备份文件)
 
        ·  基本的硬件初始化,包括屏蔽所有的中断、设置 CPU 的速度和时钟频率、RAM 初始
 
            化、初始化 LED、关闭 CPU 内部指令和数据 cache 灯。 
 
        ·  为加载 stage2 准备 RAM 空间,通常为了获得更快的执行速度, 通常把 stage2 加载到
 
            RAM 空间中来执行, 因此必须为加载 Bootloader 的 stage2 准备好一段可用的 RAM 空间范围。  
 
        ·  拷贝 stage2 到 RAM 中,在这里要确定两点:①stage2 的可执行映像在固态存储设备
 
            的存放起始地址和终止地址;②RAM 空间的起始地址。 
 
        ·  设置堆栈指针 sp,这是为执行 stage2 的 C 语言代码做好准备。 
 
e2fs_stage_1_5(加载后可访问文件系统目录):硬盘紧接着的32k
 
   stage2(操作系统加载、新增参数、修改选项):提供选项、访问设置文件、连接下一个boot sector。grub.conf
 
· 由于 stage2 的代码通常用 C 语言来实现, 目的是实现更复杂的功能和取得更好的代码可
 
   读性和可移植性。但是与普通 C 语言应用程序不同的是,在编译和链接 Bootloader 这样的程
 
   序时,不能使用 glibc 库中的任何支持函数。 
 
· 初始化本阶段要使用到的硬件设备,包括初始化串口、初始化计时器等。在初始化这
 
    些设备之前、可以输出一些打印信息。 
 
· 检测系统的内存映射,所谓内存映射就是指在整个 4GB 物理地址空间中有指出哪些
 
   地址范围被分配用来寻址系统的 RAM 单元。 
 
·  加载内核映像和根文件系统映像, 这里包括规划内存占用的布局和从 Flash 上拷贝
 
    数据。 
 
·  设置内核的启动参数。
 
多个操作系统:stage1+stage2得到操作系统kernel的存放位置
 
grub.conf 结构:
 
A 批注区
 
B 开机设置:
 
    hiddenmenu(注释掉,开机倒数);
 
    Default = 0;
 
    Timeout = 5(-1不倒数);
 
    splashimage =(hd0.0)/boot/grub/splashxpm.gz(开机背景图片)
 
    password(grub-md5-crypt 设定密码)
 
C 开机选项
 
    ·title(操作系统名称 ,可设置)
 
    ·root 系统使用Kernel及intrd文件存在哪一块硬盘 。hd(0.0)第1块硬盘的第一个分区
 
    ·kernel(加载kernel的位置)
 
    ·intrd(加载intrd的位置)
 
stage2找kernel(Bios实体位置,hd(0.0) )
 
kernel找根文件系统(Linux文件系统格式/dev/sda1)
 
多重开机管理
 
·GRUB操作方式:
 
    直接加载
 
    连接加载:直接指向boot sector
 
        **Windows + Linux先装Windows(Windows开机强迫写入MBR及第1分区boot sector,Windows启动修改boot.ini)
 
·重新安装操作系统:替换MBR的bootloader