码迷,mamicode.com
首页 > 其他好文 > 详细

Kickstart 无人值守安装

时间:2018-12-05 00:10:15      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:sed   delete   使用率   hot   wing   from   未来   显示   des   

导言:
    作为中小公司的运维,经常会遇到一些机械式的重复工作。例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。

常规的安装方法如下所示:
① 光盘安装系统:
一个的服务器 DVD 内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就开始装系统能用的上,以后用的机会屈指可数。用 USB 外置光驱,插来插去也是十分繁琐。
② U盘安装系统:
还是同样的问题,要一台一台服务器插 U 盘,重复而又繁琐。
③ 网络安装系统(ftp,http,nfs) :
这个方法不错,只要服务器能联网就可以安装系统了,但是还需要一台台服务器去敲键盘点鼠标。
高逼格的安装方法:
① Kickstart
② Cobbler
什么是PXE:
① PXE,全名 Pre-boot Execution Environment,预启动执行环境;
② 通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
③ 由 Intel 和 Systemsoft 公司于 1999 年 9 月 20 日公布的技术;
④ Client/Server 的工作模式;
⑤ PXE 客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
⑥ PXE 客户端(Client)这个术语是指机器在 PXE 启动过程中的角色。一个 PXE 客户端可以使一台服务器、笔记本电脑或者其他装有 PXE 启动代码的机器(我们电脑的网卡)。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE(Pre-boot Execution Environment) 协议可以使计算机通过网络启动。此协议分为 Client 端和 Server 端,而PXE Client 则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和TFTP 服务器。DHCP 服务器会给 PXE Client (将要安装系统的主机) 分配一个 IP 地址,由于是给PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加 PXE 设置。此外,在 PXE Client的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
什么是 KickStart:
KickStart 是一种无人值守的安装方法。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件。如果在安装过程中(不只局限于生成 KickStart 安装文件的机器)出现要填写参数的情况,安装程序首选会去查找 KickStart 生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装着手工干预了。所以如果KickStart 文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后就去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中的设置重启系统,并结束安装。
什么是 Cobbler:
Cobbler 集中和简化了通过网络安装操作系统需要使用到的 DHCP/TFTP 和 DNS 服务的配置。Cobbler 不仅有一个命令行界面,还提供了一个 Web 界面,大大降低了使用者的入门水平。Cobbler 内置了一个轻量级配置管理系统,但它也支持和其他配置管理系统集成,如 Puppet,暂时还不支持 SaltStack。
简单来说,Cobbler 是对 Kickstart 的封装,简化安装步骤、使用流程,降低使用者的门槛。
PXE + Kickstart 无人值守安装操作系统完整过程:
技术分享图片
① PXE Client 向 DHCP 发送请求:
PXE Client 从自己的 PXE 网卡启动,通过 PXE BootROM(自启动芯片)会以 UDP(简单用户数据报协议)发送一个广播请求,向本网络中的 DHCP 服务器索取 IP。
② DHCP服务器提供信息:
DHCP服务器收到客户端的请求,验证是否来至合法的 PXE Client 的请求,验证通过它将给客户端一个"提供"响应,这个"提供"响应中包含了为客户端分配的 IP 地址、pxelinux 启动程序 (TFTP) 位置,以及配置文件所在位置。
③ PXE客户端请求下载启动文件:
客户端收到服务器的"回应"后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img 等文件。
④ Boot Server响应客户端请求并传送文件:
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从 Boot Server 下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default 文件下载完成后,会根据该文件中定义的引导顺序,启动Linux 安装程序的引导内核。
⑤ 请求下载自动应答文件:
客户端通过 pxelinux.cfg/default 文件成功的引导 Linux 安装内核后,安装程序首先必须确定你通过什么安装介质来安装 linux,如果是通过网络安装 (NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取 default 文件中指定的自动应答文件 ks.cfg 所在位置,根据该位置请求下载该文件。
提示:这里有个问题,在第2步和第5步初始化2次网络了,这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。因此PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序,从而进行两次获取IP地址过程,但IP地址在DHCP的租期内是一样的。
⑥ 客户端安装操作系统:
将 ks.cfg 文件下载回来后,通过该文件找到 OS Server,并按照该文件的配置请求下载安装过程需要的软件包。OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。
系统环境准备:

[root@nfs-server ~]# cat //etc/redhat-release 
CentOS release 6.8 (Final)
[root@nfs-server ~]# uname -r
2.6.32-642.el6.x86_64
[root@nfs-server ~]# getenforce
Disabled
[root@nfs-server ~]# /etc/init.d/iptables status
iptables:未运行防火墙。
[root@nfs-server ~]# hostname -I
192.168.24.130 
[root@nfs-server ~]# ifconfig eth0|awk -F "[ :]+" ‘NR==2 {print $4}‘
192.168.24.130

关掉本地默认开启的 DHCP 服务,避免干扰:
技术分享图片

安装 DHCP 服务:

DHCP 简介:
DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配 IP 地址,使网络环境中的主机动态的获得 IP 地址、网关地址、DNS 服务器地址等信息,并能够提升地址的使用率。
DHCP 工作流程的六个主要步骤:
技术分享图片
DHCP 服务安装配置:

[root@centos ~]#  yum install dhcp -y 
[root@centos ~]#  rpm -ql dhcp|grep "dhcpd.conf"  #  查看配置文件的位置。
/etc/dhcp/dhcpd.conf
/usr/share/doc/dhcp-4.1.1/dhcpd-conf-to-ldap
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
/usr/share/man/man5/dhcpd.conf.5.gz
[root@centos ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample  #  可以查看配置文件模板。
#   see ‘man 5 dhcpd.conf‘
[root@centos ~]# vim /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  #  查看模板。
[root@centos ~]# vim /etc/dhcp/dhcpd.conf   #  编辑配置文件。
[root@centos ~]# cat /etc/dhcp/dhcpd.conf    #  内容如下所示。
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see ‘man 5 dhcpd.conf‘
#
subnet 192.168.24.0 netmask 255.255.255.0 {
        range 192.168.24.100 192.168.24.200;  #  可分配的 IP 范围。
        option subnet-mask 255.255.255.0;  #  子网掩码。
        default-lease-time 21600;   #  设置默认的 IP 租用期限。
        max-lease-time 43200;  #  设置最大的 IP 租用期限。
        next-server 192.168.24.130;  #  告知客户端 TFTP 服务的 IP。
        filename "/pxelinux.0";   #  告知客户端从 TFTP 根目录下载 pxelinux.0 文件。
}   
[root@centos ~]# /etc/init.d/dhcpd start   #  启动 DHCP 服务。
Starting dhcpd:                                            [  OK  ]
[root@centos ~]# netstat -lntup|grep dhcp   #  查看 DHCP 服务端口。
udp        0      0 0.0.0.0:67          0.0.0.0:*         1325/dhcpd       

提示:
① 本来软件装完后都要加入开机自启动,但这个 Kickstart 系统就不能开机自启动,而且用完后服务都要关闭,防止未来重启服务器自动重装系统了。
② 如果机器数量过多的话,注意 dhcp 服务器的 IP 地址池,不要因为耗尽 IP 而导致dhcpd 服务器没有 IP 地址 release 的情况。

安装 TFTP 服务:

TFTP 服务简介:
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输协议。端口号为 69。
TFTP 安装配置:

[root@centos ~]# yum -y install tftp-server
[root@centos ~]# 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    # 由原来的 yes 改为 no。
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

这里修改配置文件可以用一条命令完成:

[root@nfs-server ~]# sed -i ‘14s#yes#no#g‘ /etc/xinetd.d/tftp
[root@centos ~]# /etc/init.d/xinetd start   #  启动服务。
Starting xinetd:                                           [  OK  ]
[root@centos ~]# netstat -tunlp|grep 69
udp        0      0 0.0.0.0:69             0.0.0.0:*        1821/xinetd 

配置 HTTP 服务:

[root@centos ~]# yum -y install httpd
[root@centos ~]# sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf
[root@centos ~]# /etc/init.d/httpd start
Starting httpd:                          [  OK  ]
[root@centos ~]# mkdir /var/www/html/CentOS-6.8

此时需要确定虚拟机已连接镜像文件:
技术分享图片
挂载到站点目录上:

[root@centos ~]# mount /dev/cdrom /var/www/html/CentOS-6.8/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@centos ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       7.1G  1.5G  5.3G  21% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       190M   33M  147M  19% /boot
/dev/sr0        3.7G  3.7G     0 100% /var/www/html/CentOS-6.8

提示:不管怎么弄,只要把安装光盘内容能通过 web 发布即可。因为是演示,如果复制镜像就有点浪费时间。但生产环境就一定要复制了,光盘读取速度有限。
此时,通过访问 http://192.168.132.151/CentOS-6.8/ 可得到如下界面:
技术分享图片

配置支持 PXE 的启动程序:

PXE 引导配置(bootstrap):
Syslinux 是一个功能强大的引导加载程序,而且兼容各种介质。Syslinux 是一个小型的 linux 操作系统,它的目的是简化首次安装 linux 的时间,并建立维护或其他特殊用途的启动盘。如果没有找到 pxelinux.0 这个文件,可以安装一下。

[root@centos ~]# yum -y install syslinux
[root@centos ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
#  复制启动菜单程序文件。
[root@centos ~]# cp -a /var/www/html/CentOS-6.8/isolinux/* /var/lib/tftpboot/
[root@centos ~]# ls /var/lib/tftpboot/   #  服务器启动菜单目录。
boot.cat   initrd.img    memtest     TRANS.TBL
boot.msg   isolinux.bin  pxelinux.0  vesamenu.c32
grub.conf  isolinux.cfg  splash.jpg  vmlinuz
[root@centos ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg  #  新建目录存放客户端配置文件。
[root@centos ~]# cp /var/www/html/CentOS-6.8/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

PXE 配置文件 default 解析:
配合虚拟机演示了解 default 文件(新建一个虚拟机,注意内存至少给 1G),打开电源后显示如下界面:
技术分享图片
接下来的画面就是我们熟悉的界面,输入ESC可以进入命令行界面:
技术分享图片

[root@centos ~]# cat /var/lib/tftpboot/pxelinux.cfg/default  #  查看 default 文件。
default vesamenu.c32   #  默认加载一个菜单。
#prompt 1   # 开启会显示命令行 ‘boot: ‘提示符。prompt 值为 0 时则不提示,将会直接启动 ‘default‘ 参数中指定的内容。
timeout 600 # timeout 时间是引导时等待用户手动选择的时间,设为  1可直接引导,单位为 1/10 秒。
display boot.msg
menu background splash.jpg      # 菜单背景图片、标题、颜色。
menu title Welcome to CentOS 6.8!
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 指定在 boot: 提示符下输入的关键字,比如 boot:linux[ENTER],这个会启动 label linux 下标记的 kernel 和 initrd.img 文件。
label linux  # 一个标签就是前面图片的一行选项。
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz  # 指定要启动的内核。同样要注意路径,默认是/tftpboot目录。
  append initrd=initrd.img  # 指定追加给内核的参数,initrd.img 是一个最小的 linux 系统。
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

预热之手动网络安装:
① 新建一台空白虚拟机,也不要挂载ISO镜像,打开电源,选择第一个选项。
技术分享图片
② 选择英语;
③ 选择美式键盘;
④ 选择 URL 安装;
⑤ 输入 http://192.168.24.130/CentOS-6.8/ 地址:
⑥ 出现此页面后面的步骤就和光盘安装一样了:
技术分享图片

创建 ks.cfg 文件:

通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,Kickstart 就诞生了。使用这种 Kickstart,只需事先定义好一个 Kickstart 自动应答配置文件 ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。
生成 Kickstart 配置文件的三种方法:
① 每安装好一台 Centos 机器,Centos 安装程序都会创建一个 kickstart 配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的 kickstart 配置文件来生成你自己的kickstart 配置文件(生成的文件名字叫 anaconda-ks.cfg,位于 /root/anaconda-ks.cfg)。
② Centos 提供了一个图形化的 kickstart 配置工具。在任何一个安装好的 Linux 系统上运行该工具,就可以很容易地创建你自己的 kickstart 配置文件。kickstart 配置工具命令为 redhat-config-kickstart(RHEL3)或 system-config-kickstart(RHEL4,RHEL5)。网上有很多用 CentOS 桌面版生成 ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。
③ 阅读 kickstart 配置文件的手册。用任何一个文本编辑器都可以创建你自己的 kickstart 配置文件。
查看anaconda-ks.cfg 文件:

[root@centos ~]# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install    #  告知安装程序,这是一次全新安装,而不是升级 upgrade。
cdrom
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$IgStnuEDwKSvfbm8$nCvzA6Lt/79248rswzLTAudxVb3JhwUpBid7qcoFeduQ8iphWxcu1tom.rdH5ynBGhc0KhF/h5yeAuFL7iReS0
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none
#part /boot --fstype=ext4 --asprimary --size=200
#part swap --asprimary --size=512
#part / --fstype=ext4 --grow --asprimary --size=200
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
%packages
@base
@compat-libraries
@core
@debugging
@development
@server-policy
@workstation-policy
python-dmidecode
sgpio
device-mapper-persistent-data
systemtap-client
%end

详解 ks.cfg 文件:
官网文档 :
CentOS6 : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html
提示:官网自带中文版,选一下语言即可。
该文件组成大致分为 3 段:
① 命令段 :
键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项。
② 软件包段 :
%packages
@groupname: 指定安装的包组。
package_name: 指定安装的包。
-package_name:指定不安装的包。
在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。
③ 脚本段(可选) :
%pre:安装系统前执行的命令或脚本 (由于只依赖于启动镜像,支持的命令很少)。
%post:安装系统后执行的命令或脚本 (基本支持所有命令)。
编写 ks.cfg 文件:

[root@centos ~]# grub-crypt   #  先生成一个密码备用。
Password: 123456
Retype password: 123456
$6$uUftrH0Z80ZruqFa$AWKZm9TeFwzabt/IKF25hgxyfYYYGuDTxL.ev4ZV21irLhpgcH11VWe822w995Lf4TbktAGhELTx1dU32LkYM.
[root@centos ~]# vim /var/www/html/ks_config/CentOS-6.8-ks.cfg
[root@centos ~]# cat /var/www/html/ks_config/CentOS-6.8-ks.cfg  
# Kickstart Configurator for CentOS 6.7 by yao zhang
install
url --url="http://192.168.132.151/CentOS-6.8/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw  --iscrypted $6$uUftrH0Z80ZruqFa$AWKZm9TeFwzabt/IKF25hgxyfYYYGuDTxL.ev4ZV21irLhpgcH11VWe822w995Lf4TbktAGhELTx1dU32LkYM.
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post
wget -O /tmp/optimization.sh http://192.168.136.151/ks_config/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh
%end

开机优化脚本:

[root@centos ~]# vim /var/www/html/ks_config/optimization.sh
[root@centos ~]# cat /var/www/html/ks_config/optimization.sh 
#!/bin/bash
##############################################################
# File Name: /var/www/html/ks_config/optimization.sh
# Version: V1.0
# Author: yao zhang
# Organization: www.zyops.com
# Created Time : 2015-12-03 15:23:08
# Description: Linux system initialization
##############################################################
. /etc/init.d/functions
Ip=10.0.0.7
Port=80
ConfigDir=ks_config
# Judge Http server is ok?
PortNum=`nmap $Ip  -p $Port 2>/dev/null|grep open|wc -l`
[ $PortNum -lt 1 ] && {
        echo "Http server is bad!"
        exit 1
}
# Defined result function
function Msg(){
        if [ $? -eq 0 ];then
          action "$1" /bin/true
        else
          action "$1" /bin/false
        fi
}
# Defined IP function
function ConfigIP(){
        Suffix=`ifconfig eth0|awk -F "[ .]+" ‘NR==2 {print $6}‘`
        cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<-END
        DEVICE=eth0
        TYPE=Ethernet
        ONBOOT=yes
        NM_CONTROLLED=yes
        BOOTPROTO=none
        IPADDR=10.0.0.$Suffix
        PREFIX=24
        GATEWAY=10.0.0.2
        DNS1=10.0.0.2
        DEFROUTE=yes
        IPV4_FAILURE_FATAL=yes
        IPV6INIT=no
        NAME="System eth0"
        END
        Msg "config eth0"
}
# Defined Yum source Functions
function yum(){
        YumDir=/etc/yum.repos.d
        [ -f "$YumDir/CentOS-Base.repo" ] && cp $YumDir/CentOS-Base.repo{,.ori} 
        wget -O $YumDir/CentOS-Base.repo http://$Ip:$Port/$ConfigDir/CentOS-Base.repo &>/dev/null &&        wget -O $YumDir/epel.repo http://$Ip:$Port/$ConfigDir/epel.repo &>/dev/null &&        Msg "YUM source"
}
# Defined Hide the system version number Functions
function HideVersion(){
        [ -f "/etc/issue" ] && >/etc/issue
        Msg "Hide issue" 
        [ -f "/etc/issue.net" ] && > /etc/issue.net
        Msg "Hide issue.net"
}
# Defined OPEN FILES Functions
function openfiles(){
        [ -f "/etc/security/limits.conf" ] && {
        echo ‘*  -  nofile  65535‘ >> /etc/security/limits.conf
        Msg "open files"
        }
}
# Defined Kernel parameters Functions
function kernel(){
        KernelDir=/etc
        [ -f "$KernelDir/sysctl.conf" ] && /bin/mv $KernelDir/sysctl.conf{,.ori}
        wget -O $KernelDir/sysctl.conf http://$Ip:$Port/$ConfigDir/sysctl.conf &>/dev/null
        Msg "Kernel config"
}
# Defined System Startup Services Functions
function boot(){
        for oldboy in `chkconfig --list|grep "3:on"|awk ‘{print $1}‘|grep -vE "crond|network|rsyslog|sshd|sysstat"` 
          do 
           chkconfig $oldboy off
        done
        Msg "BOOT config"
}
# Defined Time Synchronization Functions
function Time(){
        echo "#time sync by zhangyao at $(date +%F)" >>/var/spool/cron/root
        echo ‘*/5 * * * * /usr/sbin/ntpdate time.nist.gov &>/dev/null‘ >>/var/spool/cron/root
        Msg "Time Synchronization"
}
# Defined main Functions
function main(){
        ConfigIP    
        yum
        HideVersion
        openfiles
        kernel
        boot
        Time
}
main

整合编辑 default 配置文件:

[root@centos ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
[root@centos ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0
label ks
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.24.130/ks_config/CentOS-6.8-ks.cfg

无人值守自动安装:

打开系统电源,出去喝杯水。过会回来,系统就以经装好了。
安装完成后验证:

[root@CentOS6 ~]# df -h   #  自动分区。
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       6.6G  1.4G  4.9G  22% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       190M   34M  147M  19% /boot
[root@CentOS6 ~]# /etc/init.d/iptables status   #  自动优化。
iptables: Firewall is not running.
[root@CentOS6 ~]# getenforce  #  自动优化。
Disabled
[root@CentOS6 ~]# ifconfig eth0|awk -F "[ :]+" ‘NR==2 {print $4}‘
192.168.132.153
[root@CentOS6 ~]# chkconfig --list|grep "3:on" #  自动优化。
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off

Kickstart 无人值守安装

标签:sed   delete   使用率   hot   wing   from   未来   显示   des   

原文地址:http://blog.51cto.com/13688462/2326152

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!