Difference between revisions of "IPXE"

From coreboot
Jump to: navigation, search
(Booting)
(Building and Running in seaBIOS howto)
(9 intermediate revisions by one user not shown)
Line 4: Line 4:
  
 
== Building and Running in seaBIOS howto ==
 
== Building and Running in seaBIOS howto ==
 +
Here are the goals of this howto:
 +
* fits in 128k for easier building process(if you find an easy way that makes possible to have bigger iPXE, update that howto...)
 +
* boot over an ath9k WiFi over an open/unencrypted wifi to an image that resides on the internet...
 +
* Use the following boot procedure: coreboot->seaBios->iPXE->image on the internet.
 
=== Building ===
 
=== Building ===
 +
Identify your wireless network card:
 +
# lspci
 +
[...]
 +
03:06.0 Network controller: Atheros Communications Inc. AR922X Wireless Network Adapter (rev 01)
 +
Identify its PCI IDs:
 +
# lspci -s 03:06.0 -nnn
 +
03:06.0 Network controller [0280]: Atheros Communications Inc. AR922X Wireless Network Adapter [168c:0029] (rev 01)
 +
get ipxe:
 +
git clone git://git.ipxe.org/ipxe.git
 +
cd ipxe/src/
 +
Copy the following into config/local/general.h:
 +
#undef PXE_STACK              /* PXE stack in iPXE - you want this! */
 +
#undef PXE_MENU                /* PXE menu booting */
 +
#undef DOWNLOAD_PROTO_TFTP    /* Trivial File Transfer Protocol */
 +
#undef SANBOOT_PROTO_ISCSI    /* iSCSI protocol */
 +
#undef SANBOOT_PROTO_AOE      /* AoE protocol */
 +
#undef SANBOOT_PROTO_IB_SRP    /* Infiniband SCSI RDMA protocol */
 +
#undef SANBOOT_PROTO_FCP      /* Fibre Channel protocol */
 +
#undef CRYPTO_80211_WEP        /* WEP encryption (deprecated and insecure!) */
 +
#undef CRYPTO_80211_WPA        /* WPA Personal, authenticating with passphrase */
 +
#undef CRYPTO_80211_WPA2      /* Add support for stronger WPA cryptography */
 +
#undef IMAGE_NBI              /* NBI image support */
 +
#undef IMAGE_ELF              /* ELF image support */
 +
#undef IMAGE_MULTIBOOT        /* MultiBoot image support */
 +
#undef IMAGE_PXE              /* PXE image support */
 +
#define        IMAGE_SCRIPT            /* iPXE script image support */
 +
#define        IMAGE_BZIMAGE          /* Linux bzImage image support */
 +
#undef IMAGE_COMBOOT          /* SYSLINUX COMBOOT image support */
 +
#undef IMAGE_EFI              /* EFI image support */
 +
#undef IMAGE_SDI              /* SDI image support */
 +
#undef NVO_CMD                /* Non-volatile option storage commands */
 +
#define CONFIG_CMD              /* Option configuration console */
 +
#undef FCMGMT_CMD              /* Fibre Channel management commands */
 +
#undef ROUTE_CMD              /* Routing table management commands */
 +
#define IMAGE_CMD              /* Image management commands */
 +
#undef SANBOOT_CMD            /* SAN boot commands */
 +
#undef MENU_CMD                /* Menu commands */
 +
#undef LOGIN_CMD              /* Login command */
 +
#undef SYNC_CMD                /* Sync command */
 +
#undef NSLOOKUP_CMD            /* DNS resolving command */
 +
#undef TIME_CMD                /* Time commands */
 +
#undef DIGEST_CMD              /* Image crypto digest commands */
 +
#undef LOTEST_CMD              /* Loopback testing commands */
 +
#undef VLAN_CMD                /* VLAN commands */
 +
#undef PXE_CMD        /* PXE commands */
 +
#undef REBOOT_CMD            /* Reboot command */
 +
#undef IMAGE_TRUST_CMD /* Image trust management commands */
 +
Use the previously gathered PCI ID to include only the ath9k driver:
 +
make clean;make bin/168c0029.rom -j3
 +
Go into your coreboot directory:
 +
cd ../../coreboot/
 +
Add the iPXE option rom:
 +
./build/cbfstool ./build/coreboot.rom print
 +
./build/cbfstool ./build/coreboot.rom add ../ipxe/src/bin/168c0029.rom pci168c,0029.rom raw
 +
./build/cbfstool ./build/coreboot.rom print
 
=== Booting ===
 
=== Booting ===
 
* keep pressing ctrl+b while booting
 
