热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PXE批量安装部署CentOS6.5

Linux操作系统如何安装?以及如何自动(无人值守)安装?以及如何批量自动安装?下面我们会一一的来介绍。以下操作以CentOS6系列为例,以VMware作为虚拟机管理器进行实验。一、安装系统1、个人pc如何安装一个Linux操作系统使用呢?&

Linux操作系统如何安装? 以及如何自动(无人值守)安装? 以及如何批量自动安装? 下面我们会一一的来介绍。

 

    以下操作以CentOS6系列为例,以 VMware 作为虚拟机管理器进行实验。

 

一、安装系统 

1、个人 pc 如何安装一个Linux操作系统使用呢? 

    Linux操作系统的安装过程大致如下:

    以本地镜像为例,POST加点自检,加载镜像文件中的内核和临时根文件系统,最后会启动anaconda的安装程序,此程序是交互式的,帮助用户来选择安装前的一些操作,完成这一步操作之后,进入真正的安装包软件,完成系统的安装。

 
# 如何加载内存和根文件系统呢?
# 大致过程是:执行光盘中 isolinux 目录下的 isolinux.bin 二进制程序,它会加载此目录下的
# vmlinuz 和 initrd.img 文件实现内核和临时根文件系统的加载。
#
# 加载完内核和临时根文件系统后,会执行 isolinux.cfg 脚本,此脚本的作用是显示安装菜单,
# 同时会将 splash.jpg 格式的图片作为背景显示,如图 1-1 
# boot.cat文件是提供 boot: 提示符,来设置相关参数,Tab 可补全相关参数,如图 1-2。此功能
# 等价于 图 1-1 在相应菜单下按 Tab 后添加相关参数
#
# 下面是光盘中 isolinux 目录下的的相关文件
#
[root@server ~]# ll /media/cdrom/isolinux/
total 37142
-r--r--r-- 1 root root     2048 Nov 29  2013 boot.cat
-r--r--r-- 2 root root       84 Nov 29  2013 boot.msg
-r--r--r-- 2 root root      334 Nov 28  2013 grub.conf
-r--r--r-- 2 root root 33392971 Nov 28  2013 initrd.img
-r--r--r-- 2 root root    24576 Nov 29  2013 isolinux.bin
-r--r--r-- 2 root root      936 Nov 29  2013 isolinux.cfg
-r--r--r-- 2 root root   165080 Nov 29  2013 memtest
-r--r--r-- 2 root root   151230 Nov 29  2013 splash.jpg
-r--r--r-- 1 root root     2215 Nov 29  2013 TRANS.TBL
-r--r--r-- 2 root root   162860 Nov 29  2013 vesamenu.c32
-r-xr-xr-x 4 root root  4128368 Nov 29  2013 vmlinuz

图1-1   安装菜单

图 1-2  手动添加参数安装

 
# 对于图 1-2 的参数常用的有:
# ip netmask gateway 指定 ip 地址,掩码,网管
# 例如:ip 172.16.10.44 netmask 255.255.0.0 gateway 172.16.0.1
# repo 指定安装包的位置
# ks 指定 kickstat 文件的位置。
# 例如:repo=# ks=cdrom:/isolinux/ks.cfg
#
# 我们为什么要设置这些参数呢?
# 原因是:本地没有软件仓库,和实现自动安装。
#
# 详细的配置参数可参考 http://www.rehhat.com/docs对应版本的 Installation_Guide 文件

    由于篇幅限制,对于具体的安装过程这里不在一一介绍。

 

二、如何实现无人值守安装(kickstart)?

    个人在安装一次的Linux操作系统时,可以利用本地镜像交互式安装。现在出现了 5 台需要安装操作系统,像一台机器那样安装,可能就不是那么高效了。这里需要借助自制光盘镜像了来实现无人值守(非交互式安装)。

1、无人值守安装(kickstart)

    无人值守安装时如何办到的呢 ??是向 anaconda 安装程序提供一个 .cfg 的文件,文件里面定义和设定好了安装前的操作,例如:键盘类型,时区,管理员密码,分区信息,语言,安装的包的名称等相关信息。

 
# 选择硬件平台
# platform=x86, AMD64, or Intel EM64T
 
# 防火墙设置 --disabled 禁用 --enabled 启用
firewall --disabled
 
# 安装后升级系统 安装:install 升级:upgrade
install
 
# 使用网络安装,如果使用网络安装,url 是必须的,
url --url="
# 指定网路软件仓库的位置
repo --name="CentOS" --baseurl=ftp://172.16.10.9/pub/cdrom --cost=100
 
