LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: goodjob66

问一个 dd 命令的问题?谢谢!

[复制链接]
发表于 2010-2-10 17:19:08 | 显示全部楼层
dd if=/dev/hda of=/tmp/xxx.mbr bs=512 count=1
这个出来的叫 mbr
dd if=/dev/hda1 of=/tmp/xxx.boot bs=512 count=1
这个出来的交 hda1 上的boot
一个是主引导记录 一个是分区的启动扇区

通常 MBR 管理所有分区的,boot 通常只做启动本分区的事。
不过用grub lilo booter 这样的引导程序就不知道怎么区分的

通常自检完成后都找 mbr , 标准的 mbr 去搜索有 80标志的启动分区。这个 一定事主分区, 扩展分区 mbr 不管。 如果有多个80启动标志就宣布启动错误不启动

正常加载 80 标志指示的分区 boot 扇区内容,然后权限交割给boot

我通常不怎么动 mbr 它常被 我的 bios 保护着。

hda1 上有我的 win 和 win booter
hda5 上有 lilo ,安装在 hda5 boot 区域
习惯用 grub for dos , 由 hda1 中的 windows 引导 进grub for dos .
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-12 12:32:05 | 显示全部楼层
谢谢木人的详细回答

还有一个概念不是很清楚
在Windows下用WinHex(Linux下有没类似的软件?) 查看Sda的是后 发现前面4k没有放数据,里面是MBR+备用的MBR吗

还有在sda1~sda3这些分区里呀有4k的区域,这都能用来启动吗
(我说的是除了第一个512)
比如说sda1没有启动标识的   假如把sda的前512字节写到sda1的前512字节能启动的话  那我写在第二个512上能否启动
回复 支持 反对

使用道具 举报

发表于 2010-2-14 17:50:14 | 显示全部楼层
Post by goodjob66;2069545
谢谢木人的详细回答

还有一个概念不是很清楚
在Windows下用WinHex(Linux下有没类似的软件?) 查看Sda的是后 发现前面4k没有放数据,里面是MBR+备用的MBR吗

还有在sda1~sda3这些分区里呀有4k的区域,这都能用来启动吗
(我说的是除了第一个512)
比如说sda1没有启动标识的   假如把sda的前512字节写到sda1的前512字节能启动的话  那我写在第二个512上能否启动

第一个扇区(一个扇区512字节)是MBR,和其后的2到63扇区组成了第一个磁道(63扇区是一个磁道)。由于磁盘分割的时候不能跨磁道进行,所以第一个分区实际上是从第二个磁道(绝对位置第64个扇区开始的)。第一个磁道中一般来说有用的实际上只有第一个扇区(即MBR),但有的操作系统分区时也会在第一个扇区之后的扇区写入一些东西,有的不会。所以有的磁盘第一磁道除了第一扇区外都是由0填充的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-14 18:58:14 | 显示全部楼层
Post by liwangli;2069922
第一个扇区(一个扇区512字节)是MBR,和其后的2到63扇区组成了第一个磁道(63扇区是一个磁道)。由于磁盘分割的时候不能跨磁道进行,所以第一个分区实际上是从第二个磁道(绝对位置第64个扇区开始的)。第一个磁道中一般来说有用的实际上只有第一个扇区(即MBR),但有的操作系统分区时也会在第一个扇区之后的扇区写入一些东西,有的不会。所以有的磁盘第一磁道除了第一扇区外都是由0填充的。


谢谢 liwangli 的回答   让我一下子明白了MBR这一概念   
照这么说  每个分区都应该有类似与MBR这个区域(好像叫PBR)用来启动系统的吧  像Windows就不是写在MBR里  是写到C盘这个分区的前面部分(不知道多少字节)
问题
每个分区的前面启动部分有多大呢 ,也是一个磁道(63个扇区吗)
如果我把MBR的前的446字节复制到分区前的446字节是不是可以在这个分区启动了呢   我想   一个分区的启动部分应该不包含64字节的分区表了吧
回复 支持 反对

使用道具 举报

发表于 2010-2-14 19:43:03 | 显示全部楼层
MBR中的引导程序(446字节)总是最先运行的,然后查找引导标志为80H的分区,然后运行那个分区里的引导程序(一般是引导操作系统了)

每个分区最前面的启动部分,不同的文件系统预留是不一样的
EXT系列一般是保留1个Block
FAT、NTFS一般只用第一个扇区(也可能是一个簇)
其它文件系统不太清楚
回复 支持 反对

