Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pxechaining [2009/08/29 02:05] tal.aloni explanation about the UNDI driver |
pxechaining [2010/07/14 13:09] (current) vutcovici |
||
---|---|---|---|
Line 8: | Line 8: | ||
Universal Network Device Interface (UNDI) is an application programming interface (API) for network interface cards (NIC) used by the Preboot Execution Environment (PXE) protocol. | Universal Network Device Interface (UNDI) is an application programming interface (API) for network interface cards (NIC) used by the Preboot Execution Environment (PXE) protocol. | ||
- | when chainloading gPXE from PXE, gPXE can use this API (instead of loading an hardware driver). this way, you're getting support for network controllers that are not natively supported by gPXE. some network contollers have improved performance when using the UNDI driver over the vendor specific gPXE driver (forcedeth for example). | + | When chainloading gPXE from PXE, gPXE can use this API (instead of loading an hardware driver). This way, you're getting support for network controllers that are not natively supported by gPXE. some network controllers have improved performance when using the UNDI driver over the vendor specific gPXE driver (forcedeth for example). |
- | to use the UNDI driver, select the UNDI driver (UNDIONLY) when generating the gPXE ROM. | + | To use the UNDI driver, select the UNDI driver (undionly) when generating the gPXE ROM. |
===== Setting up PXE chainloading ===== | ===== Setting up PXE chainloading ===== | ||
Line 61: | Line 61: | ||
# host part, a VM that will be booted from network | # host part, a VM that will be booted from network | ||
# 00:0C:29 - the MAC part of VMware vendor - we are booting a VM | # 00:0C:29 - the MAC part of VMware vendor - we are booting a VM | ||
- | dhcp-host=00:0c:29:aa:bb:cc,gPXE-client,net:gPXE-PCnet32,192.168.10.100,10m | + | # here we chainload gPXE |
- | dhcp-boot=net:gPXE-PCnet32,gpxe-git-pcnet32.pxe | + | dhcp-host=00:0c:29:aa:bb:cc,gPXE-client,net:gPXE-testVM,192.168.10.100,10m |
+ | dhcp-boot=net:gPXE-testVM,undionly.kpxe | ||
+ | # for a gPXE enabled client we are asking him to boot from a image located at an URL. The image can be a gPXE script | ||
dhcp-userclass=gPXE-booted,"gPXE" | dhcp-userclass=gPXE-booted,"gPXE" | ||
dhcp-boot=net:gPXE-booted,http://my.web.server/real_boot_script.php | dhcp-boot=net:gPXE-booted,http://my.web.server/real_boot_script.php | ||
- | The file gpxe-git-pcnet32.pxe is located in the /tftproot/ folder. | + | The file undionly.kpxe is located in the /tftproot/ folder. |
+ | To build undionly.kpxe run: | ||
+ | wget http://kernel.org/pub/software/utils/boot/gpxe/gpxe-1.0.1.tar.bz2 | ||
+ | tar jxf gpxe-1.0.1.tar.bz2 | ||
+ | cd gpxe-1.0.1/src | ||
+ | make DEBUG=http,iscsi,tftp,dhcp bin/undionly.kpxe&&sudo cp bin/undionly.kpxe /tftproot/undionly.kpxe | ||
+ | |||
+ | ==== Using pxelinux, menu.c32 and dnsmasq to chainload gPXE ==== | ||
+ | If you want to test gPXE but you are using extensively pxelinux and you do not want to break the rest of your configuration, you can add a menu entry to load gPXE. | ||
+ | The ''/etc/dnsmasq.conf'' should contain something like: | ||
+ | #DHCP | ||
+ | domain=mydomain | ||
+ | dhcp-range=192.168.10.100,192.168.10.200,255.255.255.0,30m | ||
+ | dhcp-option=option:router,192.168.10.1 | ||
+ | dhcp-authoritative | ||
+ | |||
+ | # TFTP part | ||
+ | enable-tftp | ||
+ | tftp-root=/tftproot | ||
+ | |||
+ | # PXE | ||
+ | dhcp-boot=/tftproot/pxelinux.0 | ||
+ | # required by old versions of gPXE (e.g. the one that comes with OracleVM) | ||
+ | dhcp-no-override | ||
+ | The ''/tftproot/pxelinux.cfg/default'' should contain: | ||
+ | DEFAULT menu.c32 | ||
+ | PROMPT 1 | ||
+ | |||
+ | LABEL gpxe | ||
+ | MENU LABEL gPXE - chainload gPXE from a PXE capable NIC | ||
+ | KERNEL undionly.0 | ||
+ | On an Ubuntu system install ''syslinux'' package and make ''/tftproot/pxelinux.0'' symlink to ''/usr/lib/syslinux/pxelinux.0''. | ||
+ | The file ''/tftproot/undionly.0'' is a symlink to ''/tftproot/undionly.kpxe''. | ||
==== Using the Windows DHCP server ==== | ==== Using the Windows DHCP server ==== |