Linux kickstart 无人值守自动安装1

基本原理概述:
   PXE引导安装过程中,PXE客户端通过DHCP获取PXE服务器地址,PXE引导文件名称;然后客户机在使用TFTP协议从TFTP服务器下载引导文件并执行,从而启动计算机安装程序。引导文件执行后,接着下载安装程序启动安装。CentOS使用了ISCdhcpd软件,完成它的安装与配置。
配置过程
 配置无人自动安装,要进行如下步骤:
 ①  配置 DHCP ,用于给客户端提供 IP 地址及其它信息
 ②  配置 TFTP 服务器,用于提供客户端 PXE 引导所必须的文件
 ③  配置 NFS 服务器,用于存放安装文件
 ④  配置 Kickstart ,用于自动应答安装
 ⑤  使用 PXE 功能引导客户机
 
   1、DHCP的安装与配置
1 )安装DHCP软件包
[root@lhn CentOS]# rpm -ivh dhcp-3.0.5-13.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:dhcp                      ########################################### [100%]
[root@lhn CentOS]#
2 )配置DHCP
安装完成后,复制 DHCPD 配置文件模版替换原配置文件 /etc/dhcpd.conf
[root@lhn CentOS]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
接下来我们需要配置相关信息。为了满足我们的安装需求,假设 PXE 服务器、 DHCP 服务器、 TFTP 服务器全部安装在一台为 192.168.2.4 的计算机上。我们需要进行如下操作:
1 )修改 /etc/dhcpd.conf 文件,指定 IP 地址等信息。
2 )在 '''/etc/dhcpd.conf''' 中增加 tftp-server 需要推送给客户端的启动文件( bootstrap ): filename "pxelinux.0" ;因为 tftp 的默认目录是 /tftpboot ,所以文件的绝对路径就是: /tftpboot/pxelinux.0" ;当然也可以指定为其它的路径。
另外需要指定 next-server 参数,告诉客户端在获取到 pxelinux.0 文件之后去哪里获取其余的启动文件: next-server 192.168.1.1;
最终的配置文件结果如下所示:
[root@lhn CentOS]# vi /etc/dhcpd.conf  
ddns-update-style interim;
ignore client-updates;
next-server 192.168.1.1; #TFTP ServerIP地址
filename "pxelinux.0";   #pxelinux 启动文件位置
allow booting; # 定义能够 PXE 启动
allow bootp;  # 定义支持 bootp
subnet 192.168.2.0 netmask 255.255.255.0 {
        range  192.168.2.10 192.168.2.240;
        option routers                  192.168.1.1;
        option subnet-mask              255.255.255.0;
        default-lease-time 21600;
        max-lease-time 43200;
        }
配置完成后,重启 DHCP 服务。
[root@lhn CentOS]# /etc/init.d/dhcpd start
启动 dhcpd                                                [ 确定 ]
 
2、安装配置TFTP服务器
PXE 安装过程中,客户机在使用 TFTP 协议从 TFTP 服务器下载引导文件并执行。我们主要通过配置 TFTP 服务器和 PXE 的引导配置完成这个过程。
1 )安装配置TFTP服务器
首先,安装 TFTP 服务器软件包, RedHat 提供了如下两个软件包:
l  tftp-server :服务端程序
l tftp :客户端程序
[root@lhn CentOS]# rpm -ivh tftp-server-0.42-3.1.i386.rpm
Preparing...                ########################################### [100%]
   1:tftp-server            ########################################### [100%]
