Answers:
参见维基百科:PXE
这是我的理解!
PXE(客户端)广播了一个IP请求。DHCP服务器回复所需的信息:IP,下一服务器IP(TFTP服务器IP),pxelinux.0
(PXE引导加载程序文件名),...等
PXE(客户端)pxelinux.0
从TFTP服务器请求文件,将其加载到RAM,然后将控制权传递给pxelinux.0
。
pxelinux.0
从TFTP服务器获取启动配置文件,名称为:(
如果不存在,则尝试下一个)
default
文件用户选择或默认菜单项。pxelinux.0
向TFTP服务器请求相应的内核和RAMDisk并将其加载到RAM。
然后将引导参数和控制传递给加载的内核。
内核根据其功能/特性从TFTP服务器或任何其他协议服务器加载其余部分。
设置PXE服务器的方法有很多,这就是其中一种。
这些说明已在实际计算机上的Ubuntu 9.10和Ubuntu 10.04上进行了测试。它们应该仍然有效,只有很少的更改。(已在VirtualBox上针对Ubuntu 14.04进行了更新和测试,请检查旧版本的编辑版本)
我的目标是PartedMagic 4.5,它应该类似于Ubuntu或任何Linux发行版。
安装DHCP和TFTP软件包
sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
DHCP设置
编辑/etc/default/isc-dhcp-server
,DHCP服务的以太网接口
INTERFACES="eth0"
编辑/etc/dhcp/dhcpd.conf
或/etc/ltsp/dhcpd.conf
确实存在,DHCP服务配置
PXE特定配置:filename
&next-server
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.50 192.168.10.100;
option subnet-mask 255.255.255.0;
option routers 192.168.10.123;
option broadcast-address 192.168.10.255;
filename "pxelinux.0";
next-server 192.168.10.123;
}
设置静态IP eth0
,192.168.10.123
使用网络管理员的桌面版或我的情况下,/etc/network/interfaces
为服务器版本。
auto eth0
iface eth0 inet static
address 192.168.10.123
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
重新初始化网络接口:
sudo ifdown eth0
sudo ifup eth0
重新启动服务
sudo service isc-dhcp-server restart
检查状态
netstat -lu
输出量
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:bootpc *:*
TFTP设置
编辑/etc/inetd.conf
,#<off>#
从tftp
行首删除,或者在#:BOOT:
注释下不添加则添加。(请在systemd,15.10及更高版本中跳过此步骤)
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
为启用启动服务 inetd
sudo update-inetd --enable BOOT
启动服务
sudo service openbsd-inetd restart
sudo service tftpd-hpa restart
检查状态
netstat -lu
输出量
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:tftp *:*
PXE启动文件设置
解压缩pmagic-pxe-4.5.zip
。如果pxelinux.0
不存在,得到它sysliux-common
安装在包装/usr/lib/syslinux/pxelinux.0
,SYSLINUX项目或Ubuntu的网络启动图像。
将它们放在相似的结构中。
/var/lib/tftpboot/
|-- pxelinux.0
|-- pxelinux.cfg/
| `-- default
`-- pmagic/
|-- bzimage
`-- initramfs
编辑/var/lib/tftpboot/pxelinux.cfg/default
(如果需要)示例路径:pmagic/bzimage
&pmagic/initramfs
DEFAULT partmagic
LABEL partmagic
MENU LABEL PartMagic 4.5
KERNEL pmagic/bzimage
APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
设置正确的权限
sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \;
sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
使用一次性更改BIOS引导顺序F9或F12,从BIOS配置永久设置DEL,F2或F12。(取决于机器品牌)
移至顶部:[PXE | NIC | LAN | Ethernet | Network]
。
inetutils-inetd
或xinetd
可以用来代替openbsd-inetd
,某些inetd
步骤是不同的。
TFTP根目录可以从更改/etc/default/tftpd-hpa
。记得也要更新/etc/inetd.conf
。
许多发行版支持通过多种协议加载RAMDisk:SSH(SFTP),SMB,NFS ...示例Ubuntu支持NFS。
某些旧的网卡不支持PXE,iPXE(,可以在软盘,USB驱动器,硬盘(/boot
分区)上使用例如gPXE或Etherboot),甚至可以将其闪存到ROM(仅支持少数NIC)。GRUB2具有支持使用PXE引导的模块。
另请参阅Wikipedia:gPXE和 ROM-O-matic。
来自的Ubuntu Netboot映像 cdimage.ubuntu.com/netboot/ 提供了从网络安装Ubuntu系统会询问从官方镜像或本地一个下载所有需要的软件包,如果你有一个。
大多数用户都希望通过PXE引导实时映像。这个问题仅是设置PXE服务器。参见Ubuntu Wiki:安装-LocalNet
可以自定义PXE菜单,最好的模板是Ubuntu NetBoot。请参阅Pxeboot多个映像
memdisk
可用于通过PXE直接加载ISO或软盘映像。 syslinux-common
包中有副本。客户端应该有足够的RAM来容纳映像,以及一部分用于运行已加载的OS。
配置示例:
/var/lib/tftpboot/
|-- FDSTD.144
|-- memdisk
|-- pxelinux.0
|-- slitaz-cooking.iso
|-- pxelinux.cfg
| `-- default
`-- pmagic/
|-- bzimage
`-- initramfs
/pxelinux.cfg/default
DEFAULT partmagic
LABEL partmagic
MENU LABEL PartMagic 4.5
KERNEL pmagic/bzimage
APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
LABEL slitaz
MENU LABEL ^Slitaz.iso
TEXT HELP
Testing boot from iso.
ENDTEXT
KERNEL memdisk
APPEND initrd=slitaz-cooking.iso
LABEL freedos_std
MENU LABEL ^FreeDOS STD
TEXT HELP
Testing boot from Floppy IMG.
ENDTEXT
KERNEL memdisk
APPEND initrd=FDSTD.144
在原始开发人员决定将PartedMagic软件包商业化后,该软件包已从官方网站上删除,可以通过torrent网络找到一些发行版本。我的回答是对我有用的第一个PXE设置的简历。Ubuntu Netboot映像应按照相同的说明工作。
netstat -lu | grep tftp
以聆听模式显示它。/ tftpboot文件夹为777,但是如果我tftp> get pxelinux.0
从客户端尝试访问它,则总是得到一个tftp:pxelinux.0:权限被拒绝错误。您有调试的想法吗?提前致谢。
/var/lib/tftpboot/
带有755(默认值)应该可以。检查是否pxelinux.0
具有644或运行sudo chmod -R +r /var/lib/tftpboot/
以使其所有内容可读。
filename "pxelinux.0";
...后没有重新启动DHCP服务...无评论; P ...感谢您的答复以及这一出色的(完整的)答复。干杯