Bug 614307

Summary: Guest could not find tftp file/root when using private bridge
Product: Red Hat Enterprise Linux 6 Reporter: Amos Kong <akong>
Component: qemu-kvmAssignee: Amit Shah <amit.shah>
Status: CLOSED DUPLICATE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.0CC: ailan, llim, mkenneth, tburke, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-07-29 04:09:17 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
snapshot-could-not-find-tftp-file-root none

Description Amos Kong 2010-07-14 05:42:35 UTC
Created attachment 431668 [details]
snapshot-could-not-find-tftp-file-root

The tftp/pxe installation with public bridge is ok.
When I create a private bridge and setup tftp/pxe by dnsmasq, guest can get ip address, but coule not find tftp file/root.

Both installation of public bridge and private bridge are ok on RHEL5 host.


Version-Release number of selected component (if applicable):

dnsmasq-2.48-4.el6.x86_64
kernel-2.6.32-37.el6.x86_64
# rpm -qa |grep qemu
qemu-img-0.12.1.2-2.93.el6.x86_64
qemu-kvm-0.12.1.2-2.93.el6.x86_64
qemu-kvm-debuginfo-0.12.1.2-2.93.el6.x86_64
qemu-kvm-tools-0.12.1.2-2.93.el6.x86_64
gpxe-roms-qemu-0.9.7-6.3.el6.noarch

How reproducible:
always

Steps to Reproduce:
1. preapring tftp/pxe files, put kickstart into a floppy image.
# find images/tftpboot/
images/tftpboot/
images/tftpboot/pxelinux.cfg
images/tftpboot/pxelinux.cfg/default
images/tftpboot/pxelinux.0
images/tftpboot/vmlinuz
images/tftpboot/initrd.img

2. Add and setup private bridge.
# /usr/sbin/brctl addbr vbr0
# /usr/sbin/brctl stp vbr0 on
# /usr/sbin/brctl setfd vbr0 0
# ifconfig vbr0 192.168.58.1

3. Setup dhcp/tftp by dnsmasq.
# dnsmasq --strict-order --bind-interfaces --listen-address=192.168.58.1 --dhcp-range=192.168.58.2,192.168.58.254 --enable-tftp --tftp-root=/home/devel/push/client/tests/kvm/images/tftpboot --dhcp-boot=pxelinux.0;


Actual results:
Guest could not find tftp file/root.

Expected results:
Guest can find tftp file/root, and complete installation.


Additional info:

1. Network Script
# cat scripts/qemu-ifup-vbr0 
#!/bin/sh
switch=vbr0
/sbin/ifconfig $1 0.0.0.0 up
/usr/sbin/brctl addif ${switch} $1
/usr/sbin/brctl setfd ${switch} 0
/usr/sbin/brctl stp ${switch} off


2. RHEL5 Host Info:
dnsmasq-2.45-1.el5_2.1
kernel-2.6.18-203.el5
# rpm -qa |grep kvm
etherboot-zroms-kvm-5.4.4-12.el5
kmod-kvm-83-184.el5
etherboot-zroms-kvm-5.4.4-10.el5
kvm-83-184.el5
etherboot-zroms-kvm-5.4.4-13.el5
kvm-tools-83-184.el5
kvm-qemu-img-83-184.el5
kvm-debuginfo-83-184.el5

command line (using '-net tap' option) PASS
/home/devel/push/client/tests/kvm/qemu -name vm1 -monitor unix:/tmp/monitor-humanmonitor1-20100713-210418-xUHE,server,nowait -drive file=/home/devel/push/client/tests/kvm/isos/linux/RHEL4.8-x86_64-AS-DVD.iso,index=2,media=cdrom -drive file=/home/devel/push/client/tests/kvm/images/RHEL-4.8-64-virtio.qcow2,if=virtio,media=disk,cache=none,boot=on,format=qcow2 -net nic,vlan=0,model=virtio,macaddr=02:8F:F3:8D:a6:86 -net tap,vlan=0,ifname=virtio_0_8000,script=/home/devel/push/client/tests/kvm/scripts/qemu-ifup-vbr0,downscript=no -m 512 -smp 2 -soundhw ac97 -fda /home/devel/push/client/tests/kvm/images/floppy.img -vnc :0 -spice port=8000,disable-ticketing -rtc-td-hack -M rhel5.5.0 -usbdevice tablet -cpu qemu64,+sse2 -no-kvm-pit-reinjection -boot n -serial unix:/tmp/serial-20100713-210418-xUHE,server,nowait -no-hpet


