By:Crushlinux

发扬开源精神,普及 linux 教育 - 1 -

作者:Crushlinux

时间:2010-08-02

E-mail:[email protected]

Blog:http://crushlinux.blog.51cto.com

------------------------------------------------------

RHEL5下

DHCP+TFTP+NFS+KICKSTART

PXE无人职守安装

PXE原理图:

实现原理:

1.1说明:

PXE Client:表示需要安装操作系统的机器,统称客户端。

TFTP Server:表示安装TFTPD服务的机器。

DHCP Server:表示安装DHCPD服务的机器。

在实际的操作中往往将TFTP Server,DHCP Server部署在一台机器上,统称服务端

1.2流程:

(1)客户端向服务端上的DHCP发送请求IP地址消息,DHCP检查客户端是否合法(主要检测客户端的网卡地址),如果合法则返回客户端的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给客户端发送pxelinux.0。

By:Crushlinux

发扬开源精神,普及 linux 教育 - 2 -

(2)客户端向服务器上的TFTP发送获取pxelinux.0消息,TFTP接受到消息之后再向客户端发送pxelinux.0大小信息,试探客户端是否满意。当TFTP收到客户端返回的同意大小信息之后,正式向客户端发送pxelinux.0。

(3)客户端运行接收到的pxelinux.0文件

(4) 客户端向TFTP发送针对本机的配置文件信息(记录在TFTP上的pxelinux.cfg目录下),

TFTP将配置文件发给客户端,客户端根据配置文件执行后续操作。

(5)客户端向TFTP发送请求Linux内核信息,TFTP接受到消息之后将内核发送给客户端

(6)客户端向TFTP发送跟文件请求,TFTP接受到消息之后返回Linux根文件系统

(7)客户端启动Linux内核

(8)客户端进入自动安装模式

1.3 适用环境

(1)机器无光驱或者光驱损坏,需要网络安装Linux操作系统

(2)由于人品问题到时系统经常瘫痪,需要隔三差五装系统

(3)需要大规模批量部署Linux操作系统(应用于企业)

环境部署:

服务端IP:192.168.200.104

[root@crushlinux4 ~]# service iptables stop

[root@crushlinux4 ~]# setenforce 0

[root@crushlinux4 ~]# mount /dev/cdrom /mnt/

[root@crushlinux4 ~]# vi /etc/yum.repos.d/yum.repo

[base]

name=base

baseurl=file:///mnt/Server

enable=1

gpgcheck=0

[root@crushlinux4 ~]# rpm -qa |grep tftp

tftp-server-0.49-2

[root@crushlinux4 ~]# rpm -qa |grep dhcp

dhcpv6-client-1.0.10-18.el5

dhcp-3.0.5-23.el5

[root@crushlinux4 ~]# rpm -qa |grep nfs

nfs-utils-lib-1.0.8-7.6.el5

nfs-utils-1.0.9-44.el5

[root@crushlinux4 ~]# rpm -qa |grep portmap

portmap-4.0-65.2.2.1

[root@crushlinux4 /]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

[root@crushlinux4 ~]# vi /etc/dhcpd.conf ddns-update-style interim;

By:Crushlinux

发扬开源精神,普及 linux 教育 - 3 -

ignore client-updates;

subnet 192.168.200.0 netmask 255.255.255.0 {

option routers 192.168.200.1; option subnet-mask 255.255.255.0;

option time-offset -18000; # Eastern Standard Time

range dynamic-bootp 192.168.200.128 192.168.200.254; default-lease-time 21600; max-lease-time 43200; filename "pxelinux.0"; next-server 192.168.200.104; }

[root@crushlinux4 ~]# service dhcpd start

[root@crushlinux4 ~]# cd /tftpboot/

[root@crushlinux4 tftpboot]# cp /mnt/isolinux/* ./

[root@crushlinux4 tftpboot]# mkdir pxelinux.cfg

[root@crushlinux4 tftpboot]# mv isolinux.cfg pxelinux.cfg/default

[root@crushlinux4 tftpboot]# cp /usr/lib/syslinux/pxelinux.0 ./

[root@crushlinux4 tftpboot]# vi /etc/xinetd.d/tftp

修改文件第14行:将disable = yes 更改成no disable = no

[root@crushlinux4 tftpboot]# service xinetd restart

[root@crushlinux4 tftpboot]# vi /tftpboot/pxelinux.cfg/default

修改文件第3,12行: timeout 10 append ks=nfs:192.168.200.104:/pub/ks.cfg initrd=initrd.img

[root@crushlinux4 tftpboot]# yum -y install *kickstart*

[root@crushlinux4 ~]# system-config-kickstart

By:Crushlinux

发扬开源精神,普及 linux 教育 - 4 -

By:Crushlinux

发扬开源精神,普及 linux 教育 - 5 -

By:Crushlinux

发扬开源精神,普及 linux 教育 - 6 -

By:Crushlinux

发扬开源精神,普及 linux 教育 - 7 -

By:Crushlinux

发扬开源精神,普及 linux 教育 - 8 -

[root@crushlinux4 ~]# mkdir /pub

[root@crushlinux4 ~]# mv /root/ks.cfg /pub/

[root@crushlinux4 ~]# chmod 757 /pub/ks.cfg

[root@crushlinux4 ~]# vi /pub/ks.cfg

By:Crushlinux

发扬开源精神,普及 linux 教育 - 9 -

查看第6,10行内容没有请手动添加

key --skip 跳过安装序列号,需要手动修改添加

clearpart --all --initlabel 初始化所有分区(裸机安装最好添加此行)

ks.cfg脚本内容: #platform=x86, AMD64, 或 Intel EM64T # System authorization information auth --useshadow --enablemd5 # System bootloader configuration bootloader --location=mbr key --skip # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Use graphical install graphical # Firewall configuration firewall --disabled # Run the Setup Agent on first boot firstboot --disable # System keyboard keyboard us # System language lang zh_CN # Installation logging level logging --level=info # Use NFS installation media nfs --server=192.168.200.104 --dir=/mnt # Network information network --bootproto=dhcp --device=eth0 --onboot=on # Reboot after installation reboot #Root password rootpw --iscrypted $1$1XcrmvYC$NMhnjtW6I4QUDWpECSK6L0

# SELinux configuration selinux --disabled # System timezone timezone Asia/Shanghai # Install OS instead of upgrade install # X Window System configuration information xconfig --defaultdesktop=GNOME --depth=8 --resolution=1024x768

By:Crushlinux

发扬开源精神,普及 linux 教育 - 10 -

# Disk partitioning information part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100 part swap --asprimary --bytes-per-inode=4096 --fstype="swap" --size=2048 part / --bytes-per-inode=4096 --fstype="ext3" --grow --size=1

%packages @base @gnome-desktop @development-libs @admin-tools @base-x @legacy-software-development @development-tools @chinese-support @gnome-software-development @x-software-development @openfabrics-enterprise-distribution @java-development @legacy-software-support @graphical-internet @system-tools @text-internet @ruby @java

[root@crushlinux4 ~]# vi /etc/exports /mnt *(ro) /pub *(ro)

[root@crushlinux4 ~]# service dhcpd restart

[root@crushlinux4 ~]# service xinetd restart

[root@crushlinux4 ~]# service nfs restart

环境测试:

新建一虚拟机网络模式启动与PXE Server用同一网卡

实验拓展:

问题:使用system-config-kickstart来配置ks.cfg文件时,在软件包选择栏中提示"由于下载软件包信息失败,软件包选择被禁止"

解决方法:

创建一个yum仓库名字一定要是“base”

By:Crushlinux

发扬开源精神,普及 linux 教育 - 11 -

[base]

name=base

baseurl=file:///mnt/cdrom/Server

enabled=1

gpgcheck=0

配置kickstart控制台多lable

[root@crushlinux4 ~]# cd /tftpboot/pxelinux.cfg/

[root@crushlinux4 pxelinux.cfg]# vi default default linux prompt 1 timeout 600 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label 1 kernel vmlinuz append ks=nfs:192.168.200.104:/pub/1.cfg initrd=initrd.img label 2 kernel vmlinuz append ks=nfs:192.168.200.104:/pub/2.cfg initrd=initrd.img label 3 kernel vmlinuz append ks=nfs:192.168.200.104:/pub/3.cfg initrd=initrd.img label 4 kernel vmlinuz append ks=nfs:192.168.200.104:/pub/4.cfg initrd=initrd.img

[root@crushlinux4 pxelinux.cfg]# cd ../

[root@crushlinux4 tftpboot]# vi boot.msg ^L ^Xsplash.lss

- To install or upgrade in graphical mode, press the ^O01^O07 key.

- To install or upgrade in text mode, type: ^O01linux text ^O07.

- Use the function keys listed below for more information.

^O0f[F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]^O07

By:Crushlinux

发扬开源精神,普及 linux 教育 - 12 -

lable 1 --> 1 lable 2 --> 2 lable 3 --> 3 lable 4 --> 4

[root@crushlinux4 tftpboot]# cd /pub/

[root@crushlinux4 pub]# mv ks.cfg 1.cfg

[root@crushlinux4 pub]# cp 1.cfg 2.cfg

[root@crushlinux4 pub]# cp 1.cfg 3.cfg

[root@crushlinux4 pub]# cp 1.cfg 4.cfg

环境测试:

新建一虚拟机网络模式启动与PXE Server用同一网卡