本文介绍PXE方式引导自动化安装CentOS6.5系统,主要用到的系统服务有DHCP、TFTP、Vsftpd和Kickstart。通过配置Kickstart自动化应答脚本,实现客户端批量、无人值守安装系统。

        1.PXE介绍

PXE(Preboot Execution Environment,预启动执行环境)由Intel公司开发,工作于Client/Server的网络模式,支持客户端通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。PXE可以引导windows2003/2008/XP/win7/linux系列等多种系统。

图 1  PXE网络安装服务架构图

图 2  支持PXE启动的网卡

PXE启动流程:进行PXE引导安装的必要条件是有一个支持PXE启动的网卡(NIC),即网卡ROM中必须要有PXE Client。当客户端计算机启动引导时,BIOS 把PXE Client 调入内存中执行,首先通过ARP协议广播请求IP地址与TFTP服务器地址,在获取到IP后,尝试向TFTP服务器发起TFTP请求,并将TFTP服务器根目录中的pxelinux.0文件下载到本地并执行,pxelinux.0引导程序执行后,会从TFTP根目录的pxelinux.cfg文件夹中下载default配置文件,然后根据default配置文件中指定的位置,去下载操作系统内核vmlinuz和虚拟文件系统initrd.img,同时default配置文件中还指明了ks.cfg文件的位置,ks.cfg也会被一并下载到本地,在通过网络下载操作系统安装的过程中,PXE引导程序会尝试读取ks.cfg文件内容,用于初始化系统配置,实现全自动无人值守安装。

       2.kickstart自动化安装实例

           2.1 安装环境介绍

实验环境以两台VMware虚拟机为例:

虚拟机ACentOS 6.5系统,作为PXE安装服务器,网络连接到NAT网络,并关闭VMnet8的DHCP服务,IP地址:192.168.2.60/24,网关192.168.2.1/24;

虚拟机B新建空白虚拟机,作为PXE客户端,网络连接到NAT网络,也可以和虚拟机A一起放在“仅主机”或“桥接”网络(相同即可),移除DVD及其他不用的设备;

在正式进行服务配置前,最好关闭PXE服务器的防火墙和Selinux:

关闭防火墙iptables:

   [root@localhost ~]#iptables -F[root@localhost ~]#service iptables stop

关闭Selinux:

   [root@localhost ~]#setenforce 0    [root@localhost ~]#vim /etc/selinux/config      SELINUX=disabled

2.2   配置DHCP服务

PXE启动流程第一阶段需要通过DHCP服务为客户端分配IP地址,指定TFTP服务器地址,指定pxelinux.0引导程序。

1.      安装DHCP服务

     [root@localhost ~]# yum -y install dhcp

2.      设置DHCP服务开机启动

     [root@localhost ~]#chkconfig --level dhcpd 2345 on    [root@localhost ~]#chkconfig --listdhcpd           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

3.      修改DHCP服务主配置文件

    [root@localhost ~]#vim /etc/dhcp/dhcpd.conf    #响应客户端的启动查询(开机时发送的DHCP请求)allow booting;allow bootp;#不使用DNS动态更新,忽略客户端DNS更新ddns-update-style none;ignore client-updates;#为客户端指定DNS名称和DNS服务器的IP地址option domain-name "example.org";option domain-name-servers 192.168.2.60; #指定客户端DHCP租期和连接DHCP服务器超时时间即最大租期default-lease-time 3600;max-lease-time 7200;#指定DHCP服务器发送的日志信息的日志级别log-facility local7;#子网区域subnet 192.168.2.0 netmask 255.255.255.0 {#设置客户端子网掩码option subnet-mask 255.255.255.0;#客户端IP地址池range dynamic-bootp 192.168.2.100 192.168.2.200;#tftp服务器的地址next-server 192.168.2.60;#需要从tftp服务器下载并执行的PXE引导文件filename "pxelinux.0";default-lease-time 3600;max-lease-time 7200;#指定客户端默认网关IP地址option routers 192.168.2.1; }

4.      重启DHCP服务

    [root@localhost ~]#service dhcpd restart

