| 
									
										
										
										
											2012-08-10 21:53:02 +02:00
										 |  |  | = Bootindex property = | 
					
						
							| 
									
										
										
										
											2011-01-30 12:29:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | Block and net devices have bootindex property. This property is used to | 
					
						
							|  |  |  | determine the order in which firmware will consider devices for booting | 
					
						
							|  |  |  | the guest OS. If the bootindex property is not set for a device, it gets | 
					
						
							|  |  |  | lowest boot priority. There is no particular order in which devices with | 
					
						
							|  |  |  | unset bootindex property will be considered for booting, but they will | 
					
						
							|  |  |  | still be bootable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | == Example == | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-09 12:48:19 +01:00
										 |  |  | Let's assume we have a QEMU machine with two NICs (virtio, e1000) and two | 
					
						
							| 
									
										
										
										
											2011-01-30 12:29:19 +02:00
										 |  |  | disks (IDE, virtio): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | qemu -drive file=disk1.img,if=none,id=disk1 | 
					
						
							| 
									
										
										
										
											2017-05-09 11:41:15 +02:00
										 |  |  |      -device ide-hd,drive=disk1,bootindex=4 | 
					
						
							| 
									
										
										
										
											2011-01-30 12:29:19 +02:00
										 |  |  |      -drive file=disk2.img,if=none,id=disk2 | 
					
						
							|  |  |  |      -device virtio-blk-pci,drive=disk2,bootindex=3 | 
					
						
							|  |  |  |      -netdev type=user,id=net0 -device virtio-net-pci,netdev=net0,bootindex=2 | 
					
						
							|  |  |  |      -netdev type=user,id=net1 -device e1000,netdev=net1,bootindex=1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Given the command above, firmware should try to boot from the e1000 NIC | 
					
						
							| 
									
										
										
										
											2013-04-09 12:48:19 +01:00
										 |  |  | first.  If this fails, it should try the virtio NIC next; if this fails | 
					
						
							| 
									
										
										
										
											2011-01-30 12:29:19 +02:00
										 |  |  | too, it should try the virtio disk, and then the IDE disk. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | == Limitations == | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Some firmware has limitations on which devices can be considered for | 
					
						
							|  |  |  | booting.  For instance, the PC BIOS boot specification allows only one | 
					
						
							|  |  |  | disk to be bootable.  If boot from disk fails for some reason, the BIOS | 
					
						
							| 
									
										
										
										
											2013-04-09 12:48:19 +01:00
										 |  |  | won't retry booting from other disk.  It can still try to boot from | 
					
						
							| 
									
										
										
										
											2011-01-30 12:29:19 +02:00
										 |  |  | floppy or net, though. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2. Sometimes, firmware cannot map the device path QEMU wants firmware to | 
					
						
							|  |  |  | boot from to a boot method.  It doesn't happen for devices the firmware | 
					
						
							|  |  |  | can natively boot from, but if firmware relies on an option ROM for | 
					
						
							|  |  |  | booting, and the same option ROM is used for booting from more then one | 
					
						
							|  |  |  | device, the firmware may not be able to ask the option ROM to boot from | 
					
						
							| 
									
										
										
										
											2013-04-09 12:48:19 +01:00
										 |  |  | a particular device reliably.  For instance with the PC BIOS, if a SCSI HBA | 
					
						
							| 
									
										
										
										
											2011-01-30 12:29:19 +02:00
										 |  |  | has three bootable devices target1, target3, target5 connected to it, | 
					
						
							|  |  |  | the option ROM will have a boot method for each of them, but it is not | 
					
						
							|  |  |  | possible to map from boot method back to a specific target.  This is a | 
					
						
							| 
									
										
										
										
											2013-04-09 12:48:19 +01:00
										 |  |  | shortcoming of the PC BIOS boot specification. | 
					
						
							| 
									
										
										
										
											2017-02-28 18:40:01 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | == Mixing bootindex and boot order parameters == | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that it does not make sense to use the bootindex property together | 
					
						
							|  |  |  | with the "-boot order=..." (or "-boot once=...") parameter. The guest | 
					
						
							|  |  |  | firmware implementations normally either support the one or the other, | 
					
						
							|  |  |  | but not both parameters at the same time. Mixing them will result in | 
					
						
							|  |  |  | undefined behavior, and thus the guest firmware will likely not boot | 
					
						
							|  |  |  | from the expected devices. |