Next Previous Contents

5. Penterjemahan Disk oleh Kernel pada disk IDE

Jika kernel Linux mendeteksi adanya disk manager pada suatu disk IDE, Linux akan berusaha melakukan pemetaan ulang (remap) terhadap disk tersebut melalui cara yang telah dilakukan oleh disk manager, misalnya DOS dengan OnTrack atau EZDrive. Namun, pemetaan ulang tidak akan dilakukan jika geometri telah dispesifikasikan melalui baris perintah, sehingga opsi baris perintah seperti "hd = cyls, heads, secs" akan menghapuskan kompatibilitas dengan disk manager.

Pemetaan ulang dilakukan dengan mencoba angka-angka 4, 8, 16, 32, 64, 128, 255 bagi nomor head (dengan membuat bilangan H*C konstan) sampai dipenuhi salah satu, yaitu : C <= 1024 atau H = 255.

Secara terinci akan diberikan di dalam sub-bab berikut. Judul dari sub-bab berikut menunjukan text yang ditampilkan pada pesan saat disk manager bersangkutan di-boot. Di dalam tulisan ini tipe partisi dinyatakan di dalam bilangan hexadesimal.

5.1 EZD

Disk manager EZ-Drive dapat dideteksi melalui partisi primer (primary partition) pertamanya yang selalu memiliki tipe 55. Remap dari geometri dilakukan dengan cara yang dijelaskan di atas, dan tabel partisi dari sektor 0 dihilangkan - sebagai penggantinya tabel partisi baru dibaca dari sektor 1. Nomor-nomor block disk tidak berubah, tetapi penulisan terhadap sector 0 akan dialihkan ke sector 1. Perilaku ini dapat dirubah dengan meng-compile kernel dengan penambahan perintah berikut di dalam file ide.c:

#define                 FAKE_FDISK_FOR_EZDRIVE  0

5.2 DM6:DDO

Disk manager OnTrack dapat dideteksi melalui partisi primer pertamanya yang selalu bertipe 54. Remap dari geometri dilakukan dengan cara yang telah dijelaskan di atas, dan seluruh disk digeser (shift) sejauh 63 sector (sehingga sector 63 menjadi sector 0). Kemudian, MBR baru dibaca dari sector 0 yang baru. Penggeseran ini untuk memberi tempat bagi DDO - itulah sebabnya mengapa tidak ada pergeseran pada disk lainnya.

5.3 DM6:AUX

Disk manager OnTrack (di dalam disk lainnya) dapat dideteksi melalui partisi primer pertamanya yang bertipe 51 atau 53. Geometri di-remap dengan cara yang dijelaskan sebelumnya.

5.4 DM6:MBR

Versi lama dari disk manager OnTrack dapat dideteksi bukan melalui tipe partisi melainkan melalui signature-nya. (Dengan melakukan pengujian apakah offset yang ditemukan pada byte ke-2 dan ke-3 dari MBR tidak melebihi angka 430, dan short yang ditemukan pada offset ini sama dengan 0x55AA, dan diikuti oleh byte ganjil). Remap geometri dilakukan seperti yang telah diuraikan di atas.

5.5 PTBL

Terakhir, ada sebuah uji (test) yang mencoba melakukan deduksi mengenai penterjemahan berdasarkan nilai-nilai start dan end dari partisi primer: Jika sebuah partisi memiliki start dan end silinder kurang dari 256; nomor start-sector = 1 dan nomor end-sector = 63; dan end-head = 31, 63 atau 127, dan karena sebuah partisi umumnya diakhiri dalam batas-batas silinder (cylinder boundary) demikian pula interface IDE menggunakan paling banyak 16 head, maka dapat disimpulkan bahwa suatu penterjemahan BIOS telah aktif dan selanjutnya geometri di-remap untuk menggunakan head bernomor 32, 64 atau 128. (Mungkin disini ada kekurangan, dan genhd.c seharusnya tidak melakukan pengujian terhadap 2 bit order tertinggi dari nomor silinder?) Namun demikian, remapping tidak dapat dilakukan jika geometri saat ini telah memiliki 63 sector per-track serta head yang setidaknya berjumlah sama (karena mungkin berarti telah dilakukan suatu remapping).


Next Previous Contents