Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.26 MB, 249 trang )
một phần cho mục đích khác sau này). Hệ điều hành chịu trách nhiệm boot hệ
thống (MS_DOS hoặc windows98) thường được cài đặt trên đĩa C: (trên phân khu
DOS chính).
Quá trình FDISK đĩa chỉ tạo ra các phân khu và các đĩa logic C:, D:, E:, vv,
sau đó người sử dụng phải thực hiện việc định dạng (format) các ổ đĩa này thì mới
có thể sử dụng được. Nên nhớ phải định dạng hệ thống (format /s) cho đĩa C: và
phải cài đặt hệ điều hành boot chíng vào đĩa C:.
Hình sau đây cho thấy một ổ đĩa cứng vật lý được chia thành 2 phân khu và
các đĩa logic được tạo ra trên các phân khu:
C: (10Gb)
D:
4Gb
HD
D
20Gb
Partition
DOS chính
Partition
DOS mở rộng
E:
6Gb
Ổ đĩa
Vật Lý
FDI 2 đĩa logic trên partition mở rộng
SK
Hình 4.8: HDD trước và sau FDISK
Trong số các partition đã tạo phải có 1 (chỉ1) partition được chọn là partition
active (chủ động). Partition Active là partition mà sau này được chọn là partition
boot hệ thống. Partition DOS chính thường được chọn là partition active.
Các partition khác nhau trên đĩa, có các thông tin sau đây khác nhau: Loại
của partition; Partition có phải là Active hay không; Kích thước của partition; Vị trí
bắt đầu và kết thúc của partition; Hệ điều hành được cài đặt trên partition; … Để
lưu trữ thông tin khác nhau của các partition, hệ điều hành DOS dùng một khối dữ
liệu đặc biệt, được gọi là sector phân khu (partition sector), sector này nằm tại
sector vật lý đầu tiên của đĩa cứng (head 0, track 0, sector 1) và nó không thuộc về
bất kỳ một partition nào trên đĩa. Sector này thường được gọi là bảng partition.
Hình vẽ sau đây minh hoạ cho điều này:
Boot sector
0
của FDD
(a)
0
Boot sector
của
Master đĩa C:
Boot sector
của đĩa D:
(b)
Boot
Record
Partition 1
Partition
Hình 4.7: Tổ chức logic của FDD (a) và HDD (b)
Hình trên cũng cho thấy sự tương ứng về mặt về mặt logic giữa một đĩa mềm
(a) với một partition/đĩa logic trên đĩa cứng (b). Điều đầu tiên chúng ta cần ghi
nhận là master boot record (sector phân khu) chỉ có trên đĩa cứng, nó được tạo ra
trong quá trình FDISK đĩa. Thứ hai là: Boot sector của đĩa mềm được định vị tại
sector 0 của đĩa, trong khi đó boot sector của các đĩa logic trên các partition được
định vị tại sector đầu tiên của partition và số hiệu của sector này được tìm thấy
trong các phần tử trong bảng partition của master boot record bởi boot code ở đầu
master boot record. Thứ ba: Master boot record không thuộc bất kỳ một partition
nào và giữa nó và partition đầu tiên là một vùng trống, có thể DOS dự trữ cho các
mục đích khác sau này. Vùng trống này là một kẽ hở của DOS, các đoạn code của
Virus có thể được lưu trữ ở vùng này mà hệ điều hành không thể phát hiện được.
Khi master boot record trên đĩa cứng bị xoá hoặc bị nhiễm virus thì máy tính
không thể khởi động được. Để khôi phục lỗi này ta chỉ có thể thực hiện như sau:
Khởi động máy từ đĩa mềm, trên đĩa mềm có chứa tập tin FDISK.EXE, rồi sau đó
thực hiện lại thao tác FDISK đĩa cứng với tham số MBR (A:\FDISK /MBR).
FDISK /MBR làm mới lại master boot record mà không làm hỏng dữ liệu trên các
đĩa logic.
Sector phân khu bao gồm 3 thành phần: Boot code, bảng partition và chữ
kí hệ điều hành. Hình 4.8 sau đây cho thấy các thành phần trong Sector phân
khu:
•
Boot code: là một đoạn chương trình đặc biệt, được hệ điều
hành ghi vào trong quá trình FDISK đĩa. Đoạn chương trình này có nhiệm vụ kiểm
tra bảng partition để xác định xem trên đĩa có partition active hay không, nếu có thì
đó là partition nào và bắt đầu tại sector nào, rồi sau đó nạp boot sector của đĩa trên
partition active vào RAM và chuyển quyền điều khiển về cho boot sector.
•
Bảng partition (64 byte: bắt đầu từ byte 1BE h): gồm 4
phần tử, đánh số từ 1 đến 4, mỗi phần tử dài 16 byte dùng để lưu thông tin của một
partition. Các thông tin trong một phần tử trong bảng partition cho biết: Phân khu
có phải là active hay không; Vị trí bắt đầu phân khu (head, sector, cylinder); Vị trí
kết thúc phân khu (head, sector, cylinder); Có bao nhiêu sector nằm trong phần
khu; Kích thước của một phân khu tính theo sector; Phân khu được định dạng như
thế nào và được cài đặt hệ điều hành nào?.
0
Master
Boot
Record
0
Boot sector của
partition 1
Unused
Partition 1
1E 1F
E
E (C:)
1
1CE 1DE
B
Boot Par Par Par Par
E
code
1
2
3
4
chữ ký
hệ điều hành
Master Boot Record
Bảng partition có 4
Hình 4.8: Các thành phần trong master boot record
phần tử
Vì bảng partition chỉ có 4 phần tử nên DOS chỉ cho phép tạo ra tối đa là 4
partition. Đây là một hạn chế. Để khắc phục điều này hệ điều hành DOS cho phép
tạo ra nhiều đĩa logic trên một partition mở rộng, tức là có thể tạo ra được nhiều đĩa
logic trên một ổ đĩa cơ sở. Hệ điều hành windowsNT/ 2000 cho phép tạo ra nhiều
hơn 4 partition trên một ổ đĩa và số lượng các phần tử trong bảng partition có thể
thay đổi.
•
Chữ ký hệ điều hành (2 byte: bắt đầu từ byte 1FEh):
thường chứa giá trị 55AAh. Hệ điều hành DOS kiểm tra giá trị tại vùng này để biết
đĩa này có phải được định dạng bởi nó hay không.
Một phần tử trong bảng phân khu chứa các thông tin sau:
Offset
Kíc h th ước
00 h
01 h
02 h
04 h
05 h
06 h
08 h
0C h
N ội dung
0: partition không phải là active
80 h: partition là active
số hiệu head bắt đầu phân khu
sector và cylinde bắt đầu (của boot sector)
mã hệ thống: 0: Non Dos; 1: FAT_12;
4: FAT_16; 5: phân khu Dos mở rộng;
6: phân khu Dos lớn hơn 32 Mb
số hiệu head kết thúc phân khu
sector và cylinde kết thúc
số hiệu sector tương đối bắt đầu
tổng số sector trong phân khu
1 byte
1 byte
2 byte
1 byte
1 byte
2 byte
4 byte
4 byte
Bảng 4.3: Các trường một phần tử bảng partition
Ví dụ 1: Để kiểm tra partition nào là active ta thực hiện như sau:
• Đọc sector đầu tiên của đĩa cứng lưu vào biến masterboot
• Kiểm tra offset 00 của 4 phân tử partition trong bảng partition
Mov
Mov
Locate_active:
Mov
Cmp
Je
Add
Loop
No_active:
.........
Active:
.........
cx, 4
SI, 1BE h
AL, masterboot[SI]
AL, 80h
Active
SI, 16
Locate_active
Ví dụ 2: Để đọc nội dụng boot sector của đĩa cứng C ghi vào biến BootDat
ta phải thực hiện lần lượt các bược sau đây:
• Đọc sector đầu tiên của đĩa cứng lưu vào biến masterboot
• Tìm partition active (phần tử trong bảng partition có offset 00 bằng
80h)
• Đọc buye tại offset 01h và word tại offset 02 của phần tử partition
tương ứng ở trên (head, sector và cylinde), để xác định số hiệu sector
bắt đầu của partition active, đây chính là boot sector của đĩa cứng.
• Đọc nội dung của sector xác định được ở trên lưu vào BootDat.
Active:
Mov
Mov
ax, 0201h
cx, word PTR mastorboot
; đọc 1 sector
[SI+2]
;
sector
&
cylinder
Mov
Mov
Mov
Lea
Int
dh, byte PTR mastorboot[SI+1]
; head
dl, 80h
; đĩa cứng
es,cs
; trỏ ES:BX về
bx, BootDat
; đầu vùng BootDAt lưu
13h
Nếu PC được khởi động bằng đĩa mềm (FDD) khởi động thì sau quá trình