1.1 环境说明

[root@test ~]# uname -r 2.6.32-696.el6.x86_64

[root@test ~]# getenforce Disabled

[root@test ~]# /etc/init.d/iptables status iptables: Firewall is not running.

[root@test ~]# ifconfig eth0|awk -F "[ :]+" NR==2 {print $4} 10.0.0.250

[root@test ~]# hostname test

1.2 配置DHCP

1.2.1 安装dhcp

1.2.2 编写配置文件

    range </span><span style="color: #800080;">10.0</span>.<span style="color: #800080;">0.100</span> <span style="color: #800080;">10.0</span>.<span style="color: #800080;">0.200</span><span style="color: #000000;">;

    option subnet</span>-mask <span style="color: #800080;">255.255</span>.<span style="color: #800080;">255.0</span><span style="color: #000000;">;

    default</span>-lease-<span style="color: #0000ff;">time</span> <span style="color: #800080;">21600</span><span style="color: #000000;">;

    max</span>-lease-<span style="color: #0000ff;">time</span> <span style="color: #800080;">43200</span><span style="color: #000000;">;

    next</span>-server <span style="color: #800080;">10.0</span>.<span style="color: #800080;">0.250</span><span style="color: #000000;">;

    filename </span><span style="color: #800000;">"</span><span style="color: #800000;">/pxelinux.0</span><span style="color: #800000;">"</span><span style="color: #000000;">;

}

1.2.3 启动服务

1.3 安装TFTP服务

1.3.1 安装tftp服务

1.3.2 编写xindetd下的配置文件

1.3.3 启动服务,让xinetd 管理

1.3.4 检查端口

1.4 配置HTTP服务

1.4.1 安装nginx的依赖包(pcre-devel openssl-devel)

1.4.4  nginx软件编译安装过程

1、配置软件,在软件的解压目录中

添加一行配置,作用是显示目录里的所文件

1.4.7 启动程序

1.5.1 删除默认的主页文件,创建挂载目录

1.5.2 挂载光盘

1.5.3 检查挂载信息

 

1.6 配置支持PXE的启动程序

安装syslinux

复制启动菜单程序文件

新建一个pxelinux.cfg目录,存放客户端的配置文件。

1.7 创建一个新的虚拟机

display boot.msg

菜单背景图片、标题、颜色。

menu background splash.jpg menu title Welcome to CentOS 6.9! menu color border #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title #ffffffff #00000000 menu color tabmsg #ffffffff #00000000 menu color unsel #ffffffff #00000000 menu color hotsel #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar #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 -

1.8 创建ks.cfg文件

通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart就诞生了。使用这种kickstart,只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。

生成kickstart配置文件的三种方法:

方法1、

   每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。

  如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)

方法2、

  Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。

  kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).网上有很多用CentOS桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。

方法3、

  阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。

ks.cfg文件详解

官网自带中文版,选一下语言即可
ks.cfg文件组成大致分为3段

  • 命令段
    键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项

  • 软件包段

在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。

  • 脚本段(可选)
<th>
  含义
</th>
<td>
  告知安装程序,这是一次全新安装,而不是升级<code>upgrade</code>。
</td>
<td>
  通过<code>FTP</code>或<code>HTTP</code>从远程服务器上的安装树中安装。<br /><code>url --url="http://10.0.0.7/CentOS-6.7/"</code><br /><code>url --url ftp://&lt;username>:&lt;password>@&lt;server>/&lt;dir></code>
</td>
<td>
  从指定的<code>NFS</code>服务器安装。<br /><code>nfs --server=nfsserver.example.com --dir=/tmp/install-tree</code>
</td>
<td>
  使用文本模式安装。
</td>
<td>
  设置在安装过程中使用的语言以及系统的缺省语言。<code>lang en_US.UTF-8</code>
</td>
<td>
  设置系统键盘类型。<code>keyboard us</code>
</td>
<td>
  清除<code>mbr</code>引导信息。
</td>
<td>
  系统引导相关配置。<br /><code>bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"</code><br /><code>--location=</code>,指定引导记录被写入的位置.有效的值如下:<code>mbr</code>(缺省),<code>partition</code>(在包含内核的分区的第一个扇区安装引导装载程序)或<code>none</code>(不安装引导装载程序)。<br /><code>--driveorder</code>,指定在<code>BIOS</code>引导顺序中居首的驱动器。<br /><code>--append=</code>,指定内核参数.要指定多个参数,使用空格分隔它们。
</td>
<td>
  为通过网络的<code>kickstart</code>安装以及所安装的系统配置联网信息。<br /><code>network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6</code><br /><code>--bootproto=[dhcp/bootp/static]</code>中的一种,缺省值是<code>dhcp</code>。<code>bootp</code>和<code>dhcp</code>被认为是相同的。<br /><code>static</code>方法要求在<code>kickstart</code>文件里输入所有的网络信息。<br /><code>network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2</code><br />请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。<br /><code>--ip=</code>,要安装的机器的<code>IP</code>地址.<br /><code>--gateway=</code>,IP地址格式的默认网关.<br /><code>--netmask=</code>,安装的系统的子网掩码.<br /><code>--hostname=</code>,安装的系统的主机名.<br /><code>--onboot=</code>,是否在引导时启用该设备.<br /><code>--noipv6=</code>,禁用此设备的<code>IPv6</code>.<br /><code>--nameserver=</code>,配置<code>dns</code>解析.