2.3   配置TFTP服务

TFTP服务是一个没有主服务程序的轻量级服务,它依靠系统xinetd守护进程启动。xinetd进程监听不同网络端口,根据端口发送数据到不同的服务进程。在安装好TFTP服务后,xinetd服务就监听UDP的69号端口,将这个端口收到的数据发送给TFTP程序。

1.      安装xinetd和tftp-server

    [root@localhost ~]#yum -y install xinetd tftp-server

2.      设置xinetd服务开机启动

    [root@localhost ~]#chkconfig --level xinetd 345 on    [root@localhost ~]#chkconfig --listxinetd          0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭基于 xinetd 的服务:tftp:           启用

3.      编辑tftp配置文件,开启tftp服务

    [root@localhost ~]#vim /etc/xinetd.d/tftp    #将配置文件中disable后面的yes改成noservice tftp{……disable = no……}

4.      重启xinetd服务

    [root@localhost ~]#service xinetd restart

2.4   配置Syslinux及系统引导必须文件

PXE系统启动引导需要一些必须的文件,其中pxelinux.0文件通过安装syslinux包获得;vmlinuz是压缩的可引导、可执行的linux内核文件,initrd.img是“initial ramdisk”,用于临时引导硬件到内核vmlinuz接管,加载文件系统和SCSI设备驱动,这两个文件可以从安装光盘images/pxeboot目录复制;

1.      安装syslinux包,复制引导文件pxelinux.0

    [root@localhost ~]#yum -y install syslinux    [root@localhost ~]#locate pxelinux.0/usr/share/syslinux/pxelinux.0#将pxe引导文件复制到TFTP根目录中[root@localhost ~]#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

2.      挂载CentOS光盘,复制系统引导必须文件

    [root@localhost ~]#mount /dev/cdrom /media/cdrom    [root@localhost cdrom]#cp images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/[root@localhost cdrom]#cp isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/

3.      创建系统引导模版文件default

    [root@localhost cdrom]#mkdir /var/lib/tftpboot/pxelinux.cfg    [root@localhost cdrom]#cp isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

4.      编辑系统引导模版文件default

    [root@localhost ~]#vim /var/lib/tftpboot/pxelinux.cfg/default    #需要修改两处#第1处:将第一行default后面标签改成linux,表示引导时使用这个标签下指定的内容去查找操作系统的位置default linux#第2处:找到linux标签,修改inst.stage2和ks后面配置指向FTP服务器label linuxmenu label ^Install CentOS 6.5 32bitmenu defaultkernel vmlinuzappend initrd=initrd.img inst.stage2=ftp://192.168.2.60 ks=ftp://192.168.2.60/pub/ks.cfg quiet

2.5  配置Vsftpd服务

Vsftpd服务通过FTP协议发送系统光盘文件和自动化应答脚本文件ks.cfg到客户端。

1.      安装Vsftpd服务

    [root@localhost cdrom]#yum -y install vsftpd

2.      设置Vsftpd开机启动

    [root@localhost ~]#chkconfig --level vsftpd 2345 on    [root@localhost ~]#chkconfig --listvsftpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

3.      将CentOS6.5系统安装光盘所有文件复制到FTP根目录

    [root@localhost ~]#cp -a /media/cdrom/* /var/ftp/

2.6   配置Kickstart

Kickstart是一种无人值守安装方式,它的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的自动应答脚本文件,在其后的安装过程中,当出现要求填写参数的情况时,安装程序会首先去查找Kickstart生成的文件,当找到合适的参数时,就采用找到的参数;当没有找到合适的参数时,才需要安装者手工干预。这样,如果告诉安装程序ks.cfg文件位置,并且文件涵盖了安装过程中出现的所有需要填写的参数时,就能实现全自动无人值守安装。

1.  RHEL桌面环境下配置Kickstart

    [root@localhost ~]#yum –y install system-config-kickstart    [root@localhost ~]#system-config-kickstart

A:开始设置语言,键盘,时区,Root密码,安装完毕自动重启;

