亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 922 | 回復(fù): 0
打印 上一主題 下一主題

[轉(zhuǎn)] 教你認(rèn)識(shí)分區(qū)表 [復(fù)制鏈接]

論壇徽章:
1
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-03-11 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-02-18 18:03 |只看該作者 |倒序?yàn)g覽
[轉(zhuǎn)] 教你認(rèn)識(shí)分區(qū)表
當(dāng)你看到下面的fdisk 輸出信息,你能想到什么呢?
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000080
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        5099    40957686    7  HPFS/NTFS
/dev/sda2            5100       11473    51199155    f  W95 Ext'd (LBA)
/dev/sda3           11474       12542     8586742+  83  Linux
/dev/sda4           12543       14593    16474657+  83  Linux
/dev/sda5            5100       10198    40957686    7  HPFS/NTFS
/dev/sda6           10199       11473    10241406    b  W95 FAT32
沒錯(cuò),它們表示的是硬盤的各個(gè)分區(qū)的起始柱面,結(jié)束柱面,分區(qū)大小,分區(qū)類型以及分區(qū)是否可以引導(dǎo)。
柱面信息是近似的。真正精確表示分區(qū)起始,終止位置的是硬盤的扇區(qū)位置。比如:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000080
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63    81915434    40957686    7  HPFS/NTFS
/dev/sda2        81915435   184313744    51199155    f  W95 Ext'd (LBA)
/dev/sda3       184313745   201487229     8586742+  83  Linux
/dev/sda4       201487230   234436544    16474657+  83  Linux
/dev/sda5        81915498   163830869    40957686    7  HPFS/NTFS
/dev/sda6       163830933   184313744    10241406    b  W95 FAT32
這些扇區(qū)的位置精確表示了各個(gè)分區(qū)的信息。有個(gè)這個(gè)信息,以后即使不小心刪除了分區(qū),我們還是可以用上面的信息來還原所有硬盤分區(qū)。
要了解整個(gè)過程,我們必須了解分區(qū)表信息在硬盤扇區(qū)上是如何存放的。
OK,接下來,我們?cè)贚inux下面做一個(gè)小小的試驗(yàn)。
一:搭建一個(gè)分析硬盤分區(qū)表的環(huán)境。
1:建立一個(gè)虛擬的硬盤。
不得不承認(rèn),Linux是個(gè)好東西。虛擬硬盤是如此的簡單。
   user@pclinux: dd if=/dev/null of=diskb seek=2097152 count=0 bs=1024
或者,頭個(gè)懶,用qemu-img,怎么也可以少敲幾個(gè)字母,:)。
   user@pclinux: qemu-img create diskb 2G
到目前為止,diskb還只是一個(gè)文件。我們可以利用loop設(shè)備,將它模擬成一個(gè)硬盤。
   user@pclinux: sudo losetup /dev/loop0 diskb
好了,現(xiàn)在loop0就是diskb對(duì)應(yīng)的硬盤了。
2:開始分區(qū)。
我把整個(gè)diskb成一個(gè)FAT32主分區(qū),一個(gè)擴(kuò)展分區(qū)。在擴(kuò)展分區(qū)里邊建立一個(gè)FAT32的邏輯分區(qū)。分區(qū)表如下:
Disk /dev/loop0: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0xe89bd33e
      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1              63      417689      208813+   c  W95 FAT32 (LBA)
