Comment 7 for bug 457767

Revision history for this message
Mathias Gug (mathiaz) wrote :

Marking the bug confirmed as I've been able to reproduce it in a kvm+libvirt environment using gPXE to boot off the iscsi target.

To reproduce, you'll need two guests and manage the dhcp server configuration (to send specific dhcp option to the iscsi initiator system).

Using libvirt:

1. Create a network that doesn't have a dhcp server running:

<network>
  <name>net1</name>
  <uuid>44648543-d59d-4e61-94b4-61450fff3474</uuid>
  <forward mode='nat'/>
  <bridge name='virbr1' stp='on' forwardDelay='0' />
  <ip address='192.168.222.1' netmask='255.255.255.0' />
</network>

2. Install a guest that will act as the iscsi target (see comment 4). Moreover install dnsmasq in the guest: the iscsi target will serve as the boot server for the network (dhcp+tftpboot). Configure dnsmasq to act as the boot server on the network:

mathiaz@itarget:~$ cat /etc/dnsmasq.d/pxe
#DHCP part
domain=example.org
dhcp-range=192.168.222.100,192.168.222.150,255.255.255.0,2h
dhcp-option=option:router,192.168.222.1
dhcp-authoritative

# TFTP part
enable-tftp
tftp-root=/srv/tftproot

dhcp-match=gpxe,175 # tags the request with net:gpxe if the gPXE option was supplied in DHCP request
dhcp-option=175,8:1:1 # turn on the keep-san option to allow installation
dhcp-boot=net:#gpxe,virtio-net.pxe # Here #gpxe means 'not gpxe': that is the tag is not set
dhcp-option=net:gpxe,17,"iscsi:192.168.222.2::::iqn.2001-04.com.example:storage.disk1"

3. Get a virtio-net PXE boot room (Unload PXE stack) from http://rom-o-matic.net/ and put in /srv/tftproot/ as virtio-net.pxe (as outlined in the configuration file above).

4. Define a guest with no block devices:

mathiaz@uec-node:~/images/client1$ cat libvirt.xml
<domain type='kvm'>
  <name>client1</name>
  <uuid>1adaabdc-ea8d-4328-87cb-8aa47f64acd4</uuid>
  <memory>512000</memory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='network'/>
    <boot dev='cdrom' />
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='cdrom'>
      <source file='/home/mathiaz/isos/mini.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>
    <interface type='network'>
      <mac address='52:54:00:d1:ea:a1'/>
      <source network='net1'/>
      <model type='virtio'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5902' autoport='yes' listen='0.0.0.0'/>
  </devices>
</domain>

The guest will first try to boot for the network then from the mini.iso file.

5. Start the install on ISCSI: connect to the vnc console of the guess and skip the network boot (Q). The mini.iso prompt should show up. Start the install with "cli iscsi=true".

6. Go through the install, skipping any block device installation. At partition time, start by login into the iscsi target and then install to the newly created SCSI device.

7. When the installation has finished reboot the system and boot from the network. The guest should chainload the gPXE rom from the network. gPXE should then log into the target and load grub from there.