# 设置 root 密码
rootpw --iscrypted $1$FUS6GrNf$dArNmVbJWOo4EAKCmgdEK/
 
# 系统认证信息
auth  --useshadow  --passalgo=sha512
 
# 图形化安装
graphical
 
# 键盘类型
keyboard us
 
# 系统语言
lang en_US
 
# SELinux 设置
selinux --disabled
 
# 系统安装收 Reboot
reboot
 
# 设置时区
timezone  Asia/Shanghai
 
# 网卡配置
network  --bootproto=dhcp --device=eth0 --Onboot=on
 
# 加载内核是的参数
bootloader --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" --location=mbr --driveorder="sda"
 
# 清除 MBR 记录 
zerombr
 
# 清除缓存信息
clearpart --all --initlabel 
 
# 分区信息
part /boot --fstype=ext4 --size=200
 
# 设置逻辑卷分区,这个比较重要,因为图形配置时,不支持逻辑卷
part pv.008002 --size=61440
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
 
# 安装前执行的脚本
%pre
# set welcom info
echo "Welcom!! Install CentOS 6.5 "
%end
 
# 安装后要执行的脚本
%post
# set hosts
echo '172.16.0.1  server.example.com server' >> /etc/hosts
%end
 
# 安装包组合包
%packages
@base
lftp
 
%end

     配置文件格式和参数比较多,配置起来有难度。所以出现图形化的管理工具。使用 yum install system-config-kickstart 安装此管理工具。使用 system-config-kickstart 命令启动图形化管理工具进行配置。但是,图形化管理工具在分区是不支持逻辑卷,所以在配置文件里,这些配置参数应该熟悉。


1
2
# ksvalidator ks.cfg 使用这个工具来检查是否有语法错误
# 一般如果使用图形化工具配置不需要进行语法检查

 

2、制作引导镜像

    在安装系统到开始安装软件包之前,只需要镜像中 isolinux 目录中的文件,所以,我们结合 kickstart文件制作光盘镜像。

    具体做法:

 
1、将安装光盘 isolinux 目录拷贝出来,修改权限
# cp /media/cdrom/isolinux /tmp -R
# chmod 755 /tmp/isolinux -R
 
2、将制好的 .cfg 文件拷贝到isolinux目录下
# cp /roo/ks.cfg /tmp/isolinux/
 
3、修改 isolinux 目录下 isolinux.cfg 文件的以下内容
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img
# 找到以上内容,在 append initrd=initrd.img 添加:
# ip 172.16.10.99 netmask 255.255.0.0 gateway 172.16.0.1 ks=cdrom:/isolinux/ks.cfg 
# 这里需要注意的是,这里的软件包是远程提供必须存在且能找到,就是在ks.cfg 文件
# 中的 url 和 repo 设置要正确。
 
4、制作iso镜像
# mkisofs 参数的具体含义,可参照:http://wiki.osdev.org/Mkisofs 
# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.5 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /tmp/isolinux

    至此,我们可以实现无人值守安装。方法是:将制作好的镜像文件 boot.iso 拷贝到 5 台机器上,将它作为安装镜像,即可实现无人值守安装。

 

三、如何实现批量自动安装(PXE)?

    现在需要安装的 50 台机器,如果用自制 iso 镜像那样安装的话,效率不是特别那么高效。这里需要借助于 PXE 机制了。

    PXE(preboot execute environment,预启动执行环境)的工作原理是让安装的机器获得一个 ip 地址,然后到指定的服务器上利用 TFTP 协议下载一个 pxelinux.0 的文件,作用等价于光盘中 isolinux.bin。来实现再结合 kickstart 文件实现批量自动安装。

 

1、DHCP服务

    DHCP(Dynamic Host Configration Protocol 动态主机配置协议),是一种 C/S 服务架构。作用是让客户端享服务端租约一个 IP 地址。使用UDP 协议传输,服务端监听的端口号是 67,客户端监听的端口号是 68。

    为什么有了DHCP服务器以后,我们的客户端就可以获取地址呢?获取地址过程如下:

 

   

 
# 第一步:在网卡的里面有一个BIOSRom的芯片,在开机时会向局域网里发出 DHCP DICOVER 广播请求,索取IP地址
# 第二步:DHCP 服务端收到客户端的广播请求会发出一个DHCP OFFER的广播数据包,分配ip地址
# 第三步:客户端在接收到报文后,会在向服务端发出 DHCP REQUEST 的广播报文。来确定此ip地址是否可以使用,以免冲突
# 第四步:服务端在接受到此报文后会发出一个 DHCP ACK的确认报文,此时客户端就可以租约使用这个ip地址了

    

    安装:使用 yum install dhcp -y 即可安装

    启动、关闭:/etc/init.d/dhcpd start|stop 启动时配置文件有错误会报错

    开机自启动:chkconfig dhcpd on

