[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Boot order problem
From: |
Minoru Usui |
Subject: |
Re: [Qemu-devel] Boot order problem |
Date: |
Tue, 26 Jul 2011 10:07:15 +0900 |
On Mon, 25 Jul 2011 12:06:19 +0300
Gleb Natapov <address@hidden> wrote:
> On Mon, Jul 25, 2011 at 04:07:12PM +0900, Minoru Usui wrote:
> > Hi, Gleb
> >
> > Thank you for your reply.
> >
> > On Sun, 24 Jul 2011 09:30:49 +0300
> > Gleb Natapov <address@hidden> wrote:
> >
> > > On Fri, Jul 22, 2011 at 09:51:16AM +0900, Minoru Usui wrote:
> > > > Hi, everyone
> > > >
> > > > I'm in trouble about boot order of VM.
> > > > If anyone know cause of this problem, please let me know.
> > > >
> > > The cause of the "problem" is the design. booindex and -boot only
> > > modifies the order in which bios will search for bootable device.
> > > It does not exclude devices from a boot device list.
> >
> > Hmm, this design is little bit strange to me.
> > We can specify BIOS boot order on baremetal BIOS.
> > In this case, we won't expected boots up from not specified boot device,
> > generally.
> >
> My bios has 4 boot device slots filled by factory defaults. If I modify
> the first one (like -boot c does) it leaves other slots with their
> previous values. If first slot is not bootable it will fall back to
> next one.
OK.
I understand -boot and bootindex design.
> > Isn't it intuitive that -boot and bootindex option can specify
> > not only boot order, but also boot device list?
> What is the use case? If this is what it will do you will be required to
> specify full boot order list each time you start a VM. Much more common
> scenario is to modify boot order priority by moving some devices at the
> top. It is possible to add an option that will exclude device from a
> boot list. Need some work both in qemu and seabios.
Thank you for suggestion.
If I want to controll boot device list, I'll try to specify full boot order
list.
> > > > On following environment, I tried to boot from IDE CD-ROM device
> > > > without inserting any bootable media, which is expected to fail,
> > > > but VM was booting up from virtio HDD which was not specified as
> > > > bootable device.
> > > >
> > > > * host : RHEL6.1(x86_64)
> > > > guest: RHEL6.1(x86_64)
> > > > * VM has IDE CD-ROM and virtio HDD.
> > > > * There is no bootable media in IDE CD-ROM.
> > > > * RHEL6.1 is installed in virtio HDD
> > > > * Only IDE CD-ROM was spcified as bootable device.
> > > > * XML configuration of libvirt is below.
> > > > I tested <boot dev> and <boot order> setting,
> > > > but both are booting up from virtio HDD.
> > > > -------------------------------------------------------
> > > > [<boot dev> setting version]
> > > > <os>
> > > > <type arch='x86_64' machine='rhel6.1.0'>hvm</type>
> > > > <boot dev='cdrom'/>
> > > > <bootmenu enable='no'/>
> > > > </os>
> > > >
> > > > [<boot order> setting version]
> > > > <disk type='file' device='cdrom'>
> > > > <driver name='qemu' type='raw'/>
> > > > <target dev='hdc' bus='ide'/>
> > > > <boot order='1'/>
> > > > <readonly/>
> > > > <address type='drive' controller='0' bus='1' unit='0'/>
> > > > </disk>
> > > > -------------------------------------------------------
> > > >
> > > > I installed latest qemu-kvm to /usr/local/qemu, and replaced
> > > > /usr/libexec/qemu-kvm to /user/local/qemu/bin/qemu-system-x86_64,
> > > > but it was booting up from virtio HDD.
> > > >
> > > > On RHEL6.0 host, I tested <boot dev> setting version,
> > > > VM didn't boot up from virtio HDD.
> > > > it cannot boot up from CD-ROM. (expected behaviour)
> > > >
> > > This is not expected behaviour. Expected behaviour is VM boots from HDD.
> > > The only way I can explain behaviour you describe above is that the bios
> > > you are using for RHEL6.0 rpm does not support booting from virtio HDD.
> > > You can test this but making HDD to be ide and retry your test.
> >
> > I changed virtio HDD to IDE HDD, and retry my test on
> > RHEL6.0(seabios-0.5.1-3.el6.x86_64),
> > but VM didn't boot up from IDE HDD.(same result)
> Hmm. Yes, I can reproduce this with rhel60 bios. rhel6.1 works as
> expected though. Need to check why rhel60 bios works like this.
Thank you so much.
I'll wait your investigation.
> > Of cource, if I specified IDE HDD first (not IDE CD-ROM), it can boot up.
> > Am I somthing wrong?
> >
> > [libvirt setting]
> > <disk type='block' device='disk'>
> > <driver name='qemu' type='raw' cache='none'/>
> > <source dev='/dev/sdb5'/>
> > <target dev='hda' bus='ide'/>
> > <address type='drive' controller='0' bus='1' unit='1'/>
> > </disk>
> > <disk type='file' device='cdrom'>
> > <driver name='qemu' type='raw'/>
> > <target dev='hdc' bus='ide'/>
> > <readonly/>
> > <alias name='ide0-1-0'/>
> > <address type='drive' controller='0' bus='1' unit='0'/>
> > </disk>
> > <controller type='ide' index='0'>
> > <alias name='ide0'/>
> > <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> > function='0x1'/>
> > </controller>
> >
> > [qemu-kvm option by ps command]
> > qemu 6685 1 21 09:42 ? 00:00:03 /usr/libexec/qemu-kvm -S
> > -M rhel6.0.0 -enable-kvm -m 2048
> > -smp 2,sockets=2,cores=1,threads=1 -name RHEL5.5-x86_64-disk1 -uuid
> > b05c3fa6-a52d-1f15-8412-00a876a0c672
> > -nodefconfig -nodefaults -chardev
> > socket,id=monitor,path=/var/lib/libvirt/qemu/RHEL5.5-x86_64-disk1.monitor,server,nowait
> > -mon chardev=monitor,mode=control -rtc base=utc -boot d -drive
> > file=/dev/sdb5,if=none,id=drive-ide0-1-1,format=raw,cache=none
> > -device ide-drive,bus=ide.1,unit=1,drive=drive-ide0-1-1,id=ide0-1-1
> > -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw
> > -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0
> > -netdev tap,fd=24,id=hostnet0
> > -device
> > virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:47:2a:f9,bus=pci.0,addr=0x3
> > -chardev pty,id=serial0
> > -device isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:1 -vga cirrus
> > -device AC97,id=sound0,bus=pci.0,addr=0x4
> > -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
> >
> >
> > > > I checked qemu-kvm option by ps command,
> > > > but I think correct -boot or bootindex of -device option is specified.
> > > >
> > > > [<boot dev> setting version(RHEL6.1 host)]
> > > > qemu 9871 1 74 16:22 ? 00:00:25 /usr/libexec/qemu-kvm
> > > > -S -M rhel6.1.0 -enable-kvm -m 2048
> > > > -smp 8,sockets=8,cores=1,threads=1 -name RHEL6.1-GA -uuid
> > > > 49703959-f0b0-9864-5788-4bc07028bac4 -nodefconfig
> > > > -nodefaults -chardev
> > > > socket,id=charmonitor,path=/var/lib/libvirt/qemu/RHEL6.1-GA.monitor,server,nowait
> > > >
> > > > -mon chardev=charmonitor,id=monitor,mode=readline -rtc base=utc -boot
> > > > order=d,menu=off
> > > > -drive
> > > > file=/work/libvirt/images/RHEL6.1GA_x86_64_full_file.img,if=none,id=drive-virtio-disk0,format=qcow2,cache=none,aio=threads
> > > > -device
> > > > virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0
> > > > -drive
> > > > file=/tmp/not_bootable_image.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw
> > > > -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0
> > > > -device
> > > > virtio-net-pci,vlan=0,id=net0,mac=52:54:00:0b:68:82,bus=pci.0,addr=0x3
> > > > -net tap,fd=21,vlan=0,name=hostnet0
> > > > -chardev pty,id=charserial0 -device
> > > > isa-serial,chardev=charserial0,id=serial0 -usb -device
> > > > usb-tablet,id=input0
> > > > -vnc 127.0.0.1:0 -vga cirrus -device
> > > > intel-hda,id=sound0,bus=pci.0,addr=0x4
> > > > -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device
> > > > virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
> > > >
> > > > -> "-boot order=d" is specified
> > > >
> > > >
> > > > [<boot order> setting version(RHEL6.1 host)]
> > > > qemu 4073 1 23 10:08 ? 00:00:37 /usr/libexec/qemu-kvm
> > > > -S -M rhel6.1.0 -enable-kvm -m 2048
> > > > -smp 8,sockets=8,cores=1,threads=1 -name RHEL6.1-GA -uuid
> > > > 49703959-f0b0-9864-5788-4bc07028bac4 -nodefconfig -nodefaults -chardev
> > > > socket,id=charmonitor,path=/var/lib/libvirt/qemu/RHEL6.1-GA.monitor,server,nowait
> > > > -mon chardev=charmonitor,id=monitor,mode=readline -rtc base=utc -drive
> > > > file=/work/libvirt/images/RHEL6.1GA_x86_64_full_file.img,if=none,id=drive-virtio-disk0,format=qcow2,cache=none,aio=threads
> > > > -device
> > > > virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0
> > > > -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw
> > > > -device
> > > > ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1
> > > > -device
> > > > virtio-net-pci,vlan=0,id=net0,mac=52:54:00:0b:68:82,bus=pci.0,addr=0x3
> > > > -net tap,fd=21,vlan=0,name=hostnet0
> > > > -chardev pty,id=charserial0 -device
> > > > isa-serial,chardev=charserial0,id=serial0 -usb -device
> > > > usb-tablet,id=input0
> > > > -vnc 127.0.0.1:0 -vga cirrus -device
> > > > intel-hda,id=sound0,bus=pci.0,addr=0x4
> > > > -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device
> > > > virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
> > > >
> > > > -> "bootindex=1" is specified for IDE CD-ROM device only.
> > > >
> > > >
> > > > Next, I suspected seabios, but it was same version of RHEL6.0 and
> > > > RHEL6.1.
> > > >
> > > > # rpm -q seabios
> > > > seabios-0.6.1.2-3.el6.x86_64
> > > >
> > > This bios supports booting from virtio and when I do the same test as
> > > you, qemu boots from virtio HDD. Try to reinstall seabios rpm.
> >
> > I recheck the version of seabios, it was different version of RHEL6.0 and
> > RHEL6.1.
> > I'm sorry for misleading.
> >
> > [RHEL6.0]
> > seabios-0.5.1-3.el6.x86_64
> >
> > [RHEL6.1]
> > seabios-0.6.1.2-3.el6.x86_64
> >
> Both support virtio. The difference somewhere else.
>
> --
> Gleb.
--
Minoru Usui <address@hidden>