独辟蹊径网络安装Debian/Ubuntu

此文章是Linux部署方式系列文章中的第三部分,回归到主流的RedHat衍生版体系以及描述对比PXE安装服务的实现及使用Kickstart在部署主机系统是的妙用。本文涉及的内容是对现有Redhat体系的网络安装方式的一个总结,重点是在讲述PXE安装服务器的核心内容实现方式并不限于Linux环境;结合Kickstart如何快速的实现安装主机的基本信息的配置,以及如何定制主要软件包,同样灵活应用Kickstart和tftp可以具体指定那台主机安装那些配置好的参数,节省管理员的时间和精力,自动安装减少了人为出错的几率。好处自然是很多,这里就不过多描述了,下面开始本文的内容。主要针对目前的RHEL5.3版本以及CentOS5.2版本为例。

首先熟悉一下PXE网络安装服务器的架构。PXE安装分为两个阶段,第一个阶段是BOOTP阶段,此阶段完全由网卡自带的PXEROM芯片所决定,Linux主机将从tftpserver上获得PXELinux启动内核和initrd.img文件;第二个阶段是在PXELinux内核启动Linux主机网络安装进程阶段,Linux主机需要和安装服务器进行网络通信,需要通过DHCP服务获得IP地址,以便获得安装脚本和获得安装文件。从下图可以看到PXE网络安装服务器包含一个DHCP和TFTP主要解决主机没有操作系统的BOOTP阶段获取必要的安装信息,就是通过加载vmlinuz和initrd.img进入Linux安装的引导过程。其次就是要准备一个安装的镜像服务器并通过nfs、ftp、http等协议将Redhat&Centos的安装源(安装目录树)发布供安装使用,同时简单的变动一下这个安装目录树同样可以成为一个本地的yum源。重要的一点就是要提通过KickstartScript配置文件实现安装的自动化。

独辟蹊径网络安装Debian/Ubuntu

图:PXE网络安装服务架构

实际上为了保持这个架构的通用性,将分别讲述在Redhat&Centos中的实现方式以及在Windows环境中的实现方式。实际上借助一些简单的工具PXE网络安装往往可以成为一个便携的方式存在。

在Redhat&Centos中安装tftp和dhcp,通过yum完成,这个对与Centos5.2非常的便利,至于在redhat中的操作,可以看后文中描述的建议的yum源的实现。
yum                        -y install tftp-server  #完成tftp                        server的安装
yum                        -y install dhcp*       #完成dhcp                        server的安装

实际上PXE安装中有疑问的部分就是配置一个tftp的目录、设置dhcp的tftp启动参数、建立Redhat&Centos的安装目录树。要清楚这些问题先要从tftp主目录/tftpboot下的目录和文件用途说起。

