下面我要介绍的是一个基于网络的PXE和kickstart自动安装系统的实验,这也是我从学习linux不久,一直想要实现的功能,这里,我将实验过程和本身的理解贴出来。html
实验拓扑图以下所示:linux
实验环境准备:web
注意:以上的三台服务器和一台普通PC都要位于同一个网段,并且PC先不配置地址vim
实现过程原理讲解:(若有不懂之处,先理解,作完实验就会理解,建议看看)centos
一、普通PC启动后,将其启动项调为基于网卡启动,以下图bash
二、 因为网卡自己尚未地址,而后,它就会向它所在的局域网内发起DHCP DISCOVER的广播包服务器
三、 而后DHCP服务器就会响应它,通过相互肯定后,会给这台PC的网卡分配一个IP地址,于此同时,DHCP服务器会告诉网卡有下一个服务器,而后指定网卡到下一个服务器上去下载某个文件。网络
四、网卡得到地址后,就会去下一个服务器,即TFTP服务器上去下载一个为pexlinux.0的文件,而后,下载至本地(网卡内部嵌有TFTP客户端程序),pexlinux.0的功能就至关于grub引导程序了。app
五、网卡下载到pxelinux.0文件后,在普通PC的内存中展开,而后就须要kernel和ramdisk,到TFTP服务器上去下载这两个文件,启动虚拟的系统。dom
六、接下来,下载.cfg的文件,实现自动安装,该文件中指定了安装的源服务器,即上面的Web服务器,咱们把Web服务器当成了yum源,以后普通的PC就会到Web上去下载安装时须要的包。
实验过程:
1、服务器环境搭建
一、 配置DHCP服务器,子网为:192.168.100.0,地址池为:192.168.100.10- 192.168.100.30,咱们还要将TFTP服务器和Web服务器的地址进行绑定。
I、在DHCP服务上运行setup命令,配置DHCP地址。
II、而后把系统的安装盘挂载到dhcp这台主机上,安装DHCP服务。
#mkdir/media/cdrom #建立文件夹,以供挂载 #mount/dev/cdrom /media/cdrom #将光盘进行挂载 #cd /media/cdrom/Packages #ls | grep dhcp #查看DHCP服务的包有哪些 #rpm –ivh dhcp-4.1.1-38.P1.e16.centos.x86_64.rpm #这里咱们只须要安装这个包
III、接下来,修改DHCP的配置文件,并启动服务
注意:DHCP服务的配置文件在/etc/dhcp/下,为dhcpd.conf,默认状况下,该配置文件为空,可是,
安装服务时,给咱们提供了一个模板://usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #对原来的文件进行覆盖
编辑/etc/dhcp/dhcpd.conf,配置以下,修改时,不要忘记分号";"
optiondomain-name "mageedu.com"; optiondomain-name-servers 192.168.100.10, 192.168.0.254; default-lease-time86400; max-lease-time 100000; subnet192.168.100.0 netmask 255.255.255.0 { #指定子网、掩码 range 192.168.100.10 192.168.100.30; #指定地址池信息 option routers 192.168.100.10; #网关地址 #将Web服务器和TFTP服务器进行地址绑定 host Tftp { hardware ethernet 00:0C:29:9F:6A:25; #在TFTP服务器下经过ifconfig查看 fixed-address 192.168.100.11; } host Web { hardware ethernet 00:0C:29:CD:B8:B9; #在TFTP服务器下经过ifconfig查看 fixed-address 192.168.100.12; } }
保存退出,以后再检查DHCP的配置文件是否错误
#service dhcpd configtest Syntax: OK #语法正确,能够启动服务了 #service dhcpd start #把dhcp服务加入开机自动启动 #chkconfig dhcpd on #chkconfig --list | grep dhcp dhcpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
IV:开启Web服务器和Tftp服务器,查看其IP地址
Web自动获取到的IP地址
二、在Web服务器上挂载光盘,安装httpd服务,创建yum源
#mkdir /media/cdrom #建立目录,做为挂载点 #mount /dev/cdrom /media/cdrom #进行挂载 #cd /media/cdrom/Packages #切换到软件包的目录 #rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm #安装web程序,httpd #mkdir /var/www/html/centos6 #在web目录下建立目录
绑定/media/cdrom和/var/www/html/centos6,这样,咱们的Web上就有yum源了,其实就是安装光盘
#mount --bind /media/cdrom /var/www/html/centos6
接下来启动httpd服务,并把它设为开机自动启动:
#service httpd start #ss -tnl #查看80端口是否在监听 #chkconfig httpd on
重要的还要一步,挂载是不会自动执行的,咱们能够写入/etc/rc.d/rc.local文件中
mount /dev/cdrom /media/cdrom mount --bind /media/cdrom /var/www/html/centos6
这样,只要系统启动完成后,这两步就会执行,是系统启动的最后两步
三、在TFTP服务器上修改yum的配置文件,原来的备份,而后安装tftp-server服务
#cd /etc/yum.repos.d/ #mkdir backup #mv * backup #备份原有的yum配置文件 #vim pxe.repo [base] name=the pexautoinstall yum baseurl=http://192.168.100.12/centos6/ #指定Web为其yum源 enabled=1 gpgcheck=0
安装TFTP服务
#yum install tftp-server #这是服务端程序
扩展:这里的tftp服务是由xinetd超级进程管理的
如何启动TFTP服务呢,编辑以下:
#vim /etc/xinetd.d/tftp disable = no #默认为yes,咱们修改成no
保存上面文件,而且启动xinetd服务
#service xinetd start #chkconfig xinetd on #ss -unl #查看服务是否启动,tftp监听的是UDP的69号端口
2、上面的三步主要是搭建了这三个服务器,下面,咱们就开始进入正题,搭建PXE环境。
如下步骤,未特殊说明,都在TFTP服务器上进行
一、将系统的安装光盘挂载到TFTP服务器上
#mkdir /media/cdrom #mount /dev/cdrom /media/cdrom #挂载
二、提供PXE工做环境
普通PC要先到TFTP服务器上下载pexlinux.0的文件,拿回来,放到内存中展开以后就须要kernel和ramdisk文件,再须要安装文件。
I、pexlinux.0这个文件要syslinux程序生成
#rpm –qa |grep syslinux #yuminstall syslinux #rpm–ql syslinux #pexlinux.0文件在/usr/share/syslinux/下
网卡可以下载pxelinux.0,TFTP的目录在/var/lib/tftpboot/,全部拷贝过去
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
三、提供引导内核等文件
#cd/var/lib/tftpboot #将下列文件都拷贝到该目录 #cp /media/cdrom/p_w_picpaths/pxeboot/vmlinuz . #内核 #cp/media/cdrom/p_w_picpaths/pxeboot/initrd.img . #ramdisk #cp /media/cdrom/isolinux/splash.jpg . #安装系统的图片 #cp /media/cdrom/isolinux/vesamenu.c32 . #安装时显示的菜单 #cp /media/cdrom/isolinux/boot.msg . #
4、最后咱们要提供kf文件(在Web服务下进行)
ks文件是由kickstart生成的文件,在linux上能够用工具system-config-kickstart生成
在xwindow下启动system-config-kickstart工具
咱们能够导入当前系统安装时所生成的文件,在/root目录下,名为anaconda.cfg
而后更改部份内容,下面这项,关于url的必定要改一下,原来的不必定适应你的环境
保存称为.cfg结尾的文件,例如:ks.cfg,保存至/var/www/html/目录下,即web服务根下
注意:若是在安装过程当中,若是你们出现了问题,通常是ks.cfg文件配置有问题,多是分区的被注释掉了,把前面的"#"删除掉,因为每一个人的状况可能不同,全部遇到问题就在网上多查查吧
五、更改boot时的选项,TFTP服务器上操做
# mkdir /var/lib/tftpboot/pxelinux.cfg/ # cp/media/cdrom/isolinux/isolinux.cfg ./pxelinux.cfg/default label linux menu label ^Install orupgrade an existing system menu default kernel vmlinuz append textinitrd=initrd.img text ks=http://192.168.100.12/ks.cfg #添加内容
六、最后一点,在DHCP的配置文件下指定下一个服务器,和获取的文件
subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.10 192.168.100.30; option routers 192.168.100.10; #指定TFTP服务器的地址,指定下载的文件为pexlinux.0 next-server 192.168.100.11; filename "pxelinux.0";
再次加载DHCP的配置文件:
#service dhcpd force-reload
3、测试阶段:
开启普通PC,它会自动以PXE的方式运行,下面,我将以图片的形式展现
安装各类安装包
安装结束后,系统会自动重启,下面就是平时Linux的开机环境了,是否是很熟悉。
总结:这个PXE的实验要求思路要清除,因此,你们在作实验以前,必定要理清思路,而后再开始,遇到问题了,必定要多多本身解决,解决问题才能成长。