首页 > 代码库 > PXE+Kickstart无人值守安装系统
PXE+Kickstart无人值守安装系统
PXE+Kickstart无人值守安装系统
一、介绍 二、原理 三、安装部署PXE+kickstart 四、安装TFTP 五、安装DHCP 六、生成kickstart(ks.cfg)文件 七、安装HTTP 八、虚拟机测试自动安装
一、介绍
CentOS的安装方法挺多,最常见的有光盘、Kickstart无人值守安装、U盘安装及ISO硬盘安装等。如果现在让你安装100台服务器,甚至更多台服务器,你会用什么办法安装呢,用光盘?这样要损坏多少张光盘呢,价格也不菲,U盘安装?一台一台接,很累好不好,用kickstart无人值守安装的方法,可以在内网批量安装新服务器系统,这种方法极大地简化了用光盘重复安装的过程,极大地提高了工作效率。
二、原理
1.什么是PXE
(1)PXE不是一种安装方式,而是一种引导方式 (2)PXE(Pre-boot Execution Environment)协议可以使计算机通过网络启动 (3)采用C/S结构
2.PXE的工作过程
(1)PXE Client向DHCP发送请求 PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP协议发送一个广播请求,向本网络中的DHCP服务器索取IP。 (2)DHCP服务器提供信息 DHCP服务器收到客户端的请求,验证是否是合法的PXE Client的请求,验证通过它将给客户端一个提供相应, 这个提供相应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。 (3)PXE客户端请求下载启动文件 客户端收到服务器的回应后,会回应一个帧,以请求传送启动所需文件。这些文件包括:pxelinux.0、pxelinux.cfg/default、initrd.img等文件。 (4)Boot Server响应客户端请求并传送文件 当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答,用以决定启动参数。 BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。 default文件下载完成后,会根据该文件中定义的引导顺序,启动Liunx安装程序的引导内核。 (5)请求下载自动应答文件 客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么介质来安装linux 如果通过网络安装(NFS.FTP.HTTP),则会在这个时候初始化网络,并定位安装源位置。 接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。 (6)将ks.cfg文件下载回来后,通过该文件找到OS Server,并安装该文件的配置请求下载安装过程需要的软件包。 OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。
补充信息,这里图文并茂介绍PXE工作流程
http://www.zyops.com/autoinstall-kickstart
三、部署安装PXE+Kickstart
1.系统环境准备
[root@pxe ~]# uname -a #这是一台桌面GUN的Linux,可能你问为什么要用桌面呢,后面要用到啦 Linux pxe 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [root@pxe ~]# uname -m x86_64 #64位系统 [root@pxe ~]# cat /etc/redhat-release CentOS release 6.6 (Final) #版本是6.6 [root@pxe ~]# getenforce Disabled #禁用selinux [root@pxe ~]# /etc/init.d/iptables stop #关闭防火墙 [root@pxe ~]# ifconfig eth0 | sed -n ‘2p‘ | awk ‘{print $2}‘ | awk -F ":" ‘{print $2}‘ 192.168.16.100 #这台机器的IP地址
注意:虚拟机环境网卡采用NAT模式,不要使用桥接模式,把VMware的NAT模式的DHCP服务也关闭
2.创建用于存放镜像里面的内容目录
[root@pxe ~]# mkdir -p /data/sys
3.挂载镜像到mnt目录下,再将系统镜像里边的内容拷贝到共享目录/data/sys中去
[root@pxe ~]# mount /dev/cdrom /mnt/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@pxe ~]# ll /mnt/ total 712 -r--r--r--. 2 test test 14 Oct 24 2014 CentOS_BuildTag dr-xr-xr-x. 3 test test 2048 Oct 24 2014 EFI -r--r--r--. 2 test test 212 Nov 28 2013 EULA -r--r--r--. 2 test test 18009 Nov 28 2013 GPL dr-xr-xr-x. 3 test test 2048 Oct 24 2014 images dr-xr-xr-x. 2 test test 2048 Oct 24 2014 isolinux dr-xr-xr-x. 2 test test 686080 Oct 24 2014 Packages -r--r--r--. 2 test test 1354 Oct 20 2014 RELEASE-NOTES-en-US.html dr-xr-xr-x. 2 test test 4096 Oct 24 2014 repodata -r--r--r--. 2 test test 1706 Nov 28 2013 RPM-GPG-KEY-CentOS-6 -r--r--r--. 2 test test 1730 Nov 28 2013 RPM-GPG-KEY-CentOS-Debug-6 -r--r--r--. 2 test test 1730 Nov 28 2013 RPM-GPG-KEY-CentOS-Security-6 -r--r--r--. 2 test test 1734 Nov 28 2013 RPM-GPG-KEY-CentOS-Testing-6 -r--r--r--. 1 test test 3380 Oct 24 2014 TRANS.TBL [root@pxe ~]# cp -a /mnt/* /data/sys/
四、安装TFTP
在安装PXE过程中,客户端通过TFTP协议从TFTP服务器下载引导文件并执行,因此,需要配置TFTP服务器和PXE的引导配置完成这个过程
1.安装tftp和xinetd
[root@pxe ~]# yum install tftp-server.x86_64 xinetd.x86_64 -y [root@pxe ~]# rpm -qa tftp-server xinetd xinetd-2.3.14-40.el6.x86_64 tftp-server-0.49-8.el6.x86_64
2.配置tftp服务
TFTP服务使用Xinetd服务管理,编辑/etc/xinetd.d/tftp,将文件中disable的参数由yes改为no [root@pxe ~]# 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 per_source = 11 cps = 100 2 flags = IPv4 }
3.启动xinetd,并且设置开机自启动
[root@pxe ~]# /etc/init.d/xinetd start Starting xinetd: [ OK ] [root@pxe ~]# chkconfig --level 3 xinetd on [root@pxe ~]# chkconfig --list xinetd xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
4.配置支持PXE引导启动程序
PXE启动映像文件由syslinux软件提供,只要安装了syslinux,就会生成一个pxelinux.0文件,将这个文件复制到TFTP默认路径即可。 syslinux是一个功能强大的引导加载程序,而且兼容各种介质,更加确切地说:syslinux是一个小型的Linux操作系统,它的目的是简化Linux的时间,并建立修护或其他特殊用途的启动盘。
[root@pxe ~]# yum install syslinux.x86_64 -y [root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@pxe ~]# ll /var/lib/tftpboot/ total 28 -rw-r--r--. 1 root root 26759 Apr 19 23:54 pxelinux.0
5.用于网络启动的内核文件
将CentOS安装光盘目录中的images/pxeboot/{vmlinuz,initrd.img}启动文件复制到某个安装目录,比如/var/lib/tftpboot/
[root@pxe ~]# cp /data/sys/images/pxeboot/vmlinuz /var/lib/tftpboot/ #复制内核文件 [root@pxe ~]# cp /data/sys/images/pxeboot/initrd.img /var/lib/tftpboot/ #复制驱动文件 root@pxe ~]# cp /data/sys/isolinux/boot.msg /var/lib/tftpboot/ #复制boot.msg
6.创建pxelinx.cfg目录,复制isolinux.cfg文件到/tftpboot目录并改名default
[root@pxe ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg [root@pxe ~]# cp /data/sys/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
7.编辑配置default文件
[root@pxe ~]# cd /var/lib/tftpboot/pxelinux.cfg/ [root@pxe pxelinux.cfg]# chmod 644 default [root@pxe pxelinux.cfg]# vim default default linux #默认启动的是“lobeltext”中标记的内核 #prompt 1 #开启会显示命令行‘boot: ‘提示符。prompt值为0时则不提示,将会直接启动‘default‘参数中指定的 timeout 1 #timeout时间是引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒 display boot.msg # 菜单背景图片、标题、颜色 menu background splash.jpg menu title Welcome to CentOS 6.6! 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 menu label ^Install or upgrade an existing system menu default kernel vmlinuz #指定要启动的内核。同样要注意路径,默认是/var/lib/tftpboot目录 append initrd=initrd.img ks=http://192.168.16.100/ks.cfg #添加ks文件的地址
五、安装配置DHCP服务
在PXE安装过程中,PXE客户机主要通过DHCP服务获取地址,PXE引导文件名称,然后再客户端机上通过TFTP协议从TFTP服务器下载引导文件并执行,从而启动系统安装程序执行后,接着下载并安装程序启动安装。
1.安装和配置DHCP
[root@pxe ~]# yum install dhcp.x86_64 -y [root@pxe ~]# vim /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see ‘man 5 dhcpd.conf‘ # ddns-update-style none; #不ddns更新 next-server 192.168.16.100; #告知客户端tftp服务器的ip地址 filename "pxelinux.0"; #告知客户端从TFTP根目录下载pxelinux.0文件 subnet 192.168.16.0 netmask 255.255.255.0 { #设定子网 range 192.168.16.10 192.168.16.20; #设定子网范围 option domain-name-servers 114.114.114.114; #设定DNS option routers 192.168.16.2; #设定默认网关 default-lease-time 600; #设置默认的IP租用时间,单位为秒 max-lease-time 7200; #最大的IP租用时间,单位为秒 } log-facility local4; #记录DHCP日志
2.创建日志文件
[root@pxe ~]# vim /etc/rsyslog.conf # Save dhcpd messages also to dhcpd.log local4.* /var/log/dhcpd.log [root@pxe ~]# touch /var/log/dhcpd.log [root@pxe ~]# chmod 600 /var/log/dhcpd.log
3.启动DHCP服务器
[root@pxe ~]# /etc/init.d/dhcpd start Starting dhcpd: [ OK ]
4.设置开机自启动
[root@pxe ~]# chkconfig dhcpd on [root@pxe ~]# chkconfig --list | grep dhcp dhcpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
六、生成kickstart文件
通常安装操作系统过程中,需要常常和服务器进行交互操作,为了减少这个交互过程可以使用kickstart。使用kickstart,只需先定义好一个kickstart自动应答配置文件ks.cfg,并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自动从文件中读取kickstart配置文件。
1.使用CentOS Linux提供一个图形化的kickstart配置工具
[root@pxe ~]# yum install system-config-kickstart.noarch
打开kickstart工具,也在图形终端打开命令行窗口键入命令system-config-kickstart打开
这里选择语言、时区、root密码,勾选第一个,安装系统后重启
选择全新安装,安装源方式为HTTP,HTTP地址和目录
选择是引导,默认就行啦
分区信息,清除引导,移除分区,添加你需要的分区
添加网络设备,如果只有一张网卡就eth0啦
这里密码加密,默认就行
防火墙配置,我这里是选择关闭的
显示配置,默认即可
选择安装的软件包,根据自己情况选择哈
选择左上角的File,点击Save(保存)
保存的路径/data/sys/ks.cfg,这个路径很讲究喔
查看保存后的ks.cfg文件,本应该是有三部分的,但我没有选择脚本选项,所以这里文件只有两部分,第一是键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项,第二是软件包安装
[root@pxe ~]# cat /data/sys/ks.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled #防火墙禁用 # Install OS instead of upgrade install #表示是安装系统不是升级 # Use network installation url --url="http://192.168.16.100/" #告诉安装程序,到http://ip/下面找安装介质 # Root password rootpw --iscrypted $1$ZoLiOvI6$jV67RM98I/JKaKpE6vUDz0 #root密码 # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text #文本安装方式 firstboot --disable # System keyboard #键盘类型 keyboard us # System language #系统语言 lang en_US # SELinux configuration #禁用selinux selinux --disabled # Installation logging level #设置日志级别 logging --level=info # Reboot after installation #安装完系统后重启 reboot # System timezone #系统时区 timezone Asia/Shanghai # Network information #网络信息 network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --location=mbr #系统引导相关信息 # Clear the Master Boot Record zerombr # Partition clearing information #清除所有分区 clearpart --all --initlabel # Disk partitioning information #系统的三个分区 part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=2048 part / --asprimary --fstype="ext4" --grow --size=1 %packages #安装的软件包 @base @compat-libraries @debugging @development git %end
给予ks.cfg权限
[root@pxe ~]# chmod 777 /data/sys/ks.cfg
七.安装HTTP服务
1.检查是否安装
[root@pxe ~]# /usr/local/nginx/sbin/nginx -v #这是我编译安装好的nginx nginx version: nginx/1.12.0
2.配置nginx.conf文件
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name 192.168.16.100; location / { root /data/sys; #这个目录是存放ks.cfg index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
3.检查语法
[root@pxe conf]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4.启动nginx服务
[root@pxe conf]# /usr/local/nginx/sbin/nginx
八、用虚拟机测试自动化安装
用虚拟机安装一台测试机器,不用选择光盘,直接点击开机就行
然后就是你去吃个饭回来,就安装好啦,去吃饭啦
最后想说的是,这个自动化安装功能我超级喜欢,就好像windows AD部署利用组策略自动安装软件一样,嘻嘻,感谢51CTO这个平台,让自己学习更多知识,看到很多大牛的好文章,才能让自己进步。
本文出自 “你会更好” 博客,谢绝转载!
PXE+Kickstart无人值守安装系统