Kickstart 无人值守安装,kickstart无人值守


导言:

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

常规的安装方法如下所示:

① 光盘安装系统:

一个的服务器 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 无人值守安装操作系统完整过程:

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 服务,避免干扰:

Kickstart 无人值守安装

安装 DHCP 服务:

DHCP 简介:

DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配 IP 地址,使网络环境中的主机动态的获得 IP 地址、网关地址、DNS 服务器地址等信息,并能够提升地址的使用率。

DHCP 工作流程的六个主要步骤:

Kickstart 无人值守安装

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

此时需要确定虚拟机已连接镜像文件:

Kickstart 无人值守安装

挂载到站点目录上:

[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/ 可得到如下界面:

Kickstart 无人值守安装

配置支持 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),打开电源后显示如下界面:

Kickstart 无人值守安装

接下来的画面就是我们熟悉的界面,输入ESC可以进入命令行界面:

Kickstart 无人值守安装

[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镜像,打开电源,选择第一个选项。

Kickstart 无人值守安装

② 选择英语;

③ 选择美式键盘;

④ 选择 URL 安装;

⑤ 输入 http://192.168.24.130/CentOS-6.8/ 地址:

⑥ 出现此页面后面的步骤就和光盘安装一样了:

Kickstart 无人值守安装

创建 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

相关内容