Linux的PXE kickstart网络自动装机-阿里云开发者社区

开发者社区> 开发与运维> 正文

Linux的PXE kickstart网络自动装机

简介:

简介:

PXE工作在client/server模式,允许客户机通过网络从远程访问服务器下载引导镜像,并加载安装文件或者整个操作系统。

若要搭建PXE网络体系,需满足以下条件。

 客户机的网卡支持PXE协议,并且主板支持网络引导。

 要有一台DHCP服务器以便客户机自动分配地址,指定引导文件位置。

 服务器支持通过TFTPTrivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。

但是通过PXE虽然能够通过网络实现多台客户机一起装机,但是期间还需要手动配置。如何去解决这样的问题呢?通过在服务器上安装system-config-kickstart工具后即可通过图形化向导工具来配置安装应答文件。只要将自动应答文件放置在PXE安装服务器的FTP目录下,并适当修改引导菜单,就可实现基于网络的自动装机。

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

自动安装原理:

 客户机从自己的PXE网卡启动,向本网络中DHCP服务器索取IP地址。

 DHCP服务器返回分给客户机IP

 客户机向本网络中的TFTP服务器索取文件。

 客户机取得bootstrap文件后执行引导文件完成引导。

 读取配置文件,通过TFTP服务器加载内核和文件系统。

 进入安装画面,此时可以通过HTTPNFSFTP方式进行安装(这里已FTP为例)。

工作流程:

1. 首先客户端主机网卡要支持网络引导。

2. 其次通过DHCP服务器告诉我们客户端主机的tftp服务器位置。

3. 接着请求tftp服务器(这里的dhcptftp在同一台服务器上)。

4. 然后tftp服务器会给客户端主机提供一个pxe的文件,这个文件是由syslinux这个程序包提供的。

5. 再则客户端主机利用tftp提供的pxelinux.0这个文件,在次尝试到tftp服务器上获取内核。因为要启动安装就要启动引导内核。

6. 之后当引导内核启动后,客户端主机通过改名后的default文件成功引导Linux安装内核后,通过ftp服务获取该文件的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

7. 最后将ks.cfg文件下载后,通过该文件找到ks.cfg文件的配置请求下载安装过程所需的软件包,这样就实现自动化安装了。

 

环境:用红帽Linux6.5系统搭建PXE实现网络装机。

 

操作:

步骤一:进行磁盘挂载,并安装yum仓已解决安装包的依赖性关系。在搭建好yum仓后可执行yum list验证一下yum仓的搭建情况。

[root@root ~]# mount /dev/sr0 /mnt  磁盘挂载

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@root ~]# vi /etc/yum.repos.d/abc.repo  建立yum


[abc]                #文件名

name=test            #仓库命名描述

baseurl=file:///mnt  #定义安装包路径

enabled=1            #开启用户仓库

gpgcheck=0           #不检查软件KEY

 

步骤二:通过yum仓安装TFTP服务并启用tftp。(tftp采用的是UDP69传输协议)

[root@root ~]# yum -y install tftp-server  安装tftp服务

[root@root ~]# vi /etc/xinetd.d/tftp    进入配置文件启用tftp

··· ···省略

service tftp

{

        socket_type             = dgram

        protocol                = udp   采用UDP传输协议

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /var/lib/tftpboot  tftp的根目录

        disable                 = no  将yes改为no,启用tftp

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}


步骤三:安装DHCP服务,配置DHCP

[root@root ~]# yum -y install dhcp  安装dhcp服务

[root@root ~]# vi /etc/dhcp/dhcpd.conf 编辑dhcp

进入配置文件复制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample这一段

[root@root ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

cp:是否覆盖"/etc/dhcp/dhcpd.conf" y

[root@root ~]# vim /etc/dhcp/dhcpd.conf  在进入配置文件修改

wKioL1XdpQ2TVz-iAAGvfnwQC-4083.jpg 


步骤四:安装vsftpd

[root@root ~]# yum -y install vsftpd 安装vsftpd服务

[root@root ~]# mount /dev/sr0 /var/ftp/pub/ 磁盘挂载到vsftpd的根目录下

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@root ~]# df  查看

Filesystem     1K-blocks    Used Available Use% Mounted on

/dev/sda2       20158332 3150980  15983352  17% /

tmpfs             953788      76    953712   1% /dev/shm

/dev/sda1        5039616  169852   4613764   4% /boot

/dev/sda5        5039616  141080   4642536   3% /home

/dev/sr0         3762278 3762278         0 100% /media/RHEL_6.5 x86_64 Disc 1

/dev/sr0         3762278 3762278         0 100% /mnt

/dev/sr0         3762278 3762278         0 100% /var/ftp/pub


步骤五:安装引导加载程序,并复制网络启动所需要文件到tftp服务器的根目录下。

[root@root ~]# yum -y install syslinux  //安装引导加载程序

