利用pxe和kickstart批量安装Linux客户端CentOS6.5

发现csdn的博客不能大量截图,所以也只能用文字叙述,为此,读者还请见谅。以下是笔者,实际操作成功后的记录。
此种方式安装并不是最高效的方式,现在实际生产环境中通常用到的是cobbler实现的方式,但是,对于学习基本的服务和原理,这是一个很容易上手的实验。

试验环境:

宿主机系统:windows 7
虚拟机:vmware11.0
操作系统:Redhat6.6
使用工具:Xshell 5
虚拟机中的网络适配器,也就是网卡设置,我选择的既不是仅host也不是桥接,而是选择的NAT。
Xshell 5 打开并连接登录系统后,点击左上角“文件”-“属性”-“类别”-“SSH”-“隧道”,在右下方,
勾选“转发X11连接到(X)”并选中Xmanager(M),点击“确定”。这样设置Xshell就OK了,为什么做这一步呢?
因为有时候在Xshell输入的有些命令(比如system-config-kickstart &)需要将虚拟机中Linux系统中的界面
切换到我们window系统中来进行配置一些文件会更方便些,还有一些其他软件也会用到,
比如GIMP(号称Linux中的Photoshop)。

打开Xshell,从如下代码中,知道我的IP地址:192.168.136.129
[root@My-Linux ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F0:FA:F5  
          inet addr:192.168.136.129  Bcast:192.168.136.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef0:faf5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:67 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7730 (7.5 KiB)  TX bytes:7569 (7.3 KiB)


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:56 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3848 (3.7 KiB)  TX bytes:3848 (3.7 KiB)

[root@My-Linux ~]# mount /dev/cdrom /media/
[root@My-Linux ~]# ls /media/
CentOS_6.5_Final

首先介绍一下文件kickstart和PXE:

kickstart文件的组成分为3部分:
    (1)命令段:用于配置系统
    (2)软件包:指定要安装的程序包及程序包组
    %packages 标识
      @Base:使用@指定包组
    注意:在程序包前加-,表示不安装相关包;
     %end :软件包结束
    (3)脚本段:
       %pre:安装过程开始前的预备脚本   
       %post:所有的软件完成之后执行的脚本
 ps:详解请参考红帽官方文档或自行查找翻阅          

PXE:Preboot ExecuteEnvironment启动前的配置环境,支持工作站通过网络从远端服务器下载映像,并由此支持通过
网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)
或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,
由这个启动软件包完成Client端自动化基本软件设置,从而引导预先安装在服务器中的终端操作系统。

通过上述,我们需要软件包的安装。
dhcp:动态主机配置协议,给客户端提供ip地址;
tftp-server:tftp服务器端,提供系统安装所需文件;
xinetd:tftp服务超级守护进程,用于唤醒tftp服务;
httpd:基于http服务,用来提供安装源;
syslinux:提供pxelinux.0文件,此二进制文件用于引导系统,相当于bootloader;
system-config-kickstart:用于生成kickstart配置文件;
以上的软件包,只要事先配置好yum源,然后依次执行命令:
[root@My-Linux ~]#yum -y install tftp-server
[root@My-Linux ~]#yum -y install httpd
[root@My-Linux ~]#yum -y install dhcp
[root@My-Linux ~]#yum -y install syslinux
[root@My-Linux ~]#yum -y install kickstart
#输入“chkconfig --level 35 httpd on”设置开机时以35模式自动启动。
[root@My-Linux ~]#chkconfig --level 35 xinetd on

注意:此时装完程序包后,先不要着急启动服务(比如执行命令:service dhcpd start),
我们需要先关闭selinux和iptables,然后进行文件的配置和服务的启动;所以我们先
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启,这样就永久关闭selinux服务了;

再关闭iptables服务
[root@My-Linux ~]#service iptables stop


接下来做如下修改:
(1)dhcp服务的配置文件默认是/etc/dhcp/dhcpd.conf,但此文件默认是没任何配置的,
此服务提供了一个参考文件/usr/share/doc/dhcp*/dhcpd.conf.sample,复制此文件覆盖原配置文件,
直接修改即可。如下,在原有的文件上修改成自己的地址即可,然后保存退出,即:


[root@My-Linux ~]# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[root@My-Linux ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.136.0 netmask 255.255.255.0 {
  range 192.168.136.100 192.168.136.200;          #地址池;一定要有分号做为结束;
  option routers 192.168.136.1;                   #网关;这事我本机配置,请读者自己参考自己的地址进行配置;
  next-server 192.168.136.129;                    #tftp服务器地址;这里我把自己本机做为服务地址;
  filename "pxelinux.0";                          #PXE引导文件;


}

