Linux系统实战——批量无人值守安装操作系统



       实际生产环境中肯定会有一次性安装多台服务器操作系统的工作,因此,光靠传统的一台台安装,很费时费力,数量不多的情况,还是比较好应付,如果一次是几十、几百台,就比较麻烦了,因此,实际生产环境中都用采用批量无人值守的安装方式来安装操作系统,所以今天来详细介绍下,通过利用kickstart+PXE+dhcp+nfs组合的方式批量安装操作系统。                                




1、原理与过程介绍

原理:

利用PXE协议使用服务器通过网络方式启动,后向DHCP服务器请求IP,连接后将服务端的文件下载到本地,执行一系统列的操作

过程:



第一步:PXE-client发送请求

将支持PXE启动方式的服务器设置成PXE启动,PEX客户端通过PXE boot ROM以udp的形式发送一个广播包,请求DHCP服务器分配IP地址

第二步:DHCP应答请求并回应

DHCP服务器收到请求后,验证是否来自合法的PXE客户端请求,验证通过后,回应PXE客户端,回应信息中包括分配的IP地址,pxelinux启动程序(TFTP)的位置,以及配置文件的位置

第三步:PXE-client请求下载启动文件

PXE客户端收到回应后,向TFTP服务器请求下载所需的启动系统安装文件(文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件)

第四步:TFTP服务器响应请求并传送文件

当TFTP服务器收到请求后,服务器会响应请求并应答请求,之后传送所需的文件给客户端

第五步:PXE-client请求下载自动应答文件

PXE客户端通过pxelinux.cfg/default文件成引导linux安装后,安装程序必须先确定通过什么方式安装系统,如果是通过网络,则会在此时进行初始化网络,并定位安装系统所需要的二进制包以及配置文件的位置,接着读取文件中指定的自动应答文件ks.cfg,然后根据文件位置请求下载文件

第六步:客户端安装系统

ks.cfg下载到本地,通过文件找到安装系统的ISO文件位置,并请求下载所需的软件包,正常连接后,开始传输软件包,最终开始安装操作系统,安装完成后重新启动




2、配置NFS及共享目录

创建NFS共享目录

[root@kickserver ~]# mkdir /data/sys -p

创建系统ISO文件挂载目录

[root@kickserver ~]# mkdir /isodir

将光盘挂载到挂载目录

[root@kickserver ~]# mount /dev/cdrom /isodir

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

[root@kickserver ~]# ls /isodir/

CentOS_BuildTag  GPL Packages RPM-GPG-KEY-CentOS-6

RPM-GPG-KEY-CentOS-Testing-6  EFI   images    RELEASE-NOTES-en-US.html

RPM-GPG-KEY-CentOS-Debug-6   TRANS.TBL EULA  isolinux

 repodata   RPM-GPG-KEY-CentOS-Security-6

检查NFS是否安装

[root@kickserver ~]# rpm -qa |grep nfs

nfs-utils-lib-1.1.5-11.el6.x86_64

nfs-utils-1.2.3-70.el6_8.2.x86_64

nfs4-acl-tools-0.3.3-8.el6.x86_64

nfs-utils-lib-devel-1.1.5-11.el6.x86_64

[root@kickserver ~]# rpm -qa |grep rpcbind

rpcbind-0.2.0-12.el6.x86_64

配置nfs

[root@kickserver ~]# echo "/data/sys 172.16.1.235/24(ro,sync)" >>/etc/exports

[root@kickserver ~]# echo "/isodir 172.16.1.235/24(ro,sync)" >>/etc/exports

[root@kickserver ~]# tail -2 /etc/exports 

/data/sys 172.16.1.235/24(ro,sync)

/isodir 172.16.1.235/24(ro,sync)

启动服务(注意先后顺序)

[root@kickserver ~]# /etc/init.d/rpcbind start

Starting rpcbind:                      [  OK  ]

[root@kickserver ~]# /etc/init.d/nfs start

Starting NFS services:             [  OK  ]

Starting NFS quotas:               [  OK  ]

Starting NFS mountd:              [  OK  ]

Starting NFS daemon:              [  OK  ]

Starting RPC idmapd:                [  OK  ]

