DHCP+TFTP+NFS+PXE+KICKSTART安装LINUX系统(2009-07-15 15:14:45)
转载标签:杂谈 
所有系统的网络安装和无人职守安装都是基于PXE的,当然linux下的无人职守安装也是基于 PXE(Preboot Execution Environment,远程引导技术)技术。同于依耐大量linux服务,最主要的服务包括,kickstart(通过预先设置的脚本,按要求安装系统),dhcpd(很重要,负责pxe启动,还有定义tftp服务器地址kickstart文件位置),nfs、yum、vsftp(为安装提供安装介质),tftp(pxe启动文件传输的通道),dns(如果需要给新安装的机器设置主机名就需要)。由于PXE技术比较深奥,所以我们今
天不做探讨,只做应用。
 下面我介绍下kickstart的工作架构。
首先,完成这个服务需要3个角色
1、启动服务器:给clinet提供启动的相关参数和连接安装服务器使用的IP地址。
2、安装服务器:提供安装所需的配置文件和安装文件。
3、客户端:需要无人职守安装的机器(网卡要支持PXE,也就是可以从网卡启动,现在的电脑基本都支
持,只要你的爱机不是古董)
 下面是工作流程
本来想画个示意图给大家看的,由于美工太差,画出来我自己都看不懂了。所以我就讲述下吧
1、pxe启动,就去广告寻找dhcp服务器获取ip地址hebootstrap文件,成功以后进入第二步(DHCP提供IP地址,还有bootstrap配置文件的位置)