[root@root ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot  复制tftp目录下

[root@root ~]# mkdir /var/lib/tftpboot/pxelinux.cfg  创建文件

[root@root ~]# cd /var/lib/tftpboot/ 进入目录下查看文件

[root@root tftpboot]# ls

pxelinux.cfg  pxelinux.0

[root@root tftpboot]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/defaul引导菜单

[root@root tftpboot]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/  linux引导加载模块

[root@root tftpboot]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/   压缩内核

[root@root tftpboot]# cp  /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot   图形化安装菜单

[root@root tftpboot]# ls  查看

initrd.img  pxelinux.0  pxelinux.cfg  vesamenu.c32  vmlinuz


步骤六:dhcpdvsftpdxinetd服务开启,并关闭iptablessetenforce

 

步骤七:安装system-config-kickstart工具,实现无人值守安装

[root@root tftpboot]# yum -y install system-config-kickstart  安装工具

 

图解:kickstart无人值守安装

图解一:在桌面上点击“应用程序”,选“系统工具”然后出现kickstart点击即可。

wKioL1XdpSfDDw5TAAImpvmBKQs865.jpg


图解二:打开kickstart后,在基本配置中有个根口令指的是开启服务器时的密码。(可以选择语言。键盘、时区)

wKiom1Xdow_RCSaVAALHhEX-41U172.jpg


图解三:点击“安装方法”,配置ftp服务器地址与FTP根目录。(注意 FTP目录 指定为pub

wKiom1XdoznTA-COAAHlY8bEW8M056.jpg 

图解四:“引导装载程序选项”默认即可,然后在“分区信息”中为磁盘分区。(可以划分“/”、“/boot”、“交换分区”等)

wKiom1Xdo0jCLDQoAAJnTRoITOc013.jpg 

图解五:配置网卡,网卡名称设置为eth0,网络类型为DHCP,这样可以自动获取到DHCP服务分配的地址重而进行网络装机。

wKioL1XdpW_zxmFEAAGq5gdM5ac565.jpg 

图解六:防火墙的设置可以将防火墙全部关闭,在“软件包选择”中可以默认不选,然后启用客户机时,客户机到时候会有一个手动选择。

wKioL1XdpX6jKAA2AAKf9_Djgsg228.jpg 

图解七:在“预安装脚本”与“安装后脚本”界面中,可以分别添加在安装前、安装后自动运行的可执行语句。此项设置使服务器的自动化配置变得更加容易。(可以在解释器下面输入一个安装yum仓的shell脚本这样,在装机后就可以自动的安装yum仓了,也可以安装其它功能的脚本),最后保存。

wKiom1Xdo4uB7aGBAAJ2Mv2DLAc404.jpg


步骤八:将保存的自动应答文件放置在PXE安装服务器的FTP目录下,并适当修改引导菜单,就可实现基于网络的自动装机。

[root@root tftpboot]# cd /root

[root@root ~]# ls

anaconda-ks.cfg  install.log.syslog  公共的  视频  文档  音乐

install.log      ks.cfg              模板    图片  下载  桌面

[root@root ~]# cd /var/ftp/

[root@root ftp]# ls

pub

[root@root ftp]# mkdir rhel6

[root@root ftp]# ls

pub  rhel6

[root@root ftp]# cp /root/ks.cfg /var/ftp/rhel6/  应答文件复制到FTP根目录下

[root@root ftp]# vi /var/lib/tftpboot/pxelinux.cfg/default 编辑引导菜单文件

(无人值守安装只需要一个入口就够了)

 

default vesamenu.c32  指定默认入口名称

prompt 0  //1表示等待用户控制,0表示不等待用户控制

timeout 1  //响应时间

··· ···省略

label linux   label用来定义并分割启动项

  menu label ^Install or upgrade an existing system

  menu default

  kernel vmlinuz   kernelappend用来定义引导参数

  append ks=ftp://192.168.100.100/rhel6/ks.cfg initrd=initrd.img


步骤九:最后将dhcpdvsftpdxinetd服务重新启动。


测试:用一台已安装好server 2008系统的虚拟机,做测试。

步骤一:打开server 2008系统的虚拟机,进入网卡设置为DHCP自动获取IP,然后关闭防火墙,最后重启系统。

步骤二:重启系统后,按F2进入BIOS界面(根据计算机不同不一定F2就可以进入BIOS界面,也有可能是ESCF8F12等),然后选择将网络启动放在第一个进行网络装机。

wKiom1Xdo6Lxqpn3AAH0GjvRy6A105.jpg 

正在安装eth0的网卡。

wKiom1Xdo7rxKB0gAACxAVTTihs104.jpg


wKioL1XdpdLAVClyAAC24YRf7_M832.jpg

 

步骤三:因为在图解六中的“软件包选择”里面并没有选,所以这里出现提示,要求手动选择,直接点击下一步即可。

wKioL1Xdpe-xnZLJAAKesrSmFPA311.jpg

 

步骤四:点击图中reboot,然后在按F2键进入到BIOS界面将重网络启动放在最下面然后启动系统,不然你的系统又要开始重装了。

wKiom1Xdo-3gMrqbAAH5HLv5nJk324.jpg


结果:客户机系统自动安装完成!(输入的用户名与密码就是服务器的用户与密码即可进入系统)

wKioL1Xdpj3B0b00AAI-5KsqFpM816.jpg 










本文转自白羊IT51CTO博客,原文链接:http://blog.51cto.com/000011211684/1688593,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章