B:设置安装方式(ftp/http/nfs);

C:安装MBR;

D:设置分区;

E:配置网络;

F:认证配置;

G:SELinux 和防火墙配置;

H:软件包安装选择

图 3  Kickstart配置界面

经过各种设置,最后是生成的ks.cfg文件预览界面, 文件保存在/var/www/html/文件夹。

图 4  Kickstart生成ks.cfg预览界面

2.  使用系统现有ks.cfg模版文件

在已安装好的CentOS系统root用户家目录,存在一个anaconda.cfg文件即为本系统的自动化应答脚本文件,可以以此为模版进行配置。

    [root@localhost ~]#ls -l anaconda-ks.cfg     -rw------- 1 root root 1080 5月  24 11:08 anaconda-ks.cfg

注意:此配置文件权限为其他人不可读,使用前需要设置权限为其他人可读,否则自动化安装时候anaconda程序会报错“找不到ks.cfg文件”。

    #复制一份anaconda-ks.cfg到FTP共享目录pub下:    [root@localhost ~]#cp anaconda-ks.cfg /var/ftp/pub/ks.cfg#修改权限为其他人可读[root@localhost pub]#chmod 644 ks.cfg[root@localhost pub]#ls -l-rw-r--r-- 1 root root 1353 5月  28 08:59 ks.cfg

下面是一个典型的ks.cfg配置文件:

    [root@localhost pub]#vim ks.cfg    # Kickstart file automatically generated by anaconda.#version=DEVELinstallgraphicalurl --url="ftp://192.168.2.60/"lang zh_CN.UTF-8keyboard ustimezone --utc Asia/Shanghairootpw  --iscrypted $6$VfvSB5Zx$ufvfpkzYy/nHoDukZXm1Z6LBlUg1n2OrO1.K7F8d2fRlYDdHwwR7MVUqT2h0Qab7rRPnRGPFa1/VYyBSDeGTt1firewall --disabledselinux --disabledauthconfig --enableshadow --passalgo=sha512firstboot --disablenetwork --onboot yes --hostname=localhost.localdomain --device eth0 --bootproto dhcp --noipv6user --name=todd --password=$6$vTfBqgQT$Xkjrx/kpRYEGfS1wRnsZw5MNRMUCZ3/Ld969pTG0wv4WBrMHUpWEwRSzPqJ95dIaZasWOU3pbS2at/dRZZZA11 --iscryptedbootloader --location=mbr --driveorder=sdazerombr yesclearpart --all --initlabelpart /boot --fstype=ext4 --size=200part swap --size=2048part / --fstype=ext4 --grow --size=200reboot%packages@^minimal@core@base@development@chinese-supportnet-toolsvimwget%post/bin/tar zcPf centos.repo.tar.gz /etc/yum.repos.d/*.repo > /dev/null 2>&1/bin/rm -f /etc/yum.repos.d/*.repo > /dev/null 2>&1cat >> /etc/yum.repos.d/base.repo << EOF[base]name=CentOS6.5baseurl=ftp://192.168.2.60/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6EOF%end

说明:

①key --skip 如果是红帽系统,此选项可以跳过输入序列号过程;如果是CentOS 系列,则可以不保留此项内容;

②reboot选项必须存在,否则安装完毕后kickstart显示等待用户按任意键重新引导;

③clearpart --all –initlabel 此条命令必须添加,否则系统会让用户手动选择是否清除所有数据,这就需要人为干预了,从而导致自动化过程失败;

④安装完毕后登录系统,root用户密码为root,todd用户密码为todd;

⑤%post安装后脚本打包备份原有yum仓库文件,生成新的base.repo仓库。

补充解释:

以下补充解释一下加密的密码密文生成方法,如下这样的密码有几种生成方法:

password=$6$vTfBqgQT$Xkjrx/kpRYEGfS1wRnsZw5MNRMUCZ3/Ld969pTG0wv4WBrMHUpWEwRSzPqJ95dIaZasWOU3pbS2at/dRZZZA11

