什么是PXE?
严格来说,PXE 并不是一种安装方式,而是一种引导的方式。
进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC)
即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。
协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,
当计算机引导时,BIOS 把 PXE client 调入内存执行,
由 PXE client 将放置在远端的文件通过网络下载到本地运行。
运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。
DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,
由于是给 PXE client 分配 IP 地址,
所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。
此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。
PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
什么是kickdtart?
KickStart是一种无人职守安装方式。
KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;
在其后的安装过程中(不只局限于生成KickStart安装文件的机器)
当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件
当找到合适的参数时,就采用找到的参数,
当没有找到合适的参数时,才需要安装者手工干预。
这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,
安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。
等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
首先 我们要知道BIOS引导顺序为硬盘(在前)、网络(在后)
我们不必要更改BIOS引导顺序,只需要设置快速启动为网络就行
执行 PXE + KickStart安装需要准备内容:
[root@server222 yum.repos.d]# cat bendi.repo
[bendi]
name=///mnt/cdrom
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root@server222 yum.repos.d]# tail -n 1 /etc/fstab
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0
[root@server222 yum.repos.d]# mount -a
[root@server222 yum.repos.d]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 4.7G 13G 28% /
devtmpfs devtmpfs 977M 0 977M 0% /dev
tmpfs tmpfs 993M 0 993M 0% /dev/shm
tmpfs tmpfs 993M 9.0M 984M 1% /run
tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt/cdrom
/dev/sda1 xfs 1014M 161M 854M 16% /boot
tmpfs tmpfs 199M 24K 199M 1% /run/user/0
[root@server222 yum.repos.d]# yum install vsftpd -y
·····过程省略·······
[root@server222 yum.repos.d]# systemctl start vsftpd
[root@server222 yum.repos.d]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@server222 yum.repos.d]# yum install tftp tftp-server xinetd -y
·····过程省略······
# 配置tftp服务器:
[root@server222 yum.repos.d]# vim /etc/xinetd.d/tftp
# 将13行以及14行改为一下内容
13 server_args = -s /tftpboot
14 disable = no
[root@server222 yum.repos.d]# mkdir /tftpboot
server_args = -s /tftpboot 表示服务器默认的目录是/tftpboot
[root@server222 yum.repos.d]# systemctl start xinetd
[root@server222 yum.repos.d]# lsof -i :69
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 3220 root 5u IPv4 38515 0t0 UDP *:tftp
若没有lsof这个命令,就安装,命令:yum install lsof -y
[root@server222 yum.repos.d]# yum install dhcp -y
# 配置DHCP服务
[root@server222 yum.repos.d]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
给DHCP服务添加一张VMNET4网卡,IP设置为192.168.1.10
[root@server222 yum.repos.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:42:82:3a brd ff:ff:ff:ff:ff:ff
inet 192.168.176.222/24 brd 192.168.176.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::1bd0:d77:f2c2:6f3/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:3a:c5:62 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:3a:c5:62 brd ff:ff:ff:ff:ff:ff
6: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:42:82:44 brd ff:ff:ff:ff:ff:ff
inet6 fe80::e149:fe60:a92f:1d60/64 scope link
valid_lft forever preferred_lft forever
此时就会发现ens37这个网卡,下面来给此网卡配一个IP
[root@server222 yum.repos.d]# ifconfig ens37 192.168.1.10/24
下面就可以更改配置文件
[root@server222 yum.repos.d]# cd /etc/dhcp/
[root@server222 dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
[root@server222 dhcp]# > dhcpd.conf
[root@server222 dhcp]# vim dhcpd.conf
[root@server222 dhcp]# cat dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200; # 地址池
option domain-name-servers 192.168.1.1; # dns
option domain-name "internal.example.org"; # 域名
option routers 192.168.1.1; # 默认网关
option broadcast-address 192.168.1.255; # 广播地址
default-lease-time 600; # 默认租约期限
max-lease-time 7200; # 最大租约期限
next-server 192.168.1.10; # 下一跳
filename "pxelinux.0"; # 定义pxe
}
[root@server222 dhcp]#
此处配置完,先不启动DHCP ,等所有的软件安装好,最后来启动。
[root@server222 dhcp]# yum install system-config-kickstart syslinux -y
[root@server222 dhcp]# cd /tftpboot/
[root@server222 tftpboot]# mkdir pxelinux.cfg
[root@server222 tftpboot]# ls
pxelinux.cfg
[root@server222 tftpboot]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[root@server222 tftpboot]# cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot/
[root@server222 tftpboot]# cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot/
[root@server222 tftpboot]# cp /mnt/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
/usr/share/syslinux/pxelinux.0
开机启动引导文件
/mnt/cdrom/images/pxeboot/initrd.img
内核初始化文件(在镜像里面)
/mnt/cdrom/images/pxeboot/vmlinuz
内核初始化文件
/mnt/cdrom/isolinux/isolinux.cfg
开机引导文件
[root@server222 tftpboot]# vim /tftpboot/pxelinux.cfg/default
1 default linux # 指定默认入口名称
64 append initrd=initrd.img inst.repo=ftp://192.168.1.10/pub inst.ks=ftp://192.168.1.10/ks.cfg # 通过ftp服务器方式来访问kickstart文件
[root@server222 tftpboot]#
[root@server222 tftpboot]# chmod 644 /tftpboot/pxelinux.cfg/default
[root@server222 tftpboot]# mount /dev/cdrom /var/ftp/pub/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server222 tftpboot]# vim /etc/fstab
[root@server222 tftpboot]# tail -n 1 /etc/fstab
/dev/cdrom /var/ftp/pub iso9660 defaults 0 0
[root@server222 tftpboot]#
[root@server222 tftpboot]# vim /etc/yum.repos.d/bendi.repo
[root@server222 tftpboot]# cat /etc/yum.repos.d/bendi.repo
[development] # 此处要改成development
name=///mnt/cdrom
baseurl=file:///var/ftp/pub
enabled=1
gpgcheck=0
[root@server222 tftpboot]#
[root@server222 tftpboot]# umount /mnt/cdrom/
[root@server222 tftpboot]# mount -a
[root@server222 tftpboot]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 4.8G 13G 28% /
devtmpfs devtmpfs 977M 0 977M 0% /dev
tmpfs tmpfs 993M 0 993M 0% /dev/shm
tmpfs tmpfs 993M 9.0M 984M 1% /run
tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 161M 854M 16% /boot
tmpfs tmpfs 199M 20K 199M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /var/ftp/pub
[root@server222 tftpboot]#
确保
/etc/yum.repos.d/
目录下仅仅只有一个配置文件
[root@server222 tftpboot]# system-config-kickstart
如果报出一下错误,请在图形界面中打开终端进行再次输入命令,因为文本界面弹不出来一个界面
Could not open display because no X server is running.
Try running ‘system-config-kickstart --help’ for a list of options.
可将默认语言改为简体中文
网络配置以及防火墙配置可以先不用配置,默认自动分配IP
脚本文件
rm -rf /etc/yum.repos.d/*
echo '[rhel-source]
name=Red Hat Enterprise Linux
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0' > /etc/yum.repos.d/rhel7.repo
ctrl + s 保存并退出
ks.cfg就是无人值守安装时要用的Kickstart文件
[root@server222 pub]# cd
[root@server222 ~]# ls
anaconda-ks.cfg ks.cfg 模板 图片 下载 桌面
initial-setup-ks.cfg 公共 视频 文档 音乐
[root@server222 ~]# cp ks.cfg /var/ftp/
[root@server222 ~]# systemctl restart vsftpd
[root@server222 ~]# systemctl start dhcpd
[root@server222 ~]# systemctl enable vsftpd
[root@server222 ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@server222 ~]# vim /etc/selinux/config
[root@server222 ~]# awk -F '=' 'NR==7 {print $2}' /etc/selinux/config
disabled
[root@server222 ~]# systemctl stop firewalld.service
[root@server222 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
如果是服务器,请忽略这步创建虚拟机
创建虚拟机的步骤不再演示,只演示重要部分