利用kickstart实现pxe的自动安装
1. pxe以及kickstart原理
什么是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。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
什么是KickStart
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个 名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文 件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根 据ks.cfg中设置的重启选项来重启系统,并结束安装。
PXE + KickStart安装的条件
执行 PXE + KickStart安装需要的设备为:
DHCP 服务器
TFTP 服务器
KickStart所生成的ks.cfg配置文件
一台存放系统安装文件的服务器,如 NFS、HTTP 或 FTP 服务器
带有一个 PXE 支持网卡的将安装的主机
2. 配置pxe自动安装的步骤
建立挂载点:
[root@mh3570 ~]#
[root@mh3570 ~]# mkdir /mnt/cdrom
[root@mh3570 ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
编辑库文件:
[root@mh3570 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-server]
name=Red Hat Enterprise Linux server
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[rhel-vt]
name=Red Hat Enterprise Linux vt
baseurl=file:///mnt/cdrom/VT
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[rhel-cluster]
name=Red Hat Enterprise Linux cluster
baseurl=file:///mnt/cdrom/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[rhel-clusterstorage]
name=Red Hat Enterprise Linux clusterstorage
baseurl=file:///mnt/cdrom/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
安装软件包:
[root@mh3570 ~]#yum install -y vsftpd
Installed:
vsftpd.i386 0:2.0.5-16.el5
[root@mh3570 ~]# yum install -y dhcp
Installed:
dhcp.i386 12:3.0.5-21.el5
[root@mh3570 ~]# yum list all |grep tftp
This system is not registered with RHN.
RHN support will be disabled.
tftp-server.i386 0.49-2 installed
tftp.i386 0.49-2 rhel-server
Complete!
重启服务:
[root@mh3570 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@mh3570 ~]# chkconfig vsftpd on(开机自启动)
[root@mh3570 ~]# cd /mnt/cdrom
[root@mh3570 cdrom]# cp -r . /var/ftp/pub
[root@mh3570 ftp]# cd /mnt
[root@mh3570 mnt]# du -sh cdrom
2.8G cdrom
编辑dhcpd,修改IP地址等:
[root@mh3570 ~]# vim /etc/dhcpd.conf
ignore client-updates;
subnet 192.168.101.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.101.1;
option subnet-mask 255.255.255.0;
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 222.88.88.88;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.101.2 192.168.101.100;
重新启动服务:
[root@mh3570 ~]# service dhcpd start
Starting dhcpd: [ OK ]
[root@mh3570 ~]# chkconfig dhcpd on
[root@mh3570 ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@mh3570 ~]# cd /
[root@mh3570 /]# cd tftpboot
[root@mh3570 tftpboot]# cp /usr/lib/syslinux/pxelinux.0 ./
[root@mh3570 tftpboot]# cp /mnt/cdrom/images/pxeboot/vmlinuz ./
[root@mh3570 tftpboot]# cp /mnt/cdrom/images/pxeboot/initrd.img ./
[root@mh3570 tftpboot]# ll
-r--r--r-- 1 root root 6855881 08-02 22:08 initrd.img
drwxr-xr-x 4 root root 4096 07-24 19:47 linux-install
-rw-r--r-- 1 root root 13148 08-02 21:39 pxelinux.0
-r--r--r-- 1 root root 1855956 08-02 22:08 vmlinuz
[root@mh3570 tftpboot]#mkdir -pv pxelinux.cfg
[root@mh3570tftpboot]#cp/mnt/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
[root@mh3570 ~]# cd /var/ftp
安装kickstart:
[root@mh3570 ftp]# yum install -y system-config-kickstart
Complete!
[root@mh3570 ftp]# system-config-kickstart------------启动kickstart
编写一个脚本作为安装后脚本:
ADDRESS=`ifconfig |grep �CI bcast|awk ` '{print $2 } '`
NUM=${ADDRESS##*.}
sed �Ci ''s/HOSTNAME.*$/HOSTNAME=station$NUM.a.com/ '' /etc/sysconfig/network
[root@mh3570 ~]# vim ks.cfg
key �Cskip――――加一条指令
selinux --disabled
# System timezone
timezone Asia/Shanghai
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig --defaultdesktop=GNOME --depth=8 --resolution=640x480
# Disk partitioning information
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100
part / --bytes-per-inode=4096 --fstype="ext3" --size=10000
part swap --bytes-per-inode=4096 --fstype="swap" --size=512
%post --interpreter=/bin/bash
ADDRESS=`ifconfig |grep ?. bcast|awk ` '{print $2 } '`
NUM=${ADDRESS##*.}
sed ?. ''s/HOSTNAME.*$/HOSTNAME=station$NUM.a.com/ '' /etc/sysconfig/network
%packages
@gnome-desktop
@development-libs
@development-tools
@x-software-development
@system-tools
@admin-tools
@gnome-software-development
@sound-and-video
@graphical-internet
@text-internet
@editors
[root@mh3570 pxelinux.cfg]# vim /etc/dhcpd.conf
next-server 192.168.101.101;
filename "pxelinux.0";-------增加两条指令
[root@mh3570 ~]# cd /tftpboot/
[root@mh3570 tftpboot]# cd pxelinux.cfg/
[root@mh3570 pxelinux.cfg]# vim default
append ks=ftp://192.168.101.101/pub/ks.cfg ksdevice=eth0 initrd=initrd.img---------增加这样一条指令
timeout 6------------时间改为6秒
把位于根目录下的ks.cfg拷贝到pub里
[root@mh3570~]#cp ks.cfg /var/ftp/pub
把防火墙关掉:
[root@mh3570~]vim /etc/xinetd.d/tftp
distabes no
3. 实验测试结果:
开始pxe自动安装
安装成功:
成功登陆: