利用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

clip_image002

clip_image004

clip_image006

clip_image008

clip_image010

clip_image012

clip_image014

clip_image016

clip_image018

编写一个脚本作为安装后脚本:

ADDRESS=`ifconfig |grep –I bcast|awk ` '{print $2 } '`

NUM=${ADDRESS##*.}

sed –i ''s/HOSTNAME.*$/HOSTNAME=station$NUM.a.com/ '' /etc/sysconfig/network

[root@mh3570 ~]# vim ks.cfg

key –skip————加一条指令

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自动安装

clip_image020

clip_image022

安装成功:

clip_image024

成功登陆:

clip_image026