18
Cài đặt HĐH Linux trên cùng máy tính với Windows
2.3
Phân vùng trên đĩa và quá trình khởi động
2.3.1
Thế nào là cấu trúc “hình học của đĩa”
Như bạn đọc biết, đĩa cứng gồm vài đĩa có phủ lớp từ tính, nằm trên cùng một
trục và quay với vận tốc lớn. Đọc/Ghi dữ liệu được thực hiện bởi các đầu đọc nằm
giữa các đĩa này, di chuyển từ tâm đĩa ra rìa ngoài của đĩa. Vòng tròn đầu đọc vẽ
ra trên các đĩa khi quay quanh chúng gọi là rãnh (track), còn tập hợp các rãnh
nằm chồng lên nhau gọi là cylinder. Mỗi rãnh lại chia thành các sector, và có
thể ghi vào mỗi sector 512 byte thông tin. Vì thế đặc điểm của một ổ đĩa thường
là tập hợp ba sô: số cylinder/số rãnh trong cylinder/số sector trên rãnh hay còn
viết tắt là
C/H/S (ba chữ cái đầu tiên của các thuật ngữ Tiếng Anh tương ứng:
Cyliner/Head/Sector). Ba số này gọi là cấu trúc
“hình học của đĩa”. Đĩa với cấu
trúc hình học C/H/S có dung lượng C*H*S*512 byte.
Đĩa cứng là các thiết bị khối, tứ là đọc và ghi thông tin theo các khối, và kích
thước nhỏ nhất của khối bằng một sector (512 byte). Để có thể ghi thông tin lên
đĩa, cần đặt đầu đĩa đúng vị trí, tức là chỉ cho controller biết cần ghi thông tin
này vào sector nào. Sector được đánh địa chỉ theo số thứ tự cylinder, số thứ tự
đầu đọc (hay rãnh) và số thứ tự sector trên rãnh.
2.3.2
Phân vùng và bảng phân vùng của đĩa
Trong các hệ thống Intel ổ đĩa thường được chia thành các phân vùng. Rất có thể
nguyên nhân của việc phân vùng là nguyên nhân lịch sử: các phiên bản MS-DOS
đầu tiên không thể sử dụng được các đĩa lớn, mà dung lượng đĩa lại phát triển
nhanh hơn khả năng của DOS. Khi đó đã nghĩ ra việc chia ổ đĩa thành các phân
vùng. Để làm được điều này, trong sector số 0 của đĩa (sector số 0 của rãnh đầu
tiên trong cylinder số 0) ghi nhớ
bảng chia ổ đĩa thành các phân vùng (partition
table). Mỗi phân vùng được dùng như một đĩa vật lý riêng rẽ. Một trường hợp nói
riêng đó là trong các phân vùng khác nhau có thể cài đặt các hệ điều hành khác
nhau.
Bảng phân vùng chứa 4 bản ghi 16 byte cho 4 phân vùng chính. Mỗi bản ghi
có cấu trúc như sau:
struct partition {
char active;
/* 0x80: phân vùng kích hoạt, 0: không kích hoạt */
char begin[3];
/* CHS sector đầu tiên, 24 bit
char type;
/* loại phân vùng (ví dụ, 83 -- LINUX_NATIVE) */
char end[3];
/* CHS sector cuối cùng, 24 bit */
int start;
/* số của sector đầu tiên (32-bit, tính từ 0) */
int length;
/* số sector có trong phân vùng (32 bit) */
};
Bảng phân vùng đĩa thường được tạo bởi chương trình fdisk. Trên HĐH
Linux ngoài chương trình fdisk “truyền thống” (tuy vậy rất khác so với chương
trình fdisk trong MS-DOS và Windows), còn có hai chương trình để làm việc với
phân vùng đĩa: cfdisk và sfdisk. Chương trình cfdisk, giống như fdisk chỉ
dành để làm việc với bảng phân vùng đĩa: nó không quan tâm chú ý đến thông
tin có trên đĩa. Chỉ khác biệt với fdisk ở giao diện thuận tiện: chỉ dẫn sử dụng