帖子
以下是抄来的....其实都不知道装的是syslinux的还是啥了。仅DHCP是不能的,是pxe做了proxyDHCP, 才完成了引导,加载的怕就是syslinux
笔记: SYSLINUX PXE gPXE iPXE PXELINUX DHCP 无盘 远程 启动(2012-11-08 13:19:34)转载▼标签: pxesyslinux远程启动 分类: 技术笔记
本文是笔记,不保证100%正确,提醒自己用而已,如有错误欢迎指正。谢谢。
QQ: 89175244
PXE/gPXE/iPXE/DHCP/PXELINUX/SYSLINUX等的概念和其作用一定要清晰,不然思路很容易乱。
1.
PXE是Intel提出的,用以网卡启动。通过DHCP获取IP以及TFTP获取启动文件。
gPXE/iPXE是PXE的扩展版,支持HTTP等多种获取手段。iPXE由gPXE分支而来(fork),功能更丰富。
一般网卡ROM支持PXE,但不支持gPXE/iPXE,除非刷ROM。
SYSLINUX 是一个bootloader,和GRUB等无异。
PXELINUX 是一个支持PXE的bootloader,SYSLINUX不支持PXE。PXELINUX/SYSLINUX语法基本一致。
2.
如要用PXE启动,DHCP需要支持PXE协议,普通DHCP回复是被PXE忽略的。主流DHCP服务器如ISC DHCP Server都支持PXE协议 (通过指定name实现)。
3.
gPXE/iPXE支持多种方式(如网卡ROM<.rom>,U盘<.usb>,CDROM ISO<.liso>,KERNEL<.lkrn>,供PXE调用的ROM<.pxe>等),所以会有不同的封装形式,要区分清楚。如把网卡ROM当KERNEL使用就是一个错误,又比如SYSLINUX中读取了ROM版,而不是kernel版的gPXE。
提醒:“PXELINUX(另外一个支持PXE启动的工具)”和“PXE版的gPXE”都是PXE的客户端;“内核版的gPXE”是供SYSLINUX这类bootloader使用的内核,和vmlinuz这类无差别。
3.1. 传统方式链式CHAINLOAD(如SYSLINUX/GRUB/LOADIN等)调用gPXE/iPXE
SYSLINUX: KERNEL gpxe.lkrn
GRUB: KERNEL gpxe.lkrn
供SYSLINUX使用的内核版本的iPXE,可从编译出的ISO文件中提取,名字是ipxe.krn。
3.2. PXE调用gPXE/iPXE
DHCP设置bootfile为gpxe.pxe/ipxe.pxe文件就可以了(如替代pxelinux.0文件),以减少改动幅度。当然,DHCP也需要调整,需要区分开PXE和gPXE/iPXE的DHCP请求,可参考gPXE: http://etherboot.org/wiki/pxechaining#using_isc_dhcpd
iPXE: http://ipxe.org/howto/dhcpd#pxe_chainloading
3.3. gPXE/iPXE启动ISO(如WinPE)
以下两行可以搞定,可以放在script中运行,记得先运行dhcp。对,是initrd先,再chain,这里没有写错。
initrd http://1.2.3.4/boot/win7pe.iso
linux http://1.2.3.4/boot/memdisk iso raw (gPXE里边只能linux,不能用chain)
或者
initrd http://1.2.3.4/boot/win7pe.iso
chain http://1.2.3.4/boot/memdisk iso raw
memdisk是syslinux的,和SYSLINUX一个用法,这个自己搞定啦。:)
3.4. iPXE指定启动文件的方法
http://ipxe.org/embed
如果是U盘用syslinux启动ipxe,还是很方便可以指定多种启动方式的。
附上不错的解析文章:
http://www.0xf8.org/2012/04/clarifying- ... -gpxeipxe/
http://blogs.technet.com/b/dominikheinz ... asics.aspx
配置文件(片段)如下。
D:\tftpd\boot\pxelinux.cfg\default文件:
LABEL l_REMOTEwinpeiso1
MENU LABEL Win7 PE Remote
INITRD http://192.168.39.63:88/1.iso
LINUX http://192.168.39.63:88/memdisk
APPEND iso raw
D:\tftpd\tftpd32.ini文件:
[DHCP]
Lease_NumLeases=2
IP_Pool=170371264
PoolSize=5
BootFile=/boot/pxelinux.0
DNS=0
Mask=16777215
Gateway=0
DomainName=
[TFTPD32]
BaseDirectory=D:\tftpd
TftpPort=69