====== Differences ====== This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
wirelessboot [2009/08/11 15:10] rwcr created |
wirelessboot [2009/11/29 12:30] (current) rwcr wireless_settings.gpxe => wireless.gpxe |
||
---|---|---|---|
Line 4: | Line 4: | ||
//**Note:** the contents of this page rely on some features that are not yet present in mainline gPXE, but hopefully they should be there soon.// | //**Note:** the contents of this page rely on some features that are not yet present in mainline gPXE, but hopefully they should be there soon.// | ||
+ | |||
+ | For the curious, some [[:wirelessboot:implementation|implementation details]] are available. | ||
===== Supported hardware ===== | ===== Supported hardware ===== | ||
Line 15: | Line 17: | ||
Set up your DHCP server as you would for a wired boot, and figure out how you're going to be loading gPXE; for a first test, burning ''gpxe.iso'' to a CD is probably the easiest option. Boot into gPXE, and press Ctrl-B to get a shell prompt. Type | Set up your DHCP server as you would for a wired boot, and figure out how you're going to be loading gPXE; for a first test, burning ''gpxe.iso'' to a CD is probably the easiest option. Boot into gPXE, and press Ctrl-B to get a shell prompt. Type | ||
- | gPXE> **iwstat** | + | gPXE> iwstat |
- | (type only the parts in bold) and you should be given output similar to ''ifstat'' about all detected wireless NICs. For example, on my test machine with two wireless and two wired NICs, I get the output | + | and you should be given output similar to ''ifstat'' about all detected wireless NICs. For example, on my test machine with two wireless and two wired NICs, I get the output |
net1: 00:08:54:94:fe:cc on PCI00:09.0 (closed) | net1: 00:08:54:94:fe:cc on PCI00:09.0 (closed) | ||
[Link:down, TX:0 TXE:0 RX:0 RXE:0] | [Link:down, TX:0 TXE:0 RX:0 RXE:0] | ||
Line 28: | Line 30: | ||
If you did find one or more wireless NICs, you can check which networks each can access: | If you did find one or more wireless NICs, you can check which networks each can access: | ||
- | gPXE> **iwlist** | + | gPXE> iwlist |
Networks on net1: | Networks on net1: | ||
| | ||
Line 48: | Line 50: | ||
The output will take a few seconds to show up for each NIC; hopefully the network you want to connect to is in the list! (In my case, the two cards "see" different networks because their antennas are positioned differently.) The number under ''[Sig]'' is a dimensionless measure of signal strength. | The output will take a few seconds to show up for each NIC; hopefully the network you want to connect to is in the list! (In my case, the two cards "see" different networks because their antennas are positioned differently.) The number under ''[Sig]'' is a dimensionless measure of signal strength. | ||
- | If you've found your network, or even if you haven't, you can try connecting to it, replacing italicized parts in the following example with your actual details: | + | If you've found your network, or even if you haven't, you can try connecting to it, adjusting details as appropriate for your situation: |
- | gPXE> **set net//0///ssid //gPXE//** [your network name] | + | gPXE> set net0/ssid gPXE [your network name] |
- | gPXE> **set net//0///key //seeecret//** [for WPA-PSK or a WEP key in ASCII] | + | gPXE> set net0/key seeecret [for WPA-PSK or a WEP key in ASCII] |
- | gPXE> **set net//0///key:hex //aa:bb:cc:dd:ee//** [for a WEP key in hex] | + | gPXE> set net0/key:hex aa:bb:cc:dd:ee [for a WEP key in hex] |
- | gPXE> **dhcp net//0//** | + | gPXE> dhcp net0 |
- | Waiting for link-up on net0... //[about a second pause]// ok | + | Waiting for link-up on net0... ok |
DHCP (net0 00:08:54:94:fe:cc).... ok | DHCP (net0 00:08:54:94:fe:cc).... ok | ||
On WPA, output like | On WPA, output like | ||
- | Waiting for link-up on net0... //[about 15 seconds pause]// failed: Connection reset (0x0f1f6239) | + | Waiting for link-up on net0... failed: Connection reset (0x0f1f6239) |
Could not configure net0: Connection reset (0x0f1f6239) | Could not configure net0: Connection reset (0x0f1f6239) | ||
suggests that you've specified an incorrect password. | suggests that you've specified an incorrect password. | ||
Line 66: | Line 68: | ||
Could not configure net0: Connection timed out (0x4c106035) | Could not configure net0: Connection timed out (0x4c106035) | ||
suggests the same, especially if ''iwstat net0'' shows a line like | suggests the same, especially if ''iwstat net0'' shows a line like | ||
- | [TXE: 4 x "Packet decryption error (0x1c1f6602)"] | + | [RXE: 4 x "Packet decryption error (0x1c1f6602)"] |
For any other error, consult us on the Etherboot-discuss mailing list or the ''#etherboot'' IRC channel; especially remember to specify the eight-digit error code(s) beginning with ''0x''. | For any other error, consult us on the Etherboot-discuss mailing list or the ''#etherboot'' IRC channel; especially remember to specify the eight-digit error code(s) beginning with ''0x''. | ||
Line 74: | Line 76: | ||
Unlike DHCP on a wired network, connecting to wireless requires that some settings be provided before any network services can be accessed at all. Specifically, you need to specify the SSID and encryption key (as above) before you can run DHCP. These are set per network device, and have the gPXE setting names ''net//X///ssid'' and ''net//X///key'' respectively, where ''//X//'' is the number of your network device. | Unlike DHCP on a wired network, connecting to wireless requires that some settings be provided before any network services can be accessed at all. Specifically, you need to specify the SSID and encryption key (as above) before you can run DHCP. These are set per network device, and have the gPXE setting names ''net//X///ssid'' and ''net//X///key'' respectively, where ''//X//'' is the number of your network device. | ||
- | Currently no wireless NIC has support for gPXE's NVRAM settings support, but if you have a wired NIC with such support you may be able to use the ''config'' command at the gPXE prompt to set the settings permanently. Otherwise, you'll need to create a small gPXE script and embed it. For example, put this in a file named ''wireless_settings.gpxe'': | + | Currently no wireless NIC has support for gPXE's NVRAM settings support, but if you have a wired NIC with such support you may be able to use the ''config'' command at the gPXE prompt to set the settings permanently. Otherwise, you'll need to create a small gPXE script and embed it. For example, put this in a file named ''wireless.gpxe'': |
#!gpxe | #!gpxe | ||
set net0/ssid mynetwork | set net0/ssid mynetwork | ||
set net0/key seeecret | set net0/key seeecret | ||
autoboot | autoboot | ||
- | Compile gPXE with ''EMBEDDED_IMAGE=wireless_settings.gpxe'' on your ''make'' command line, and boot it; it should boot off the wireless network automatically. | + | Compile gPXE with ''EMBEDDED_IMAGE=wireless.gpxe'' on your ''make'' command line, and boot it; it should boot off the wireless network automatically. |
Congratulations on successfully booting gPXE over wireless! | Congratulations on successfully booting gPXE over wireless! | ||
Line 86: | Line 88: | ||
Unfortunately, to the best of our knowledge there is no wireless NIC with an onboard EEPROM or a socket for a ROM. As such, if you want truly diskless booting, you'll need to use a wired NIC as a ROM carrier. Since wireless ROM images tend to get rather large, an Intel e1000 NIC is ideal; it's easy to flash and has a 128kB EEPROM built-in. Compile your ROM like | Unfortunately, to the best of our knowledge there is no wireless NIC with an onboard EEPROM or a socket for a ROM. As such, if you want truly diskless booting, you'll need to use a wired NIC as a ROM carrier. Since wireless ROM images tend to get rather large, an Intel e1000 NIC is ideal; it's easy to flash and has a 128kB EEPROM built-in. Compile your ROM like | ||
- | % **make bin/ath5k.rom EMBEDDED_IMAGE=wireless_settings.gpxe** | + | % make bin/ath5k.rom EMBEDDED_IMAGE=wireless_settings.gpxe |
- | % **./util/modrom.pl -p 0x8086,0x107c bin/ath5k.rom** [replace with PCI IDs of your ROM-carrier NIC] | + | % ./util/modrom.pl -p 0x8086,0x107c bin/ath5k.rom [replace with PCI IDs of your ROM-carrier NIC] |
and burn ''bin/ath5k.rom'' onto your ROM-carrier NIC. | and burn ''bin/ath5k.rom'' onto your ROM-carrier NIC. | ||