Chinaunix首页 | 论坛 | 博客
  • 博客访问: 622266
  • 博文数量: 168
  • 博客积分: 1053
  • 博客等级: 少尉
  • 技术积分: 1187
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-30 17:20
个人简介

公众号【嵌入式er笔记】持续记录和分享C/C++、Linux、ARM、Android、IoT等技术相关知识,以及职场、生活经验和感悟。

文章分类

全部博文(168)

分类: LINUX

2013-03-21 19:29:37

第一章 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 

 


阅读(1417) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~