pxe+kickstart部署多個版本的Linux操作系統(下)---實踐篇


    我們在 企業運維環境中,難免會遇到使用多個Linux操作系統的情況,如果每天都需要安裝不同版本的Linux系統的話,那么使用Kickstart只能安裝一種版本的Linux系統的方法則顯得有些捉襟見肘。
    下面介紹使用Kickstart 同時部署Centos6、Centos7。
 

*安裝條件*

DHCP服務器:為 PXE-client 分配 IP ,獲得安裝程序文件位置
TFTP服務器:傳輸安裝文件、內核、菜單文件等給 PXE-client
Kickstart:生成的ks.cfg配置文件
HTTP/NFS/FTP 服務中的任意一種, 本次采用FTP文件傳輸協議,用於傳送安裝源文件給 PXE-client

系統環境

實驗環境: DELL720服務器
系統平台 :CentOS Linux release 7.2.1511 (Core)
上述安裝條件的涉及服務全部部署在同一台服務器(Server端)

安裝步驟

1、准備工作:關閉 防火牆 和 SELINUX

[root@PxeServer ~]# systemctl stop firewalld.service #關閉當前系統防火牆
[root@PxeServer ~]# systemctl disable firewalld.service #關閉防火牆開機啟動
[root@PxeServer ~]# systemctl status firewalld.service #查看防火牆的狀態
[root@PxeServer ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/'/etc/selinux/config
[root@PxeServer ~]# setenforce 0

2、配置DHCP服務

[root@PxeServer ~]# yum -y install dhcp
[root@PxeServer ~]# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #復制配置模板文件到DHCP的配置目錄中
[root@PxeServer ~]# vi /etc/dhcp/dhcpd.conf
#default-lease-time 600; #默認租約期限
#max-lease-time 7200; #最長租約期限
#log-facility local7; #日志反動地址
subnet 10.9.1.0 netmask 255.255.255.0 {
               range 10.9.1.150 10.9.1.200;    # 可分配的起始IP-結束IP
               option subnet-mask 255.255.255.0;   # 設定netmask
               option routers    10.9.0.1;         # 客戶端的默認網關的地址
               default-lease-time 21600;           # 設置默認的IP租用期限
               max-lease-time 43200;               # 設置最大的IP租用期限
               next-server 10.9.1.252;             # 告知客戶端TFTP服務器的ip
               filename "pxelinux.0";              # 告知客戶端從TFTP根目錄下載pxelinux.0文件
}
設置開機自啟動,啟動DCHP服務
[root@PxeServer ~]# systemctl enable dhcpd
[root@PxeServer ~]# systemctl start dhcpd
查看DCHP端口是否啟動
[root@PxeServer ~]# ss -lntup|grep 67

3、配置FTP(共享文件)服務

[root@pxeserver ~]# yum install -y vsftpd
設置開機自啟動,啟動FTP服務
[root@pxeserver ~]# systemctl enable vsftpd
[root@pxeserver ~]# systemctl start vsftpd
查看FTP端口是否啟動
[root@noc ~]# ll -h /opt/CentOS-*
-rwxr-xr-x 1 root root 4.2G10月2817:25/opt/CentOS-6.5-x86_64-bin-DVD1.iso
-rwxr-xr-x 1 root root 4.1G10月2817:27/opt/CentOS-7.2-x86_64-DVD-1511.iso
在mnt下創建不同掛載點,掛載鏡像:
[root@pxeserver ~]# mkdir -p /mnt/{6,7}
[root@pxeserver ~]# mount /opt/CentOS-6.5-x86_64-bin-DVD1.iso  /mnt/6 -o loop
[root@pxeserver ~]# mount /opt/CentOS-7.2-x86_64-DVD-1511.iso  /mnt/7 -o loop
在ftp下創建不同目錄,將不同版本的安裝文件拷貝到對應目錄(相對於直接掛載,可以提升讀寫速度)
[root@pxeserver ~]# mkdir -p /var/ftp/{CentOS6.5,CentOS7.2}
[root@pxeserver ~]# cp -a /mnt/6/* /var/ftp/CentOS6.5/
[root@pxeserver ~]# cp -a /mnt/7/* /var/ftp/CentOS7.2/
瀏覽器測試是否可以通過ftp服務訪問:

4、配置Kickstart一鍵安裝應答文件

生成kickstart配置文件的三種方法:
方法1、 每安裝好一台Centos機器,Centos安裝程序都會創建一個kickstart配置文件,記錄你的真實安裝配置。如果你希望實現和某系統類似的安裝,可以基於該系統的kickstart配置文件來生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位於/root/anaconda-ks.cfg)
方法2、Centos提供了一個圖形化的kickstart配置工具。在任何一個安裝好的Linux系統上運行該工具,就可以很容易地創建你自己的kickstart配置文件。kickstart配置工具命令為redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).網上有很多用CentOS桌面版生成ks文件的文章,如果有現成的系統就沒什么可說。但沒有現成的,也沒有必要去用桌面版,命令行也很簡單。
方法3、閱讀kickstart配置文件的手冊。用任何一個文本編輯器都可以創建你自己的kickstart配置文件。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
創建CentOS6.5和7.2各自的ks.cfg文件(通過ftp服務提供給pxe client):
[root@pxeserver ~]# mkdir /var/ftp/ks -p
[root@pxeserver ~]# touch /var/ftp/ks/centos{6.5,7.2}_ks.cfg
給ks.cfg文件加上讀權限
[root@pxeserver ~]# chmod +r /var/ftp/ks/centos{6.5,7.2}_ks.cfg

