PXE启动的原理什么的这里就不介绍了,网上有很多,一定要理解原理再来做,不但便于记忆,也便于操作,可以把安装步骤模块化,前后要融会贯通。如果有不好的地方请谅解。

j_0057.gif

环境:

centos 6.8_x86_64

Apache2.2.27编译安装


安装配置DHCP服务器

rpm -qa | grep dhcp     #查看DHCP服务是否已经安装了,一般默认有个dhcp- common-4.1.1-51.P1.el6.centos.x86_64,这个不是主程序


yum install dhcp.x86_64 dhcp-devel.x86_64 -y    #安装DHCP服务和devel,必须要有devel否则出错


cat /etc/dhcp/dhcpd.conf     #查看配置文件

# DHCP Server Configuration file.        #一下是查看DHCP配置文件的方法,这里我们用第一种方法

#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

#   see 'man 5 dhcpd.conf'


===DHCP服务安装完成============================


rpm -ql dhcp | grep sample

/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample    #DHCP的配置文件


egrep -v "#|^$" /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample > /etc/dhcp/dhcpd.conf

##去除dhcpd.conf.sample文件中的空行和注释行,并重定向到/etc/dhcpdhcpd.conf文件中


vim /etc/dhcp/dhcpd.conf    #编辑配置文件,留下一下内容即可,其他的参数用不到,红色的是自己加的

subnet 192.168.199.0 netmask 255.255.255.0 {    #DHCP分配的网段

  range 192.168.199.2 192.168.199.6;                     #DHCP分配的地址段

  option domain-name-servers ns1.internal.example.org;    #DNS服务器地址,这里就默认把

  option domain-name "internal.example.org";            #域名

  option routers 192.168.199.1;            #默认路由,其实就是网关地址

  option broadcast-address 192.168.199.255;    #广播地址

  default-lease-time 600;    #默认租期

  max-lease-time 7200;    #最大租期

  next-server 192.168.199.214;                            #tftp服务器所在的地址

  filename "pxelinux.0";                                       #网络引导文件名,引号别忘了,我经常忘记

}


service dhcpd start    #启动服务

    提示:如果服务器启动失败,可以查看/var/log/messages日志信息,在之后的安装系统时最好关闭网络中的其他有DHCP功能的设备,比如路由器等,否则不能正确指向TFTP服务器,从而无法正常引导、启动和安装。


netstat -nupl | grep dhcp    #查看DHCP的工作端口号


iptables -I INPUT -p udp --dport 67 -j ACCEPT     #添加放火墙端口


service iptables save    #保存配置规则


===DHCP服务器配置完成=======================


yum install httpd        #安装httpd服务器,我等等就用之前编译好的httpd服务器了,但是用yum安装的作为演示


service httpd start        #启动httpd服务


curl localhost                #测试下服务器是否正常用功了


iptables -I INPUT -p tcp --dport 80 -j ACCEPT         ##添加防火墙规则


===httpd安装和配置完成=========================


yum install tftp.x86_64 tftp-server.x86_64 -y            #安装tftp和tftp-server,同时会安装一个xinetd


vim /etc/xinetd.d/tftp            #编辑tftp文件将disable的yes改成no

        disable                 = no


service xinetd start                #启动xinetd服务


netstat -nupl| grep xinetd    #查看xinetd的工作端口


iptables -I INPUT -p udp --dport 69 -j ACCEPT        #给防火墙添加开放的端口


service iptables save        #保存规则


mkdir /var/www/cdrom -p        #yum安装的站点目录是/var/www/html/,我是编译的所以自己新建


mount /dev/cdrom /var/www/cdrom/    #为了方便这里将iso文件直接挂载了


cd /var/www/cdrom/isolinux/        #进入isolinux目录


cp -v  boot.msg vmlinuz vesamenu.c32 initrd.img /var/lib/tftpboot/     #复制这四个文件到指定                                                                                                                        tftp的工作目录


mkdir /var/lib/tftpboot/pxelinux.cfg -p            #在tftp工作目录创建pxelinux.cfg目录


cat isolinux.cfg > /var/lib/tftpboot/pxelinux.cfg/default        #查看重定向,到default文件


vim /var/lib/tftpboot/pxelinux.cfg/default 

timeout 5            #超时时间

