关于PXELINUX的一些重要描述摘录
以下资源都来自官方文档,原文摘录
PXELINUX is a SYSLINUX derivative, for booting Linux off a network server, using a network ROM conforming to the Intel PXE (Pre-Execution Environment) specification. PXELINUX is not a program that is intended to be flashed or burned into a PROM on the network card; if you want that, check out Etherboot. Etherboot 5.4 or later can also be used to create a PXE-compliant boot PROM for many network cards.
HOW TO CONFIGURE PXELINUX
PXELINUX operates in many ways like SYSLINUX. If you are not familiar with SYSLINUX, read syslinux.txt first, since this documentation only explains the differences.
On the TFTP server, create the directory "/tftpboot", and copy the following files to it:
-
- pxelinux.0 - from the SYSLINUX distribution
-
- any kernel or initrd images you want to boot
Finally, create the directory "/tftpboot/pxelinux.cfg". The configuration file (equivalent of syslinux.cfg -- see syslinux.txt for the options here) will live in this directory. Because more than one system may be booted from the same server, the configuration file name depends on the IP address of the booting machine. PXELINUX will search for its config file on the boot server in the following way:
-
- First, it will search for the config file using the client UUID, if one is provided by the PXE stack (note, some BIOSes don't have a valid UUID, and you might end up with something like all 1's.) This is in the standard UUID format using lower case hexadecimal digits, e.g. b8945908-d6a6-41a9-611d-74a6ab80b83d.
-
- Next, it will search for the config file using the hardware type (using its ARP type code) and address, all in lower case hexadecimal with dash separators; for example, for an Ethernet (ARP type 1) with address 88:99:AA:BB:CC:DD it would search for the filename 01-88-99-aa-bb-cc-dd.
-
- Next, it will search for the config file using its own IP address in upper case hexadecimal, e.g. 192.0.2.91 -> C000025B (you can use the included progam "gethostip" to compute the hexadecimal IP address for any host.)
-
- If that file is not found, it will remove one hex digit and try again. Ultimately, it will try looking for a file named "default" (in lower case).
-
- As an example, if the boot file name is /mybootdir/pxelinux.0, the UUID is b8945908-d6a6-41a9-611d-74a6ab80b83d, the Ethernet MAC address is 88:99:AA:BB:CC:DD and the IP address 192.0.2.91, it will try:
/mybootdir/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d
/mybootdir/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/mybootdir/pxelinux.cfg/C000025B
/mybootdir/pxelinux.cfg/C000025
/mybootdir/pxelinux.cfg/C00002
/mybootdir/pxelinux.cfg/C0000
/mybootdir/pxelinux.cfg/C000
/mybootdir/pxelinux.cfg/C00
/mybootdir/pxelinux.cfg/C0
/mybootdir/pxelinux.cfg/C
/mybootdir/pxelinux.cfg/default
-
- ... in that order.
Note that all filename references are relative to the directory pxelinux.0 lives in.
Starting in release 3.20, PXELINUX will no longer apply a built-in default if it cannot find any configuration file at all; instead it will reboot after the timeout interval has expired. This keeps a machine from getting stuck indefinitely due to a boot server failure.
SETTING UP THE TFTP SERVER
PXELINUX currently requires that the boot server has a TFTP server which supports the "tsize" TFTP option (RFC 1784/RFC 2349). There are both TFTP server,”atftp”and "tftp-hpa" ,which support options.
"tftp-hpa" is available at:
and on any kernel.org mirror (see http://www.kernel.org/mirrors/).
atftp is by Jean-Pierre Lefebvre:
If your boot server is running Windows (and you can't fix that), try tftpd32 by Philippe Jounin (you need version 2.11 or later; previous versions had a bug which made it incompatible with PXELINUX)
SETTING UP THE DHCP SERVER
A sample DHCP setup, using the "conventional TFTP" configuration, would look something like the following, using ISC dhcp 2.0 dhcpd.conf syntax:
allow bootp;
# Standard configuration directives...
option domain-name "<domain name>";
option subnet-mask <subnet mask>;
option broadcast-address <broadcast address>;
option domain-name-servers <dns servers>;
option routers <default router>;
# Group the PXE bootable hosts together
group {
# PXE-specific configuration directives...
next-server <TFTP server address>;
filename "/tftpboot/pxelinux.0";
# You need an entry like this for every host
# unless you're using dynamic addresses
host <hostname> {
hardware ethernet <ethernet address>;
fixed-address <hostname>;
}
}
With such a boot server defined, your DHCP configuration should look the same except for an "option dhcp-class-identifier" ("option vendor-class-identifier" if you are using DHCP 3.0):
allow booting;
allow bootp; # Standard configuration directives... option domain-name "<domain name>";
option subnet-mask <subnet mask>;
option broadcast-address <broadcast address>;
option domain-name-servers <dns servers>;
option routers <default router>; # Group the PXE bootable hosts together
group {
# PXE-specific configuration directives...
option dhcp-class-identifier "PXEClient";
next-server <pxe boot server address>; # You need an entry like this for every host
# unless you're using dynamic addresses
host <hostname> {
hardware ethernet <ethernet address>;
fixed-address <hostname>;
}
}
Here, the boot file name is obtained from the PXE server. (在这种配置中不用指定引导文件)
If the "conventional TFTP" configuration doesn't work on your clients, and setting up a PXE boot server is not an option(如果上述两种配置都无法正常工作), you can attempt the following configuration. It has been known to boot some configurations correctly; however, there are no guarantees:
allow booting;
allow bootp; # Standard configuration directives... option domain-name "<domain name>";
option subnet-mask <subnet mask>;
option broadcast-address <broadcast address>;
option domain-name-servers <dns servers>;
option routers <default router>; # Group the PXE bootable hosts together
group {
# PXE-specific configuration directives...
option dhcp-class-identifier "PXEClient";
option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:00:00:ff;
next-server <TFTP server>;
filename "/tftpboot/pxelinux.0"; # You need an entry like this for every host
# unless you're using dynamic addresses
host <hostname> {
hardware ethernet <ethernet address>;
fixed-address <hostname>;
}
}
Note that this will not boot some clients that will boot with the "conventional TFTP" configuration; Intel Boot Client 3.0 and later are known to fall into this category.
最新文章
- 计算Div标签内Checkbox个数或已被disabled的个数
- SSDB 主从配置
- jqgrid 中的事件
- 把excel导入的自定义时间改成yyyyMMdd
- PHP 中:: ->; self $this 操作符的区别
- 团队开发——冲刺2.b
- kali linux 系列教程之metasploit 连接postgresql可能遇见的问题
- IntelliJ IDEA 下的版本控制介绍
- linux 下安装 搭建 svn服务器
- hdu 1316 How Many Fibs?
- res/raw和assets的 区别
- eclipse配置tomcat加大内存的方法
- php远程读取json的方法
- 【转】warning C4819,该文件保存为 Unicode 格式以防止数据丢失,处理方法
- 使用java的Calendar对象获得当前日期的上几个度开始、结束时间
- BLE开发的各种坑
- 2016ICPC China-finals 题解
- hdu 4162 Shape Number 最小表示法
- java基础增强
- [ SSH框架 ] Hibernate框架学习之三