FAT32-Bootsector
Bootsector yang sederhana dan sangat kompak, yang memungkinkan Anda memuat bootloader atau kernel Anda dari file.
Bangun menggunakan skrip terlampir.
Perhatikan: Jangan membaca ini, baca kode sumber. Itu dikomentari, jadi semua info ada
Apa yang sebenarnya dilakukan bootsector ini?
Ini dia, langkah demi langkah:
- Periksa apakah BIOS mendukung operasi disk yang diperluas
- Mencari partisi FAT32 aktif pertama
- Mencari file Anda di partisi itu (di direktori root)
- Memuatnya ke dalam memori
- Menjalankannya
Keadaan memori setelah bootsector saya
Kode Anda:
Kode Anda dimuat pada 0x1000: 0x0000 (segmen: offset), atau 0x10000 (linear).
Register
Sebagian besar register tidak "nol" dan sampah ditugaskan untuk mereka
Hanya yang memiliki nilai yang valid:
- CS: IP - 0x1000: 0x0000 (ditetapkan ke file yang dimuat)
- DS - 0x1000 (juga ditugaskan ke file yang dimuat)
- SS: SP - 0x0000: 0xFFFF (tumpukan di segmen pertama)
- DL - Nomor penggerak (untuk interupsi BIOS)
Data berguna yang ditinggalkan dalam memori
Setelah melompat ke file yang dimuat masih ada beberapa data berguna yang tersisa di memori:
(Semua offset ditentukan dalam kode sumber)
- 0x7c00 - Disk saat ini (nomor perangkat), alamat lemak, alamat sektor data pertama dan info serupa.
- 0x7e00 - Sektor BPB dari partisi itu
Batasan
- Semuanya dalam mode nyata sehingga ukuran file maksimum seharusnya tidak lebih besar dari beberapa ratus kilobyte
- File harus berada di direktori root dari partisi yang dipilih
- Nama file - Bootsector mencari file dengan 8.3 nama file
Menginstal metode
Untuk menginstal penggunaan:
- Pada sistem kompatibel ubuntu menggunakan skrip install.sh
- Pada windows menggunakan fat32-bootsector.exe
Perhatikan versi Windows tidak menggunakan huruf untuk partisi, tetapi partisi phisycal (tidak logis), jadi: mungkin lebih sulit untuk mencocokkan huruf partisi, tetapi di sisi lain itu mendukung drive USB multi partisi
Kesalahan?
Saat kesalahan terjadi Bootsector menggambar kode kesalahan di layar.
Berikut adalah kode dan penjelasan kesalahan:
0 - Fungsi bios yang diperluas tidak tersedia
1 - Partisi yang dapat di -boot tidak ditemukan
2 - Partisi yang dapat di -boot bukan FAT32
3 - File tidak ditemukan
4 - Tidak dapat memuat sektor (kesalahan interupsi BIOS)