#---編輯CentOS6.5_ks.cfg

# Kickstart Configurator for CentOS 6.5 by author Mr.Gao!
#-------------------分割線-------------------------#
#this is new install,is not upgrade
install
#通過 FTP或HTTP協議 從遠程服務器上的安裝源中提取安裝配置
url --url="ftp://10.9.1.252/CentOS6.5/"
#安裝方式,文本界面,圖形的話graphy
text
#設置在安裝過程中使用的語言或者說系統語言類型
lang en_US.UTF-8
#鍵盤類型
keyboard us
#清除mbr-主引導記錄
zerombr
#bootloader:系統引導相關配置
# --location=,指定引導記錄被寫入的位置. 有效的值如下:mbr(缺省);partition(在包含內核的分區的第一個扇區安裝引導裝載程序);none(不安裝引導裝載程序)
# --driveorder,指定在BIOS引導順序中首位的驅動器
# --append=,指定內核參數.要指定多個參數,使用空格分隔它們
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#為通過網絡的kickstart安裝以及所安裝的系統配置聯網信息
#--bootproto=[dhcp/bootp/static]中的一種,缺省值是dhcp。bootp和dhcp被認為是相同的;static方法要求在kickstart文件里輸入所有的網絡信息
#!請注意所有配置信息都必須在一行上指定,不能使用反斜線來換行
#--ip=,要安裝的機器的IP地址.
#--gateway=,IP地址格式的默認網關.
#--netmask=,安裝的系統的子網掩碼.
#--hostname=,安裝的系統的主機名.
#--onboot=,是否在引導時啟用該設備.
#--noipv6=,禁用此設備的IPv6.
#--nameserver=,配置dns解析.
#network --bootproto=dhcp --device=eno16777736 --onboot=yes --noipv6 --hostname=hjl_nb_V6.5
network --bootproto=dhcp --device=em1 --onboot=yes --noipv6 --nameserver=8.8.8.8--hostname=hjl_nb_V6.5
#時區
timezone --utc Asia/Shanghai
#系統認證信息:設置密碼加密方式為sha512 啟用shadow文件
authconfig --enableshadow --passalgo=sha512
#root密碼:可從首次安裝后的"~/anaconda-ks.cfg"中提取(若root密碼已修改請重新生成一次)
rootpw --xxx(密)
#清空分區:--all 從系統中清除所有分區;--initlable 初始化磁盤標簽
#clearpart --none --initlabel
clearpart --all --initlabel
#-------part:磁盤分區--------#
#--fstype=,為分區設置文件系統類型.有效的類型為ext2,ext3,swap和vfat
#!--asprimary,強迫把分區分配為主分區,否則提示分區失敗
#--size=,以MB為單位的分區最小值.在此處指定一個整數值,如500.不要在數字后面加MB
#!--grow,告訴分區使用所有可用空間(若有),或使用設置的最大值
part /boot --fstype=ext4 --asprimary --size=300--ondisk=sda
part swap --fstype=swap --size=32768--ondisk=sda
part /--fstype=ext4 --asprimary --grow --size=300--ondisk=sda
#負責協助配置centos一些重要的信息
firstboot --disable
#首次安裝關閉selinux、防火牆
selinux --disabled
firewall --disabled
#設置日志級別
logging --level=info
#!!設定安裝完成后重啟,此選項必須存在,否則kickstart顯示一條消息,並等待用戶按任意鍵后才重新引導,也可以選擇halt關機
reboot
#軟件包段
%packages
#基本系統組件
@base
@chinese-support
@compat-libraries
@debugging
@development
net-tools
#bind-utils
wget
tree
nmap
sysstat
lrzsz
dos2unix
#腳本段:安裝系統后執行的命令或腳本
%post
wget -O /tmp/optimization.sh ftp://10.9.1.252/fresh/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh
%end

