实验一:使用 kickstart 半自动化安装CentOS系统
1.Kickstart应答文件创建
使用创建工具:system-config-kickstart ,注意:此方法 CentOS 8 不再支持
CentOS安装完后,会自动参考当前系统的安装过程,生成一个kickstart文件 /root/anaconda-ks.cfg
在centos7上安装system-config-kickstart包
[root@CentOS7 ~]# yum -y install system-config-kickstart
打开system-config-kickstart工具
[root@CentOS7 ~]# system-config-kickstart
Xlib: extension "RANDR" missing on display "10.0.0.1:0.0".
/usr/share/system-config-kickstart/kickstartGui.py:104: GtkWarning: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
xml = gtk.glade.XML ("/usr/share/system-config-kickstart/system-config-kickstart.glade", domain="system-config-kickstart")
Loaded plugins: fastestmirror, langpacks
注意,如果使用xshell打开的虚拟机,需要提前打开Xmanager – Passive,并在虚拟机上执行以下指令:
[root@CentOS7 ~]# export DISPLAY=10.0.0.1:0.0
下面是打开system-config-kickstart工具后,开始制作应答文件:
安装源通过10.0.0.8这台主机经网络访问
分区信息
注意:package selection这里需要提前把yum源的配置修改一下,否则不显示!
[root@centos ~]#vim /etc/yum.repos.d/***.repo
[development]#把原来"[]"内的内容改成development,其它不变
system-config-kickstart执行之后最终生成的应答文件,显示如下(可另存到root目录下ks7.cfg):
[root@CentOS7 ~]# cat ks7.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --plaintext 123456
# System language
lang zh_CN
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=eth0
# Halt after installation
halt
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://10.0.0.8/centos/7/os/x86_64/"
# System bootloader configuration
bootloader --append="net.ifnames=0" --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="xfs" --size=100000
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=2048
%post
i am post
%end
%packages
@web-server
%end
[root@CentOS7 ~]#
可使用 ksvalidator 工具可以检查kickstart的文件格式是否有语法错误
[root@CentOS7 ~]# ksvalidator ks7.cfg
2.配置引导环境
这里以centos8作为http服务器,存放yum源和应答文件
首先在centos8上安装http服务
[root@CentOS8 ~]# httpd
在centos8上添加一个光驱用于存放centos7的镜像文件作为yum源
在centos8上创建相关目录,并挂载centos7的镜像包
[root@CentOS8 ~]# cd /var/www/html
[root@CentOS8 html]# ls
[root@CentOS8 html]# mkdir /var/www/html/centos/8/os/x86_64 -pv
mkdir: created directory '/var/www/html/centos/8'
mkdir: created directory '/var/www/html/centos/8/os'
mkdir: created directory '/var/www/html/centos/8/os/x86_64'
[root@CentOS8 html]# mount /dev/sr1 /var/www/html/centos/7/os/x86_64/
mount: /var/www/html/centos/7/os/x86_64: WARNING: device write-protected, mounted read-only.
[root@CentOS8 html]# ls /var/www/html/centos/7/os/x86_64/
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
创建目录用于存放安装centos7的应答文件
[root@CentOS8 html]# mkdir ksdir
从centos7的主机上把用于安装centos7的应答文件传到centos8的主机上
[root@CentOS7 ~]# scp ks7.cfg 10.0.0.8:/var/www/html/ksdir/
可通过浏览器打开验证
3.验证安装centos7系统
从阿里云下载boot安装镜像
新建centos7的虚拟机,光盘导入该镜像文件
开启虚拟机,按Esc键进入如下页面,在boot提示符下输入以下指令进行自动安装系统。
Esc---cd-rom-drive---Esc
系统装好之后提示如下:
实验八:实现pxe安装双系统centos6、centos7
在 CentOS 8 上实现PXE自动化安装 CentOS 6,7
1.安装前准备关闭防火墙和SELINUX,DHCP服务器静态IP
网络要求:关闭Vmware软件中的DHCP服务,基于NAT模式
2.安装相关软件包并启动
[root@centos8 ~]#dnf -y install dhcp-server tftp-server httpd syslinux-nonlinux
[root@centos8 ~]#systemctl enable --now httpd tftp dhcpd
3.配置DHCP服务
[root@centos8 ~]#cat /etc/dhcp/dhcpd.conf
[root@centos8 ~]#cat /usr/share/doc/dhcp-server/dhcpd.conf.example
[root@centos8~]#cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@centos8 ~]#vim /etc/dhcp/dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 180.76.76.76, 223.5.5.5; #DNS addr
default-lease-time 86400; #1D
max-lease-time 172800; #2D
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.50 10.0.0.100; #dhcp ip 分配范围
option routers 10.0.0.2; #网关
next-server 10.0.0.8; #tftp服务器地址
filename "pxelinux.0"; # bootloader 启动文件名
}
4. 准备yum 源和相关目录
[root@centos8 ~]#mkdir -pv /var/www/html/centos/{6,7,8}/os/x86_64/
[root@centos8 ~]#mount /dev/sr0 /var/www/html/centos/6/os/x86_64/
[root@centos8 ~]#mount /dev/sr1 /var/www/html/centos/7/os/x86_64/
[root@centos8 ~]#mount /dev/sr2 /var/www/html/centos/8/os/x86_64
5. 准备kickstart文件
[root@centos8 ~]#mkdir /var/www/html/ksdir/
[root@centos8 ~]#vim /var/www/html/ksdir/ks6.cfg
#参考实验一,在原应答文件的基础修改即可
[root@centos8 ~]#vim /var/www/html/ksdir/ks7.cfg
[root@centos8 ~]#vim /var/www/html/ksdir/ks8.cfg
6. 准备PXE启动相关文件
[root@centos8 ~]#mkdir /var/lib/tftpboot/centos{6,7,8}
#准备CentOS6,7,8各自的内核相关文件
[root@centos8 ~]#cp /var/www/html/centos/6/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6
[root@centos8 ~]#cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
[root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8
[root@centos8 ~]#cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
# pxelinux.0 à bootloader
menu.c32 à启动菜单背景图片
这两个文件由syslinux-nonlinux包提供
#以下三个文件是CentOS8安装所必须文件,CentOS6,7则不需要
[root@centos8~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
#生成安装菜单文件
[root@centos8 ~]#mkdir /var/lib/tftpboot/pxelinux.cfg/
[root@centos8~]#cp /var/www/html/centos/8/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#最终目录结构如下:
[root@CentOS8 tftpboot]# tree
.
├── centos6
│ ├── initrd.img
│ └── vmlinuz
├── centos7
│ ├── initrd.img
│ └── vmlinuz
├── centos8
│ ├── initrd.img
│ └── vmlinuz
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└── default
4 directories, 12 files
7 准备启动菜单文件
[root@CentOS8 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 60
display boot.msg
label linux8
menu label Auto Install CentOS Linux ^8
kernel centos8/vmlinuz
append initrd=centos8/initrd.img ks=http://10.0.0.8/ksdir/ks8.cfg
label linux7
menu label Auto Install CentOS Linux ^7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://10.0.0.8/ksdir/ks7.cfg
label linux6
menu label Auto Install CentOS Linux ^6
kernel centos6/vmlinuz
append initrd=centos6/initrd.img ks=http://10.0.0.8/ksdir/ks6.cfg
label rescue
menu label ^Rescue a CentOS Linux system
kernel centos8/vmlinuz
append initrd=centos8/initrd.img
inst.repo=http://10.0.0.8/centos/8/os/x86_64
8 测试客户端基于PXE实现自动安装
Centos7的安装