Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Description:
When configuring guest with multiple hard disks the seabios always choose the first hard disk from the boot menu list to boot up guest. But if the first hard disk in the boot menu list contains without OS, guest will fail to boot up finally.
Version-Release number of selected component (if applicable):
qemu-kvm-rhev-2.2.0-8.el7.x86_64
libvirt-1.2.8-16.el7_1.3.x86_64
seabios-1.7.5-8.el7.x86_64
How reproducible:
100%
Steps:
scenario
1. prepare one guest with bootmenu enable='yes', and two different hard disks, one of them contains with good OS, another contains without OS.
...
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.1.0'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='yes'/>
</os>
...
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/mnt/wzhang/rhel7_l.img'/> <--has health OS
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
...
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/var/lib/libvirt/images/new.img' startupPolicy='optional'/> <-----has fake OS
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
# virsh domblklist rl
Target Source
------------------------------------------------
vda /mnt/wzhang/rhel7_l.img
vdb /var/lib/libvirt/images/new.img
2. boot up guest failed with no bootable device, because of the seabios always choose the first hard disk without OS from boot menu list.
.....
SeaBIOS (version seabios-1.7.5-8.el7)
Machine UUID fdd9ba31-bacd-3382-c7c7-5a3f1f446768
gPXE (http://etherboot.org) - 00:03.0 C900 PCI2.10 PnP PMM+3FF97990+3FEF7990 C900
Press ESC or F12 for boot menu.
Booting from Hard Disk...
Boot failed: not a bootable disk
Booting from ROM...
iPXE (PCI 00:03.0) starting execution...ok
iPXE initialising devices...ok
iPXE 1.0.0+ (c4bce43) -- Open Source Boot Firmware -- http://ipxe.org
Features: iSCSI HTTP DNS TFTP AoE bzImage ELF MBOOT PXE Menu PXEXT
net0: 52:54:00:25:55:7e using rtl8139 on PCI00:03.0 (open)
[Link:up, TX:0 TXE:0 RX:0 RXE:0]
DHCP (net0 52:54:00:25:55:7e)...... Connection timed out(http://ipxe.org/4c106035)
No more network devices
Booting from Floppy...
Boot failed: could not read the boot disk
No bootable device.
...
3. during boot up, print F12 to check bootmenu list
Press F12 for boot menu.
Select boot device:
1. Virtio disk PCI:0:6 <--this disk has fake OS
2. Virtio disk PCI:0:a
3. Legacy option rom
4. iPXe (PCI 00:03.0)
4. select bootmune enalbe='no' or dismiss this attribute setting in XML, boot up guest success. the seabios will automatically choose the hard disk contains with OS to boot up guest
...
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.1.0'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='no'/> <----- notice this to no or delete this line
</os>
...
Sceanrio 2:
1. edit guest with following XML, with bootmenu enable='yes', but setting boot order in each disk separately
...
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.1.0'>hvm</type>
<bootmenu enable='yes'/>
</os>
...
# virsh dumpxml r7a | grep "/disk" -B8
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/r7.img'/> has a health OS
<backingStore/>
<target dev='vda' bus='virtio'/>
<boot order='2'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='qcow2'/>
<source dev='/var/lib/libvirt/images/new.qcow2'/> a fake os
<backingStore/>
<target dev='vdb' bus='virtio'/>
<boot order='1'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
2. start guest, to check seabio still can not jump to the second disk which has health OS
Actual result:
When configuring guest with multiple hard disks, and select bootmenu enable='yes' or set the boot order for each disks, the seabios always choose the first hard disk from the boot menu list to boot up guest. But if the first hard disk in the boot menu list without OS, guest will fail to boot up finally.
Expect result:
For this scenario, the seabios should try to jump to the second hard disk if the first disk without OS and bootup failed.
Comment 2Jaroslav Suchanek
2015-04-20 09:42:19 UTC
(In reply to Gerd Hoffmann from comment #3)
> The BIOS interface specs don't allow that.
If you mean the scenario 2 in #c0, it's acceptable.
But for the fist scenario, seabios has a side effect with <bootmenu enable='yes'/>, the guest can not boot up from the health disk normally.
Is there more clear explanation? Thanks in advance.
(In reply to Hu Jianwei from comment #4)
> (In reply to Gerd Hoffmann from comment #3)
> > The BIOS interface specs don't allow that.
>
> If you mean the scenario 2 in #c0, it's acceptable.
>
> But for the fist scenario, seabios has a side effect with <bootmenu
> enable='yes'/>, the guest can not boot up from the health disk normally.
Which side effect? Disk ordering doesn't change depending on bootmenu=on|off.
Guest doesn't boot in both cases for me.
(In reply to Gerd Hoffmann from comment #5)
> (In reply to Hu Jianwei from comment #4)
> > (In reply to Gerd Hoffmann from comment #3)
> > > The BIOS interface specs don't allow that.
> >
> > If you mean the scenario 2 in #c0, it's acceptable.
> >
> > But for the fist scenario, seabios has a side effect with <bootmenu
> > enable='yes'/>, the guest can not boot up from the health disk normally.
>
> Which side effect? Disk ordering doesn't change depending on
> bootmenu=on|off.
> Guest doesn't boot in both cases for me.
Hi, Gerd
Thanks for your reply, I think you misunderstand our meaning for this bug.
For scenario 1 as described in comment 0, I configure two disks
...
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/mnt/wzhang/rhel7_l.img'/> <--has health OS
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
...
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/var/lib/libvirt/images/new.img' startupPolicy='optional'/> <-----has fake OS
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
...
****you can see that new.img has fake OS with bus slot = '0x06', and rhel7_l.img has health OS with bus slot ='0x0a'****
1. when bootmenu=yes, decided by the bus slot address number, the disk order listed in bootmenu is new.img before rhel7_l.img, right?
Press F12 for boot menu.
Select boot device:
1. Virtio disk PCI:0:6 <--this disk has fake OS
2. Virtio disk PCI:0:a
3. Legacy option rom
4. iPXe (PCI 00:03.0)
then guest will always choose the first boot device new.img with fake OS, so guest boot up failed every time.
2. when bootmenu=no, you said that bootmenu does not change disk order, but why seabios will automatically choose the second boot device rhel7_l.img to boot up successful?
So what we are confused is that if the disk order is not changing with bootmenu=on/off, why guest boot up failed with bootmenu=yes, but successful with bootmenu=no in my condition?
hope for your reply, thanks
> ****you can see that new.img has fake OS with bus slot = '0x06', and
> rhel7_l.img has health OS with bus slot ='0x0a'****
>
> 1. when bootmenu=yes, decided by the bus slot address number, the disk order
> listed in bootmenu is new.img before rhel7_l.img, right?
>
> Press F12 for boot menu.
>
> Select boot device:
> 1. Virtio disk PCI:0:6 <--this disk has fake OS
> 2. Virtio disk PCI:0:a
> 3. Legacy option rom
> 4. iPXe (PCI 00:03.0)
>
> then guest will always choose the first boot device new.img with fake OS, so
> guest boot up failed every time.
Same here.
> 2. when bootmenu=no, you said that bootmenu does not change disk order, but
> why seabios will automatically choose the second boot device rhel7_l.img to
> boot up successful?
Fails to boot for me too.
> So what we are confused is that if the disk order is not changing with
> bootmenu=on/off, why guest boot up failed with bootmenu=yes, but successful
> with bootmenu=no in my condition?
No idea why this happens for you.
Doesn't match what I see in testing.
Description: When configuring guest with multiple hard disks the seabios always choose the first hard disk from the boot menu list to boot up guest. But if the first hard disk in the boot menu list contains without OS, guest will fail to boot up finally. Version-Release number of selected component (if applicable): qemu-kvm-rhev-2.2.0-8.el7.x86_64 libvirt-1.2.8-16.el7_1.3.x86_64 seabios-1.7.5-8.el7.x86_64 How reproducible: 100% Steps: scenario 1. prepare one guest with bootmenu enable='yes', and two different hard disks, one of them contains with good OS, another contains without OS. ... <os> <type arch='x86_64' machine='pc-i440fx-rhel7.1.0'>hvm</type> <boot dev='hd'/> <bootmenu enable='yes'/> </os> ... <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/mnt/wzhang/rhel7_l.img'/> <--has health OS <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </disk> ... <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/var/lib/libvirt/images/new.img' startupPolicy='optional'/> <-----has fake OS <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> # virsh domblklist rl Target Source ------------------------------------------------ vda /mnt/wzhang/rhel7_l.img vdb /var/lib/libvirt/images/new.img 2. boot up guest failed with no bootable device, because of the seabios always choose the first hard disk without OS from boot menu list. ..... SeaBIOS (version seabios-1.7.5-8.el7) Machine UUID fdd9ba31-bacd-3382-c7c7-5a3f1f446768 gPXE (http://etherboot.org) - 00:03.0 C900 PCI2.10 PnP PMM+3FF97990+3FEF7990 C900 Press ESC or F12 for boot menu. Booting from Hard Disk... Boot failed: not a bootable disk Booting from ROM... iPXE (PCI 00:03.0) starting execution...ok iPXE initialising devices...ok iPXE 1.0.0+ (c4bce43) -- Open Source Boot Firmware -- http://ipxe.org Features: iSCSI HTTP DNS TFTP AoE bzImage ELF MBOOT PXE Menu PXEXT net0: 52:54:00:25:55:7e using rtl8139 on PCI00:03.0 (open) [Link:up, TX:0 TXE:0 RX:0 RXE:0] DHCP (net0 52:54:00:25:55:7e)...... Connection timed out(http://ipxe.org/4c106035) No more network devices Booting from Floppy... Boot failed: could not read the boot disk No bootable device. ... 3. during boot up, print F12 to check bootmenu list Press F12 for boot menu. Select boot device: 1. Virtio disk PCI:0:6 <--this disk has fake OS 2. Virtio disk PCI:0:a 3. Legacy option rom 4. iPXe (PCI 00:03.0) 4. select bootmune enalbe='no' or dismiss this attribute setting in XML, boot up guest success. the seabios will automatically choose the hard disk contains with OS to boot up guest ... <os> <type arch='x86_64' machine='pc-i440fx-rhel7.1.0'>hvm</type> <boot dev='hd'/> <bootmenu enable='no'/> <----- notice this to no or delete this line </os> ... Sceanrio 2: 1. edit guest with following XML, with bootmenu enable='yes', but setting boot order in each disk separately ... <os> <type arch='x86_64' machine='pc-i440fx-rhel7.1.0'>hvm</type> <bootmenu enable='yes'/> </os> ... # virsh dumpxml r7a | grep "/disk" -B8 <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/r7.img'/> has a health OS <backingStore/> <target dev='vda' bus='virtio'/> <boot order='2'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </disk> <disk type='block' device='disk'> <driver name='qemu' type='qcow2'/> <source dev='/var/lib/libvirt/images/new.qcow2'/> a fake os <backingStore/> <target dev='vdb' bus='virtio'/> <boot order='1'/> <alias name='virtio-disk1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> 2. start guest, to check seabio still can not jump to the second disk which has health OS Actual result: When configuring guest with multiple hard disks, and select bootmenu enable='yes' or set the boot order for each disks, the seabios always choose the first hard disk from the boot menu list to boot up guest. But if the first hard disk in the boot menu list without OS, guest will fail to boot up finally. Expect result: For this scenario, the seabios should try to jump to the second hard disk if the first disk without OS and bootup failed.