#---編輯CentOS7.2_ks.cfg

#version=HQHY-CentOS7.2_v1.0
#-------------------分割線-------------------------#
#this is new install,is not upgrade
install
#通過 FTP或HTTP協議 從遠程服務器上的安裝源中提取安裝配置
url --url="ftp://10.9.1.252/CentOS7.2"
# Use text mode install--安裝方式,文本界面,圖形的話graphy
text
# System language--安裝過程的語言類型
lang en_US.UTF-8--addsupport=zh_CN.UTF-8
# Keyboard layouts--鍵盤類型
keyboard --vckeymap=us --xlayouts='us'
#清除mbr-主引導記錄
zerombr
#bootloader:系統引導相關配置
# --location=,指定引導記錄被寫入的位置. 有效的值如下:mbr(缺省);parti tion(在包含內核的分區的第一個扇區安裝引導裝載程序);none(不安裝引導裝 載程序)
# --driveorder,指定在BIOS引導順序中首位的驅動器
# --append=,指定內核參數.要指定多個參數,使用空格分隔它們
bootloader --location=mbr --driveorder=sda
# Network information--為通過網絡的kickstart安裝以及所安裝的系統配置聯網信息:
#--bootproto=[dhcp/bootp/static]中的一種,缺省值是dhcp。bootp和dhcp被認為是相同的;static方法要求在kickstart文件里輸入所有的網絡信息
#!請注意所有配置信息都必須在一行上指定,不能使用反斜線來換行
#--ip=,要安裝的機器的IP地址.
#--gateway=,IP地址格式的默認網關.
#--netmask=,安裝的系統的子網掩碼.
#--hostname=,安裝的系統的主機名.
#--onboot=,是否在引導時啟用該設備.
#--noipv6=,禁用此設備的IPv6.
#--nameserver=,配置dns解析.
#network --bootproto=dhcp --device=eno16777736 --onboot=yes --ipv6=auto
network --bootproto=dhcp --device=em1 --onboot=yes --noipv6 --nameserver=8.8.8.8--hostname=hjl_nb_V7.2
# System timezone
timezone Asia/Shanghai--isUtc --nontp
# System authorization information--加密方式
auth --enableshadow --passalgo=sha512
#root密碼:可從首次安裝后的"~/anaconda-ks.cfg"中提取(若root密碼已修改請重新生成一次)
rootpw --xxxxx(密)
#清空分區:--all 從系統中清除所有分區;--initlable 初始化磁盤標簽
#clearpart --none --initlabel
clearpart --all --initlabel
#-------part:磁盤分區--------#
#--fstype=,為分區設置文件系統類型.有效的類型為ext2,ext3,swap和vfat
#!--asprimary,強迫把分區分配為主分區,否則提示分區失敗
#--size=,以MB為單位的分區最小值.在此處指定一個整數值,如500.不要在數>字后面加MB
#!--grow,告訴分區使用所有可用空間(若有),或使用設置的最大值
part /boot --fstype="ext4"--asprimary --size=300
part swap --fstype="swap"--size=32768
part /--fstype="ext4"--asprimary --grow --size=300
#--負責協助配置一些重要的信息
firstboot --enable
#首次安裝關閉selinux、防火牆
selinux --disabled
firewall --disabled
#設置日志級別
logging --level=info
# Reboot after installation #安裝后自動重啟,如果BIOS中設置從PXE首先啟動,那么會重復安裝
# 請注意,安裝后應設置為從先硬盤啟動
reboot #(默認位置)
#設定所需要的軟件包,按需要調整
%packages
@^minimal
@base
@compat-libraries
@core
@development
@debugging
kexec-tools
#net-tools
#bind-utils
wget
tree
nmap
sysstat
lrzsz
dos2unix
 
#%end
#安裝腳本:Linux安裝完成后執行的腳本可以寫在這里
#%post
#wget -O /tmp/optimization.sh ftp://10.9.1.252/fresh/optimization.sh &>/dev/null
#/bin/sh /tmp/optimization.sh
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end

 

5、配置tftp服務

