工作原理:

安装过程中无需填写各种参数,生成一个名为ks.cfg的文件;在其后的安装过程中,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装

现在先了解一下安装过程,主要有以下几步;

1、pxe启动,会去寻找dhcp服务器获取ip地址pxelinux.0文件

2、client通过tftp连接到服务器,下载pxelinux.0文件。

3、client下载成功pxelinux.0文件后,系统还会下载控制pxelinux.0的配置文件,叫default。然后client就会按照default的配置来执行pxelinux.0文件。

4、现在client端会在获取一次IP地址。并且根据DHCP服务器配置文件找到kickstart配置

文件并下载。

5、pxelinux.0文件定义的向服务器请求linux内核,根文件系统之类的参数。运行这个文件,client就会向服务器请求相关的文件并下载。

6、文件下载成功后,client就会启动linux内核,这就进入了我们安装时候看见的第一个图形界面,这个界面和自己安装看见的第一个画面一样,回车就是图形安装,输入text就是文本安装那里。如果使用了kickstart,这个界面消失很快,可能看不见。到这里PXE启动就完成了。

7、当按照default要求运行pxelinux.0文件,系统读取内核,挂在根文件系统以后的任务就都交给了kickstart了。包括安装介质来源、语言、时区、分区、安装哪些包等,都是在kickstart文件中定义。只要进入这一步,kickstart配置文件正确,我们的无人值守安装已经成功了

创建kickstart文件的方式:

1、复制模板/root/anaconda-ks.cfg,而后使用vim编辑配置;

2、使用system-config-kickstart来生成,建议也使用/root/anaconda-ks.cfg作为模板来进行;

如果要使用第二种方式就要先安装;yum install -y system-config-kickstart;

执行 system-config-kickstart;

kickstart文件的组成部分;如下

命令部分,用于配置系统的基本属性;  

install

   firewall

   part

   软件包部分;安装系统所需的程序包或程序包组名(@),每行一个。

               如果程序包名称之前附加了“-”号,则表示不安装;

   %packages开始标识

       @Base

       lftp

       tree

       http

   %end结束结识

   脚本部分;  (这一段不是必须的可要可不要)

       %pre;安装过程开始之前执行的安装预备脚本,所能执行的操作较小,是一个受限的环境,因为其仅有简安装版的shell环境;

       %post;所有的软件安装完成之后执行的脚本,具有完整意义上的shell环境

具体内容如下:

[root@station103 ~]# vim anaconda-ks.cfg#version=DEVELinstall#url --url=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/lang en_US.UTF-8keyboard usnetwork --onboot yes --device eth0 --bootproto dhcp --noipv6# Reboot after installationrebootfirewall --disabledauthconfig --useshadow  --passalgo=sha512selinux --disabledtimezone Asia/Shanghai# 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 --allpart /boot --fstype=ext4 --size=200part pv.008002 --size=61440volgroup vg0 --pesize=8192 pv.008002logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480logvol swap --name=swap --vgname=vg0 --size=2048logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480#repo --name="Fedora EPEL"  --baseurl=http://172.16.0.1/fedora-epel/6/x86_64/ --cost=1000@basic-desktop@chinese-support@client-mgmt-tools@core@desktop-platform@fonts@general-desktop@graphical-admin-tools@legacy-x@network-file-system-client@perl-runtime@remote-desktop-clients@x11ibus-table-cangjieibus-table-erbiibus-table-wubilftptree%end

所需用到的程序包;

   httpd

   tftp-server;

   dhcp

   kickstart

   syslinux

操作环境;虚拟机Centos6.5-64位

安装服务所需的程序包;

[root@localhost ~]# yum install -y dhcp tftp-server httpd syslinux

设置dhcp服务并启动;