/tftpboot/pxelinux.0                          #文件
/tftpboot/*.msg                               #文件
/tftpboot/vmlinuz                             #文件
/tftpboot/initrd.img                          #文件
/tftpboot/pxelinux.cfg                        #目录

Redhat&Centos安装程序的内核vmlinuz/根文件系统文件initrd.img是PXE安装过程的第一步,正确引导后将看到boot.msg(*.msg中的一个)提示信息,用户选择安装方式,pxelinux.0启动镜像文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下。

明白了tftpboot目录下的文件和目录的作用就要弄清楚这些文件是从那里获取的,这些文件就在已经安装好的Redhat&Centos系统和安装光盘中。为了便于获取这些文件需要建立一个安装的目录树,具体操作也是很简单的mount上DVD镜像,建议使用DVD镜像当然CD镜像也是可以的,然后可以通过如下的命令复制DVD镜像上的全部的内容到安装目录树中

mkdir                        /InstallOs    #建立安装目录树文件夹                        InstallOs
mount                        -o loop /home/CentOS-5.2-i386-bin-DVD.iso /mnt                            #将centos的DVD镜像mount
cd                        /mnt  #进入镜像加载目录
tar                        cf - . |(cd  /InstallOs;tar xfp -)                         #

将DVD镜像文件全部复制到安装目录树文件夹InstallOs

下面就从安装目录树文件夹和当前的系统中获取tftpboot目录中的文件和文件夹

cp                        /usr/lib/syslinux/pxelinux.0 /tftpboot/    #获取                        pxelinux.0文件
cp                        /InstallOs/isolinux/initrd.img /tftpboot
cp                        /InstallOs/isolinux/vmlinuz /tftpboot
cp                        /InstallOs/isolinux/*.Msg /tftpboot
mkdir                        /tftpboot/pxelinux.cfg      #建立pxelinux.cfg目录
cp                        /InstallOs/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/
mv                        /tftpboot/pxelinux.cfg/isolinux.cfg /tftpboot/pxelinux.cfg/default

到此已经建立了一个基础的tftpboot目录机构和一个安装目录树。基础工作结束下面进入到tftp和dhcp的服务参数设置过程。具体设置参考下列配置文件:

1、dhcp配置文件cat/etc/dhcpd.conf中的蓝色部分是设置支持BOOTP的参数,注意其中的filename"pxelinux.0";如果缺少这个信息逻辑将无法获取到安装程序的内核vmlinuz/根文件系统文件initrd.img;红色的部分是dhcp客户端获取的ip子网的信息,注意保持设置的subnet信息的一致性。
#cat                        /etc/dhcpd.conf
ddns-update-style                        none;
ddns-updates                        off;
deny                        client-updates;
one-lease-per-client                        false;
allow                        bootp;
option                        T150 code 150 = string;
allow                        booting;
class                        "pxeclients"{
match                        if substring(option vendor-class-identifier,0,9) = "PXEClient";
filename                        "pxelinux.0";
next-server                        172.16.1.9;
}
subnet                        172.16.0.0 netmask 255.255.0.0 {
option                        routers                  172.16.1.9;
option                        subnet-mask              255.255.0.0;
option                        nis-domain               "telecarenet.cn";
option                        domain-name              "lvs.local";
option                        domain-name-servers      172.16.1.9;
option                        time-offset              -18000; # Eastern Standard Time
range                        dynamic-bootp 172.16.1.160  172.16.1.230;
default-lease-time                        21600;
max-lease-time                        43200;
#                        we want the nameserver to appear at a fixed address
host                        diskless {
next-server                        172.16.1.9;
hardware                        ethernet 00:02:b3:ee:7b:74;
fixed-address                        172.16.1.210;
filename                        "pxelinux.0";
}
}

2、tftp配置文件cat/etc/xinetd.d/tftp中的蓝色部分是需要注意的,实际上tftp是一个xinetd的超级守护进程。

#cat                        /etc/xinetd.d/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与dhcp服务
/etc/init.d/xinetd                        restart    #启动tftp服务
/etc/init.d/dhcpd                        restart    #启动dhcp服务

下面要实现的是针对安装目录树的网络发布,简单的是使用nfs配置文件只有一行就可以了,在/etc/exports文件中增加/InstallOs  *(ro)这么一行就可以了。但为了这个安装目录树的通用性,要同时将/InstallOs文件夹作为httpd和ftp站点发布出去,方法是在默认安装的apache和vsftp的根目录中建立一个软连接。

ln                        -s /InstallOs /var/www/html/InstallOS    #建立apache的软连接
ln                        -s /InstallOs /var/ftp/InstallOS                 #建立vsftp                           的软连接
  这样就可以提供nfs/ftp/http三种网络安装协议的选择。
附上一个安装目录树的扩展价值,使其成为yum源
cd                        /InstallOS
rpm                        -ivh ./Server/createrepo-0.4.11-3.el5.noarch.rpm
createrepo                        .    #创建yum仓库
在主机/etc/yum.repos.d/目中删除现有的文件建立一个新的yum配置文件如下
[InstallOs]
name=InstallOs
baseurl=http://安装服务器的ip地址/InstallOS/
enabled=1
gpgcheck=0
执行                        yum                        clean all然后就可以使用安装目录树的yum源进行软件包的管理了

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/28731.html