* keep pressing ctrl+b while booting
 
* it will give you a shell:
 
* it will give you a shell:
  iPXE> _
+
  iPXE>
 
* You will then need to type some commands to make it boot on the WiFi from the Internet.
 
* You will then need to type some commands to make it boot on the WiFi from the Internet.
 
* Identify your ESSID
 
* Identify your ESSID

Revision as of 16:35, 7 October 2012

iPXE is a tool for loading an operating system over a network. It is a fork of GPXE.

Like GPXE uses legacy BIOS callbacks, and it works well with SeaBIOS. See GPXE.

Building and Running in seaBIOS howto

Here are the goals of this howto:

  • fits in 128k for easier building process(if you find an easy way that makes possible to have bigger iPXE, update that howto...)
  • boot over an ath9k WiFi over an open/unencrypted wifi to an image that resides on the internet...
  • Use the following boot procedure: coreboot->seaBios->iPXE->image on the internet.

Building

Identify your wireless network card:

# lspci
[...]
03:06.0 Network controller: Atheros Communications Inc. AR922X Wireless Network Adapter (rev 01)

Identify its PCI IDs:

# lspci -s 03:06.0 -nnn
03:06.0 Network controller [0280]: Atheros Communications Inc. AR922X Wireless Network Adapter [168c:0029] (rev 01)

get ipxe:

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

Copy the following into config/local/general.h:

#undef PXE_STACK               /* PXE stack in iPXE - you want this! */
#undef PXE_MENU                /* PXE menu booting */
#undef DOWNLOAD_PROTO_TFTP     /* Trivial File Transfer Protocol */
#undef SANBOOT_PROTO_ISCSI     /* iSCSI protocol */
#undef SANBOOT_PROTO_AOE       /* AoE protocol */
#undef SANBOOT_PROTO_IB_SRP    /* Infiniband SCSI RDMA protocol */
#undef SANBOOT_PROTO_FCP       /* Fibre Channel protocol */
#undef CRYPTO_80211_WEP        /* WEP encryption (deprecated and insecure!) */
#undef CRYPTO_80211_WPA        /* WPA Personal, authenticating with passphrase */
#undef CRYPTO_80211_WPA2       /* Add support for stronger WPA cryptography */
#undef IMAGE_NBI               /* NBI image support */
#undef IMAGE_ELF               /* ELF image support */
#undef IMAGE_MULTIBOOT         /* MultiBoot image support */
#undef IMAGE_PXE               /* PXE image support */
#define        IMAGE_SCRIPT            /* iPXE script image support */
#define        IMAGE_BZIMAGE           /* Linux bzImage image support */
#undef IMAGE_COMBOOT           /* SYSLINUX COMBOOT image support */
#undef IMAGE_EFI               /* EFI image support */
#undef IMAGE_SDI               /* SDI image support */
#undef NVO_CMD                 /* Non-volatile option storage commands */
#define CONFIG_CMD              /* Option configuration console */
#undef FCMGMT_CMD              /* Fibre Channel management commands */
#undef ROUTE_CMD               /* Routing table management commands */
#define IMAGE_CMD               /* Image management commands */
#undef SANBOOT_CMD             /* SAN boot commands */
#undef MENU_CMD                /* Menu commands */
#undef LOGIN_CMD               /* Login command */
#undef SYNC_CMD                /* Sync command */
#undef NSLOOKUP_CMD            /* DNS resolving command */
#undef TIME_CMD                /* Time commands */
#undef DIGEST_CMD              /* Image crypto digest commands */
#undef LOTEST_CMD              /* Loopback testing commands */
#undef VLAN_CMD                /* VLAN commands */
#undef PXE_CMD         /* PXE commands */
#undef REBOOT_CMD             /* Reboot command */
#undef IMAGE_TRUST_CMD /* Image trust management commands */

Use the previously gathered PCI ID to include only the ath9k driver:

make clean;make bin/168c0029.rom -j3

Go into your coreboot directory:

cd ../../coreboot/

Add the iPXE option rom:

./build/cbfstool ./build/coreboot.rom print
./build/cbfstool ./build/coreboot.rom add ../ipxe/src/bin/168c0029.rom pci168c,0029.rom raw
./build/cbfstool ./build/coreboot.rom print

Booting

  • keep pressing ctrl+b while booting
  • it will give you a shell:
iPXE>
  • You will then need to type some commands to make it boot on the WiFi from the Internet.
  • Identify your ESSID
iwlist
  • set the ESSID
config
  • get an IP Address
dhcp
  • test the official demo (requires a ps2 keyboard)
chain http://boot.ipxe.org/demo/boot.php