win 7和Ubuntu 12.04 双系统下的磁盘分区问题

断续学Linux以来就一直没完全搞清楚磁盘分区的问题,现在虽然还是不清楚,但应该有点思路了,且记下。

我装了双系统,首先看在win 7下看到的磁盘分区情况:

本来是只有恢复分区,保留分区,以及CDFG盘,中间的几个主分区都是讲未配置的空间在装ubuntu时进行划分的,奇怪的是不应该显示为主分区,关于这点有些常识的人都知道。下面抄录一段:  硬盘的第一个扇区有512字节,其中主要分为两个部分(其实是4个部分,另外两个先可以不管),一个是存放启动引导程序(Master Boot Recorder,MBR)的空间,大约446字节。另一个是存放硬盘分区表(Disk Partition table, DPT)的空间,大约64字节。电脑开机后都要来读取这个扇区,这是启动电脑所必须的。  MBR真是个令人头疼的问题,关键在于使用“MBR”这个词的时候含义不同,我总结了一下有以下几种含义:      1、指主引导程序,如linux下常用的GRUB,lilo等,当然还有win的主引导程序。      2、指硬盘第一扇区中存放主引导程序的446字节的硬盘空间。      3、指硬盘第一扇区,也就是上面说的全部512字节的硬盘空间,包括了存放主引导程序的446字节的空间和存放分区表的64字节空间。 磁盘分区遵从 P+P+P+P  或者P+P+P+E的原则 总之,我们给硬盘分区必须遵守以上的规则,这是通用的,不论是使用windows还是使用linux都必须遵守。总结一下就是:       硬盘的分区种类有三种:主分区、扩展分区和逻辑分区。       主分区和扩展分区的分区记录保存在硬盘的第一扇区内,而这个地方空间有限,最多只能保持4个分区记录。所以我们硬盘的主分区和扩展分区的数量之和不能超过4。       扩展分区不能直接使用,只能在扩展分区中再次划分为逻辑分区后它的硬盘空间才能使用。       逻辑分区是扩展分区的一部分,所有逻辑分区的分区记录保存在扩展分区的头部,而非保存在硬盘的第一扇区内。 这里需要澄清的是每一个分区都有一个引导块(boot block),而MBR每个盘只有一个。MBR是用来加载引导程序的,并不是用来加载操作系统的。当你开机时,BIOS内置的检测程序(已经固化)会进行开机自检并在MBR中(MASTER的MBR)中加载开机引导程序。(这也就不难理解为什么MBR总是在0号磁道,如果MBR老是变更位置,那我岂不是要修改BIOS程序),MBR中的开机引导程序将在你选择操作系统之后将在你安装操作系统的那个主分区将操作系统的某些核心文件加载到内存并创建相应的进程,进行一系列的初始化..... 如前所说,在进行分区时,每个分区就是一个文件系统,而每个文件系统开始位置的那个块就成为引导块。引导块是由 PC标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块。

如硬盘MBR的代号为(hd0),硬盘的第一个分区的引导块代号(也是分区代号)为(hd0,0),硬盘的第一个逻辑分区的引导块为(hd0,4),等会可以结合下面信息来看。

IDE、SATA甚至U盘都可能被Grub识别为hd设备(Linux会区分hd、sd);注意,Grub 2中分区号从1开始,但磁盘号仍然是从0开始的。。在Grub2中,(hd0,0)该表示为(hd0,1)或(hd0,msdos1)这样的。 我们知道,一个硬盘可以有很多分区,但MBR分区表只有四项,怎么能突破这个限制呢?答案是扩展引导记录(EBR - Extended Boot Record),通过把MBR分区表中一项设为扩展分区(系统ID为0x05或0x0F),其分区表项指定扩展分区的起始位置和长度,在扩展分区最开始扇区放置另外一个分区表,一般称为扩展分区表。扩展分区表的第一项指定扩展分区目前的逻辑分区信息,如果还有更多的逻辑分区,扩展分区表的第二项指定下一个EBR的位置,否则为0。通过这种方式,一个硬盘上的分区数目就没有限制了。 现在先来看ubuntu下的情况:

系统没有识别恢复分区,将win 7的盘挂载进来,如下

可以看到保留分区在Linux标识为/dev/sda2,而那个30G的就是C盘啦,标识为/dev/sda3, DFG都算是逻辑分区,D盘为/dev/sda5.那/dev/sda1呢?看下图:

没错,/dev/sda1就是恢复分区啦,/dev/sda5~/dev/sda7为DFG盘,而刚才在上图没有显示的/dev/sda8也出来了,就是虚拟内存区swap.从/dev/sda8~/dev/sda13都是我为ubuntu划分的分区,重点来了,那/dev/sda4是什么呢?其实就是一个扩展分区!!从/dev/sda5~/dev/sda13都是从/dev/sda4中划分出来的逻辑分区!!,有个证据可以证明的是可以看到/dev/sda4的end 数值与/dev/sda13 end的数值是一样的!都是976771071,而start 与/dev/sda5的 start也相差无几。查了下/dev/sda4中system列的意思,如下: It simply states that your 4th partition is an extended partition instead of a primary partition. The partition info in stored in MBR. However, the MBR can only store four partition entries. If you want more than four partitions, you will have to create an extended parition and with in which you can create more. In your case partition 5,6,7,8....

下面再看grub 2启动引导: 因为我是先装的win 7再装ubuntu,可以肯定 的是grub 2 装在了MBR,而grub 2 的配置文件却是在/boot/grub/grub.cfg

cat查看文件,找到比较重要的一些:

首先需要说明的是grub 2(可以安装在MBR或者引导块)引导加载程序可以做到: 1.直接指定并取用核心文件,加载到主存储器中 2.将控制权移交给下一个加载程序 可以看出上图是第二种功能,第一个menu是win 7恢复的引导加载,这个引导程序安装在第一个分区(恢复分区)/dev/sda1的引导块(hd0,0),即

