iPXE boot over Wireless Network

6.5k Views Asked by At

I am looking for a way to clone a stack of laptops who do not have an ethernet-port.

I have a Clonezilla-server up and running, where i can clone to other laptops over TFTP or HTTP.

iPXE.org claims to have a wireless solution to go over HTTP. To Date i have not found a way to make this work. If i go the iPXE (wired) to HTTP route i get no problems.

Anyone has alot of experience with iPXE wireless?

To start i dont think iPXE has support for the wireless drivers in the laptops i am trying this on, but i could find no information over this on ipxe.org.

P.S. i know i probably have left alot of info out of the question that will prove necessary in the future, but i have no idea how to start this question any more decent, so forgive me for that. I will try to update the question as frequent as i can.

1

There are 1 best solutions below

0
On

Since none replied i thought i share the solution i found with you guys. This is a snippit from a decent guide i found on coreboot.org

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 */

#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 */

Copy the following in the shell.ipxe file:

#!ipxe shell

shell.ipxe is an ipxe script that ipxe will run when starting, here it will instruct ipxe to drop directly to a shell. The syntax is documented on ipxe website.

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

make clean; make -j3 bin/168c0029.rom EMBED=./shell.ipxe

Go into your coreboot directory:

cd ../../coreboot/

Add the iPXE option rom:

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

Booting

boot on ipxe, it will give you a shell: iPXE> You will then need to type some commands to make it boot over the WiFi from the Internet.

Identify your ESSID:

iwlist

Set the ESSID:

config

Get an IP address:

dhcp

Test the official demo (requires a PS/2 keyboard)

chain http://boot.ipxe.org/demo/boot.php