2、client通过tftp连接到服务器,下载bootstrap文件。(linux里的bootstrap文件就是pxelinux.0,
系统内有,大家可以使用#locate pxelinux.0查找它存放的位置)

3、client下载成功pxelinux.0文件后,系统还会下载控制pxelinux.0的配置文件,叫default。然后
client就会按照default的配置
来执行pxelinux.0文件。
4、现在client端会在获取一次IP地址。并且根据DHCP服务器配置文件找到kickstart配置文件并下载。也是使用的tftp协议。
5、pxelinux.0文件定义的想服务器请求linux内核,根文件系统之类的参数。运行这个文件,client就会向服务器请求相关的文件并
下载,都里使用的都是tftp协议。

6、文件下载文成后,client就会启动linux内核,这就进入了我们安装时候看见的第一个图形界面,这
个界面和自己安装看见的第一个画面一样,回车就是图形安装,输入text就是文本安装那里。如果使用
了kickstart,这个界面消失很快,可能看不见。
到这里PXE启动就完成了。
7、下面就该主角kickstart出场了。其实kickstart在第四步已经出现了,当按照default要求运行
pxelinux.0文件,系统读取内核,挂在根文件系统以后,的任务就都交给了kickstart了。包括安装介质
来源、语言、时区、分区、安装哪些包等,都是在kickstart文件中定义。
只要进入这一步,kickstart配置文件正确,我们的无人值守安装已经成功了。

 原理介绍就算完成,下面我们来实战,使用kickstart服务安装系统

序言—为什么要批量安装
一般情况下,我们安装linux采用光驱引导安装程序。但是,如果遇到计算机不带光驱或软驱时,就可以利用 PXE 安装方式。另外,在大量计算机需要同时安装系统的情况下,PXE配合KickStart 安装也是一种高效的工作方式

1.1什么是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 上下载所需的文件。

1.2什么是KickStart
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

1.3安装条件
a.dhcp服务器

b.tftp服务器

c.web(或ftp或nfs)服务器

d.带有pxe网卡的主机

注意:一般情况下,DHCP 服务器和 TFTP 服务器位于同一台 Linux 服务器中。当然,也可以将此服务器同时设置为存放安装文件的 NFS/HTTP/FTP 服务器。

以下是原理图

 

 
1.4配置细节
环境:曙光R210A

安装系统centos5.1 64位

测试成功。

1.4.1 配置dhcp服务器

首先用检查本机是否安装dhcp,如果没有安装可以直接yum安装。

 

接下来配置dhcp.con,以下是我的配置文件

[root@fei~]#vi/etc/dhcpd.conf

# DHCP Server Configuration file.

#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

# dhcpd conf

ddns-update-style none;

ignore client-updates;

allow booting;  #定义可以PXE启动

allow bootp; #支持bootup

filename “pxelinux.0″; #pxelinux loader文件位置

subnet 172.16.0.0 netmask 255.255.255.0 {

# — default gateway

        option routers                  172.16.0.254;

        option subnet-mask              255.255.255.0;

 #       option nis-domain               172.16.0.191;

  #      option domain-name              172.16.0.191;

        option domain-name-servers      172.16.0.191;

# — Selects point-to-point node (default is hybrid). Don’t change this unless

# — you understand Netbios very well

 range  172.16.0.128 172.16.0.254;

        default-lease-time 21600;

        max-lease-time 43200;

        filename “/pxelinux.0″;

}

# Group the PXE bootable hosts together  定义可以PEX启动的主机的组
        group {

                # PXE-specific configuration directives…

                next-server 192.168.168.6;    #TFTPServer的IP

                filename “/pxelinux.0″;#pxelinux loader文件位置

                # You need an entry like this for every host

                # unless you’re using dynamic addresses #可PEX启动的主

#机的IP与MAC地址的邦定

# we want the nameserver to appear at a fixed address

       host client {

                next-server 172.16.0.191;

                hardware ethernet 00:0c:29:75:F1:4B;

                fixed-address 172.16.0.220;

       }

注意:红色部分可以不要,ip与mac绑定是让客户端能更快的获取IP,如果批量安装大量机器无需绑定

配置完成后重新启动dhcp服务器。

1.4.2配置tftp服务器

TFTP Server 的配置文件是 /etc/xinetd.d/tftp,配置文件中指定了 /tftpboot 为 TFTP Server 的根目录位置。下面是一个 tftp 配置文件的例子:

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /tftpboot

disable = no

per_source = 11

cps = 100 2

flags = IPv4

}

注意:默认情况下,tftp 服务不随 xinetd 服务启动而启动,需要修改 /etc/xinetd.d/tftp 文件,将其中的一句 disable=yes 改为 disable=no。

1.4.3配置pxelinux

    配制PEXlinux。要远程启动机器,就必须要有PXElinux这个由syslinux、isolinux派生出来的,支持PXE的 bootloader,它可以实现远程通过PEX启动一台机器。把/usr/lib/syslinux/pxelinux.0考到/tftpboot目录下,把centos5.1第一张安装光盘上/p_w_picpath/pxeboot/initr.img和vmlinux也考到/tftpboot目录下。在 /tftpboot建一个pxelinux.cfg目录,用于放syslinux的配制文件。Sysconfig的配制文件有现成的可用,在 centos5.1第一张安装光盘isolinux/下有一个isolinux.cfg文件,把它考成/tftpboot/default,把isolinux/*.msg考到 /tftpboot下。对default(也就是isolinux.cfg)作一 下修改,下面是我的default文件:
default 4#定义默认启动

prompt 1

timeout 30

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label 1

  kernel vmlinuz

  append initrd=initrd.img text

label 2

  kernel vmlinuz

append ks initrd=initrd.img devfs=nomount ramdisk_size=9216

  append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216

label 3

  kernel vmlinuz

  append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216

label 4 # 我设置为autoinstall

  kernel vmlinuz

  append ks=http://IP/centos/ks.cfg(ks.cfg的实际位置) ksdevice=eth0 (ksdevice=是针对多网卡,指定一个网卡)initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb

然后修改boot.msg文件

以下是我的boot.msg

^Xsplash.lss

 
-  To autoinstall centos5.1, press the ^O0b4<ENTER>^O07 key.#这样是我添加的。意思为只要输入autoinstall就会自动安装。

-  To install or upgrade in graphical mode, press the ^O0b2<ENTER>^O07 key.

 
 -  To install or upgrade in text mode, type: ^O0b1 <ENTER>^O07.

 
 -  Use the function keys listed below for more information.

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

1.4.4产生ks.cfg文件

产生此文件的方法常用有2种,一种是在已经安装图形界面的linux下在终端输入system-config-kickstart(若没安装可以yum安装),这样就出现下图,你可以根据自己选择进行定制,最后

 

最后点文件另存为就产生了ks.cfg文件。

第2种是,在/root文件下有个anaconda-ks.cfg文件,然后按照需要进行更改,并改名。以下是我的ks.cfg文件内容:

# Kickstart file automatically generated by anaconda.

install

url –url http://172.16.0.191/centos/centos5

lang en_US.UTF-8

keyboard us

xconfig –startxonboot

network –device eth0 –bootproto dhcp

network –device eth1 –onboot no –bootproto dhcp

rootpw –iscrypted $1$7WS9Mauf$ysOqjUDQ57erwsobmYQxv.

firewall –enabled –port=22:tcp

authconfig –enableshadow –enablemd5

selinux –enforcing

timezone –utc Asia/Taipei

bootloader –location=mbr –driveorder=sda –append=”rhgb quiet”

# 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 –linux

part /boot –fstype ext3 –size=100

part pv.2 –size=45000

volgroup VolGroup00 –noformat –pesize=32768 pv.2

logvol / –fstype ext3 –name=LogVol00 –vgname=VolGroup00 –size=14976

logvol /var –fstype ext3 –name=LogVol02 –vgname=VolGroup00 –size=9984

logvol /home –fstype ext3 –name=LogVol01 –vgname=VolGroup00 –size=9984

%packages

@office

@editors

@text-internet

@legacy-network-server

@dns-server

@gnome-desktop

@dialup

@core

@base

@ftp-server

@network-server

@games

@base-x

@graphics

@web-server

@smb-server

@printing

@mail-server

@server-cfg

@sound-and-video

@news-server

@graphical-internet

device-mapper-multipath

vnc-server

xorg-x11-server-Xnest

agg

libsane-hpaio

-sysreport

我们也可以根据具体要求,添加脚本什么的。

1.1.5启动pxe安装

启动要安装的机器,首先根据提示信息设置主机从 PXE 引导,然后进入网络引导过程。如果 DHCP 服务器和 TFTP 服务器配置正确,屏幕上将出现 boot: 提示符,稍等片刻。

注意:PXE网络启动一般要求在网卡上加装 PXE 启动芯片;对于某些型号的网卡,也可以将 PXE 启动代码写入主板的闪存;还有一些主板上集成了网卡的品牌机,可以直接支持 PXE 启动。大部分服务器在启动时,可以按F12直接进入PXE网络启动。

至此,整个配置安装结束。