Apa sebenarnya yang membuat BIOS memutuskan apakah drive dapat di-boot atau tidak?
BIOS memutuskan apakah drive dapat di-boot berdasarkan catatan partisi 16-byte, hadir setelah area kode MBR (disimpan dalam tabel mulai dari byte ke- 446 ). Bita pertama di setiap catatan partisi menunjukkan status drive yang dapat di-boot (dan diatur ke 0x80
apakah dapat di-boot, atau 0x00
jika tidak). Beberapa BIOS dapat memeriksa bagian lain dari MBR (misalnya jenis partisi, checksum), tetapi persyaratan dasarnya adalah bendera yang dapat di-boot.
Bagaimana urutan boot melewati dari drive # 1 dan melanjutkan mencoba untuk boot dari drive # 2 jika lebih dari satu drive dipasang di sistem?
Ini tergantung pada implementasi, dan itulah sebabnya Anda perlu memilih urutan boot dengan benar. Dalam kebanyakan kasus, BIOS akan memeriksa setiap media penyimpanan sesuai urutan yang Anda tentukan, dan menentukan apakah ia dapat melakukan booting dari perangkat itu (melalui data MBR). Jika bisa, itu bisa - jika tidak, ia terus berputar melalui perangkat lain (sekali lagi, sesuai urutan yang Anda pilih).
Setelah BIOS memindahkan kendali ke bootloader pada drive # 1 yang kebetulan tidak memiliki partisi "bootable" - bagaimana tepatnya bootloader pada drive kedua dijalankan?
Setelah perangkat boot yang valid ditemukan (mis. Bendera yang dapat di-boot diatur, dan pemeriksaan tambahan lainnya lulus), BIOS menyalin sektor MBR ke dalam RAM. BIOS kemudian memindahkan penunjuk instruksi ke awal lokasi ini (menggunakan JUMP
instruksi), di mana segmen kode MBR berada, dan komputer kemudian mulai.
Jika BIOS mendukung Spesifikasi Booting BIOS , kode MBR dapat mengembalikan kontrol ke BIOS dengan instruksi tertentu, menandakan kegagalan boot dan mendorongnya untuk mencoba perangkat berikutnya. BIOS lama hanya mencetak pesan kesalahan. Yang bagus jika BIOS Anda mendukungnya adalah apakah Anda bisa boot dari USB.
Pemahaman saya adalah bahwa satu-satunya hal yang biasanya diperiksa BIOS pada MBR adalah tanda tangannya di akhir sektor 512-byte, dan kemudian hanya mentransfer kontrol ke bootloader awal yang terletak di 446 byte pertama dari sektor boot.
Ini benar, meskipun harus dicatat bahwa sebagian besar BIOS modern juga akan mencari Tabel Partisi GUID serta tabel gaya MBR konvensional yang lebih lama.
Apakah ini menyiratkan bahwa 446 byte pertama dari sektor boot HARUS berisi beberapa kode bootloader yang berarti bahkan jika disk tidak dapat di-boot?
Tidak , tetapi drive harus memiliki tabel partisi MBR atau GUID yang valid - jika tidak, ia tidak akan terdeteksi oleh komputer. Sementara bagian kode MBR memang bisa kosong, sektor pertama drive harus memiliki MBR / GPT yang terbentuk dengan baik.
fdisk
menangani kasus-kasus itu, meskipun versi asli memang menandai header MBR yang tidak valid). Saya menyarankan OP untuk memposting header MBR mentah, tetapi dia mungkin juga ingin "beralih" on / off flag bootable (untuk mengatur / mengatur ulang flag secara manual).