(1) 复制/etc/shadow中的加密过的密码密文

    [root@localhost ~]# echo hello | passwd --stdin leven更改用户 leven 的密码 。passwd: 所有的身份验证令牌已经成功更新。[root@localhost ~]# grep leven /etc/shadowleven:$6$K3DVGnpn$r/yZY.RoyM6dHKsqwKLllvj0M98XPiak9Kefh6X/NA5Tpmp3F/jBYhc4d.kCcGOnHsey33XBvWGqixo6Rl7oP0:17928:0:99999:7:::

这一段“$6$K3DVGnpn$r/yZY.RoyM6dHKsqwKLllvj0M98XPiak9Kefh6X/NA5Tpmp3F/jBYhc4d.kCcGOnHsey33XBvWGqixo6Rl7oP0”就是使用sha-512方式加密后的密码密文。(开头的$6$表明)

(2) 使用OpenSSL生成加密过的密码密文

    [root@localhost ~]# openssl passwd -1 -salt 'world'    Password: $1$world$6A5UXMoQ04WBPD9pce/FT0

“-1”指加密算法使用md5算法,不指定加密算法的话默认使用Unix标准加密算法,即不指定默认使用-crypt算法;

“-salt”指定加密时候需要添加的“盐”(杂质),不指定的话默认随机生成。

此方法缺点是OpenSSL不支持生成sha-256和sha-512算法的密码,目前Linux默认的密码加密算法已经是sha-512了,md5算法不安全,详见/etc/shadow中加密密码“$6$”表明sha-512算法。

(3)使用grub-crypt生成加密过的密码密文

    [root@localhost ~]# grub-crypt -hUsage: grub-crypt [OPTION]...Encrypt a password.--md5                   Use MD5 to encrypt the password--sha-256               Use SHA-256 to encrypt the password--sha-512               Use SHA-512 to encrypt the password (default)[root@localhost ~]# grub-crypt --sha-512Password: Retype password: $6$RD4Mt5EjtHgGopk2$GrGNdH5kMUNIo5rnCl6qAJhn6mOruc9QcFcTbN/7fPhInJvsiiTqrXORMeFn.m7k73WKKa9qs0lu2m3j79ABj1

grub-crypt其实是一个python脚本,交互式生成密码。在CentOS 6上,可以借助grub提供的密码生成工具grub-crypt生成。遗憾的是CentOS 7上默认安装的是grub2,它不提供grub-crypt。

但是我们可以参照grub-crypt脚本内容,使用下面的python语句简单地代替grub-crypt,以下是交互式方式获取密码:

    python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

如果不想交互式,可以改成如下形式:

    python -c 'import crypt,getpass;pw="123456";print(crypt.crypt(pw))'

现在就方便多了,直接将结果赋值给变量即可。

    [root@localhost ~]# a=$(python -c 'import crypt,getpass;pw="123456";print(crypt.crypt(pw))')[root@localhost ~]# echo $a$6$uKhnBg5A4/jC8KaU$scXof3ZwtYWl/6ckD4GFOpsQa8eDu6RDbHdlFcRLd/2cDv5xYe8hzw5ekYCV5L2gLBBSfZ.Uc166nz6TLchlp.

3.测试安装

自动化应答脚本文件ks.cfg配置完毕后,初始化一个VMware虚拟机,将网络连接到NAT网络(必须和作为PXE服务器的虚拟机A在同一个网络,并且VMnet8关闭DHCP服务),移除客户端虚拟机B的DVD及其他不用的设备。

图 5  新建空白虚拟机PXE Client

启动PXE Client虚拟机B,自动选择从网卡PXE引导,DHCP 服务器开始给客户机分配IP地址,并指定TFTP服务器地址。

图 6  PXE Client向DHCP Server请求IP地址和TFTP服务器地址

图 7  加载vmlinuz和initrd.img文件

图 8  启动CentOS6.5安装过程

转载于:https://blog.51cto.com/toddliu/2121532

