Table of Contents
BKO and static networking issues
Problem
Though gpxe works fine with static networking information, problem is with linux destributions.
I have modified all linux distributions to use udhcpc
for getting networking configuration by using DHCP
.
So in current setup, the linux will boot, but it will never get networking configuration for static network and hence, it will never progress.
Possible solution 1 : manual configuration
Ask user to enter the networking configuration. But this is very lame way of doing it.
Possible solution 2 : use gpxe configuration
As gpxe is have properly working networking configuration, we can reuse it. The problem in this is that,
- how do gpxe passes the networking configuration information to
pxelinux.0
? - How do pxelinux.0 passes this information to linux kernel?
Passing information from pxelinux.0 to linux kernel
Linux kernel can take parameter which will have network configuration info.
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
Refer to Documentation/filesystems/nfsroot.txt for more details on these parameters
The unknown factor here is that, if information is with pxelinux.0
, and parameters are taken from config file.
So, I need a way by which configuration file can inform pxelinux.0
to fill in the <client-ip>, <gw-ip>, <netmask> with values it is having.
I would also like to pass on the DNS ip which is not an option above. I may add one more parameter, or reuse <server-ip> as <dns-ip>
Passing information from gpxe to pxelinux.0
I don't have any clue about this part. This part may prove to be tricky. Following are the parameters that I need to pass on.
- net0/ip
- net0/netmask
- net0/gateway
- net0/dns
Again, I need to pass the values of these variables, I hope that gpxe is capable of doing this.
Solution
IPAPPEND
worked for me without any problems. Honestly, I do not understand how it works, but I am using IPAPPEND 3
(because I have been told to use this option).
Unfortunately, the documentation related to IPAPPEND is quite hard to find. Any pointers on how exactly IPAPPEND works will be helpful.
Small drawback of this solution is that, the DNS entry is not passed. So, I won't be able to use URL's and I have to stick to IP only.