/dev/loop0p2          417690     4192964     1887637+   5  Extended
/dev/loop0p5          417753      835379      208813+   c  W95 FAT32 (LBA)
主分區(qū)和邏輯分區(qū)都不能引導(dǎo)。
3:用hexedit/dd等工具來分析分區(qū)表。
硬盤的訪問模式有兩種,一種叫CHS方式,一種是LBA方式。CHS方式比較古老。它是沿襲硬盤的物理方式來訪問硬盤的。也就是說,如果要訪問硬盤的某個(gè)邏輯扇區(qū),它要先確定這個(gè)扇區(qū)所在的柱面(Cylinder),然后,在這個(gè)柱面上確定該扇區(qū)所在的磁頭(Header),最后,在該磁頭上,確定這個(gè)邏輯扇區(qū)。CHS方式訪問大容量硬盤。大容量的硬盤都是按照LBA方式訪問的。LBA將整個(gè)硬盤看成一串扇區(qū)數(shù)組。其中0號(hào)扇區(qū)著MBR和硬盤的主分區(qū)表。
我們先把0號(hào)扇區(qū)搞下來:
user@pclinux: sudo dd if=/dev/loop0 of=boot0.bin bs=512 count=1
user@pclinux: hexedit -s boot0.bin
00000000   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000010   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000090   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001B0   00 00 00 00 00 00 00 00  3E D3 9B E8 00 00 00 01  ........>.......
000001C0   01 00 0C FE 3F 19 3F 00  00 00 5B 5F 06 00 00 00  ....?.?...[_....
000001D0   01 1A 05 FE 7F 04 9A 5F  06 00 2B 9B 39 00 00 00  ......._..+.9...
000001E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 AA  ..............U.
由于這個(gè)diskb并沒有主引導(dǎo)程序,所以從0字節(jié)開始,所有引導(dǎo)代碼為零。主分區(qū)表信息從偏移0x1be開始,一直最后倒數(shù)第三個(gè)字節(jié)結(jié)束(64字節(jié)) 。最后的55AA是標(biāo)志位。
這64個(gè)字節(jié)分成4部分,每個(gè)16字節(jié)。描述了整個(gè)硬盤的主分區(qū)和整個(gè)擴(kuò)展分區(qū)的信息。從這里我們可以看到,硬盤只能有4個(gè)主分區(qū)。這16個(gè)字節(jié)的含義如下:
字節(jié)           含義                             值
00          分區(qū)是否可引導(dǎo)。                    0,不可引導(dǎo)。80,可引導(dǎo)
01-03     分區(qū)開始的CHS值(Head,Sector,Cylinder,Sector的高 位是Cylinder的第9,10位)   
04          分區(qū)類型                            7,NTFS,C, FAT32,5,F 擴(kuò)展分區(qū)等等
05-07     分區(qū)結(jié)束的CHS值(Head,Sector,Cylinder,Sector的高 位是Cylinder的第9,10位)   
08-11       LBA方式下,相對(duì)的起始扇區(qū)號(hào)
                在MBR分區(qū)里邊,相對(duì)0扇區(qū),
                 擴(kuò)展分區(qū)表示相對(duì)于擴(kuò)展分區(qū)的起
                 始扇區(qū)(little endion 格式)
12-15      該分區(qū)擁有的扇區(qū)數(shù)量 (little endion)
OK,回到我們的diskb,我們可以從這張分區(qū)表看到,diskb的第一個(gè)分區(qū)是類型C(FAT32)的主分區(qū)。它從硬盤的63個(gè)扇區(qū)開始(3f 00 00 00),一共有0x065f5b個(gè)扇區(qū),本分區(qū)不可引導(dǎo)(00)。Diskb的第二個(gè)扇區(qū)是一個(gè)擴(kuò)展分區(qū),起始地址是0x065f9a,共有扇區(qū)0x399b2b個(gè)。
據(jù)我分析,CHS的值和LBA表示的邏輯扇區(qū)是可以相互轉(zhuǎn)換的。大概是:
CHS==>LBA
Value of Cylinder *每柱的磁道數(shù)*每磁道的扇區(qū)數(shù)+ Value of Header * 每磁道扇區(qū)數(shù) + Value of Sector = 結(jié)束扇區(qū)LBA 扇區(qū)值+1。
驗(yàn)證一下:
上面的FAT32分區(qū)結(jié)束CHS值為:0x19 0xFE 0x3F,那么,該分區(qū)結(jié)束扇區(qū)的LBA值應(yīng)該是:
0x19*255*63+0xFE*63+0x3F-1 = 417689
上面的分區(qū)告訴我們,這個(gè)分區(qū)占有0x00065f5b個(gè)扇區(qū),那么它的結(jié)束LBA值應(yīng)該是:0x00065f5b+63-1
=417689
結(jié)果正確。(柱面和磁道編號(hào)是從零開始,而扇區(qū)是從1開始的。)
那么反過來,如果知道LBA值是不是也可以推算CHS值?
試一下:
Value of Cyliner = ( Value of LBA+1)/每柱磁道數(shù)/每磁道扇區(qū)數(shù). 如果整除,柱面數(shù)減1。
Value of Header = ( Value of LBA+1 – Value of Cylinder * 每柱磁道數(shù)字 * 每磁道扇區(qū)數(shù) ) / 磁道扇區(qū)數(shù),如果整除,磁頭數(shù)減1。
Value of Sector 依次類推。
(417689+1)/255/63 = 0x1A ,整除,減1,變成0x19.
(417689 +1 – 0x19*255*63)/63=0xFF,整除,減1,變成0xFE
(417689 +1 – 0x19*255*63 – 0xfe*63)=0x3F
Very Good,結(jié)果正是我們想的。
接著看下面的分區(qū)表,MBR所在的分區(qū)告訴我們,下一個(gè)分區(qū)是擴(kuò)展分區(qū),它的LBA起始地址是417690,也就是上面的0x065f9a。我們把它dump出來看看
user@pclinux : sudo dd if=/dev/loop0 of=ext_fat skip=417690 bs=512 count=1
驗(yàn)證一下:
user@pclinux: hexedit -s ext_fat
00000000   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000010   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000090   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000000F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 01  ................
000001C0   01 1A 0C FE 3F 33 3F 00  00 00 5B 5F 06 00 00 00  ....?3?...[_....
000001D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 AA  ..............U.
這個(gè)擴(kuò)展分區(qū)里邊只有一個(gè)為C(FAT32)的邏輯分區(qū),邏輯分區(qū)的起始地址在:417690+63處。
一共有扇區(qū)0x065f5b個(gè)。
Ok,到此,硬盤的兩個(gè)分區(qū)表就已經(jīng)搞清楚了。
如果分區(qū)表不小心丟失,想恢復(fù)的話,那就簡單了。將這兩個(gè)分區(qū)表復(fù)制到相應(yīng)的位置就可以了。
簡單的看一個(gè)復(fù)雜一點(diǎn)的例子:
Disk /dev/loop0: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders, total 12582912 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x1009e660
      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1              63     1606499      803218+  83  Linux
/dev/loop0p2         1606500    12578894     5486197+   5  Extended
/dev/loop0p5         1606563     3212999      803218+  83  Linux
/dev/loop0p6         3213063     4819499      803218+  83  Linux
/dev/loop0p7         4819563     6425999      803218+  83  Linux
/dev/loop0p8         6426063    11245499     2409718+  83  Linux
/dev/loop0p9        11245563    12578894      666666   83  Linux
上面的硬盤被分成1個(gè)主分區(qū),5個(gè)邏輯分區(qū),從這個(gè)表中,我們就可以看出整個(gè)硬盤所有分區(qū)表的位置了(很明顯,這個(gè)硬盤被完全分區(qū)了,沒有空白區(qū))。
Name                            offset of LBA sector
FAT1                            0
FAT2                            1606500
FAT3                            3213000
FAT4                            4819500
FAT5                            6426000
FAT6                            11245500
6個(gè)扇區(qū)都不可引導(dǎo)。
大家用hexedit來驗(yàn)證。
備份的時(shí)候可以生成一個(gè)自己定義的格式,比較方便的一種為:
aa bb cc dd + FAT Sector
...
其中aa bb cc dd 是FAT Sector的LBA扇區(qū)號(hào)的16進(jìn)制。這樣,恢復(fù)的時(shí)候就非常方便了。
也許有人已經(jīng)看出來了,最簡單的備份/恢復(fù)就是利用fdisk的信息了。從根本上來說知道各個(gè)分區(qū)的大小,起始位置也就完全知道了整個(gè)硬盤的分區(qū)情況了。
如果不小心把所有的分區(qū)表都刪掉了怎么辦?是不是就不能恢復(fù)了呢?
放心,還是可以的。每個(gè)分區(qū)在建立文件系統(tǒng)時(shí),都會(huì)將本分區(qū)的類型,大小等信息放在這個(gè)分區(qū)的頭上。研究這個(gè),我們還是可以確定當(dāng)前這個(gè)分區(qū)在硬盤上的位置。有了這個(gè)位置信息,基本上還是可以大致的恢復(fù)出整個(gè)硬盤的分區(qū)表(有些信息不太能確定,比如說到底是主分區(qū)還是邏輯分區(qū))。如果文件系統(tǒng)的信息也丟失了呢?那就只能碰運(yùn)氣了。運(yùn)氣好的話,你能找到一些系統(tǒng)在隱含扇區(qū)備份的分區(qū)表信息。你可以全盤查找55AA這個(gè)特征值,然后看它像不像分區(qū)表。
最后套用一句口號(hào):”不拋棄,不放棄“。即使軟件提醒你找不到分區(qū)表,別灰心,手工在處理一下。Windows用winhex, Linux用hexedit,也許能找到點(diǎn)希望。


本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/89112/showart_1833042.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP