磁盘分区
磁盘分区的前提是磁盘初始化,然后才是磁盘分区,最后是格式化.
磁盘初始化
格式化的话分为MBR和GPT
关于硬盘 : 硬盘内部硬件结构和工作原理详解
一个新的磁盘只是一个含有磁性记录材料(物理材料)的空白盘。
磁盘从上往下分 磁面 磁道 扇区
读写的时候读写同一个柱面的所有磁道.(先读写磁道(电子切换),然后再切换同一柱面的下一个磁道(机械切换),然后继续读写).
在磁盘能存储数据之前,它必须分成扇区以便磁盘控制器能进行读和写操作,这个过程称为低级格式化(物理分区)。
低级格式化为磁盘的每个扇区釆用特别的数据结构。
每个扇区的数据结构通常由头、数据区域(通常为512B大小)和尾部组成。
头部和尾部包含了一些磁盘控制器所使用的信息。
就这样,磁盘分成了N个扇区.
在扇区中(这里讲的是MBR初始化)
硬盘主引导扇区 = 硬盘主引导记录(MBR)+ 硬盘分区表(DPT),一共是512个字节,其中MBR是446,分区表一共64字节,然后是2个字节的结束标志。引导扇区存储在硬盘的0磁面0道1扇区,也就是Boot Sector(启动扇区)。
MBR用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。
MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的.
MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性
但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统
关于磁盘主引导记录 : 硬盘主引导扇区、分区表和分区引导扇区
- 硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节
主引导代码实现下列功能:
1.扫描分区表查找活动分区;
2.寻找活动分区的起始扇区;
3.将活动分区的引导扇区读到内存;
4.执行引导扇区的运行代码。
- 硬盘分区表DPT是从偏移01BEH开始到偏移01FDH结束的64字节
硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。
其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。
分区表的每一小部分(分区)的第1个字节是自举标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导。
- 主引导扇区的最后两个字节(偏移1FEH和偏移1FFH),其值为AA55H,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。
分区及格式化
在windows
为了使用磁盘存储文件,操作系统还需要将自己的数据结构记录在磁盘上:
第一步将磁盘分为由一个或多个柱面组成的分区(即我们熟悉的C盘、D盘等形式的分区);分区以盘符的形式存在
分区是将一个或多个柱面分成一部分,叫做一个分区
第二步对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上,这些数据结构包括空闲和已分配的空间以及一个初始为空的目录。
在linux中
为了使用磁盘存储文件,操作系统还需要将自己的数据结构记录在磁盘上:
第一步将磁盘分为由一个或多个柱面组成的分区;分区以文件的形式存在
分区是将一个或多个柱面分成一部分,叫做一个分区
http://blog.csdn.net/lovingprince/article/details/6118117
常见的硬盘一般分为三类。IDE硬盘,SCSI硬盘和SATA硬盘
对于IDE ,分为hda1 had2 hda3 hda4 hda5 ...
对于其他 ,分为sda1 ...
第二步对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上,这些数据结构包括空闲和已分配的空间以及一个初始为空的目录。
分区及格式化详解
1/为什么要分区?
2/什么是分区?
分区是将一个或多个柱面分成一部分,叫做一个分区
其中有主分区
其中有扩展分区,一个扩展分区会占用一个主分区的位置,其实扩展分区并不以文件形式存在
其中有逻辑分区,逻辑分区必须以扩展分区为基础,以文件形式存在
扩展分区并不是一个真实存在的分区,它只是内存管理链表中的一个指针,指示出那一块区域是扩展分区。上面也提到出现扩展分区的原因。所以一个扩展分区也是一个主分区。而通过在扩展分区中在划分逻辑分区对系统分区进行扩展。实际上所有的逻辑分区都是在一个分区类,只是逻辑上分开,这也是叫逻辑分区的原因。但对用户来说一切都是透明了,我们看起来系统中有很多分区。
在扩展分区里,逻辑分区的元数据被存储在一个链表结构中。如果一个环节丢失,该元数据之后的逻辑分区全部丢失。
3/可以分多少?
最多支持4个主分区
Linux最多支持63个IDE分区和15个SCSI分区???不是无数个么?
由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据。所以为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念)。
如果你有三个主分区加一个扩展分区以及除此之外的空闲空间,在空闲空间之上你无法创立分区。
4/什么是格式化?
写入文件,就是格式化
包括向分区引导扇区DBR中写入BootLoader
可以向主分区或者逻辑分区中写入文件.
找主分区的时候,MBR直接通过查找活动分区找到
找逻辑分区的时候,MBR先找到扩展分区,然后再找到逻辑分区.
系统启动流程
http://blog.csdn.net/langeldep/article/details/8788119
1/BIOS(在ROM中)
2/MBR(在初始化的磁盘中,主引导扇区)
3/BootLoader(在分区中,分区引导扇区)
4/内核镜像(在分区中,/boot目录)
1/电源键按下
2/BIOS启动,此时BIOS控制
3/BIOS将MBR载入内存并运行,此时MBR控制
4/MBR查找分区表,并将活动分区中的BootLoader载入内存并运行,此时BootLoader控制
5/BootLoader将内核载入内存并运行,此时内核控制
计算机主板的BIOS程序在自检通过后,会将MBR扇区整个读取到内存中,然后将执行权交给内存中MBR扇区的引导程序。引导程序首先会将自己整个搬到一个较为安全的地址中,目的是防止自己被随后读入的其它程序覆盖,因为引导程序一旦被破坏,就会引起计算机死机,从而无法正常引导系统。
系统下一步就会判断读入内存的MBR扇区的最后两个字节是否为“55AA”,如果不是则报错,在屏幕上会列出错误信息。如果是“55AA”,接下来引导程序会到4个分区表中查找是否有活动分区,如果有则判断活动分区的引导扇区在磁盘中的地址,并将该引导扇区(一般为活动分区的第一个扇区)读入内存及判断其合法性,如果是一个合法的引导扇区,随后的引导权就交给这个引导扇区去运行.该引导扇区中程序一般为(LILO,GRUB,NT Loader),这个时候启动的启动就交给了操作系统的引导程序来控制了。然后操作系统进行一系列的初始化,最后把系统交给系统内核进行管理。
概念详解
BIOS
当电脑的电源打开,BIOS就会由主板上的闪存(flash memory)运行,并将芯片组和存储器子系统初始化。BIOS会把自己从闪存中,解压缩到系统的主存;并且从那边开始运行。PC的BIOS代码也包含诊断功能,以保证某些重要硬件组件,像是键盘、磁盘设备、输出输入端口等等,可以正常运作且正确地初始化。几乎所有的BIOS都可以选择性地运行CMOS存储器的设置程序;也就是保存BIOS会访问的用户自定义设置数据(时间、日期、硬盘细节,等等)。IBM技术参考手册中曾经包含早期PC和AT BIOS的80x86源代码。
现代的BIOS可以让用户选择由哪个设备引导电脑,如光盘驱动器、硬盘、软盘、USB U盘等等。这项功能对于安装操作系统、以LiveCD引导电脑、以及改变电脑找寻开机媒体的顺序特别有用。
有些BIOS系统允许用户可以选择要加载哪个操作系统(例如从第二颗硬盘加载其他操作系统),虽然这项功能通常是由第二阶段的开机管理程序(boot loader)来处理。
MBR
位于引导扇区存储在硬盘的0头0道1扇区,也就是Boot Sector.
硬盘主引导扇区 = 硬盘主引导记录(MBR)+ 硬盘分区表(DPT),一共是512个字节,其中MBR是446,分区表一共64字节,然后是2个字节的结束标志,这个标识也被陈恒为启动标示(Boot Signature),永远都是55和AA
我们的电脑磁盘出厂经 过初始化后,要想使用,就要对其进行分区,由于受MBR分区表的限制,最多分成4个主分区,如果想要更多的分区,那么可以分成3个主分区和1个扩展分区,其中的扩展分区进而分成多个逻辑分区。
硬盘主引导记录(MBR):(引导不同的操作系统;不同操作系统,引导代码是不一样的)
BootLoader
用BootLoader看来引导用户选择哪个系统?可是BootLoader是和linux一起烧写进去的啊?
在/boot目录
首先区分一下“Bootloader”和“Monitor”的概念。严格来说,“Bootloader”只是引导设备并且执行主程序的固件;而“Monitor”还提供了更多的命令行接口,进行调试、读写内存、烧写Flash、配置环境变量等。“Monitor”在嵌入式系统开发过程中提供很好的调试功能,开发完成以后,就完全设置成了一个“Bootloader”。所以,习惯上把它们统称为Bootloader。
Bootloader | Monitor | 描述 | X86 | ARM | PowerPC |
---|---|---|---|---|---|
LILO | 否 | Linux磁盘引导程序 | 是 | 否 | 否 |
GRUB | 否 | GNU的LILO替代程序 | 是 | 否 | 否 |
Loadlin | 否 | 从DOS引导Linux | 是 | 否 | 否 |
ROLO | 否 | 从ROM引导Linux而不需要BIOS | 是 | 否 | 否 |
Etherboot | 否 | 通过以太网卡启动Linux系统的固件 | 是 | 否 | 否 |
LinuxBIOS | 否 | 完全替代BIOS的Linux引导程序 | 是 | 否 | 否 |
BLOB | 否 | LART等硬件平台的引导程序 | 否 | 是 | 否 |
Vivi | 是 | 主要为S3C2410等三星处理器引导Linux | 否 | 是 | 否 |
U-Boot | 是 | 通用引导程序 | 是 | 是 | 是 |
RedBoot | 是 | 基于eCos的引导程序 | 是 | 是 | 是 |
内核镜像
在/boot目录