DHCP 

2、TFTP 服务

    TFTP(Trivial File Transfer Protocol 简单文件传输协议),实际上是一个简单的文件服务器,提供文件下载服务,一般是文件数目较少时使用。也是一种 C/S 架构,服务器工作于 UDP 的69 端口。

 

    安装:yum install tftp-server tftp -y

    此服务是由超级进程 xinetd 来控制,实现“随叫随到”的状态。 服务的开启在 /etc/xinetd.d/tftp 文件设置

 
# disable = no 开启此功能
# 在这里我们也可以找到默认的发布路径是:/var/lib/tftpboot

    启动,关闭:/etc/init.d/xinetd start|stop

    开机自启动:chkconfig tftp on

 

3、实现 PXE 的配置

实验拓扑图如下:

    大致过程是:安装的机器向 DHCP 服务器租约一个 IP 地址,然后得到 TFTP 服务器的地址,到 TFTP 服务器上去下载 pxelinux.0 文件加载内核和临时根文件系统等,此时还会下载一个 default 的文件,里面指定了 kickstart 发布的方式,找到对应的服务器下载得到 kickstart 文件实现自动化安装。在 kickstart 文件里指定 repo 的位置,来实现安装时软件包的下载。

 

    这里由于环境受限,DHCP,TFTP,FTP服务器都安装到 172.16.10.9 机器上。

第一步:配置dhcpx信息

 
# vim /etc/dhcp/dhcpd.conf 
 
option domain-name "example.com";  # 域名
option domain-name-servers 172.16.0.1;  # DNS服务器名称
 
default-lease-time 600;  # 租约时间
max-lease-time 7200;    # 最大租约时间
 
log-facility local7;
 
 
subnet 172.16.0.0 netmask 255.255.0.0 {
  range 172.16.10.14 172.16.10.99; #地址池
  option routers 172.16.0.1;  # 网关
  next-server 172.16.10.9;    # tftp 服务器地址
  filename "pxelinux.0";     # 下载文件名
}
 
 
# 其他参数 host,hardware,class等,这里不再详述。
 
# 配置完成后启动服务
# /etc/init.d/dhcp start

 

 

第二步:提供下载文件

 
# 光盘挂载点是 /media/cdrom
 
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# cp /media/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot
# cp /media/cdrom/isolinux/{vesamenu.c32,splash.jpg} /var/lib/tftpboot
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
 
# pxelinux.0 是由安装包 syslinux 提供的,复制前确保已安装
 
 
# 配置完成后启动服务
# /etc/init.d/xinetd start

 

第三步:提供安装源 和 提供ks.cfg文件

 
# yum 源基于 ftp 实现
# yum install vsftpd -y
# mkdir /var/ftp/pub/cdrom -p
# mount --bind /media/cdrom /var/ftp/pub/cdrom
# /etc/init.d/vsftpd start
# chkconfig vsftpd on
 
# 制作 kickstart 文件
# 可由 system-config-kickstart 生成。例如:ks.cfg
# 将 ks.cfg 文件拷贝到 /var/ftp 目录下。

 如何配置PXE可参照:http://www.syslinux.org/wiki/index.php/PXELINUX

 

 

补充说明:

    1、还需要修改 /var/lib/tftpboot/pxelinux.cfg/default 文件:

 
label linux
  menu label ^Install or upgrade an existing system
  menu defaul
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://172.16.10.9/ks.cfg # 添加 ks 文件的位置
# ks.cfg 文件中的 yum 源一定保证有并且可以正确找到。

    2、需要关闭防火墙 

 
# /etc/init.d/iptables stop

 

    至此,就可实现批量安装。但是,如果安装的数量较多,网络带宽会有很大的压力,此时要借助于cobbler,puppet工具来实现了。

 

    总结:本文主要介绍了 PXE 服务的原理和搭建过程。

本文出自 “逆水寒” 博客,请务必保留此出处http://guoting.blog.51cto.com/8886857/1533029


推荐阅读
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍在使用vmware中配置centos6.5时遇到的网络问题,包括host-only和natip的配置,以及无法上网的原因。同时提供了解决方法,包括去掉host-only配置文件中的gateway。 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 1、打开etcsysconfiggrub,   #vimetcsysconfiggrub   内容如下: ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
author-avatar
晨曦--雨荷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有