###############################################################################
#
Name : Mahavairocana
#
Author : Mahavairocana
#
QQ : 10353512
#
WeChat : shenlan-qianlan
#
Blog : http://www.cnblogs.com/Mahavairocana/
#
Description : You are welcome to reprint, or hyperlinks to indicate the
#
source of the article, as well as author
information.
###############################################################################
一、 PXE概念:
严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE(Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
二 、KickStart 概念:
KickStart 是一种无人职守安装方式。KickStart 的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件;在其后的安装过程中(不只局限于生成 KickStart 安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果 KickStart 文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安
装。
三 、PXE + KickStart 安装的条件
执行 PXE + KickStart 安装需要的设备为:
• DHCP 服务器;
• TFTP 服务器;
• KickStart 所生成的 ks.cfg 配置文件
详细流程:
1、PXE client 发送请求道DHCP服务器,由DHCPserver判断是否为来自PXE client的合法dhcp请求,如盒饭,则返回IP地址和bootstrap
2、pxeclient 请求传送bootstrap 消息发送到TFTPserver,TFTPserver 同意后发送bottstrap;
3、PXEclient 执行bootstrap(pxelinux.0)请求传送配置文件pxelinuxcfg/<IP_addr>
4、读取配置文件,用户根据情况选择,请求传送Linux内核以及根文件系统;
5、启动Linux 内核;
四 、安装步骤
系统:centos
ip 地址:192.168.137.10
两台 vm,一台 server 一台用来装系统
1.加载光盘到/mnt/下 mount /dev/cdrom /mnt/ cp -rf /mnt/* /var/www/html/ #拷贝光盘里面的所有内容到 apache 根目录下,作为安装源 2.安装 tftp-server yum install tftp-server* 配置 tftp vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot #开机必需的程序路径(根据的 tftpboot 路径更改) disable = yes #把这边的 yes 改为 no per_source = 11 cps = 100 2 flags = IPv4 } 3.配置 tftpboot 的内容 mkdir /tftpboot cp /usr/share/syslinux/pxelinux.0 /tftpboot/ cp /mnt/images/pxeboot/initrd.img /tftpboot/ cp /mnt/images/pxeboot/initrd.img /tftpboot/ cp /mnt/isolinux/*.msg /tftpboot/ #开机引导文件 mkdir /tftpboot/pexlinux.cfg cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default vi /etc/xinetd.d/tftp service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -u nobody -s /tftpboot per_source = 11 cps = 100 2 flags = IPv4 } 需要修改1个地方 disable = yes 修改为no 即可! 4.安装配置 DHCP server yum install dhcp* vim /etc/dhcp/dhcpd.conf ddns-update-style interim; ignore client-updates; next-server 192.168.137.10; #tftp server 的 ip 地址 filename "/pxelinux.0"; subnet 192.168.137.0 netmask 255.255.255.0 { option routers 192.168.137.10; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.137.100 192.168.137.150; default-lease-time 21600; max-lease-time 43200; } 5.安装配置 HTTPD yum install httpd* vim /etc/httpd/conf/httpd.conf 找到 #ServerName www.example.com:80 这一行 ,把注释去掉 6.安装配置 kickstart yum install system-config-kickstart yum install desktop* #安装桌面环境,当然也不需要那么费事,也可以用原有的 ks.cfg 也就是/root/anaconda-ks.cfg,当然适当的位置要进行修改 用 kickstart 自己定制 ks.cfg 保存在/var/www/html/下 vi pxelinux.cfg/default 修改配置如下 default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.0! 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 kernel vmlinuz append ks=ks=http://192.168.137.10/ks.cfg ksdevice=eth0 initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append - 修改如上两个红色地方即可:【设置timeout 10 /*超时时间为10S */;ksdevice =etho代表当我们有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定 的话,安装的时候系统会让你选择,那就不叫全自动化了,192.168.1.55是kicks tart服务器,/centosinstall 是nfs共享linux镜像的目录,也是linux存放安装 文件的路径,ks.cfg是kickstart主配置文件,稍后会详细配置】 自此tftp配置完毕! 我们可以启动它,它是非独立服务,需要借助xinetd启动如下: chkconfig tftp --level 35 on && service xinetd restart 即可! 7.修改 ks.cfg chmod -R 777 /tftpboot/ vim /tftpboot/pxelinux.cfg/default 在最后面添加一下内容: label linux kernel vmlinuz append initrd=initrd.img ks=http://192.168.137.10/ks.cfg #ks.cfg 的路径 8.关闭防火墙 /etc/init.d/iptables stop getenforce 来检测 selinux 是否开启 ,如果开启 getenforce 0来进行关闭。 9.启动服务 /etc/init.d/dhcpd start /etc/init.d/xinetd start /etc/init.d/httpd start 找一台需要安装linux系统机器,进入bios把第一启动项设置为LAN 也即是网卡启动!然后启动,系统会自动查找本地pxe 服务器然后,自动安装,最后自动启动系统,我们只需要登录就可以了
cobbler 安装;
第一步 下载安装 [root@s ~]# wget http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm [root@s ~]# rpm -ivh epel-release-6-5.noarch.rpm [root@s ~]# yum -y install tftp-server httpd dhcp yum-utils dhcp cman [root@s ~]# yum -y install cobbler [root@s ~]# service xinetd start [root@s ~]# service httpd start [root@s ~]# chkconfig tftp on [root@s ~]# service cobblerd start 第二步 配置文件 1. 配置tftp-server [root@s ~]# vi /etc/xinetd.d/tftp disable = no ks=http://192.168.100.254/cobbler/default.ks #把后面生成好的 default.ks 放在 apache 的这个目录下,以供访问用。注:就因为这步,cobbler研究3天才搞定 2. 配置cobber [root@s ~]# vi /etc/cobbler/settings server: 192.168.100.254 next_server: 192.168.100.254 manage_dhcp: 1 3. 配置DHCP模版文件 [root@s ~]# vi /etc/cobbler/dhcp.template 把里面的网段改成你的网段就可以了 subnet 192.168.100.0 netmask 255.255.255.0 { option routers 192.168.100.1; option domain-name-servers 192.168.100.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.100.100 192.168.100.254; filename "/pxelinux.0"; default-lease-time 21600; max-lease-time 43200; next-server 192.168.100.254; } 4. 修改rsync [root@s ~]# vi /etc/xinetd.d/rsync disable = no 5. 执行检查 [root@s ~]# cobbler check 把出现的问题解决掉,除了下面2个 service dhcpd is not running #这个错误只要执行第3步,然后 cobbler sync 就可以解决 debmirror package is not installed, it will be required to manage debian deployments and repositories 6. 修改密码 [root@s www]# openssl passwd -1 -salt 'wujie' 'wujie' #第一个 wujie 为干扰码 $1$wujie$GS3Rw2/0dfvQ7xJ7smLmu0 然后把上面那段复制到 /etc/cobbler/settings 中的 default_password_crypted 段 7. 生成system-config-kickstart 进入图形界面,yum system-config-kickstart 后,运行它,按照图形提示生成 default.ks。 然后把 default.ks 覆盖 /var/lib/cobbler/kickstarts/ 下,然后 [root@s www]# chmod 755 default.ks [root@s www]# cobbler profile edit --name=CentOS-i386 --distro=CentOS-i386 --kickstart=/var/lib/cobbler/kickstarts/default.ks #注意,这里是名字重复所以用 edit 不同则用 add 。据我实验发现,配置文件默认为default.ks 但是用 cobbler report 显示 ks 内容时发现是读取的 sample.ks 8. 当 cobbler check 检测基本没问题后 [root@s log]# service cobblerd restart [root@s log]# cobbler sync 看到如下提示表示成功了 running shell triggers from /var/lib/cobbler/triggers/change/* *** TASK COMPLETE *** [root@s log]# service dhcpd start 9.修改启动文件路径 [root@s tftpboot]# vi /var/lib/tftpboot/pxelinux.cfg/default ks=http://192.168.100.254/cobbler/ks_mirror/CentOS-i386 10. 导入CentOS安装DVD ISO中的文件 [root@s ~]# mkdir /mnt/cdrom [root@s ~]# mount /dev/cdrom /mnt/cdrom [root@s ~]# cobbler import --path=/mnt/cdrom --name=CentOS-i386 [root@s ~]# cobbler distro list #查看是否拷贝成功