www.immobilienscout24.de
Berlin | 08.05.2014 | Schlomo SchapiroSystems Architect & Open Source Evangelist
http://creativecommons.org/licenses/by-sa/4.0
iPXEThe Versatile Network Boot Loader
Preboot eXecution Environment
RPLEtherboot
gPXE
pxelinux
iPXENetBoot
RISCobbler
FAI KickstartAutoYAST
http://en.wikipedia.org/wiki/Preboot_Execution_Environmenthttp://networkboot.org/
iPXE
◉ full PXE implementation◉ boot from a web server via HTTP◉ boot from network block devices
➨ iSCSI SAN➨ Fibre Channel SAN via FCoE➨ AoE SAN
◉ boot from VLAN, WLAN, WAN◉ boot from an Infiniband network◉ control the boot process with a scripting language◉ user interaction with prompts and menus◉ display images and splash screens◉ replaces NIC boot ROM or chainload via PXE boot
ipxe.org
Michael Brown github.com/mcb30
Get or Build
◉ DEB: sudo apt-get install ipxe◉ RPM: Build it yourself
➨ git clone https://github.com/ImmobilienScout24/ipxe➨ cd ipxe/src➨ make srpm or make rpm
◉ Customizing➨ Uses C Header files➨ Add customization in config/local/*.h➨ Copy stuff from config/*.h➨ Example: config/local/console.h
#undef KEYBOARD_MAP#define KEYBOARD_MAP de
Usage - Loading
◉ 3 Flavours:➨ UNDI: undionly.kpxe➨ All Drivers: ipxe.dsk, ipxe.iso, ipxe.usb, ipxe.lkrn, ipxe.pxe➨ Single Driver: XXXXXXXX.rom
◉ PXE chainloading➨ dhcpd.conf:
filename "undionly.kpxe";
➨ dnsmasq.conf:
dhcp-boot=undionly.kpxe
Usage - Set Boot Action
◉ Provide Boot Source (dhcpd.conf), e.g. iSCSI LUN
option root-path "iscsi:iscsi.my.com::::iqn.1992-01.com.my.iscsi:target";
◉ Provide iPXE script (dhcpd.conf)
if exists user-class and option user-class = "iPXE" { filename "http://my.web.server/real_boot_script.php";} else { filename "undionly.kpxe";}
Usage - Advanced
◉ NIC flashing➨ Replace PXE firmware on your NIC➨ http://ipxe.org/howto/romburning➨ Best with embedded boot script➨ Great for creating low-cost AoE / FCoE / iSCSI HBA :-)
◉ Show login mask◉ Menus◉ Server interaction & information gathering:
chain http://my.com/collect?u=${uuid}&m=${mac}&a=${asset}◉ Use your fantasy…
Testing
◉ QEMU:qemu -bootp tftp://10.0.2.2//script.ipxe -tftp ~/tftp ipxe.usb
◉ VirtualBox:➨ Boot VM from ipxe.iso➨ Set TFTP filename to iPXE script:
VBoxManage modifyvm "ipxe test" --nattftpfile1 script.ipxe➨ Set TFTP Prefix to directory of iPXE script:
VBoxManage modifyvm "ipxe test" --nattftpprefix1 ~/tftp
◉ iPXE script: ~/tftp/script.ipxe
Example: DHCP or Manual Configuration
#!ipxeprompt --key 0x02 --timeout 10000 Press Ctrl-B for iPXE command line... && shell ||dhcp && goto netboot ||ifcloseecho -n Choose net0 or net1 or ...: ${} && read nicset ${nic}/dns 8.8.8.8set ${nic}/netmask 255.255.255.0config ${nic}ifopen ${nic}goto netboot
:netbootchain http://my.com/boot/main.ipxe || echo Error in iPXE chaining, try again 1chain http://my.com/boot/main.ipxe || echo Error in iPXE chaining, giving up
https://www.youtube.com/watch?v=EmyysqDhMII
Development
◉ Upcoming Features:➨ UEFI support➨ UNDIONLY driver as fall-back solution➨ Automated Testing published on ipxe.org
◉ Paid Support & Development➨ Author in UK➨ Available for contract work on iPXE
◉ Development & Community➨ Mostly in C➨ IRC and Mailing List
Q & A / See also
go.schapiro.org/slides
blog.schlomo.schapiro.org
yadt-project.org | visit us in hall 6, booth A07
Top Related