</td>
<td>
  设置系统时区。<code>timezone --utc Asia/Shanghai</code>
</td>
<td>
  系统认证信息。<code>authconfig --enableshadow --passalgo=sha512</code><br />设置密码加密方式为<code>sha512</code>&nbsp;启用<code>shadow</code>文件。
</td>
<td>
  <code>root</code>密码
</td>
<td>
  清空分区。<code>clearpart --all --initlabel</code><br /><code>--all</code>&nbsp;从系统中清除所有分区,<code>--initlable</code>&nbsp;初始化磁盘标签
</td>
<td>
  磁盘分区。<br /><code>part /boot --fstype=ext4 --asprimary --size=200</code><br /><code>part swap --size=1024</code><br /><code>part / --fstype=ext4 --grow --asprimary --size=200</code><br /><code>--fstype=</code>,为分区设置文件系统类型.有效的类型为<code>ext2</code>,<code>ext3</code>,<code>swap</code>和<code>vfat</code>。<br /><code>--asprimary</code>,强迫把分区分配为主分区,否则提示分区失败。<br /><code>--size=</code>,以<code>MB</code>为单位的分区最小值.在此处指定一个整数值,如<code>500</code>.不要在数字后面加<code>MB</code>。<br /><code>--grow</code>,告诉分区使用所有可用空间(若有),或使用设置的最大值。
</td>
<td>
  负责协助配置redhat一些重要的信息。<br /><code>firstboot --disable</code>
</td>
<td>
  关闭<code>selinux</code>。<code>selinux --disabled</code>
</td>
<td>
  关闭防火墙。<code>firewall --disabled</code>
</td>
<td>
  设置日志级别。<code>logging --level=info</code>
</td>
<td>
  设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择<code>halt</code>关机。
</td>

#version=DEVEL install cdrom lang en_US.UTF-8 keyboard us network –onboot no –device eth0 –bootproto dhcp –noipv6 rootpw –iscrypted $6$.8PjXDBfzrUEFZte$IfTqwmdHXTJ6HD5/mYOuhuNMhVWaJI0xwyRMvOIrYkaEZduHVYuTEfjbgAqEuEsJii0wkBQvCVgF.KRG9ikwu0 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=768 #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

1.9.1 编写ks文件

创建ks文件存放目录

ks文件内容

1.10 编写开机优化脚本

1.11 整合编辑default配置文件

display boot.msg

menu background splash.jpg menu title Welcome to CentOS 6.9! menu color border #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title #ffffffff #00000000 menu color tabmsg #ffffffff #00000000 menu color unsel #ffffffff #00000000 menu color hotsel #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar #ffffffff #00000000

label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img 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 - label ks kernel vmlinuz append initrd=initrd.img ks=http://10.0.0.250/ks_config/CentOS-6.9-ks.cfg

<li>
  <a href="#13_TFTP">1.3 安装TFTP服务</a><ul>
    <li>
      <a href="#131_tftp">1.3.1 安装tftp服务</a>
    </li>
    <li>
      <a href="#132_xindetd">1.3.2 编写xindetd下的配置文件</a>
    </li>
    <li>
      <a href="#133_xinetd">1.3.3 启动服务,让xinetd 管理</a>
    </li>
    <li>
      <a href="#134">1.3.4 检查端口</a>
    </li>
  </ul>
</li>

<li>
  <a href="#14_HTTP">1.4 配置HTTP服务</a><ul>
    <li>
      <a href="#141_nginxpcre-devel_openssl-devel">1.4.1 安装nginx的依赖包(pcre-devel openssl-devel)</a>
    </li>
    <li>
      <a href="#144_nbspnginx">1.4.4 &nbsp;nginx软件编译安装过程</a>
    </li>
    <li>
      <a href="#147">1.4.7 启动程序</a>
    </li>
    <li>
      <a href="#151">1.5.1 删除默认的主页文件,创建挂载目录</a>
    </li>
    <li>
      <a href="#152">1.5.2 挂载光盘</a>
    </li>
    <li>
      <a href="#153">1.5.3 检查挂载信息</a>
    </li>
  </ul>
</li>

<li>
  <a href="#16_PXE">1.6 配置支持PXE的启动程序</a>
</li>
<li>
  <a href="#17">1.7 创建一个新的虚拟机</a>
</li>
<li>
  <a href="#18_kscfg">1.8 创建ks.cfg文件</a>
</li>
<li>
  <a href="#kscfg">ks.cfg文件详解</a>
</li>
<li>
  <a href="#19_anaconda-kscfg">1.9 查看系统安装完成的anaconda-ks.cfg</a><ul>
    <li>
      <a href="#191_ks">1.9.1 编写ks文件</a>
    </li>
  </ul>
</li>

<li>
  <a href="#110">1.10 编写开机优化脚本</a>
</li>
<li>
  <a href="#111_default">1.11 整合编辑default配置文件</a>
</li>
<li>
  <a href="#111">1.11 以上操作完成后将之前创建的虚拟机重启</a>
</li>