linuxPxe+Dhcp+Nfs+Kickstart无人值守自动安装linux系统

1PXE介绍

PXE(Pre-bootExecution Environment)是由Inter设计的协议,它可以使计算机通过网络启动,协议扥为serverclient两端,PXE client在网卡的ROM中,当计算机引导时,BIOSPXE client调入到内存中执行,并显示出菜单命令,经用户选择PXE启动后PXE client获得网络地址信息,然后将放置在远端服务器上的操作系统文件通过网络下载到本地运行。

既然是通过网络传输,就需要ip地址,就是说在PXE启动过程中,PXE客户机会向DHCP服务器请求分配ip地址,之后PXE client使用TFTPclient通过TFTPTrivial File Transfer Protocol)协议连接服务器下载启动安装程序所需的文件到本地。

2无人值守安装过程

1、         PXEclientDHCP server发送请求

首先,将支持PXE的网络接口卡的计算机的BIOS设置成以PXE方式优先启动,此时,PXE client通过PXE Boot ROM(自启动芯片)会以UDP(简单用户数据协议)的形式在网络中发送一个广播请求,请求DHCP服务器分配ip地址等相关信息。

2、         DHCP服务器应答PXE client

DHCP服务收到客户端的请求,验证是否来自合法的PXE client,验证通过后,它会回应PXE client,会应中包含了为PXE client分配的ip地址、pxelinux启动程序(tftp位置),以及配置文件所在的位置。

3、         PXE客户端请求下载启动文件

客户端收到服务端的回应后,会向tftp服务器请求传送启动系统安装所需的文件,这些启动文件包括:pxelinux.0pxelinux.cfg/defaultvmlinuzinitird.img等文件。

4、         TFTP服务器响应客户端请求并传送文件

TFTP服务器收到客户端的请求后,它们之间将有更多的信息在客户端与服务端间进行应答,用以决定决动参数,BootROMtftp通讯协议从boot server下载启动安装程序所必须的文件(pxelinux.0pxelinux.cfg/default),default文件下载完成后,会根据文件中定义的引导顺序,启动linux安装程序的引导内核。

5、         请求下载自动应答文件

PXE client通过pxelinux.cfg/default文件成功的引导linux安装内核后,安装程序首先必须确定你通过什么安装介质进行安装linux,如果是通过网络安装(NFS HTTP FTP),则会在这个时候初始化网络,并定位安装系统所需的二进制包以及文件的位置,接着会读取该文件中指定的自动应答文件ks.cfg,然后根据ks.cfg文件请求下载相关文件。

6、         客户端安装操作系统

ks.cfg文件下载回来后,通过该文件找到OS server(可以使NFS HTTP FTP)等,并按照该文件的配置请求下载安装过程所需的软件包。

OS server和客户端建立连接后,将开始传输软件包,客户端开始安装操作系统,安装完成后将提示重启计算机。

1配置NFS服务器,用于存放linux安装文件。

2配置TFTP服务器,用于提供客户端PXE引导所必需的文件。

3配置DHCP服务器,用于给客户端提供ip地址及其他信息。

4配置Kickstart,用于自动应答安装。

5使用PXE功能引导客户机。

1安装NFS服务及配置文件共享目录

1)         创建共享目录,并将光盘中的内容拷贝到共享目录中去

mkdir/data/ -p

mount/dev/sr0  /mnt/

