Stefan Weil | 280a66a | 2012-08-10 21:53:02 +0200 | [diff] [blame] | 1 | = Bootindex property = |
Gleb Natapov | 466b586 | 2011-01-30 12:29:19 +0200 | [diff] [blame] | 2 | |
| 3 | Block and net devices have bootindex property. This property is used to |
| 4 | determine the order in which firmware will consider devices for booting |
| 5 | the guest OS. If the bootindex property is not set for a device, it gets |
| 6 | lowest boot priority. There is no particular order in which devices with |
| 7 | unset bootindex property will be considered for booting, but they will |
| 8 | still be bootable. |
| 9 | |
| 10 | == Example == |
| 11 | |
Peter Maydell | e03ba13 | 2013-04-09 12:48:19 +0100 | [diff] [blame] | 12 | Let's assume we have a QEMU machine with two NICs (virtio, e1000) and two |
Gleb Natapov | 466b586 | 2011-01-30 12:29:19 +0200 | [diff] [blame] | 13 | disks (IDE, virtio): |
| 14 | |
| 15 | qemu -drive file=disk1.img,if=none,id=disk1 |
| 16 | -device ide-drive,drive=disk1,bootindex=4 |
| 17 | -drive file=disk2.img,if=none,id=disk2 |
| 18 | -device virtio-blk-pci,drive=disk2,bootindex=3 |
| 19 | -netdev type=user,id=net0 -device virtio-net-pci,netdev=net0,bootindex=2 |
| 20 | -netdev type=user,id=net1 -device e1000,netdev=net1,bootindex=1 |
| 21 | |
| 22 | Given the command above, firmware should try to boot from the e1000 NIC |
Peter Maydell | e03ba13 | 2013-04-09 12:48:19 +0100 | [diff] [blame] | 23 | first. If this fails, it should try the virtio NIC next; if this fails |
Gleb Natapov | 466b586 | 2011-01-30 12:29:19 +0200 | [diff] [blame] | 24 | too, it should try the virtio disk, and then the IDE disk. |
| 25 | |
| 26 | == Limitations == |
| 27 | |
| 28 | 1. Some firmware has limitations on which devices can be considered for |
| 29 | booting. For instance, the PC BIOS boot specification allows only one |
| 30 | disk to be bootable. If boot from disk fails for some reason, the BIOS |
Peter Maydell | e03ba13 | 2013-04-09 12:48:19 +0100 | [diff] [blame] | 31 | won't retry booting from other disk. It can still try to boot from |
Gleb Natapov | 466b586 | 2011-01-30 12:29:19 +0200 | [diff] [blame] | 32 | floppy or net, though. |
| 33 | |
| 34 | 2. Sometimes, firmware cannot map the device path QEMU wants firmware to |
| 35 | boot from to a boot method. It doesn't happen for devices the firmware |
| 36 | can natively boot from, but if firmware relies on an option ROM for |
| 37 | booting, and the same option ROM is used for booting from more then one |
| 38 | device, the firmware may not be able to ask the option ROM to boot from |
Peter Maydell | e03ba13 | 2013-04-09 12:48:19 +0100 | [diff] [blame] | 39 | a particular device reliably. For instance with the PC BIOS, if a SCSI HBA |
Gleb Natapov | 466b586 | 2011-01-30 12:29:19 +0200 | [diff] [blame] | 40 | has three bootable devices target1, target3, target5 connected to it, |
| 41 | the option ROM will have a boot method for each of them, but it is not |
| 42 | possible to map from boot method back to a specific target. This is a |
Peter Maydell | e03ba13 | 2013-04-09 12:48:19 +0100 | [diff] [blame] | 43 | shortcoming of the PC BIOS boot specification. |