10

I want to emulate a SATA disk drive in QEMU to check a device driver I'm trying to develop. How can this be done? Would greatly appreciate your help.

2 Answers 2

15

The Gentoo Wiki offers these parameters:

-drive id=disk,file=IMAGE.img,if=none \
-device ahci,id=ahci \
-device ide-hd,drive=disk,bus=ahci.0

Set emulation layer for an ICH-9 AHCI controller (not yet stable ) and use the specified image file for it. The AHCI emulation supports NCQ, so multiple read or write requests can be outstanding at the same time.

EDIT: A revision to the Wiki on 31 October 2018 suggests the AHCI controller may be stable now.

4
  • Is the drive auto-mounted at boot? Or do you have to manually mount the drive once Qemu has booted Linux? Commented May 29, 2019 at 19:08
  • For me a device was automatically created but drive was not mounted. It will be visible with lsblk, you will need to format it (to ext4 for example) and mount it (normally to /mnt/data). This was useful for me digitalocean.com/community/tutorials/…
    – Gal
    Commented Oct 28, 2020 at 12:47
  • ide-drive is deprecated, use ide-hd instead, got 'ide-drive' is not a valid device model name and found no explanation. some details
    – NiKiZe
    Commented Jul 21, 2021 at 22:23
  • 1
    @NiKiZe thanks, I see you've also edited the Gentoo Wiki page also. I've updated the command to match your change.
    – mwfearnley
    Commented Jul 22, 2021 at 11:44
3

When using i386 or x86_64 with Q35 machine type(-M q35), IDE disk has been AHCI by default.

Not the answer you're looking for? Browse other questions tagged or ask your own question.