设为首页收藏本站language 语言切换
查看: 1361|回复: 2
收起左侧

【武汉引航】PXE+KickStart

[复制链接]
发表于 2013-11-14 11:12:59 | 显示全部楼层 |阅读模式
前些日子在做一个XX钢厂的系统集成项目,网络技术在此就不敢献丑了,主要用到了一些虚拟化和AAA的技术;今天呢我给大家分享一下在系统方面用的无人值守自动化安装的技术PXE+KickStart技术;由于这次项目中涉及到对每个厂区中的称重磅房进行远程计量操作,由于称重磅房在钢厂的数量实在太多,且磅房中所需安装的操作系统基础环境基本一致,因此选择了此技术进行远程无人值守安装;在这个过程中主要通过每个称重磅房的光纤通信系统汇聚到信息中心大楼中的汇聚交换机,远程安装服务器连接交换机;下面就用到的协议和技术进行简单的分析:

       PXE(Pre-boot Execution Environment)是Intel设计的协议,主要功能提供了从网络启动操作系统或者启动安装器anaconda环境;协议分为客户端和服务器端,PXE 客户端存在网卡的ROM芯片中,当计算机启动引导时,BIOS把PXE 客户端调入内存执行,并显示出一系列命令菜单,经用户选择后,PXE 客户端将放置在远端服务器的必要文件通过网络下载到本地运行。
既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件;

    简单的讲:PXE网络安装,客户机通过支持PXE的NIC向网络中发送请求DHCP信息的广播报文请求TCP/IP信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动管理器配置文件等),之后请求并下载安装需要的文件。在这个过程中需要一台远程服务器来提供安装器文件(anaconda)(initrd.img,vmlinuz内核文件)、安装文件(系统镜像ISO文件)、以及安装过程中的无人值守文件(ks.cfg)等XELINUX.0引导程序类似于普通安装过程中的GRUB引导程序;

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

插曲:在实施过程中,客户问到一些问题,为什么要选择使用TFTP协议?首先,选择哪种协议并不是绝对的;远程客户端从DHCP服务器获得合法IP地址之后,就会请求远程服务器给自己一个Linux引导程序以便于引导linux且在远程客户端上实现安装界面;如果是采用的TCP协议来进行数据数据传输的话,会经历TCP协议三次握手过程,从而导致了远程客户端等待超时而无法实现引导过程;因此采用了UDP协议来进行数据传输,虽然不安全,但是执行效率高;
----------------------------------------------------------------------------------------------------------------------
1.jpg


实施步骤:
1.远程服务器安装所需的服务信息(dhcp,ftp,tftp,kickstart)利用YUM源安装;
分析一下,DHCP服务器为远程客户端分配TCP/IP信息,以及TFTP服务器地址和启动管理器配置文件;FTP服务器为远程客户端提供了系统安装文件;TFTP服务器存放PXE相关的配置信息文件(系统引导文件);KICKSTART生成ks.cfg配置文件;
Command:
mount /dev/cdrom /mnt
[root@RGXXZX ~]# cd /etc/yum.repos.d/
[root@RGXXZX yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@lRGXXZXyum.repos.d]# vim CentOS-Media.repo

[RGXXZX]
name=CentOS-$releasever - Media
baseurl=file:///mnt  YUM源本地安装路径
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6    GPG校验,在REDHAT中是需要花钱的;

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

[root@RGXXZX ~]# yum -y install dhcp vsftpd tftp* system-config-kickstart----kickstart的安装软件包
[root@RGXXZX ~]# cat /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
{
        disable                                         = no
                socket_type                              = dgram
        protocol                                 = udp
        wait                        = yes
        user                        = root
        server                        = /usr/sbin/in.tftpd
        server_args                = -s /tftpboot
        per_source                = 11
        cps                        = 100 2
        flags                        = IPv4
}

[root@RGXXZX ~]# netstat -anu | grep 69
udp        0      0 0.0.0.0:69                  0.0.0.0:*                              
udp        0      0 0.0.0.0:46992               0.0.0.0:*      
                        
[root@RGXXZX ~]# lsof -i :69
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  32280 root    5u  IPv4  67192      0t0  UDP *:tftp
测试是否对外开放了通信端口69;


[root@RGXXZX ~]# cat /etc/dhcp/dhcpd.conf  | more

subnet 10.1.210.0 netmask 255.255.255.0 {
  range 10.1.210.10 10.1.210.100;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.1.210.11;
  option broadcast-address 10.1.210.255;
  default-lease-time 600;
  max-lease-time 7200;
  filename "/pxelinux.0";------启动管理器程序;
  next-server 10.1.210.11;----TFTP服务器地址;

服务重新加载以及相对应运行级别自动启动设置;
[root@RGXXZX ~]# /etc/init.d/vsftpd restart &&  /etc/init.d/dhcpd restart && /etc/init.d/xinetd restart
[root@RGXXZX ~]# chkconfig vsftpd on && chkconfig dhcpd on && chkconfig tftp on

复制启动、内核文件以及启动镜像文件;
[root@RGXXZX ~]# rpm -q syslinux
syslinux-4.02-7.el6.i686
[root@RGXXZX ~]# rpm -ql syslinux  | grep "pxelinux"
/usr/share/doc/syslinux-4.02/pxelinux.txt
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@RGXXZX ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[root@RGXXZX ~]#  cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /tftpboot
[root@RGXXZX ~]# cp /mnt/isolinux/boot.msg /tftpboot/
[root@RGXXZX ~]# mkdir /tftpboot/pxelinux.cfg
[root@RGXXZX ~]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
在这里需要注意如果生产环境使用的是6.4之上的版本的话,在启动管理器程序中不提供initrd.img和vmlinuz文件,需要自行下载
-----------------------------------------------------------------------------------------------------------------------------------------------------
编辑配置文件如下:
[root@RGXXZX pxelinux.cfg]# cat default
default linux
prompt 1
timeout 100

label linux
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://10.1.210.11/pub/ks.cfg


2.将系统镜像ISO文件复制到/var/ftp/pub中,同时也将ks.cfg文件也放入此目录中;
生成ks.cfg文件的过程如下,先保存在/root目录中,然后剪切到目标目录;

2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg

[root@RGXXZX ~]# cat /var/ftp/pub/ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://10.1.210.11/pub"
# Root password
rootpw --iscrypted $1$lGjyxtXg$TYUfJI/SyX1YbK.WzsL7X.
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Africa/Abidjan
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="ext4" --size=6500
part swap --fstype="swap" --size=1024
part /boot --fstype="ext4" --size=1024

%packages
@base
@development
@general-desktop
@graphical-admin-tools
@internet-applications
@internet-browser
@java-platform
@system-admin-tools
@x11

%end
=====================================
祝工作顺利~~~~
望大家多多支持哈~



















发表于 2013-12-4 10:02:42 | 显示全部楼层
沙发 2013-12-4 10:02:42 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-12-27 14:28:55 | 显示全部楼层
#在这里快速回复#
板凳 2013-12-27 14:28:55 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-31 15:52 , Processed in 0.076200 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表