CentOS 7.2 下 PXE+kickstart 自動安裝系統


一、簡單概述

1.1 Kickstart 概述

      對於網絡安裝系統,在linux 下面最熟悉的應該就是 Kickstart 以及 cobbler。寫這篇文章的目的在於我公司目前使用的就是 Kickstart,所有操作系統的版本為 Centos 6.4,和個人的習慣不同,個人崇尚前沿技術以及由於以前做Docker相關,所有操作系統也是Centos 7.2以上版本,對於網絡安裝系統選擇,個人也推薦使用 cobbler。好了,廢話就不多說了,如果大家有興趣可以參考cobbler相關文檔,接下來我們就准備相關實驗環境。

1.2 滿足Kickstart安裝系統的需求

  1) 網卡必須支持PXE引導;

      2) 客戶端需要有與Kickstart 通信的IP地址,這里一般都是通過DHCP自動分配IP地址來實現;

  3) 提供引導所需的文件,內核文件,內核鏡像文件等,此時一般通過tftp-server等實現;

  4) kickstart文件,它主要實現自動化安裝的過程,比如配置主機名、添加用戶、安裝系統后相關操作;

      5) 提供安裝源,一般就是NFS/ftp/httpd等;

總結:通過如上需求,我們就知道需要安裝的相關服務,如DHCP/tftp-server/syslinux/kickstart/vsftpd等; 

 

二、配置Kickstart

2.1 環境准備

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# getenforce 
Permissive

2.2 准備安裝源

提示:我這里是能出公網,所以就不配置私有yum原,如果不能出公網,根據自己環境配置yum源即可,這里過程就略;

2.3 安裝DHCP服務

[root@localhost ~]# yum install dhcp ntpdate syslinux -y && ntpdate time.windows.com

###備份原始配置文件

cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak_$(date +%Y-%m-%d-%H-%M)

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.100.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.100.1;
option time-offset -18000; # Eastern Standard Time 
range dynamic-bootp 192.168.100.60 192.168.100.100;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.100.1;
filename "pxelinux.0";
}

###在多網卡的情況下綁定網卡啟動DHCP服務

[root@localhost pub]# cat /usr/lib/systemd/system/dhcpd.service 
[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
Wants=network-online.target
After=network-online.target
After=time-sync.target

[Service]
Type=notify
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid eno33554984

[Install]
WantedBy=multi-user.target

###啟動服務

systemctl start dhcpd.service

systemctl enable dhcpd.service

 

2.4 安裝ftp

yum install -y vsftpd

###掛載鏡像

mount /dev/cdrom /mnt

cp -rf /mnt/* /var/ftp/pub/

提示:如果是光盤鏡像可以這樣掛載,mount /opt/CentOS-7-x86_64-Minimal-1511.iso /var/ftp/pub -o loop,但是如果你的ks.cfg文件也放到/var/ftp/pub目錄下,注意不要被覆蓋掉;

###查看相關內容

 ls /var/ftp/pub

###啟動vsftp服務

systemctl start vsftpd
systemctl enable vsftpd 

2.5 tftp安裝

yum install -y tftp-server tftp syslinux-tftpboot

cp /etc/xinetd.d/tftp /etc/xinetd.d/tftp.bak_$(date +%Y-%m-%d-%H-%M)

cat /etc/xinetd.d/tftp

service tftp
{
socket_type	= dgram
protocol	= udp
wait	= yes
user	= root
server	= /usr/sbin/in.tftpd
server_args	= -s /var/lib/tftpboot
disable	= no #此處將yes該為no
per_source	= 11
cps	= 100 2
flags	= IPv4
}

###配置tftp-server

cp -rf /usr/share/syslinux/* /var/lib/tftpboot

mkdir /var/lib/tftpboot/pxelinux.cfg

mkdir /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7

touch /var/lib/tftpboot/pxelinux.cfg/default 
chmod 755 /var/lib/tftpboot/pxelinux.cfg/default 


[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default 
default menu.c32
prompt 1
timeout 10

menu title ########## PXE Boot Menu ##########

label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
menudefault
kernel centos7/vmlinuz
append initrd=centos7/initrd.img text ks=ftp://192.168.100.1/pub/ks.cfg

label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp

label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.100.1/pub devfs=nomount inst.vnc inst.vncpassword=password 

2.6 配置Kickstart

 

[root@localhost ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg

[root@localhost ~]# cat /var/ftp/pub/ks.cfg 
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://192.168.100.1/pub"
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network --bootproto=dhcp --device=eno16777736 --onboot=yes --ipv6=auto
network --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$JqUyORpkn8xu8.i/$60aNcdZwMEjSkRgB3nqDrNw0sWJ7PYTUM/EKjvZWYgD8jkfiuEU8vjhI/BqVYcJvs6UiOpf5GtH3jwBAfhBSP0
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
# SELinux configuration
selinux --disabled

%packages
@^minimal
@core
kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

###檢查是否存在錯誤

yum install pykickstart
ksvalidator /var/ftp/pub/anaconda-ks.cfg

###啟動相關服務

systemctl restart ftpd

systemctl restart vsftpd

systemctl restart dhcpd

相關鏈接:https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html

相關鏈接:http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/


免責聲明!

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



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