[root@pxeserver ftp]# yum -y install tftp-server tftp xinetd
設置開機自啟動
[root@pxeserver ftp]# systemctl enable xinetd.service
[root@pxeserver ftp]# sed -i '14s#yes#no#'/etc/xinetd.d/tftp  #disable=no 將yes修改no
[root@pxeserver ftp]# systemctl restart xinetd.service
查看tftp服務端口
[root@pxeserver ftp]# ss -nul |grep 69
UNCONN     0      0            *:69                       *:*       

6、配置支持PXE的引導加載程序

PXE引導配置(bootstrap)

syslinux是小型的Linux操作系統,而且兼容各種介質。這個功能強大的引導加載程序,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。
[root@pxeserver ftp]# yum -y install syslinux-tftpboot #(安裝引導加載程序,默認直接在tftp下生成;另外安裝下面的syslinux也可以,不過需要將文件復制到tftp目錄)
[root@pxeserver ftp]# yum -y install syslinux 
查看/var/lib/tftpboot下是否存在pxelinux.0這個文件,若不存在,復制引導加載程序pxelinux.0和到tftp下
[root@pxeserver ~]# cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/ #pxelinux.0最重要的文件一定要有哦
復制 啟動菜單程序文件 ,將內核文件和initrd文件加入tftp下不同的引導目錄中
注:因為是多系統引導安裝,所以創建兩個不同版本的文件夾,存放不同的引導文件
[root@pxeserver ~]# mkdir -p /var/lib/tftpboot/Cent{6,7}
[root@pxeserver ~]# cp /var/ftp/CentOS6.5/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/Cent6/
[root@pxeserver ~]# cp /var/ftp/CentOS7.2/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/Cent7/

制作啟動菜單

創建pxelinux.cfg目錄,用於編輯並存放客戶端的啟動菜單文件
default  vesamenu.c32 #加載菜單
prompt 1 #顯示 'boot: ' 提示符。為 '0' 時則不提示,將會直接啟動 'default' 參數中指定的內容。
timeout 100 #控制等待時間,單位是十分之一秒
display boot.msg #boot提示設置文件,可直接vim /var/lib/tftpboot/boot.msg添加自定義提示
menu clear #清除菜單選項
menu background splash.png #菜單背景:寬高=640x480,可自行選擇png格式圖標上傳到/var/lib/tftpboot/下,命名為splash.png
menu title  HQHY PXE BootMenu:InstallCentos6.5 or 7.2! #標題
label 1、InstallCentOS7.2
menu label ^InstallCentOSLinux7.2
#kernel 參數指定要啟動的內核
kernel Cent7/vmlinuz
#append 指定追加給內核的參數,能夠在grub里使用的追加給內核的參數,在這里也可以使用;ksdevice:讓安裝程序使用第一個網絡設備
append initrd=Cent7/initrd.img text ks=ftp://10.9.1.252/ks/centos7.2_ks.cfg ksdevice=em1
 
label 2、InstallCentOS6.5
menu label ^InstallCentOSLinux6.5
kernel Cent6/vmlinuz
append initrd=Cent6/initrd.img text ks=ftp://10.9.1.252/ks/centos6.5_ks.cfg ksdevice=em1

檢驗安裝

1、服務端

重啟服務,檢驗端口
[root@pxeserver ~]# systemctl restart dhcpd.service
[root@pxeserver ~]# systemctl restart vsftpd.service
[root@pxeserver ~]# systemctl restart xinetd.service
[root@pxeserver ~]# netstat -tunlp|egrep '80|67|69'

2、客戶端

開機按F12選擇從PXE網口啟動,通過dhcp服務器獲取到動態IP
獲取pxe啟動文件
 
 加載啟動菜單,選擇需要安裝的系統版本
加載內核程序
 
 loading.........等待安裝完畢
...............
...........
......
...
安裝后簡單檢驗:
PING baidu.com (111.13.101.208) 56(84) bytes of data.
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=44.4 ms
64 bytes from 111.13.101.208: icmp_seq=2 ttl=128 time=30.6 ms
64 bytes from 111.13.101.208: icmp_seq=3 ttl=128 time=31.1 ms
--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 30.653/35.437/44.481/6.401 ms

[root@hjlnb_V7-2 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0 278.9G  0 disk 
├─sda1   8:1    0   300M  0 part /boot
├─sda2   8:2    0  31.3G  0 part [SWAP]
└─sda3   8:3    0 247.3G  0 part /
sr0     11:0    1 1024M  0 rom 

 

 
 
參考鏈接:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM