PXE and Cobbler
1,pxe
PEX全称:预引导执行环境(Preboot execute environment)
PXE依赖ftp,http,tftp,dhcp
搭建dhcp:dynamin host configuration protocol
www.Isc.org
[root@Pxe ~]# yum -y install dhcp
[root@Pex ~]# ifconfig eth2 10.5.5.1/24 up
[root@Pex ~]# cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
[root@Pex ~]#vim /etc/dhcp/dhcpd.conf
option domain-name "example.org"; 搜索域域名
option domain-name-servers ns1.example.org,ns2.example.org; dns服务器
default-lease-time 600; 默认租约期限
max-lease-time 7200; 最大租约期限
log-facility local7; 记录日志使用的那个facility
subnet 10.152.187.0 netmask 255.255.255.0 {} 定义一个为其分配地址的网络
subnet 10.5.5.0 netmask 255.255.255.0 {
range 10.5.5.20 10.5.5.50; 地址池
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
option routers 10.5.5.1; 网关
[root@Pex ~]# service dhcpd restart
Shutting down dhcpd: [ OK ]
Starting dhcpd:
[root@Pex ~]# ss -unl |grep :67
UNCONN 0 0 *:67 *:*
[root@Pex ~]#
确保iptables没有阻止
[root@Pex ~]# iptables -L -n
在第二台机器进行获取,正常获取到10.5.5.x
在PXE查看IP地址租约日志
[root@Pex ~]# tail/var/lib/dhcpd/dhcpd.leases
server-duid"\000\001\000\001\035\034J\206\000\014)`b#";
lease 10.5.5.20 {
starts 2 2015/06/23 16:53:51;
ends 2 2015/06/23 17:53:51;
cltt 2 2015/06/23 16:53:51;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:b5:3c:7d;
}
[root@Pex ~]#
DHCP在分配地址时,也可以绑定MAC地址,假设我们绑定MAC地址00:0C:29:B5:3C:7D,ip为10.5.5.30
注意:这里的地址肯定不能使用地址池的地址,使用地址池之外的预留地址
host ftpserver {
hardware ethernet 00:0C:29:B5:3C:7D;
fixed-address 10.0.10.60;
}
[root@Pex ~]# vim /etc/dhcp/dhcpd.conf
在option routers 10.0.10.1;添加以下两项
next-server 10.0.10.1; 告诉dhcp,tftp是谁
filename "pxelinux.0"; 这个文件由syslinux提供,这个文件的存放位置在tftp目录下
在PXE机器上安装tftp服务器
[root@Pex ~]#yum -y install tftp-server tftp
复制文件测试
[root@Pex ~]# cp /etc/fstab/var/lib/tftpboot/
[root@Pex ~]# tftp 10.5.5.1
[root@Pex dhcp]# cd /var/lib/ tftpboot/
[root@Pex tftpboot]# ls
fstab
这种方式基于UDP,文件传输有可能发生错误!
安装syslinux复制pxelinux.0文件
[root@Pex tftpboot]# yum -y installsyslinux
将pxelinux.0复制到tftpboot目录下
[root@Pex tftpboot]# cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
复制完成后,仅仅只是把PXE环境配置好,还需要挂载光盘把基于PXE启动的文件复制过来
如果互联网有安装树的源,也可以使用。这里演示使用挂载本地光盘
[root@Pex ~]# mount -r /dev/cdrom /mnt/
[root@Pex ~]# cd /mnt/
[root@Pex mnt]# cd isolinux/
[root@Pex isolinux]# cd ..
[root@Pex mnt]# cd images/pxeboot/
而后复制文件vmlinuz initrd.img到/var/lib/tftpboot/
复制vesamenu.c32splash.jpg boot.msg 到/var/lib/tftpboot/
[root@Pex pxeboot]# cp /mnt/images/pxeboot/vmlinuz initrd.img /var/lib/tftpboot/
[root@Pex pxeboot]# cd ../../isolinux/
[root@Pex isolinux]# cp vesamenu.c32splash.jpg boot.msg /var/lib/tftpboot/
创建pxelinux.cfg目录
[root@Pex isolinux]# mkdir/var/lib/tftpboot/pxelinux.cfg
复制光盘中isolinux.cfg到/var/lib/tftpboot/pexlinux.cfg中命名为default
[root@Pex isolinux]# cp isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default
我们编辑default,在menu title Welcome to CentOS 6.6添加LinuxEA字段标识
[root@Pex pxelinux.cfg]# vim default
menu title Welcome to CentOS 6.6 LinuxEA!
我们开始测试。从网卡启动!测试下能否读取到pxe的tftp
而后在/var/www/html/下创建centos6.6目录,将本地光盘绑定至centos6.6
[root@Pex isolinux]#Mkdir /var/www/html/centos6.6
[root@Pex isolinux]#Mount –bind /mnt/var/www/html/centos6.6
在启动httpd
[root@Pex isolinux]#Service httpd start
通过浏览器http://172.16.249.108/centos6.6/访问
而后我们就开始复制Kickstart文件了,这个文件在/root/目录下,叫anaconda-ks.cfg、我们把他复制到/var/www/html/下,改名为ks.cfg[root@Pex isolinux]# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
回头编辑/var/lib/tftpboot/pxelinux.cfg/default文件,添加ks.cfg文件
[root@localhost pxelinux.cfg]# vim/var/lib/tftpboot/pxelinux.cfg/default
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://10.5.5.1/ks.cfg