下面我要介绍的是一个基于网络的PXE和kickstart自动安装系统的实验,这也是我从学习linux不久,一直想要实现的功能,这里,我将实验过程和自己的理解贴出来。
实验拓扑图如下所示:
实验环境准备:
注意:以上的三台服务器和一台普通PC都要位于同一个网段,而且PC先不配置地址
实现过程原理讲解:(如有不懂之处,先理解,做完实验就会理解,建议看看)
1、普通PC启动后,将其启动项调为基于网卡启动,如下图
2、 由于网卡本身还没有地址,然后,它就会向它所在的局域网内发起DHCP DISCOVER的广播包
3、 然后DHCP服务器就会响应它,经过相互确定后,会给这台PC的网卡分配一个IP地址,于此同时,DHCP服务器会告诉网卡有下一个服务器,然后指定网卡到下一个服务器上去下载某个文件。
4、网卡获得地址后,就会去下一个服务器,即TFTP服务器上去下载一个为pexlinux.0的文件,然后,下载至本地(网卡内部嵌有TFTP客户端程序),pexlinux.0的功能就相当于grub引导程序了。
5、网卡下载到pxelinux.0文件后,在普通PC的内存中展开,然后就需要kernel和ramdisk,到TFTP服务器上去下载这两个文件,启动虚拟的系统。
6、接下来,下载.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 �Civh 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地址
TFTP服务器自动获取到的IP地址
Web自动获取到的IP地址
2、在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
这样,只要系统启动完成后,这两步就会执行,是系统启动的最后两步
3、在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号端口
二、上面的三步主要是搭建了这三个服务器,下面,我们就开始进入正题,搭建PXE环境。
以下步骤,未特殊说明,都在TFTP服务器上进行
1、将系统的安装光盘挂载到TFTP服务器上
#mkdir /media/cdrom #mount /dev/cdrom /media/cdrom #挂载
2、提供PXE工作环境
普通PC要先到TFTP服务器上下载pexlinux.0的文件,拿回来,放到内存中展开之后就需要kernel和ramdisk文件,再需要安装文件。
I、pexlinux.0这个文件要syslinux程序生成
#rpm �Cqa |grep syslinux #yuminstall syslinux #rpm�Cql syslinux #pexlinux.0文件在/usr/share/syslinux/下
网卡能够下载pxelinux.0,TFTP的目录在/var/lib/tftpboot/,所有拷贝过去
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
3、提供引导内核等文件
#cd/var/lib/tftpboot #将下列文件都拷贝到该目录 #cp /media/cdrom/images/pxeboot/vmlinuz . #内核 #cp/media/cdrom/images/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文件配置有问题,可能是分区的被注释掉了,把前面的"#"删除掉,由于每个人的情况可能不一样,所有遇到问题就在网上多查查吧
5、更改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 #添加内容
6、最后一点,在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
三、测试阶段:
开启普通PC,它会自动以PXE的方式运行,下面,我将以图片的形式展示
安装各种安装包
安装结束后,系统会自动重启,下面就是平时Linux的开机环境了,是不是很熟悉。
总结:这个PXE的实验要求思路要清除,所以,大家在做实验之前,一定要理清思路,然后再开始,遇到问题了,一定要多多自己解决,解决问题才能成长。