On Mon, 25 Jul 2011 12:06:19 +0300 Gleb Natapov <g...@redhat.com> 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 <g...@redhat.com> 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 <u...@mxm.nes.nec.co.jp>