label linux

  menu label ^Install or upgrade an existing system

  menu default                        默认选择menu label ^Install or upgrade an existing system

  kernel vmlinuz                    #内核文件

  append initrd=initrd.img ks=http://192.168.199.214/ks.cfg

##编辑default文件添加红色部分,即为ks.cfg文件存放的位置,centos7还可以在理这顶安装文件路径,但是没什么意义,因为指定了ks.cfg文件的位置后,ks.cfg文件中又指定了一次


yum install syslinux-devel.x86_64 syslinux.x86_64 -y        #安装syslinux,因为他又我们所需  要 网 络  引导文件


find / -name "pxelinux.0" -exec cp {} /var/lib/tftpboot/ \;        #找到这个文件并且复制到指定位置


===TFTP服务+网络引导+linux内核什么的准备完成================


cd /var/www/        #进入站点根目录


vim ks.cfg      #添加ks.cfg的配置文件,也可以自己用图化system-config-kickstart.noarch编辑

# Kickstart Configurator for CentOS 6.7 by yao zhang

install

url --url="http://192.168.199.214/cdrom/"                #指定安装盘的网络位置

#text                                                                    #这个看习惯开把我还是喜欢图形界面

lang en_US.UTF-8

keyboard us

zerombr

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6

timezone --utc Asia/Shanghai

authconfig --enableshadow --passalgo=sha512

rootpw  --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/

clearpart --all --initlabel

part /boot --fstype=ext4 --asprimary --size=200

part swap --size=1024

part / --fstype=ext4 --grow --asprimary --size=200

firstboot --disable

selinux --disabled

firewall --disabled

logging --level=info

reboot

%packages

@base

@compat-libraries

@debugging

@development

tree

nmap

sysstat

lrzsz

dos2unix

telnet

%end


注意:centos7的anaconda-ks.cfg拿过来修改下安装方式,就是上面的红色部分就可以用了,centos6.x的不行,也有可能是我比较菜,还不知道怎么弄,如果直接复制家目录下的anaconda-ks.cfg,记得一定要给权限否则会报错,ks.cfg文件出错chmod 777 ks.cfg



wKioL1jiAVmj3Gb4AADcY0rBtvc835.png-wh_50

#新建一个这样的空虚拟机,不要挂载光盘,还有就是网络一定要和我们搭建的DHCP服务器一个网络,否则会找不到,或者直接出错


后面全程高速公路无人驾驶模式,可以把整个过程回忆一遍,自己一定要总结,多操作,否则容易忘记。root密码就不写了,我是为了强行让自己回忆一遍修改root的步骤。我对ks文件的编辑不很熟悉,碰过好多次壁,有不对的地方还请谅解。上面的ks文件是我参考老男孩老师提供的,因为我自己写了6次都出问题了j_0004.gif


===只待开机完成了================================


wKioL1jiB1Wz9A9WAAATor6RxOM303.png-wh_50

===安装完成=================================


参见错误:

  1. DHCP服务器

    a)centos的配置文件查找不是查找sample

    b)dhcp配置文件的filename "pxelinux.0";一定不要忘记引号和分号

    c)记得要么关闭防火墙和selinux除非你非常了解selinux这个服务

  2. httpd服务器

    a)服务是否能够正常工作

    b)默认站点不要弄错

    c)如果是自己创建的话文件夹权限,还有最好关闭selinux

    d)记得要么关闭防火墙和selinux除非你非常了解selinux这个服务

  3. tftp服务

    a)如果在安装了tftp-server,并没有安装xinetd记得自行安装,yum的话一般都是装的

    b)如果tftpboot目录是自己创建的注意权限和selinux问题

    c)pxelinux.cfg目录下的文件名不要出错

    d)记得要么关闭防火墙和selinux除非你非常了解selinux这个服务

  4. default文件

    a)超时时间自己随意

    b)centos6不用在append的后面加inst.stage2=http://IP/iso,直接ks=http://IP/ks.cfg就好了

    加了反而在centos6.X中会出错

    c)centos7的menu default是在媒体测试选项上的记得自己改下

  5. ks.cfg

    a)这个文件的配置也是个大学问,每一句话是有顺序问题的,所以顺序不能乱

    b)常见的编辑方法就是system-config-kickstart.noarch编辑

    c)centos6.x如果都到了选语言的界面之后,出现异常提出的问题,绝对就是ks.cfg文件有问题,再改改