[root@kickserver ~]# chkconfig rpcbind on

[root@kickserver ~]# chkconfig nfs on

[root@kickserver ~]# chkconfig --list |egrep "nfs|rcpbind"

nfs  0:off 1:off 2:on 3:on 4:on 5:on 6:off

nfslock 0:off 1:off 2:off 3:on 4:on 5:on6:off

检查配置

[root@kickserver ~]# showmount -e

clnt_create: RPC: Port mapper failure - Timed out


出现这个错误提示,首先检查防火墙是否关闭

[root@kickserver ~]# /etc/init.d/iptables status

iptables: Firewall is not running.

也可能是本地hosts解析的问题,修改下hosts文件

127.0.0.1 kickserver------>增加这个配置


[root@kickserver ~]# showmount -e

Export list for kickserver:

/isodir   172.16.1.235/24

/data/sys 172.16.1.235/24




3、安装配置TFTP-server

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

------------------------具体过程省略

配置TFTP服务器

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

# default: off

# description: The tftp server serves files using the trivial file transfer \

#       protocol.  The tftp protocol is often used to boot diskless \

#       workstations, download configuration files to network-aware printers, \

#       and to start the installation process for some operating systems.

service tftp

{

        socket_type   = dgram

        protocol         = udp

        wait                = yes

        user               = root

        server           = /usr/sbin/in.tftpd

        server_args  = -s /var/lib/tftpboot

        disable       = yes------>修改成no

        per_source     = 11

        cps                 = 100 2

        flags                = IPv4

}

启动服务

[root@kickserver ~]# /etc/init.d/xinetd start

Starting xinetd:                     [  OK  ]

[root@kickserver ~]# chkconfig xinetd on

[root@kickserver ~]# chkconfig --list|grep xinetd

xinetd 0:off1:off 2:on  3:on 4:on  5:on  6:off




4、配置PXE引导(bootstarp)

