2012年3月25日 星期日

Simple OS for Hard Disk

Linux原本就可寫入MBR,只要:

$ sudo umount /dev/sdc
$ sudo dd if=FreeBSD-8.2-RELEASE-i386-memstick.img of=/dev/sdc bs=64k
Mac稍微麻煩一點,因為磁碟工具程式似乎不支援不認得的File System:
要知道mount到哪兒,可以在Terminal(終端機)看

$ sudo mount
若己經有檔案系統,可先別急著在Finder上按退出,因為會連device都退出 (這裏假設是 /dev/disk1)
$ sudo diskutil umount /dev/disk1
或是
$ sudo diskutil umount [你USB碟的Label名稱]
接下來
$ sudo dd if=FreeBSD-8.2-RELEASE-i386-memstick.img of=/dev/disk1 bs=64k

Windows可以利用 Image Writer for Windows

接下來看MBR
MBR 磁區大致上分為 3 個區域
----------------------------  <-- 位移值 00H (0 Bytes)
|                          |
|                          |
| Boot Partition Loader    |
| 這一小段程式用來將可啟動 |
| 的作業系統分割區戴入     |
|                          |
|                          |
|                     -----|  <-- 位移值 1BEh (446 Bytes)
|---------------------|    |
| Partition Table          |
| 硬碟分割表          -----|
|                     |55AA|
----------------------------  <-- 位移值 200H (512 Bytes)
1. 第一個區域是程式區,稱為 Boot Partition Loader, 也有人稱為 Pre-Loader 或 Pre-Boot。這一段小程式用來將可啟動的作業系統分割區戴入 (應該說戴入可啟動作業系統分割區的啟動磁區 Boot Sector),並將控制權交給啟動磁區。其範圍從 000h 到 1BDh,共 446 Bytes。

2. 第二個區域是資料區,即硬碟分割表所在區域。其範圍從 1BEh 到 1FDh,共 64 Bytes。
這 64 Bytes 又劃分成四個區域,代表 4 個硬碟分割表

位移值 01BE ~ 01CD <-- 第一分割表
位移值 01CE ~ 01DD <-- 第二分割表
位移值 01DE ~ 01ED <-- 第三分割表
位移值 01EE ~ 01FD <-- 第四分割表

硬碟分割表的格式:
每個分表佔 16 Bytes, 其意義如下:

----------------------------------------------------------------------------
|位移值|大小 | 說明                                                        |
+------+-------------------------------------------------------------------+
|  00  |Byte | BOOT ID - 若為可開機的分割區則為 80h ~ FFh, 否則為 00h。    |
|      |     | 80h = C, 81h = D, 82h = E ... 以此類推                      |
|      |     | 以 fdisk 來說,若第一顆硬碟的分割區設為 Active 則 ID = 80h。 |
|      |     | 4 個分割表中, 只能有一個被設為可開機, 否則將會發生錯誤。    |
+------+-----+-------------------------------------------------------------+
|  01h |Byte | 此分割開始之磁頭編號                                        |
+------+-----+-------------------------------------------------------------+
|  02h |Byte | 此分割開始之磁區編號 (6 bits)                               |
|      |     | 最高的 2 個 bits(bit6-7), 為磁柱編號的 bit8-9             |
+------+-----+-------------------------------------------------------------+
|  03h |Byte | 此分割開始之磁柱編號 (10 bits)                              |
|      |     | bit8-9 放在位移值 02h 的 bit 6-7                            |
+------+-----+-------------------------------------------------------------+
|  04h |Byte | 作業系統識別碼                                              |
|      |     |   00 None                                                   |
|      |     |   01 DOS FAT-12 bits                                        |
|      |     |   02 XENIX root                                             |
|      |     |   03 XENIX usr                                              |
|      |     |   04 DOS FAT-16 bits < 32M                                  |
|      |     |   05 Extended                                               |
|      |     |   06 DOS FAT-16 bits > 32M                                  |
|      |     |   07 HPFS/NTFS                                              |
|      |     |   08 AIX                                                    |
|      |     |   09 AIX bootable                                           |
|      |     |   0A OS/2 Boot Manager                                      |
|      |     |   0B DOS FAT-32 bits (Int 13h extensions)                    |
|      |     |   0C DOS FAT Cylinder > 1024 (Int 13h extensions)            |
|      |     |   0E DOS FAT System (Int 13h extensions)                     |
|      |     |   0F DOS BigExtended (Int 13h extensions)                    |
|      |     |   20 SPF Boot manager                                       |
|      |     |   40 Venix 80286                                            |
|      |     |   41 PPC PReP Boot                                          |
|      |     |   51 Novell                                                 |
|      |     |   52 Microport                                              |
|      |     |   63 GNU HURD                                               |
|      |     |   64 Novell Netware                                         |
|      |     |   65 Novell Netware                                         |
|      |     |   75 PC/IX                                                  |
|      |     |   80 Old MINIX                                              |
|      |     |   81 Linux/MINIX                                            |
|      |     |   82 Linux swap                                             |
|      |     |   83 Linux native                                           |
|      |     |   85 Linux extended                                         |
|      |     |   93 Amoeba                                                 |
|      |     |   94 Amoeba BBT                                             |
|      |     |   A5 FreeBSD                                                |
|      |     |   A6 Open BSD                                               |
|      |     |   A7 NETSTEP                                                |
|      |     |   A9 NetBSD                                                 |
|      |     |   B7 BSDI fs                                                |
|      |     |   B8 BSDI swap                                              |
|      |     |   C7 Syrinx                                                 |
|      |     |   DB CP/M                                                   |
|      |     |   E1 DOS access                                             |
|      |     |   E3 DOS R/O                                                |
|      |     |   EB BeOS fs                                                |
|      |     |   F2 DOS secondary                                          |
|      |     |   FF BBT                                                    |
+------+-----+-------------------------------------------------------------+
|  05h |Byte | 此分割結束之磁頭編號                                        |
+------+-----+-------------------------------------------------------------+
|  06h |Byte | 此分割結束之磁區編號 (6 bits)                               |
|      |     | 最高的 2 個 bits(bit6-7), 為磁柱編號的 bit8-9             |
+------+-----+-------------------------------------------------------------+
|  07h |Byte | 此分割結束之磁柱編號 (10 bits)                              |
|      |     | bit8-9 放在位移值 06h 的 bit 6-7                            |
+------+-----+-------------------------------------------------------------+
|  08h |DWord| 此分割區前之磁區總數                                        |
+------+-----+-------------------------------------------------------------+
|  12h |DWord| 此分割之磁區總數                                            |
+------+-----+-------------------------------------------------------------+

沒有留言:

張貼留言