cp -a/mnt/* /data/  (太慢)

mount/dev/sr0 /data/

2)         安装配置NFS,将目录共享出去

rpm -qa  nfs*

nfs-utils-1.2.3-39.el6.x86_64

nfs-utils-lib-1.1.5-6.el6.x86_64

echo "/data/ 192.168.0.0/24(ro,sync)" >> /etc/exports

cat /etc/exports

/data/ 192.168.0.0/24(ro,sync)

3)         启动NFS使配置生效

portmap服务在centos中被改名为rpcbind

/etc/init.d/rpcbind start

正在启动 rpcbind:                                 [确定]

/etc/init.d/nfsrestart

关闭 NFS 守护进程:      [确定]

关闭 NFS mountd:        [确定]

关闭 NFS quotas:         [确定]

关闭 NFS 服务:         [确定]

Shuttingdown RPC idmapd:  [确定]

启动 NFS 服务:         [确定]

关掉 NFS 配额:         [确定]

启动 NFS mountd:         [确定]

启动 NFS 守护进程:     [确定]

正在启动 RPC idmapd:    [确定]

配置portmap及nfs服务开机启动

chkconfig  nfs  on

chkconfig  rpcbind on

chkconfig  --list nfs

nfs              0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

chkconfig  --list rpcbind

rpcbind          0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用6:关闭

4)         检查目录是否被正确的共享出来

showmount -e 192.168.152.129

Export list for 192.168.152.129:

/data 192.168.0.0/24

2安装配置TFTP服务器

yum install  tftp-server*

配置tftp服务

#default: off

#description: The tftp server serves files using the trivial file transfer \

#protocol.  The tftp protocol is often used to bootdiskless \

#workstations,download configuration files to network-aware printers, \

# andto start the installation process for some operating systems.

servicetftp

{

socket_type       =dgram

protocol          = udp

wait             = yes

user             = root

server           = /usr/sbin/in.tftpd

server_args       = -s /tftpboot默认的tftp路径,把启动文件放在这里

disable           = no 将yes改成no

per_source       =11

cps             = 100 2

flags             = IPv4

}

重新启动xinetd使配置的tftp生效

/etc/init.d/xinetdrestart

正在启动 xinetd:  [确定]

chkconfigxinetd on

chkconfig--list xinetd

xinetd            0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

3 PXE引导配置(bootstrap)

pxe启动镜像文件由syslinux软件包提供,安装syslinux后生成一个pxelinux.0,将pxelinux.0复制到/tftpboot下即可。

mkdir/tftpboot

cp -a/usr/share/syslinux/pxelinux.0 /tftpboot/

ls -l/tftpboot/

总用量 28

-rw-r--r--.1 root root 26828 2月  22 2013 pxelinux.0

                 用于网络启动的内核配置

将安装光盘目录中的isolinux/{vmlinuz,initrd.img}启动文件复制到某个安装目录比如/tftpboot

cp isolinux/{vmlinuz,initrd.img} /tftpboot/

在/tftpboot目录下创建pxelinux.cfg目录

将光盘中的/isolinux/isolinux.cfg复制成pxelinux.cfg/default

cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default

default vesamenu.c32//text就是文本安装,linux就是图形安装

#prompt 1//显示boot改成0就不提示,就会直接启动default参数中指定的内容

timeout 600//用户输入前的超时时间,单位为0.1秒

 

display boot.msg

 

menu background splash.jpg

menu title Welcome to CentOS 6.5!

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000

 

label linux

 menu label ^Install or upgradean existing system

 menu default

 kernel vmlinuz

append initrd=initrd.imgks=nfs:192.168.152.129:/data/kickstart/ks.cfg

ksdevice=eth0   //如果有多块网卡用此参数

label vesa

  menu label Install system with^basic video driver

  kernel vmlinuz

  append initrd=initrd.imgxdriver=vesa nomodeset

label rescue

  menu label ^Rescue installedsystem

  kernel vmlinuz

  append initrd=initrd.img rescue

label local

  menu label Boot from ^localdrive

  localboot 0xffff

label memtest86

  menu label ^Memory test

  kernel memtest

  append –

label指定在boot提示符下输入的内容如:boot:linux 【enter】

这个会启动“label linux“下标记的kernel和initrd.img 文件

kernel参数指定要启动的内核,同样要注意,默认的路径/tftpboot

append指定追加给内核的参数,能够在grub里使用的追加给内核的参数,在这里也可以使用。

使用kickstart安装,可以在ks参数后直接指定kickstart文件的位置

4安装及配置DHCP服务

1配置dhcp

(1)修改vi /etc/dhcp/dhcpd.conf,指定ip地址等信息。

(2)vi /etc/dhcp/dhcpd.conf中增加tftp-server需要推送给客户端的启动文件(bootstrap),filename  “pxelinux.0”因为tftp默认目录是/tftpboot,所以文件的绝对路径就是/tftpboot/pxelinux.0,当然也可以指定别的目录,还需要指定next-server参数告诉客户端在获取到pxelinux.0文件之后去哪里去获取其余的指定文件next-server 192.168.152.129

vi/etc/dhcp/dhcpd.conf

ddns-update-stylenone;

ignoreclient-updates;

allowbooting; //允许PXE启动

allowbootp; //允许boottp

default-lease-time600;

max-lease-time21600;

optionrouters 192.168.152.1;

subnet192.168.152.0 netmask 255.255.255.0 {

   range192.168.152.110  192.168.152.120;

   next-server 192.168.1.129; //tftp serverip地址

   filename"/data/kickstart/ks.cfg";

   filename"/tftpboot/pxelinux.0" ; //pxelinux启动文件位置

}

启动dhcp并设置为开机自启动

/etc/init.d/dhcpdrestart

chkconfigdhcpd on

chkconfig--list dhcpd

dhcpd      0:关闭   1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

5kickstart安装配置

安装好一台linux服务器后,安装程序都会创建一个kickstart配置文件,记录真实的安装配置生成的文件名叫anaconda-ks.cfg(位置/root/anaconda-ks.cfg

图形化kickstart配置工具redhat-config-kickstart

cp/root/anaconda-ks.cfg /data/kickstart/ks.cfg

chmod644 /data/kickstart/ks.cfg

kickstart配置文件详解

# Kickstart file automaticallygenerated by anaconda.

 

#version=DEVEL

install  //表示系统安装不是升级

nfs –server=192.168.152.129  --dir=/data/centos nfs方式安装 –server为nfs的ip   --dir为nfs的共享路径

使用http方式

#url –url=http://192.168.152.129/centos5.8

lang zh_CN.UTF-8   字符集设置

keyboard us键盘设置

network --onboot yes --deviceeth0 --bootproto dhcp --noipv6

firewall  --disabled //禁用防火墙  

authconfig  --enableshadow  --passalgo=sha512//系统认证信息

selinux --disabled  //禁用selinux

timezone  --utc Asia/Shanghai

bootloader --location=mbr--driveorder=sda --append="crashkernel=auto rhgb quiet"  //系统引导

# The following is the partitioninformation you requested

# Note that any partitions youdeleted are not expressed

# here so unless you clear allpartitions first, this is

# not guaranteed to work

zerombr

#clearpart --linux --drives=sda

clearpart  --all

part  /boot   --fstype=ext3 --size=200  --asprimary

part  /home  --fstype=ext3 --size=5000

part  /usr  --fstype=ext3 --size=7000

part  /  --fstype=ext3 --size=13000   --asprimary

part  swap   --size=200

reboot

#part pv.008002 --grow --size=1

#volgroup vg_centos--pesize=4096 pv.008002

#logvol / --fstype=ext4--name=lv_root --vgname=vg_centos --grow --size=1024 --maxsize=51200

#logvolswap --name=lv_swap --vgname=vg_centos --grow --size=2016 --maxsize=2016

repo  --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages

@base

@chinese-support

@core

@basic-desktop

@desktop-platform

@directory-client

@fonts

@general-desktop

@graphical-admin-tools

@internet-applications

@internet-browser

@network-file-system-client

#repo  --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

@base

@chinese-support

@core

@debugging

@basic-desktop

@desktop-debugging

@desktop-platform

@directory-client

@fonts

@general-desktop

@graphical-admin-tools

@internet-applications

@internet-browser

@network-file-system-client

@remote-desktop-clients

@server-platform

@server-policy

@workstation-policy

@x11

%end

%post

useradd zhuwei

echo “zhuwei” |passwd   --stdin zhuwei

注意:chmod 755 pxelinux.cfg/权限

chmod 700 /data/kickstart/ks.cfg