IPXE

From HackerNet
Jump to: navigation, search

iPXE är en open source network boot firmware. Funkar precis som vanliga PXE fast med en del extra features som:

  • Boota från web server via HTTP.
  • Boota från ett iSCSI SAN, AoE SAN eller Fibre channel SAN via FCoE.
  • Boota från Wi-Fi eller WAN koppling.
  • Boota från ett Infiniband nätverk.
  • Kontrollera boot processen med hjälp av script.

Man kan flasha in iPXE ROM filen på sitt nätverkskort. Vill man inte det kan man ladda iPXE över TFTP med PXE. Se även PXE-Deploy

Förberedelse

För att kunna bygga iPXE från source koden behövs följande paket:

  • gcc (version 3 or later)
  • binutils (version 2.18 or later)
  • make
  • perl
  • syslinux (for isolinux, only needed for building .iso images)
  • liblzma or xz header files
  • zlib, binutils and libiberty header files (only needed for EFI builds)

Installation

Ladda hem senaste source koden från GIT.

git clone git://git.ipxe.org/ipxe.git && cd ipxe/src
make

Bootbar ISO

iPXE har en egen bootbar ISO om man vill prova snabbt och enkelt.

VMware

Du kan byta ut VMwares PXE rom med iPXE.

iPXE har stöd för följande vmware nics.

VMware name

iPXE driver name

PCI vendor:device IDs

iPXE ROM image

e1000 intel 8086:100f 8086100f.mrom
e1000e intel 8086:10d3 808610d3.mrom
vlance pcnet32 1022:2000 10222000.rom
vmxnet (not supported) 15ad:0720
vmxnet3 vmxnet3 15ad:07b0 15ad07b0.rom

Börja med att välja en av dom supportade nics genom att ändra följande rad i din .vmx fil.

ethernet0.virtualDev = "e1000"

Ladda hem source koden och bygg filerna med följande kommando.

git clone git://git.ipxe.org/ipxe.git && cd ipxe/src
make bin/8086100f.mrom bin/808610d3.mrom bin/10222000.rom bin/15ad07b0.rom

Kopiera sedan över följande filer 8086100f.mrom, 808610d3.mrom, 10222000.rom och 15ad07b0.rom till din vmware server och lägg dom på tex ett datastore.

Lägg sedan till följande rader i din .vmx fil.

ethernet0.opromsize = 262144
e1000bios.filename = "/path/to/datastore/8086100f.mrom"
e1000ebios.filename = "/path/to/datastore/808610d3.mrom"
nbios.filename = "/path/to/datastore/10222000.rom"
# nxbios.filename = ""
nx3bios.filename = "/path/to/datastore/15ad07b0.rom"