工作原理:
安装过程中无需填写各种参数,生成一个名为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=DEVEL install #url --url=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/ lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 # Reboot after installation reboot firewall --disabled authconfig --useshadow --passalgo=sha512 selinux --disabled timezone 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 --all part /boot --fstype=ext4 --size=200 part pv.008002 --size=61440 volgroup vg0 --pesize=8192 pv.008002 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 logvol swap --name=swap --vgname=vg0 --size=2048 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 logvol /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 @x11 ibus-table-cangjie ibus-table-erbi ibus-table-wubi lftp tree %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-P1 server-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.100 tftp> get tt tftp> q [root@localhost ~]# ll total 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 images]# yum -y install syslinux [root@localhost images]# cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/ [root@localhost images]# cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/ [root@localhost images]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@localhost images]# 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]# ls centos6 ks.cfg
ks.cfg里文件如下;
#platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install text # Use network installation url --url="http://172.16.34.100/centos6" # Root password rootpw --iscrypted $1$/zp8vkG4$0soThC/3kqCZAlLNuwK0U. # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install firstboot --disable # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --append="crashkernel=auto crashkernel=auto rhgb rhgb rhgb quiet quiet quiet" --location=mbr --driveorder="sda" # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part pv.008002 --size=61440 volgroup vg0 --pesize=8192 pv.008002 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 logvol swap --name=swap --vgname=vg0 --size=2048 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 logvol /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,写的不好及有不对之处,还请各位大佬们多多指出,谢谢。