[root@kickserver ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  

[root@kickserver ~]# ll /var/lib/tftpboot/

-rw-r--r--. 1 root root 26759 Dec 13 16:07 /var/lib/tftpboot/pxelinux.0

拷贝网络内核启动文件

[root@kickserver ~]# cp /isodir/images/pxeboot/initrd.img /var/lib/tftpboot/

[root@kickserver ~]# cp /isodir/images/pxeboot/vmlinuz /var/lib/tftpboot/

[root@kickserver ~]# ll /var/lib/tftpboot/

-r-xr-xr-x. 1 root root 4128368 Dec 13 16:12 vmlinuz

-r--r--r--. 1 root root 33383679 Dec 13 16:11 initrd.img

-rw-r--r--. 1 root root 26759 Dec 13 16:07 pxelinux.0

配置引导文件

[root@kickserver ~]# cd /var/lib/tftpboot/

[root@kickserver tftpboot]# mkdir pxelinux.cfg

[root@kickserver tftpboot]# cp /isodir/isolinux/isolinux.cfg ./pxelinux.cfg/default

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

menu label ^Install or upgrade an existing system

default test

#prompt 1

timeout 600

display boot.msg

menu background splash.jpg

menu title Welcome to CentOS 6.5!

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000

label test

  kernel vmlinuz

  append ks=nfs:172.16.1.235:/data/sys/kickstart/ks.cfg initrd=initrd.img test

增加此行配置文件




5、安装配置DHCP

[root@kickserver tftpboot]# yum install dhcp* -y

配置DHCP服务器

[root@kickserver tftpboot]# cd /etc/dhcp/

[root@kickserver dhcp]# vi dhcpd.conf

#

# DHCP Server Configuration file.

#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

#   see 'man 5 dhcpd.conf'

#

ddns-update-style none;

ignore client-updates;

allow booting;

allow bootp;

default-lease-time 21600;

max-lease-time 43200;

option routers 172.16.1.1; 

subnet 172.16.1.0 netmask 255.255.255.0 { 

range dynamic-bootp 172.16.1.100 172.16.1.120;

next-server 172.16.1.235; 

filename "/data/sys/kickstart/ks.cfg";

next-server 172.16.1.235;

filename "/var/lib/tftpboot/pxelinux.0";

}

增加上述标记部分的配置内容


启动服务

[root@centos6 dhcp]# /etc/init.d/dhcpd start

Starting dhcpd:                            [  OK  ]

[root@centos6 dhcp]# chkconfig dhcpd on

[root@centos6 dhcp]# chkconfig --list|grep dhcpd

dhcpd0:off 1:off 2:on 3:on 4:on5:on 6:off




6、安装配置kickstart

[root@centos6 dhcp]# mkdir /data/sys/kickstart -p

#创建文件目录

[root@centos6 dhcp]# cp /root/anaconda-ks.cfg /data/sys/kickstart/ks.cfg

#拷贝配置文件

[root@centos6 dhcp]# ll /data/sys/kickstart/ks.cfg

-rw------- 1 root root 1229 Dec 13 18:16 /data/sys/kickstart/ks.cfg

#修改默认权限,例其它用户可读

[root@centos6 dhcp]# chmod 644 /data/sys/kickstart/ks.cfg

[root@centos6 dhcp]# ll /data/sys/kickstart/ks.cfg       

-rw-r--r-- 1 root root 1229 Dec 13 18:16 /data/sys/kickstart/ks.cfg


配置ks.cfg文件(重要步骤)

[root@centos6 dhcp]# cd /data/sys/kickstart/

[root@centos6 kickstart]# vi ks.cfg 

# Kickstart file automatically generated by anaconda.

#version=DEVEL

install

#cdrom  

#注释默认的安装方式,新增下面的配置

nfs --server=172.16.1.235 --dir=/isodir

lang en_US.UTF-8

keyboard us

network --onboot no --device eth0 --bootproto dhcp --noipv6

#rootpw  --iscrypted $6$zKfIpmK0g7MKWBVy$I8sk1Q8CAmkEA/zUwhNYC.A1DJOw6un2qbww2empzQx04DGjSvmLbZ2ESVMyOzU0DyT9qsz/IfNsD0Teim//N1

rootpw 123456

firewall --service=ssh

authconfig --enableshadow --passalgo=sha512

selinux --disabled

timezone --utc Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

#clearpart --all --drives=sda


#part /boot --fstype=ext4 --size=500

#part pv.008002 --grow --size=1


#volgroup vg_centos6 --pesize=4096 pv.008002

#logvol / --fstype=ext4 --name=lv_root --vgname=vg_centos6 --grow --size=1024 --maxsize=51200

#logvol swap --name=lv_swap --vgname=vg_centos6 --grow --size=1984 --maxsize=1984

zerombr

#清除mbr引导

repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages  

#这个软件包可自行定义增加

@base

@compat-libraries

@core

@debugging

@development

@server-policy

@workstation-policy

sgpio

device-mapper-persistent-data

systemtap-client

%end




7、配置PXE客户端引导并启动服务器

重新启动服务器

可以清楚的看到加载之前配置的文件


整个过程无需人工干预,全部自动化完成


©著作权归作者所有:来自51CTO博客作者mob604756ef35df的原创作品,如需转载,请注明出处,否则将追究法律责任

每一份赞赏源于懂得

赞赏

0人进行了赞赏支持

更多相关文章

  1. J. Cole 的 InnoDB 系列 - 3. InnoDB空间文件布局的基础
  2. idea配置
  3. iOS面试进阶&程序员养成文件(附下载地址)
  4. 使用rpm管理软件包
  5. 软链接于硬连接
  6. Jenkins+Maven+Svn实现代码自动打包与发布
  7. 苹果Mac重复文件清理工具:Duplicate File Finder Pro
  8. Apache服务的反向代理及负载均衡配置
  9. mysql数据库常见报错及解决方法

随机推荐

  1. MySQL中的字符串模式匹配
  2. sql 语句 更改默认的sql server 数据库
  3. mysql中如何对text字段值进行追加更新
  4. 利用JAVA动态编译重构系统
  5. 如何在SQL Server数据库模式中找到所有填
  6. 如何在不改SQL的情况下优化数据库
  7. 如何使用特定数据的所有可能实例填充数据
  8. odbc驱动程序不支持请求的属性VB6
  9. SQL Server CLR函数类型不匹配。
  10. 从分组中获取最大数量