3. RHEL6 Host Info:
command line (using '-net tap' option) FAIL
/root/push/client/tests/kvm/qemu -name vm1 -monitor unix:/tmp/monitor-humanmonitor1-20100713-163436-L4UL,server,nowait -drive file=/root/push/client/tests/kvm/isos/linux/RHEL6.0-Server-x86_64.iso,if=none,id=drive-ide0-0-0,media=cdrom,readonly=on,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file=/root/push/client/tests/kvm/images/RHEL-Server-6.0-64-virtio.qcow2,if=none,id=drive-virtio-disk1,media=disk,cache=none,boot=on,format=qcow2 -device virtio-blk-pci,drive=drive-virtio-disk1,id=virtio-disk1 -net nic,vlan=0,model=virtio,macaddr=02:A9:7C:6C:3c:f1 -net tap,vlan=0,ifname=virtio_0_8000,script=/root/push/client/tests/kvm/scripts/qemu-ifup-vbr0,downscript=no,vhost=on -m 3000 -smp 2 -fda /root/push/client/tests/kvm/images/floppy.img  -vnc :0 -spice port=8000,disable-ticketing -rtc base=utc,clock=host -M rhel6.0.0 -usbdevice tablet -cpu qemu64,+sse2 -no-kvm-pit-reinjection -boot n -serial unix:/tmp/serial-20100713-163436-L4UL,server,nowait

--
command line (using '-netdev' option) FAIL:
/root/push/client/tests/kvm/qemu -name 'vm1' -monitor unix:'/tmp/monitor-humanmonitor1-20100713-163436-L4UL',server,nowait -drive file='/root/push/client/tests/kvm/isos/linux/RHEL4.8-x86_64-AS-DVD.iso',if=none,id=drive-ide0-0-0,media=cdrom,readonly=on,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file='/root/push/client/tests/kvm/images/RHEL-4.8-64-virtio.raw',if=none,id=drive-virtio-disk1,media=disk,cache=writethrough,boot=on,format=raw -device virtio-blk-pci,drive=drive-virtio-disk1,id=virtio-disk1 -net nic,vlan=0,netdev=H6Jm,model=virtio,macaddr='02:A9:7C:6C:3c:f1' -netdev tap,id=H6Jm,ifname=virtio_0_8000,script=/root/push/client/tests/kvm/scripts/qemu-ifup-vbr0,downscript=no,vhost=on -m 3000 -smp 2 -fda '/root/push/client/tests/kvm/images/floppy.img' -vnc :0 -spice port=8000,disable-ticketing -rtc base=utc,clock=host -M rhel6.0.0 -usbdevice tablet -cpu qemu64,+sse2 -no-kvm-pit-reinjection -boot n -serial unix:/tmp/serial-20100713-163436-L4UL,server,nowait

Comment 3 RHEL Program Management 2010-07-15 14:59:50 UTC
This issue has been proposed when we are only considering blocker
issues in the current Red Hat Enterprise Linux release. It has
been denied for the current Red Hat Enterprise Linux release.

** If you would still like this issue considered for the current
release, ask your support representative to file as a blocker on
your behalf. Otherwise ask that it be considered for the next
Red Hat Enterprise Linux release. **

Comment 4 Dor Laor 2010-07-22 20:55:34 UTC
Can you check it w/ pxe/tftp daemon that does not run on the host?

Comment 5 Amos Kong 2010-07-28 08:13:38 UTC
(In reply to comment #4)
> Can you check it w/ pxe/tftp daemon that does not run on the host?    

No pxe/tftp daemon running on host.


dnsmasq daemon:
host) # ps aux |grep dns
nobody   17155  0.0  0.0  12792   636 ?        S    16:08   0:00 dnsmasq --strict-order --bind-interfaces --listen-address=192.168.58.1 --dhcp-range=192.168.58.2,192.168.58.254 --enable-tftp --tftp-root=/home/devel/push/client/tests/kvm/images/tftpboot/ --dhcp-boot=pxelinux.0

I can 'download' file pxelinux.0 from tftp server. (on rhel5 & 6 host)

# tftp 192.168.58.1
tftp> get pxelinux.0
tftp> quit
# ls -l pxelinux.0 
-rw-r--r--. 1 root root 16790 Jul 28 16:10 pxelinux.0

Comment 6 Amit Shah 2010-07-28 16:20:34 UTC
This looks like a gpxe issue.

Can you confirm if you can download the tftp files inside the guest started on rhel6?

Comment 7 Amit Shah 2010-07-29 04:09:17 UTC
This is a dupe of bug 594682. It's been identified there as a gpxe issue and passing --dhcp-no-override to dnsmasq helps. Marking as a duplicate.

*** This bug has been marked as a duplicate of bug 594682 ***

Comment 8 Amos Kong 2010-07-29 05:05:25 UTC
(In reply to comment #6)
> This looks like a gpxe issue.
> 
> Can you confirm if you can download the tftp files inside the guest started on
> rhel6?    

Yes.
guest) # ls pxelinux.0
ls: cannot access pxelinux.0: No such file or directory
guest) # tftp 192.168.58.1
tftp> get pxelinux.0
tftp> quit
guest) # ls -l pxelinux.0                   
-rw-r--r--. 1 root root 16790 Jul 29 13:03 pxelinux.0