( bzt | 2023. 08. 01., k – 11:38 )

> Most akkor a BIOS INT 13h-t használod (ami nagyon nem egyenlő az 0x1f0-ás ATA porttal), vagy direktben támadod az ATA interfészt I/O műveletekkel?

Is-is. A boot szektor egyetlen INT 13h hívást használ, az EFI/BOOT/BOOTX64.EFI meg megnézi, hogy a BIOS drivekód 80h-e, és ha igen, akkor elérhető-e a port (ha FFh-t olvas a státuszportról, akkor úgy veszi, nincs). Ha minden oké, akkor direkt ATA, ha ezek közül bármi nem teljesül, akkor fallbackel INT 13h-ra. (Mindez persze BIOS alatt, ha UEFI-n töltődik be ugyanaz az EFI/BOOT/BOOTX64.EFI fájl, akkor nyilván EFI_SIMPLE_FILESYSTEM_PROTOCOL-t használ.)

> Ez utóbbit szerintem pl. nem emulálja senki SCSI meg RAID kártyák esetén

Általában de, a hw-s RAID kártyák mind emulálják. Muszáj nekik, ettől lesznek hw-s RAID-ek. SCSI-ban nem vagyok biztos, olyant kb. 20 éve használtam utoljára.

> de abban sem lennék biztos, hogy az M.2 NVME flashről bootoló gépeken találni ilyet.

Tipikusan minden ATA-nál későbbi kontroller (SATA, PATA stb.) emulálja, mert a PC-n a visszamenőleges kompatibilitás elsődleges. Ha hiszed, ha nem, még a legmodernebb HPET is használható simán IBM XT PIC-ként és RTC-ként. Gondolom emiatt az NVME-nél is elvárás, hogy emulálja (egyébként nem valószínű, hogy régi BIOS-os gépeken tényleg találsz NVME-t), de ha mégsem, akkor ott a BIOS fallback, annak kutya kötelessége kezelni bármilyen kontrollert. Sokkal valószínűbb, hogy bármilyen NVME-s gép már kizárólag UEFI-t használ, ott meg mindig a firmware-re bízza.