使用Kickstart自动化安装CentOS6.5相关推荐

  1. 银河麒麟高级服务器操作系统V10SP1 - ISO镜像定制 + KickStart自动化安装

    文章目录 一.基础环境搭建 1. 原始ISO获取 2. 系统安装 二.ISO镜像定制 1. 准备工作 2. 修改ISO镜像 3. 生成ISO镜像: 三.ISO镜像验证 一.基础环境搭建 1. 原始IS ...

  2. kickstart自动化系统安装_利用Kickstart自动化安装CentOS的教程

    前言 因为需要在浪潮的x86服务器中集中部署CentOS搭建基于Hadoop的大数据平台,平时接触SLES(SuSE Linux Enterprise Server)较多并且已经实现基于Autoyas ...

  3. kickstart自动化系统安装_系统运维|基于Kickstart自动化安装CentOS实践

    前言 因为需要在浪潮的x86服务器中集中部署CentOS搭建基于Hadoop的大数据平台,平时接触SLES(SuSE Linux Enterprise Server)较多并且已经实现基于Autoyas ...

  4. PXE+KickStart自动化安装Linux系统

     PXE+kickstart模式自动安装系统  PXE介绍 预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Netw ...

  5. 烂泥:kickstart无人值守安装CentOS6.5

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在本次实验进行之前,首先我们要把公司的网络环境进行介绍. 注意这个网络拓扑图,也是生产环境的一个实例.同时服务器192.168.1.214已关闭ipta ...

  6. kickstart自动化安装

    请参考 http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html PXE(Pre-boot Execution ...

  7. centos6.3配置 kickstart   无人值守安装centos6.3系统 httpd方式

    centos6.3+tftp+dhcp+httpd 系统环境:centos6.3*64 setenforce 0  关闭 selinux service iptables stop  关闭iptabl ...

  8. vsftp+tftp+dhcp+pxe+kickstart自动化安装操作系统

    实验环境 " rhel 5 ip 192.168.0.106 #把防火墙关掉 service iptables stop setenforce 0 #挂载镜像到/mnt下 [root@loc ...

  9. PXE+KickStart 自动化安装的部署,解决:Warning:/dev/root/ does not exist 的问题

    PEX服务器的部署 一.安装环境 1.注意事项: 保证局域网仅有一个DHCP 不建议在生产环境下做这个实验,因为生产环境有路由器 建议在VM虚拟机环境仅主机模式下做这个实验. 服务器搭建成功之后,需要 ...

最新文章

  1. TVM优化GPU机器翻译
  2. CVPR2020行人重识别算法论文解读
  3. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
  4. ARM非对齐操作异常解决过程
  5. MySQL之——The slave I/O thread stops because master and slave have equal...
  6. [android] 请求码和结果码的作用
  7. kafka spark java_spark streaming中维护kafka偏移量到外部介质
  8. 总结对象的两个方法valueof和tostring
  9. 用FTP命令进行文件批量上传或下载
  10. 1283 最简单的计算机
  11. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
  12. 【pytorch】(断点)继续上次训练
  13. ARC对象内存管理以及强弱指针
  14. asp.net网上零食销售商城系统
  15. 美女时钟(shell)
  16. qq华夏服务器状态,最国产!QQ华夏199组服务器皆“国名”
  17. 解决office word 2016升级后工具栏无Mathtype
  18. android型号手机怎么截图,如何在Android手机上屏幕截图(仅限Rooted Phone) | MOS86...
  19. VS 创建C# winfrom 语音播报(文字朗读),无需下载插件
  20. 给出一个详细的步骤,告诉你应该如何清新做网站

热门文章

  1. antd vue form 手动校验_Vue 开发者不可错过的五款开源扩展组件
  2. BPEL 语言介绍和应用
  3. 十进制度转换为度分秒
  4. win2012 R2的ntp时间同步设置解析
  5. ODAC(V9.5.15) 学习笔记(十七)主从模式
  6. Convert Sorted Array to Binary Search Tree
  7. vs2010常用快捷键
  8. Linux下如何使用虚拟用户增加FTP的安全性
  9. fckeditor漏洞之爆路径漏洞
  10. bootstrap table php,bootstrap table Tooltip