(hd0,msdos1), chainloader +1:Load the boot loader, `+1' indicates that GRUB should read one sector from the start of  the partition;

如果在系统启动时菜单点击此项时将引导进入系统恢复。

第二个menu是win 7启动的引导加载(可以看到前面的图有加 * 号表示bootloader),这个引导程序安装在第二个分区(保留分区)/dev/sda2的引导块

(hd0,1),即(hd0,msdos2),如果在系统启动时菜单点击此项时将引导进入系统启动,即去/dev/sda3(C盘)找到系统内核文件加载到内存启动。

注:windows会默认将引导写入MBR和引导块(在这里是sda2的引导块),而linux可以选择安装在某个地方,因为选择安装在了MBR所以将windows的

覆盖掉,但sda2引导块的windows引导程序还可以看出来,如果先安装Linux再装Windows那将完全被覆盖掉。

而第一种功能如下图:

我们知道启动内核是在/boot下面的,因为我在分区时把/boot独立出来, 所以完整的路径就是 (hd0,msdos10)/vmlinuz-... 或者(/dev/sda10)/vmlinuz-...

如果没有独立出来,则为set root='(hd0,msdos9)'    #如前面,根目录/  为/dev/sda9 完整的路径为 (hd0,msdos9)/boot/vmlinuz-... 或者(/dev/sda9)/boot/vmlinuz-...

备注:

----------------------------------------------------------------------------------------- 系统ID可能的值: 0x01          FAT12主分区或逻辑分区。 0x04          FAT16主分区或逻辑分区。 0x05          扩展分区。 0x06          BIGDOS FAT16主分区或逻辑分区。 0x07          NTFS主分区或逻辑分区。 0x0B          FAT32主分区或逻辑分区。 0x0C          使用扩展中断13的FAT32主分区或逻辑分区。 0x0E          使用扩展中断13的BIGDOS FAT16主分区或逻辑分区。 0x0F          使用扩展中断13的扩展分区。 0x12          EISA分区。 0x42          动态磁盘卷。 0x86          遗留的FT(Fault Tolerant) FAT16。 0x87          遗留的FT NTFS。 0x8B          遗留的FT FAT32。 0x8C          遗留的FT 使用扩展中断13的FAT32。 27 Windows RE hidden partition On MBR disks, type 0x27. On GPT disks, GUID: DE94BBA4-06D1-4D40-A16A-BFD50179D6AC. A hidden version of a Windows RE type 0x7 partition with NTFS. When this is installed, reboot and press F8 in order to boot into this Recovery Environment. 07 HPFS/NTFS/exFAT 07 OS/2 IFS (e.g. HPFS) IFS = Installable File System. The best known example is HPFS. OS/2 will only look at partitions with ID 7 for any installed IFS (that's why the EXT2.IFS packet includes a special "Linux partition filter" device driver to fool OS/2 into thinking Linux partitions have ID 07). (Kai Henningsen (kai@khms.westfalen.de))

07 Windows NT NTFS Filesystem introduced in Windows NT 3.1. It is rumoured that the Windows NT boot partition must be primary, and within the first 2 GB of the disk.

07 exFAT Extended FAT, a.k.a. FAT64. Available in Microsoft Windows since CE 6.0 and Vista SP1. Allows 32 MB clusters and very large disks and files.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏极客猴

Django 实战2:利用 Session 实现自动登录机制

上篇文章中讲到 Django 如何启动以及配置 sessions 功能。sessions 功能用是跟踪用户的状态,经常结合 Cookie 功能实现自动登录功能。...

1153
来自专栏DT乱“码”

ping不可以检查端口是否开放,telnet可以检查端口开放

1650
来自专栏编程坑太多

python使用selenium+chromedriver调用chrome截图

2505
来自专栏乐沙弥的世界

基于CentOS 7配置Nginx正向代理

Nginx是一款以轻量级、低内存开销、支持缓存、支持反向代理,负载均衡,电子邮件服务而著称。对于鲜为人知的是,它还可以作为一个简单易用的正向代理服务器。本文简要...

1325
来自专栏linux运维学习

linux学习第四十一篇:配置防盗链,访问控制Directory,访问控制FilesMatch

配置防盗链 防盗链,就是不让别人盗用你网站上的资源,这个资源,通常指的是图片,视频,歌曲,文档等。不是我们认识的referer一概不许访问。 防盗链的...

2126
来自专栏从零开始学自动化测试

Fiddler抓包9-保存会话(save)

前言 为什么要保存会话呢?举个很简单的场景,你在上海测试某个功能接口的时候,发现了一个BUG,而开发这个接口的开发人员是北京的一家合作公司。你这时候给对方开发提...

3035
来自专栏从零开始学自动化测试

Fiddler抓包8-打断点(bpu)

前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神聊天都靠小纸条。某屌丝A男对隔壁小王的隔壁女神C倾慕已久,于是天天小纸条骚扰,无奈中间隔...

2695
来自专栏张善友的专栏

asp.net安全检测工具 --Padding Oracle 检测

最近的一个asp.net安全缺陷,引起了社区很大的反响,博客园也有一个ASP.NET的Padding Oracle安全漏洞的话题,昨天在博客上贴了一个文章ASP...

1867
来自专栏FreeBuf

ezXSS:一款功能强大的XSS盲测工具

今天给大家介绍的是一款名叫ezXSS的漏洞测试工具,该工具可以轻松地帮助渗透测试人员完成Blind XSS漏洞的扫描任务。

874
来自专栏存储

SMB共享之SCF文件攻击解析

SMB是各类组织中广泛使用的一种文件共享协议,而且在很多内部渗透测试过程中,研究人员可以利用这种协议来发现共享文件中包含的敏感信息(例如明文密码和数据库连接信息...

20810

扫码关注云+社区