[root@lhn CentOS]# 
配置 tftp 服务
tftp 服务由 xinetd 服务管理。编辑 '''/etc/xinetd.d/tftp''' 文件,将 '''disable = yes''' 改为: disable = no
[root@lhn CentOS]# vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
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
}
从这里看出,默认选择 /tftpboot TFTP 服务器的根目录位置,配置完成后重启 xinetd 服务,使 TFTP 服务器生效。
[root@lhn CentOS]# /etc/init.d/xinetd restart
2 PXE引导配置(bootstrap
PXE 启动映像文件由 syslinux 软件包提供, RedHat Enterprise Linux 光盘中已提供,如果没有此软件包可以到 syslinux 主页: http://syslinux.zytor.com/ 下载 rpm 来安装。
我们只要安装了 syslinux ,就会生成一个 pxelinux.0 ,将 pxelinux.0 这个文件复制到 '''/tftpboot''' 目录即可:
[root@lhn CentOS]# rpm -ql syslinux |grep "pxelinux.0"
/usr/lib/syslinux/pxelinux.0
[root@lhn CentOS]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
3)用于网络启动的内核文件
RedHat 安装光盘目录中的 '''images/pxeboot/{vmlinuz,initrd.img}''' 启动文件复制到某个安装目录,比如: '''/tftpboot/ '''
[root@lhn CentOS]# cp /media/rhel5/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/
由于多个客户端可以从一个 PXE 服务器引导, PXE 引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件。如果客户机的网卡的 MAC 地址为 '''88:99:AA:BB:CC:DD''' ,对应的 IP 地址为 192.168.2.195 ,那么客户机首先尝试以 MAC 地址为文件名匹配的配置文件,如果不存在就以 IP 地址来查找。根据上述环境针对这台主机要查找的以一个配置文件就是 /tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd 。如果该文件不存在,就会根据 IP 地址来查找配置文件了,这个算法更复杂些, PXE 映像查找会根据 IP 地址 16 进制命名的客户机配置文件。例如: 192.168.2.195 对应的 16 进制的形式为 C0A801C3 。(可以通过 syslinux 软件包提供的 gethostip 命令将 10 进制的 IP 转换为 16 进制)
如果 C0A801C3 文件不存在,就尝试查找 C0A801C 文件,如果 C0A801C 也不存在,那么就尝试 C0A801 文件,依次类推,直到查找 C 文件,如果 C 也不存在的话,那么最后尝试 default 文件。
总体来说, pxelinux 搜索的文件的顺序是:
/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/pxelinux.cfg/ C0A801C3
/tftpboot/pxelinux.cfg/ C0A801C
/tftpboot/pxelinux.cfg/ C0A801
/tftpboot/pxelinux.cfg/ C0A80
/tftpboot/pxelinux.cfg/ C0A8
/tftpboot/pxelinux.cfg/ C0A
/tftpboot/pxelinux.cfg/ C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default
对于一台需要支持很多安装机器的安装服务器来说,将配置写在与 IP 地址对应的文件里很不灵活。把所有配置都集中在 default 文件中是个不错的主意,可以减轻配置文件维护负担。接下来创建 /tftpboot/pxelinux.cfg/ 目录,该目录用于存放客户端的配置文件。
[root@lhn CentOS]# mkdir /tftpboot/pxelinux.cfg
将光盘中的 '''isolinux/isolinux.cfg''' 文件复制为 '''/tftpboot/pxelinux.cfg/default'''
[root@lhn CentOS]# cp /media/rhel5/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
查看 default 文件内容:
以下内容根据原文件略加修改并做了注释(注:该文件中的空行和以 '''#''' 开头的行都将被忽略)
# 默认启动的是 'label linux' 中标记的启动内核
default linux      
# 显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
prompt 0     
# 在用户输入之前的超时时间,单位为 1/10 秒。
timeout 60         
# 显示某个文件的内容,注意文件的路径。默认是在 /tftpboot 目录下。也可以指定位类似 'install/rhel4.4-inst/boot.msg' 这样的,路径 + 文件名。
display boot.msg  
#F1 boot.msg  # 按下 'F1' 这样的键后显示的文件。注意路径。默认是 /tftpboot 。注: syslinux 官方网站上说目前只能使用 F1-F10
#F2 options.msg
#F3 general.msg
#F4 param.msg
#F5 rescue.msg
# 'label' 指定你在 'boot:' 提示符下输入的关键字。
# 比如:
# boot: linux[ENTER]
# 这个会启动 'label linux' 下标记的 kernel initrd.img 文件。
# 这里还定义了其它几个关键字:
#  boot: text
#  boot: ks
# kernel 参数指定要启动的内核。同样要注意路径,默认是 /tftpboot 目录。
# append 指定追加给内核的参数,能够在 gurb 里使用的追加给内核的参数,在这里也 都可以使用。
# 使用 kickstart 安装。
# 可以在 ks 参数后直接指定 kickstart 文件的位置。
label linux
  kernel vmlinuz
  append ks=nfs:192.168.2.4:/mnt/install/ks.cfg  initrd=initrd.img
#label text
  #kernel vmlinuz
  #append initrd=initrd.img text
#label ks
kernel vmlinuz
append ks initrd=initrd.img
#… …
 

你可能感兴趣的:(linux,职场,休闲,linux系统)