pxe+dhcp+tftp+kickstart 实现系统自动安装

来源:互联网 发布:linux 北京时间 编辑:程序博客网 时间:2024/05/17 08:34

PXEPre-boot Execution Environment)是Intel设计的协议,是一种动态路由,是计算机通过网络启动,协议分为clientserver两端。Pxe在网卡的ROM中,当计算机引导时,biospxe client调入内存执行,并显示命令菜单,经用户选择后,pxe client将远程放置的操作系统通过网络下载到本地运行。

 

PXE的成功运行,需要解决一下两个问题:

1、既然通过网络传输,那么计算机在启动时,有谁来分配IP.

解答:DHCP Server来分配IP,所以首先要先配置DHCP服务。搭建pxe的环境。

2、通过什么协议来下载linux内核和跟文件系统。

解答:pxe client所在的ROM中,已经存在了TFTP client,所以pxe client通过tftp client使用tftp协议到tftp server上下载所需要的文件。

 

首先解决第一个问题,安装DHCP服务器

DHCP server :172.24.1.87

首先安装DHCP

 


随后编辑  DHCP 配置文件 /etc/dhcpd.conf(若不知道配置文件在哪 可用 rpm -ql dhcp | grep /etc 察看)

 

 

打开文件后提示去参考 /usr/share/doc/dhcp*/dhcpd.conf.sample 文件

直接将其copy 并覆盖原 dhcpd.conf 文件


编辑它

 

 

该文件配置需参照syslinux 包中的pxelinux.txt。 

pxelinux.0 本身就是syslinux包的一部分
pxlinux是syslinux的一个派生品,用于支持从网络启动
pxlinux.0 是pxelinux的引导程序。(syslinux包可在内核官网上下载)

倘若只配不配allow booting 以及allow bootp 则主机会因为没有操作系统而不响应dhcp服务器

 

然后就是解决TFTP服务的问题

安装好 tftp-server 包

 

安装好后会创建一个/tftpboot的目录夹  里面存放tftp 服务的资源,根据pxelinux.txt 中的步骤先将 pxelinux.0 拷贝到/tftpboot 下 然后创建一个名为/tftpboot/pxelinux.cfg 的directory (不是文件),文档给出的解释是:

Because more than one system may be booted from the same server, the configuratoin file name depends on the IP address of the booting machine.

 

随后要编写引导的配置文件.文件必须为 电脑UUID\MAC address\IP 地址十六进制表达式.或者default,因为pxe会根据以上条件一一做匹配.首先是UUID ,当UUID号和文件名匹配时,就读取该文件的配置开始引导系统.以此类推.

 

因为UUID过于冗长,因此推荐使用MAC地址,

 

 

上图为配置文件中的内容.具体可参考  syslinux 包中的 menu.txt文件.

其中 rhel5.8的条目中 指定了kickstart脚本路径.

 

写好配置文件后,就需要将可引导的vmlinuz 和 initrd 以及 vesamenu.c32 放到 /tftpboot 

这样在装机时就能检测到可引导的内核文件.今儿将安装进行下去. Vmlinuz initrd 可在redhat enterprise 5.8 的镜像文件中的 images 文件夹中获得.(若要安装redhat 6 ,则获取6中的相应文件即可), vesamenu.c32  为显示引导界面的程序,grub有点相似syslinux 包中可以找到.

 

至于kickstart脚本可以再图形下 使用 system-config-kickstart 程序生成,如果没有则使用yum install system-config-kickstart*安装(不过安装的时候好像不能自动跳过输入序列号的过程),建议先装一遍系统,然后将生成的anaconda-ks.cfg文件用system-config-kickstart 程序打开编辑(编辑之前记得要去掉anadaconda-ks.cfg中分区时的注释).


以上为我kickstart脚本截图.如果对新装没有要预先执行的脚本(:配置yum 仓库,添加用户等)则最后一张略过.

第二章图片中的url ftp服务器下 redhat5.8的镜像.(即将光盘镜像挂载到/var/ftp/pub/rhel5.8 ).

 

在实验过程中可能会在获取地址后还是无法成功.可能因为局域网中存在多台dhcp服务器,或者配置文件有差错.以上步骤经笔者验证,能够实现无人化自动安装.(实验环境为rhel5.8)

0 0
原创粉丝点击