前提:对DHCP,tftp-server,httpd有一定了结,本文将略过对服务的讲解和安装过程,主要讲通过这三个服务来实现PXE服务器的搭建过程。
准备工作:
安装软件包:
安装制作ks.cfg文件工具(图形界面下):yum-y system-config-kickstart
安装服务:yum -y installdchp tftp-server httpd
安装syslinux:yum -yinstall syslinux
或者使用下面的安装方法一次性全部安装:
yum -y installystem-config-kickstart dchp tftp-server httpd syslinux
关于syslinux的介绍:
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。
配置dhcp服务
#vim /etc/dhcp/dhcpd.conf
option domain-name "dhcpserver"; DNS服务器的域名
option domain-name-servers 172.16.249.142 ,172.16.0.1 ; DNS服务器IP
default-lease-time 600; DHCP服务租约时间
max-lease-time 7200; DHCP服务最大租约时间
log-facility local7; 日志设备类型为local7.一般日志设备类型包括mail、crontab。通过此选项可以找到该服务的日志记录路径
subnet 172.16.249.0 netmask 255.255.255.0 { 指定分配网段的ip地址以及子网掩码,括号内部为局部配置
range 172.16.249.222 172.16.249.230; 可使用的地址池范围
option routers 172.16.0.1; 指定网关
next-server 172.16.249.142; 指定分配完ip后的下一跳服务器ip
filename "pxelinux.0"; 指定到下一跳服务器上读取的文件
}
二、配置tftp server
#vim /etc/xinetd.d/tftp
disable = no 开启tftp服务
服务全部配置完成。下面复杂pxe安装系统要用的文件(三、四、五都是复制文件)
三、提供PXE的工作环境
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
四、提供引导内核等文件
挂载系统光盘:
#mkdir /mnt/cdrom
#mount /dev/cdrom / /mnt/cdrom
# cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
# cp /mnt/cdrom/isolinux/{splash.jpg,vesamenu.c32,boot.msg} /var/lib/tftpboot
# mkdir /var/lib/tftpboot/pxelinux.cfg/
# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
五、提供安装源
# mkdir -pv /var/www/html/centos
# mount --bind /mnt/cdrom/var/www/html/centos/
所有服务都搞好了,启服务,查看服务是否启动,测试一下
#chkconfig dhcpd on 配置DHCP服务开机自启动
# chkconfig tftp on 配置TFTP服务开机自启动
# chkconfig httpd on 配置HTTP服务开机自启动
#/etc/init.d/dhcpd configtest 检查DHCP服务搭建是否有语法错误
(#/etc/init.d/dhcpd force-reload 在不重启DHCP服务的情况下,重读配置文件让刚修改的DHCP服务配置生效。cat /var/lib/dhcpd/dhcpd.leases查看DHCP服务ip的分配情况。一些小伎俩,分享一下,可以省去这步,呵呵。)
#/etc/init.d/dhcpd restart 重启DHCP服务
#/etc/init.d/xinetd restart 重启TFTP服务
#/etc/init.d/httpd restart 重启TFTP服务
# ss -unl 查看67(DHCP服务端口),69(TFTP服务端口)号端口是否监听
如果还想无人值守自动化安装,请继续。
六、为pxe提供ks.cfg文件
执行system-config-kickstart命令启动kickstart工具生成ks.cfg文件
#system-config-kickstart
选择要安装的包。
七、还有最后一步,修改/var/lib/tftpboot/pxelinux.cfg/default的default文件
#vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 30
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.3!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.249.142/ks.cfg
只需要把加红色字体ks=http://172.16.249.142/ks.cfg加上就可以了。
搞定,大功告成。
总结:
PXE流程:
1、 DHCP服务:分配ip指定下一跳地址和pxelinux.0
2、 TFTP服务: pxelinux.0读boot.msg,splash.jpg,vesamenu.c32显示grub启动菜单àpxelinux.cfg/default加载vmlinuz,加载initrd,指定ks文件位置àHTTP服务
3、 HTTP服务:ks.cfg文件à指定光盘镜像的位置URL=
读取镜像文件
扩展知识:
系统光盘isoliux目录中文件的作用:
1、 bootcat: 为grub界面下按tab提供boot提示符。
2、 boot.msg : 为grub界面下按tab出来的boot提供菜单选项。
3、 isolinux.bin:是bootloader对应的第二阶段,它会读取splansh.jpg和vesamenu.c32为grub提供图形界面的框架。Isolinux.bin的配置文件是isolinux.cfg。
4、 splash.jpg:grub启动时的背景图片。
5、 vesamenu.c32:
6、 vmlinuz:系统内核
7、initrd:全称init ramdisk,初始RAM磁盘是在系统引导过程中挂载的一个临时根文件系统,是真正根和虚拟根的桥梁。
8、memtest:内存测试工具。