分类: LINUX
2014-08-18 11:02:32
原文地址:[原创] PXE 安装 step by step 作者:ailms
一、客户机启动时发出 PXE 请求 :
-)1、PXE 网卡 :建议使用 Intel 的网卡。
-)2、确保想要安装/使用的内核或者
initrd 可以正确识别该网卡,否则后面无法连接 NFS 服务器,但可以获取 ip
-)3、设置为网卡启动。记得安装完毕要改为硬盘启动,否则一开机又自动进入安装界面了
二、确保客户机能够获取到 ip :
-)1、DHCP 服务器必须启动
-)2、针对 PXE 客户机增加下面一段配置 :
class
“pxe-install" {
match
if substring(option vendor-class-identifier,0,9) = "PXEClient" ;
next-server
172.17.64.39;
filename
"linux-install/pxelinux.0";
}
注意,这里的 filename 是相对于 TFTP 的启动目录而言的,一般是 /tftpboot ,所以就是 /tftpboot/linux-install/pxelinux.0
三、客户机能够启动到安装界面 :
[root@dhcp ~]#
netstat -a |grep tftp
udp
0 0 *:tftp *:*
[root@dhcp ~]#
b)把安装光盘的
images/pxeboot/ 下的
vmlinuz 和
initrd 拷贝到
/tftpboot/linux-install/ 下。
要注意,如果你拷贝的是 RHEL4 的 vmlinuz 和 initrd ,则 resuce 模式只接受
RHEL4 的 iso ;如果加载的是 RH9 的 vmlinuz 和 initrd 也一样。
即使你原来的主机上安装的是 RH9 ,但如果加载的是 RHEL4 的vmlinuz
和 initrd
,则 resuce
时必须指定
/tmp/RHEL4 而不是
/tmp/RH9 ,否则
会报告 ISO 的安装树和启动介质的版本不同
所以建议在 /tftpboot/linux-install 下再建立两个子目录 rh9/ 和 rhel4/ ,分别用于存放这两个不同版本的内核和
initrd 。目录结构如下 :
c)配置文件 :/tftp/linux-install/pxelinux.cfg/deafult
[root@dhcp
pxelinux.cfg]# cat default
# all path are relative to the directory in which
pxelinux.0 stays
default linux # 注释 :默认启动 label=linux 的条目
prompt 1 # 注释:固定显示 “boot:” 提示符
timeout 100 # 注释 :10 秒
display /msgs/boot.msg
F1 /msgs/boot.msg
F2 /msgs/general.msg
F3 /msgs/expert.msg
F4 /msgs/param.msg
F5 /msgs/rescue.msg
F6 /msgs/memtest.msg
F7 /msgs/bootlocal.msg
label linux
kernel
vmlinuz
append
initrd=initrd.img ramdisk_size=8192
label text
kernel
vmlinuz
append
initrd=initrd.img text ramdisk_size=8192
label expert
kernel
vmlinuz
append
expert initrd=initrd.img ramdisk_size=8192
label ks
kernel
vmlinuz
append ks
initrd=initrd.img ramdisk_size=8192
label lowres
kernel
vmlinuz
append
initrd=initrd.img lowres ramdisk_size=8192
label memtest
kernel
memtest
append -
label rescue
kernel
vmlinuz
append
initrd=initrd.img rescue ramdisk_size=8192
label local
localboot 1
[root@dhcp pxelinux.cfg]#
注意,所有路径都是相对于 pxelinux.0 所在的目录而言的
d)消息文件 :/tftpboot/linux-install/msgs/
目录下,可能需要修改部分文件名和文件的显示内容,已匹配上面的
default 文件
[root@dhcp msgs]#
ll
total 44
-rw-r--r-- 1 root
root 562 Feb 13 23:04 bootlocal.msg
-rw-r--r-- 1 root
root 510 Feb 13 23:24 boot.msg
-rw-r--r-- 1 root
root 668 Oct 20 2004 expert.msg
-rw-r--r-- 1 root
root 871 Oct 20 2004 general.msg
-rw-r--r-- 1 root
root 562 Feb 13 23:02 memtest.msg
-rw-r--r-- 1 root
root 860 Oct 20 2004 param.msg
-rw-r--r-- 1 root
root 530 Oct 20 2004 rescue.msg
[root@dhcp msgs]#
要确保 expert.msg 等几个文件显示的菜单和 boot.msg 一样。
四、客户机能够拿到安装文件 :NFS 把放有 ISO 文件的分区导出
[root@dhcp msgs]#
exportfs
/tmp/RHEL4
/tmp/RH9
[root@dhcp msgs]#
五、启动客户机 :
通过 tethereal ,可以发现客户机发送的 PXE 信息
就是 vendor class identifier 这一行,所以上面的 class 语句就是针对该选项的
可以看到已经出现 DHCP OFFER 消息了,在经过 DHCPREQUEST 和 DHCPACK 后,就可以获取到 ip 了
下面是开始 TFTP 传输的过程了 :
最后可以看到菜单了
上面是选择 F6 (memtest),进行内存测试,该程序是 RHEL4 提供的,RH9 没有,位于光盘的 isolinux/ 下
安装过程中使用的是 udp 连接
[root@dhcp dhcp]# tcpdump host
172.17.64.246 |more
tcpdump:
verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96
bytes
21:44:12.993657
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023652
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023700
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023740
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023779
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023818
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023857
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023896
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023952
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.023991
IP dhcp.n7css.com > 172.17.64.246: udp
21:44:13.024031
IP dhcp.n7css.com > 172.17.64.246: udp