#输入“chkconfig --level 35 dhcpd on”设置为开机以35模式启动DHCP。
[root@My-Linux ~]# chkconfig --level 35 dhcpd on


ps:dhcp服务的端口号67;tftp工作在udp的69号端口;httpd服务工作在tcp的80端口;

(2)xinetd是tftp的超级守护进程,即tftp是xinetd的子服务,修改配置文件,确保tftp服务没有被禁用。
[root@My-Linux ~]# vim /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no    #此处改成no保存退出
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4


#输入“chkconfig --level 35 xinetd on”并按回车键确定,确保开机自动启动tftp.
[root@My-Linux ~]#chkconfig --level 35 xinetd on


(3)然后,在命令行分别执行如下命令:

#从安装光盘中复制isolinux目录中的内容到/var/lib/tftpboot目录中
[root@My-Linux ~]# cp /media/isolinux/* /var/lib/tftpboot/


#复制pxelinux.0文件到/var/lib/tftpboot目录中
[root@My-Linux ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/


#在/var/lib/tftpboot/目录下创建目录pxelinux.cfg
[root@My-Linux ~]# mkdir /var/lib/tftpboot/pxelinux.cfg


#复制/var/lib/tftpboot/isolinux.cfg文件到/var/lib/tftpboot/pxelinux.cfg目录中,并改名为default
[root@My-Linux ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default


#在http的根目录中创建新目录,用于挂载系统镜像文件;挂载光盘到新建的目录;
[root@My-Linux ~]#mkdir /var/www/html/CentOS6.5
[root@My-Linux ~]#mount --bind /media/ /var/www/html/CentOS6.5/


然后,我们开启所有服务,并检查服务是否都开启了:
[root@My-Linux ~]#service dhcpd start
Starting dhcpd:                                            [  OK  ]
[root@My-Linux ~]#service httpd start
Starting httpd:                                           [  OK  ]
[root@My-Linux ~]#/etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
[root@My-Linux ~]#netstat -tunlp 
........
........
........
显示就省略了,太多了。
但是,读者需要注意的是httpd启动,请确保只显示OK,说明一切正常,如果有
其他多余的说明或者提示如:
Starting httpd: httpd: apr_sockaddr_info_get() failed for My-Linux
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
请参考笔者博客的第一篇文章《Linux之HTTP服务启动报错》,核对问题是否如其所述并自行解决。
还记得上文说的吗?dhcp服务的端口号67;tftp工作在udp的69号端口;httpd服务工作在tcp的80端口;
查看一下是否都存在就说明服务都0k了;


最后的一步就非常简单了,配置kickstart文件:
在Xshell中输入:
[root@My-Linux ~]#system-config-kickstart &
然后等5秒钟,Wow...弹出一个界面,是不是很熟悉,这就是我们曾经手动图形界面时安装Linux的配置界面;
也是我在文章开头说需要设置Xshell的原因,想必进行到这里,读者应该懂了。
你可以自行配置,这里如果读者不知道的话,给你个链接自己翻阅参考:http://www.178linux.com/4269
我建议读者点开查看一下这篇文章,写的很好,还有截图,读者可根据这篇文章结合笔者的博客来自行创建kickstart文件;


还差一点点:
在创建并保存好kickstart文件后,重启,重启后确保各个服务都启动;然后创建一个虚拟机,进行最后的批量安装。
如果是在真正的生产环境中,请注意:设置客户端为网络启动,因为不同BIOS可能设置有区别。


小结:很多朋友可能看完我写的这些也不知道为啥cp文件、安装这些服务,还要修改配置文件,那么我先来解释一下工作原理。此次操作的原理:首先,客户端---->DHCP服务器请求IP,然后DHCP服务器发送IP给客户端并告诉客户端去找TFTP服务器要pxelinux.0 这样一个文件,它能引导你接下来要做的一切;然后,客户端---->TFTP服务器请求赐我pxelinux.0吧,TFTP服务器发送给客户端pxelinux.0,客户端收到后在pxe的引导下,得知自己要想全自动安装CentOS6.5,得需要一个资料文件,也就是kickstart,因为这个文件里有要安装的所有信息。接下来就是系统的安装了,安装需要先加载内核等等。

如果想了解更多kickstart文件的相关属性可参考红帽官方文档;

笔者,只能先写到这里了,因为写东西会想到好多东西,有问题可联系QQ771924014,共同进步,共同学习。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值