Page 217 - Hướng Dẫn Cách Phòng Thủ Và Khắc Phục Sự Cố Máy Tính
P. 217

một lúc đưỢc patch thành 36 -  36 là số sector trong một track
    của ô đĩa 2.88M, set cao như vậy nhưng tuy loại ổ đĩa giá trị
    thực tế sẽ khác; trích từ chú thích của người lập trình “high
    doesn’t hurt but low does”.
         4.  Tính toán số sector trên  một track.  Hồi xa xưa đây
    là  phần  nhức  đầu  với  các  bác  viết  bootvirus.  Gần  như
    không có cách chính xác cái này với cái xác định FAT12 và
    FAT16.  Tuy  nhiên  cách  giải  quyết  của  mấy  tay  Linux
    programmer này cũng hay. Lần lựa đọc các sector cao nhất
    của  ổ  đĩa.  36  là  2.88M.  18  là  1.44M  thường  dùng.  15  là
     1.2M đĩa to như bánh tráng và 9 là 760K cũng to như vậy
    như chỉ có một mặt thôi.  Có điều nếu đĩa  1.44M bị lỗi  tại
    sector 18, chẳng lẽ Linux lại hiểu nó là 1.2M sao :).
         Lúc này Linux sẽ in dòng chữ : “Loading” lên màn hình.

         5.  Chương trình Setup của Linux nằm ở các sector tiếp
    theo  bootsector  sẽ  được  tải  lên  ngay  sau  bootsector:
    0x90200.  Sô" sector cho phần Setup mặc định là 4. Mỗi lần
    đọc một track nó in dấu chấm ra màn hình.
         6.  Tiếp  theo  chương  trình  System  ở  dạng  nén
    (compressed  kernel  image)  sẽ  được  tải  ở  vị  trí  0x10000  -
    chừa  64K  low  memory.  Kích  thước  mặc  định  là  0x7F00
    tính theo đơn vị  16-bytes = 508K. Linux còn có che độ big-
    kernel  khi  này  kernel  image  sẽ  vượt  quá bộ  nhớ  quy  ước
    640K.  Khi  đó  trong  code  của  phần  Setup  có  hàm
    bootsect_kludge nằm tại offset 0x220 chịu trácn nhiệm tải
    kernel vào bộ nhớ cao.
         7.  Kết  thúc  quá  trình  tải  Setup  và  System,  chương
    trình Setup sẽ được thực hiện tại segment 0x9020.
         Mở  file:  arch/i386/boot/setup.S.  Đây  là  source  code
    viết bằng ngôn ngữ assembly cho Linux Setup.
         1.      Phần Setup này có thể được tải hỏi các loader khác
    nhau bootsect.S chỉ  là  loader chuẩn của  Linux  thôi  ngoài


    218
   212   213   214   215   216   217   218   219   220   221   222