[root@localhost ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 172.16.0.0 netmask 255.255.0.0 {        range 172.16.34.150 172.16.34.160;   ip地址段        option routers 172.16.0.1;      网关        option domain-name "google.com";    域名        option domain-name-servers 172.16.0.1,8.8.8.8;   域名服务 ip        next-server 172.16.34.100;   指定tftp服务器        filename "pxelinux.0";      tftp根目录的相对路径}[root@localhost dhcp]# service dhcpd restart     启动服务Shutting down dhcpd: [  OK  ]Starting dhcpd: [  OK  ][root@localhost dhcp]# ss -unl | grep "67"    查看端口是否启动UNCONN     0      0                         *:67                       *:*UNCONN     0      0                        :::46786                   :::*[root@localhost dhcp]#查看DH

查看dhcp服务器状态信息;

[root@localhost ~]# vim /var/lib/dhcpd/dhcpd.leases# The format of this file is documented in the dhcpd.leases(5) manual page.# This lease file was written by isc-dhcp-4.1.1-P1server-duid "\000\001\000\001\032\255\337\372\000\014)\251\034\252";lease 172.16.34.150 {  starts 6 2014/03/08 14:11:36;  ends 6 2014/03/08 14:21:36;  cltt 6 2014/03/08 14:11:36;  binding state active;  next binding state free;  hardware ethernet 34:c8:03:b4:62:d8;  uid "\0014\310\003\264b\330";  client-hostname "Windows-Phone";

设置tftp-server并测试tftp-servre服务是否成功启用;

[root@localhost ~]# service xinetd restart     启动服务Stopping xinetd: [  OK  ]Starting xinetd: [  OK  ][root@localhost ~]# ss -unl | grep ":69"UNCONN     0      0                         *:69                       *:*UNCONN     0      0                         *:69                       *:*[root@localhost ~]# chkconfig tftp on[root@localhost ~]# tftp 172.16.34.100tftp> get tttftp> q[root@localhost ~]# lltotal 56-rw-r--r--  1 root root     0 Mar  8 22:32 aa-rw-------. 1 root root  1614 Mar  7 00:53 anaconda-ks.cfg-rw-r--r--. 1 root root 34213 Mar  7 00:53 install.log-rw-r--r--. 1 root root  6926 Mar  7 00:49 install.log.syslog-rw-r--r--  1 root root    47 Mar  8 22:32 issue-rw-r--r--  1 root root     0 Mar  8 22:32 tt

准备tftpboot下的文件;

[root@localhost p_w_picpaths]# yum -y install syslinux[root@localhost p_w_picpaths]# cp /media/p_w_picpaths/pxeboot/vmlinuz /var/lib/tftpboot/[root@localhost p_w_picpaths]# cp /media/p_w_picpaths/pxeboot/initrd.img /var/lib/tftpboot/[root@localhost p_w_picpaths]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/[root@localhost p_w_picpaths]# cp /media/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg[root@localhost ~]# cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default[root@localhost ~]# service xinetd restart   重新启动一下服务[root@localhost ~]# chkconfig tftp on        设为开机自启动

准备httpd服务,服务器通过httpd服务向客户机提供ks.cfg安装文件及安装树;

[root@localhost ~]#cp anaconda-ks.cfg ks.cfg   复制root目录下文件[root@localhost ~]#vim ks.cfg     对ks,cfg文件进行修改[root@localhost ~]#mkdir /var/www/html/centos6  创建挂载目录[root@localhost ~]#mount --bind /media/ /var/www/html/centos6  /media/绑定到centos6目录[root@localhost ~]#cp ks.cfg /var/www/html/ks.cfg   复制到httpd的根目录下[root@localhost ~]#ps aux | grep httpd  查看80端口是否启用[root@localhost ~]#cd /var/www/html    查看文件[root@localhost html]# lscentos6 ks.cfg

 ks.cfg里文件如下;

#platform=x86, AMD64, or Intel EM64T#version=DEVEL# Firewall configurationfirewall --disabled# Install OS instead of upgradeinstalltext# Use network installationurl --url="http://172.16.34.100/centos6"# Root passwordrootpw --iscrypted $1$/zp8vkG4$0soThC/3kqCZAlLNuwK0U.# System authorization informationauth  --useshadow  --passalgo=sha512# Use text mode installfirstboot --disable# System keyboardkeyboard us# System languagelang en_US# SELinux configurationselinux --disabled# Installation logging levellogging --level=info# Reboot after installationreboot# System timezonetimezone  Asia/Shanghai# Network informationnetwork  --bootproto=dhcp --device=eth0 --onboot=on# System bootloader configurationbootloader --append="crashkernel=auto crashkernel=auto rhgb rhgb rhgb quiet quiet quiet" --location=mbr --driveorder="sda"# Clear the Master Boot Recordzerombr# Partition clearing informationclearpart --all --initlabel# Disk partitioning informationpart /boot --fstype="ext4" --size=200part pv.008002 --size=61440volgroup vg0 --pesize=8192 pv.008002logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480logvol swap --name=swap --vgname=vg0 --size=2048logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480%packages@base@chinese-support@client-mgmt-tools@core@fonts@graphical-admin-tools@legacy-x@network-file-system-client@perl-runtime@x11%end

5、新开一台虚拟机测试;

安装软件包;

安装完成后重启;

本人现还在学习阶段,也是第一次写blog,写的不好及有不对之处,还请各位大佬们多多指出,谢谢。