使用道具 举报

发表于 2010-2-24 09:14:28 | 显示全部楼层
Post by goodjob66;2069929
谢谢 liwangli 的回答   让我一下子明白了MBR这一概念   
照这么说  每个分区都应该有类似与MBR这个区域(好像叫PBR)用来启动系统的吧  像Windows就不是写在MBR里  是写到C盘这个分区的前面部分(不知道多少字节)
问题
每个分区的前面启动部分有多大呢 ,也是一个磁道(63个扇区吗)
如果我把MBR的前的446字节复制到分区前的446字节是不是可以在这个分区启动了呢   我想   一个分区的启动部分应该不包含64字节的分区表了吧

一般主分区没有类似MBR这样的东西。主分区的第一个扇区一般是启动扇区,内容和MBR不一样。但逻辑分区的起始的第一个磁道的第一个扇区有些类似MBR,不过其前446字节为空,分区表处的64个字节(第个分区表项占16个字节)也只用了两项(最后一个扩展分区只用了一项),第一个指向本扩展分区的起始扇区位置(就是相对于其所在扇区偏移一个磁道的位置),第二个指向下一个逻辑分区的和起始的和这个类似MBR的扇区类似的扇区的位置。所以说最后一个逻辑扇区的第二项是空的,只有第一项指向本区。
回复 支持 反对

使用道具 举报

发表于 2010-2-25 15:26:27 | 显示全部楼层
重新表述一次
硬盘头一个读写扇区,也叫绝对一扇区。chs表示就是0头0道1扇区是硬盘的主引导扇区 硬盘引导系统的时候。 bios完成系统自检后一般吧这个扇区内容加载到0000:7c00地址并把入口转向这里。这个时候系统是实模式下的。

一个扇区是512字节, 其中前446字节叫主引导记录。标准的主引导记录会查看接下来的64字节内容并判断最后两个是不是55AA,64字节分4段每段16字节记录一个分区信息。 具体格式可找具体资料。
最早的方式都是按照 chs 格式来读取。这些分的都是主分区类型。 其中16字节中有一个是启动标志字节, 当有且只有一个引导标志为80h的时候。那么主引导记录就认为他被标识成活动分区。然后按照这条记录去查找分区的头一个读写位置。
每条分区信息里都记录有分区的开始位置,结束位置,占用分区大小等信息。

每个分区都有一个一个分区类型标识。 每个分区的头一个扇区叫boot。记录有引导信息,这个不是绝对的,不过大多安装操作系统的分区会同时把启动操作系统的引导代码写在这个boot区上。

一般分区时按照柱面,也叫磁道。一个分区通常是0道1头1扇区,这个扇区就是boot
。之前从0道0头1扇区一直到0道0头63扇区,都是保留的,分区不包含这些东西, 操作系统所在的介质也不包含他们。需要专门的工具维护这部分区域。
除了0道0头1扇区是mbr,其他部分是保留,通常为0.
一些引导多系统启动管理程序会占用这部分区域来存放分区管理程序。
还有一些老的主板bios不支持大硬盘。 一些大硬盘管理程序也会在这部分区域存放管理程序,并接管磁盘中断。来管理大硬盘。
一些启动型病毒会占用这部分区域,用以病毒在最开始启动系统的时候最先获得管理权。然后把真正的0道0头1扇区搬迁到其他地方。达到伪装的目的。
还有一些如还原类软件为了能让软件在系统最开始启动的时候发挥作用会占用这部分。这些软件要想发挥作用,必须先占据mbr的控制权才行。所以关键的还是mbr。

然后是每个分区都有boot扇区。
就在每个分区的头一个扇区中。至于有没有保留扇区。不同的文件系统是不一样的。
fat似乎最少要用以个保留扇区。

grub , lilo, windows booter 这些都是启动管理类。
grub 和lilo可以指定安装在 mbr或者boot。
windows booter 总是安装在windows安装的分区上。并且windows安装的时候会把mbr还原成默认的。把booter的启动部分写进windows分区的boot区里。
回复 支持 反对

使用道具 举报

发表于 2010-2-25 15:59:47 | 显示全部楼层
感谢楼上,学习了。
回复 支持 反对

使用道具 举报

发表于 2010-3-30 18:09:06 | 显示全部楼层
chainloader +1 的意思是chainloader 0+1,即从(hd0)或(hd0,x)的0号(第一个)扇区开始读,长度为1。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表