On Thu, Oct 15, 2020 at 09:58:02AM +0200, Max Reitz wrote: > On 15.10.20 02:23, Kevin Shell wrote: > > Hello qemu users. > > Hi, > > > I have three questions about the -drive syntax. > > > > 1) I have see the syntax "-drive id=SOMEID", > > but the id option is not documented in the man page, > > what's the meaning of the id option and when to use it? > > I think most objects you can create on the command line have an id > option that is later used to identify the object. > Understand now. I have seen drive=SOMEID, netdev=SOMEID ... with the -device directive
> This becomes important for your second question: > > > 2) what's the meaning of if=none and when to use it? > > It’s discouraged to use -drive and define both a block device and a > guest device with it. > > Simply speaking, a block device is qemu’s internal representation of a > disk image. It’s something that e.g. can be attached to guest devices > so they have something to store their data in. > > A guest device is e.g. your SATA device in the guest. > > Those are two separate entities, so ideally you’ll create them separately. > > To create plain block devices (without a guest device), you can either > use -drive if=none, or -blockdev. -blockdev is more modern, but -drive > is simpler to use (in simple cases). > > So in your example, these commands would look like this: > > -drive if=none,id=disk1,file=disk1.qcow2 > > Or for -blockdev: > > -blockdev '{ "node-name": "disk1", > "driver": "qcow2", > "file": { > "driver": "file", > "filename": "disk1.qcow2" > } }' > > To create a guest device, the ID you were talking about in question 1 > comes into play: You use -device and supply that ID through the “drive” > option, like so: > > -device virtio-blk,drive=disk1 > So, creating a drive object is a two step process for qemu, if={ide, scsi, sd, mtd, floppy, pflash, virtio} is just a shortcut? exp. first step is to define the drive object with -drive file=FILE,id=ID,if=none second step is to attach the drive object to the device backend -device {ide, scsi, sd, mtd, floppy, pflash, virtio DEVICE},drive=ID Is my understanding right here? > > 3) why there is no if=sata, > > is SATA disks treated as IDE/ATA disks? > > Not sure, but you’ll probably just have to use the separated syntax I > was talking about above. Googling reveals that apparently you need to > create an AHCI (which acts as a bus) and then attach devices as IDE > disks to that bus: > > -drive if=none,id=disk1,file=disk1.qcow2 \ > -device ahci,id=ahci \ > -device ide-hd,bus=ahci.0,drive=disk1 > This looks a lot like my understanding above. Is my understanding correct again? > Hope that helps. > Thanks for your kink help. :-) -- kevin