柴少的官方网站 技术在学习中进步,水平在分享中升华

Centos 6.4 PXE无人值守安装

第一部分理论介绍:

理论介绍基本是从网上找的,说的挺好,可能看起来有些枯燥。

插两句嘴,一般情况下我们是用不到这种无人值守安装系统技术的,毕竟我们很少会遇到大批量服务器安装系统的情况,本人也就遇到两次,也就是批量安装20多台服务器,不过技术也不是很高明,都是先把服务器RAID做好以后再无人值守安装的,呵呵!当然也有U盘无人值守安装系统的技术,木有研究,可以蛋疼的时候去玩玩!

1.1  PXE是什么

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。

PXE的工作过程:

1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;

2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;

3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;

4. PXE Client 取得pxelinux.0 文件后之执行该文件;

5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;

6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

下面是从网上拷贝的流程图:

PXE.jpg

1.2  Kickstart是什么

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

下面是从网上拷贝的图

pxe2.jpg

第二部分:操作步骤

1.1 环境准备

这里用的是DHCP+HTTP+TFTP的方式做的无人值守安装。

操作系统DHCP服务器IPHTTP/FTP/NFS服务器IPTFTP服务器IP
Centos 6.4192.168.1.105192.168.1.105192.168.1.105

注意的是:防火墙要关闭。尤其是selinux请务必关闭,不然等你所有步骤都正确,但是客户端开始请求安装系统的时候客户端就要报错了,我被坑过了,问题排查了很久。

1.2 服务器搭建

1.2.1 http服务器搭建

[root@localhost ~]# yum install httpd* -y  #这里就不用编译安装了

[root@test1 ~]# /etc/init.d/httpd start

1.2.2 挂载光盘复制内容到httpd站点目录下面

[root@localhost ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only

[root@localhost ~]# cp -rf /mnt/* /var/www/html/   #将光盘的所有内容复制到站点目录下面

1.2.3 安装配置tftp服务器

[root@localhost ~]# yum install tftp-server -y

[root@localhost ~]# vi /etc/xinetd.d/tftp

service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot     #更改tftp的ftp目录位置
disable = no     #将yes变成了no,是为了不用默认路径为上面修改路径服务
per_source = 11
cps = 100 2
flags = IPv4
}

[root@localhost ~]# /etc/init.d/xinetd start  #启动tftp服务,有人会奇怪为什么是启动xinetd服务,下来大家可以了解一下xinetd服务,像vsftp等一些其他服务也可以用xinetd来启动
Starting xinetd: [ OK ]

1.2.4 拷贝相关的引导文件到tftp的tftp目录下

[root@localhost ~]# yum install syslinux -y            #这是干什么?不这样的话,你本地是找不到pxelinux.0文件的

[root@localhost ~]# mkdir /tftpboot
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/

[root@localhost ~]# cp /var/www/html/images/pxeboot/initrd.img /tftpboot/
[root@localhost ~]# cp /var/www/html/images/pxeboot/vmlinuz /tftpboot/
[root@localhost ~]# cp /var/www/html/isolinux/*.msg /tftpboot/
[root@localhost ~]# mkdir /tftpboot/pxelinux.cfg
[root@localhost ~]# cp /var/www/html/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

1.2.5 搭建dhcp服务器

[root@localhost ~]# yum install dhcp -y

[root@localhost ~]# vi /etc/dhcp/dhcpd.conf  #具体参数什么意思留着以后的DHCP服务器讲解再细说

authoritative;
next-server 192.168.1.108; #这里PXE服务器的IP地址
filename  "/pxelinux.0";   #这里是非常关键的一定要记住,这句和上面那句一定要在subnet的上方,不然要报错的。
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 202.106.0.20,8.8.8.8;
range dynamic-bootp 192.168.1.100 192.168.1.254;
default-lease-time 600;
max-lease-time 7200;
option broadcast-address 192.168.1.255;
host router {
hardware ethernet 00:0c:29:d5:d2:5e;
fixed-address 192.168.1.108;
}
}

[root@localhost ~]# /etc/init.d/dhcpd start
Starting dhcpd: [ OK ]

1.2.6 配置ks.cfg文件(可参考文件 ~/anaconda-ks.cfg )

[root@localhost ~]# vi /var/www/html/ks.cfg

auth --useshadow --enablemd5 # 选择md5加密的形式加密用户密码
key --skip   #这行很重要,用来跳过注册码输入,不然安装失败
bootloader --location=mbr
text
firewall --disabled   #关闭防火墙
firstboot --disable
keyboard us
lang zh_CN.UTF-8
logging --level=info
url --url=http://192.168.1.108/  #系统安装文件的位置
network --bootproto=dhcp --device=eth0 --onboot=on  #网卡选择为dhcp模式
rootpw --iscrypted $6$jT2bigC7piHmVQzg$T/rLlxlG76vxp.ZgQbv033SQULcSLrsjjFRJnfHVQeFANqG8JpyWhoVOTS4g8SwRNc08dJS7CPI35ONCPGsTS/   #这密码是123456
selinux --disabled  #关闭selinux
timezone --utc Asia/Shanghai
install
zerombr   #清空mbr
clearpart --all --initlabel #格式化所有的磁盘,如果没有上面和此句话,无人值守安装的时候会提示你是否格式化,也达不到无人值守的效果
part /boot --fstype=ext4 --size=200
part swap --size=2048
part / --fstype=ext4 --grow --size=1 #这里是将剩余的空间分配给根分区,这句话很难找到
%packages
@base
@chinese-support
@core
@ha
@ha-management
@load-balancer
@performance
@system-management-snmp
@server-policy
@system-management
@system-admin-tools
oddjob
sgpio
device-mapper-persistent-data
sg3_utils
ipmitool
fence-agents
pexpect
%end
reboot

[root@localhost ~]# chmod 755 /var/www/html/ks.cfg #一定要给执行权限不然安装会报错

1.2.7 配置tftpboot目录下的default文件

[root@test1 ~]# vi /tftpboot/pxelinux.cfg/default

#default vesamenu.c32  #将这句注释掉不然安装过程中报错找不到文件
default linux ks=http://192.168.1.108/ks.cfg #指定ks.cfg的路径

注:如果是Centos7的操作系统的话,除了上面的地方,还有一个地方需要修改:

label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  #append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet   #这个地方注释掉
  append initrd=initrd.img inst.ks=http://192.168.1.140/ks.cfg quiet           #添加下面一句话

#不添加上面这步的话,虽然你tftp获取到了相关信息,但是还是会卡住,还是安装不成功。

1.2.8 至此服务器已经配置完毕,虽然启动一台要安装系统的服务器按F12就可以自动实现自动安装了,本人是一边操作一边写的博客,除非我犯二写错地方了,不然按照此步骤是一定会成功的,写的有的简陋望保函。

作者:忙碌的柴少 分类:系统无人值守安装 浏览:4908 评论:0
留言列表
发表评论
来宾的头像