Linux系統實戰——批量無人值守安裝操做系統

               

Linux系統實戰——批量無人值守安裝操做系統html



       實際生產環境中確定會有一次性安裝多臺服務器操做系統的工做,所以,光靠傳統的一臺臺安裝,很費時費力,數量很少的狀況,仍是比較好應付,若是一次是幾10、幾百臺,就比較麻煩了,所以,實際生產環境中都用採用批量無人值守的安裝方式來安裝操做系統,因此今天來詳細介紹下,經過利用kickstart+PXE+dhcp+nfs組合的方式批量安裝操做系統。                                linux




一、原理與過程介紹express

原理:centos

利用PXE協議使用服務器經過網絡方式啓動,後向DHCP服務器請求IP,鏈接後將服務端的文件下載到本地,執行一系統列的操做服務器

過程:網絡

圖片


第一步:PXE-client發送請求
app

將支持PXE啓動方式的服務器設置成PXE啓動,PEX客戶端經過PXE boot ROM以udp的形式發送一個廣播包,請求DHCP服務器分配IP地址less

第二步:DHCP應答請求並回應ssh

DHCP服務器收到請求後,驗證是否來自合法的PXE客戶端請求,驗證經過後,迴應PXE客戶端,迴應信息中包括分配的IP地址,pxelinux啓動程序(TFTP)的位置,以及配置文件的位置
socket

第三步: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文件位置,並請求下載所需的軟件包,正常鏈接後,開始傳輸軟件包,最終開始安裝操做系統,安裝完成後從新啓動




二、配置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




三、安裝配置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




四、配置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

增長此行配置文件




五、安裝配置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




六、安裝配置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




七、配置PXE客戶端引導並啓動服務器

圖片

從新啓動服務器

圖片

能夠清楚的看到加載以前配置的文件

圖片


圖片

圖片圖片

整個過程無需人工干預,所有自動化完成

相關文章
相關標籤/搜索