1.安装配置dhcp服务
yum install dhcp -y
vim /etc/dhcp/dhcpd.conf
#新增一个子网信息
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.10 10.0.0.100;
option domain-name-servers 223.5.5.5;
option routers 10.0.0.2;
option broadcast-address 10.0.0.255;
default-lease-time 600;
max-lease-time 7200;
next-server 10.0.0.4;
filename "pxelinux.0";
}
/etc/init.d/dhcpd start
systemctl enable dhcpd
netstat -lntup |grep 67
特殊参数next-server 和 filename说明
filename:网络引导程序文件名称
next-server: tftp服务所在IP地址
2.安装配置tftp服务
yum install tftp-server -y
vim /etc/xinetd.d/tftp
#主要修改disable,改为no
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
service tftp-server start
systemctl enable tftp-server
netstat -lntup |grep 69
**server_args : /var/lib/tftpboot **该路径为PXE网络引导启动的根路径
3.安装配置http服务以及挂载ISO至HTTP站点目录
yum install httpd -y
systemctl start httpd
systemctl enable httpd
#上传ISO至根目录
[root@server ~]# mkdir -p /var/www/html/pub
[root@server ~]# mount /root/CentOS-7-x86_64-DVD-1804.iso /var/www/html/pub/
mount: /dev/loop0 is write-protected, mounting read-only
[root@server ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 36G 7.4G 29G 21% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 80K 2.0G 1% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 107M 391M 22% /boot
/dev/loop0 iso9660 4.2G 4.2G 0 100% /var/www/html/pub
4.安装syslinux并且复制所有相关启动文件到网络引导启动的根路径下
yum install syslinux -y
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp -a /var/www/html/pub/isolinux/* /var/lib/tftpboot/
5.创建配置Kickstart自动应答文件
5.1参考其他系统的ks.cfg文件,再加已修改使用
红帽系的系统可以参考根路径下的ks文件,这个文件是安装完系统后,自动生成的记录文件,默认在/root/目录下
#创建Kickstart应答文件存放目录:
mkdir -p /var/www/html/ks
[root@localhost ~]# cat /root/anaconda-ks.cfg
#platform=86, AMD64, or Intel EM64T
#version=DEVEL
# System authorization information
auth --useshadow --passalgo=sha512
# Install OS instead of upgrade
install
# Use network installation
url --url="http://10.0.0.4/pub"
# Use graphical install
graphical
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=None --activate
network --hostname=localhost.localdomain
# Reboot after installation
reboot
# Root password
rootpw --iscrypted $1$Bj2DiIyk$NoDoZmT1i2fLwrQrL/VGE0
# SELinux configuration
selinux --disabled
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="xfs" --ondisk=sda --size=512
part pv.92 --asprimary --fstype="lvmpv" --ondisk=sda --size=60927
volgroup vg0 --pesize=4096 pv.92
logvol swap --fstype="swap" --size=1024 --name=swap --vgname=vg0
logvol / --fstype="xfs" --grow --size=1024 --name=root --vgname=vg0
%packages
@^minimal
@core
chrony
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
该reference文件是CentOS7.5 minial机器下生成的,个人感觉磁盘分区那一块还不够完善,若要使用还需要修改
#磁盘逻辑卷分区reference参考如下:
clearpart --all --initlabel
part /boot --fstype=xfs --ondisk=sda --size=512 --asprimary
part pv.1 --grow --fstype=lvmpv --ondisk=sda --size=1 --asprimary
volgroup vg0 --pesize=4096 pv.1
logvol / --fstype=xfs --grow --name=root --size=1024 --vgname=vg0
logvol swap --fstype="swap" --name=swap --size=1024 --vgname=vg0
ondisk : 强制在特定磁盘上创建分区
asprimary : 强制将分区自动分配为主分区,否则分区失败
grow : 告诉逻辑卷增长以填充可用空间,如果没有maxsize最大值限制,可自动增长至最大
5.2利用CentOS提供的一个图形化配置工具system-config-kickstart生成
[root@server ~]# yum install system-config-kickstart -y
启动工具命令:
system-config-kickstart
Perform installation in text mode(graphical is default) : 默认不勾选安装的是graphical图形界面
Pre-installation script表示安装前的脚本设置,可用参数很少,一般不使用
Post-installation Script 表示安装后的脚本设置,可用于安装完成后的系统初始化设置
因为用kickstart图形化配置工具会有个别细节参数没有涉及到,类似分区等等,所以我这里采用的是第三种方式参考官方文档配置
5.3参考Kickstart官方文档手动配置
最小化安装
[root@pxe ~]# cat /var/www/html/ks/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'# Reboot after installation
reboot
# Root password
rootpw --iscrypted $1$Bj2DiIyk$NoDoZmT1i2fLwrQrL/VGE0
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://10.0.0.4/pub"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=None
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --enable
# SELinux configuration
selinux --disabled
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
#part /boot --fstype="xfs" --size=300
#part / --fstype="xfs" --size=20480
#part swap --fstype="swap" --size=2048
part /boot --fstype=xfs --ondisk=sda --size=512 --asprimary
part pv.1 --grow --fstype=lvmpv --ondisk=sda --size=1 --asprimary
volgroup vg0 --pesize=4096 pv.1
logvol / --fstype=xfs --grow --name=root --size=1024 --vgname=vg0
logvol swap --fstype="swap" --name=swap --size=1024 --vgname=vg0
%packages
@^minimal
@core
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
6.配置引导启动菜单
[root@server ~]# mkdir -p /var/www/html/ks
[root@server ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@server ~]# cp /var/www/html/pub/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@server ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
##下面配置文件选择其中一种模式编写##
####################简化版#########################
default linux
prompt 0
label linux
kernel vmlinuz
append initrd=initrd.img ks=http://10.0.0.4/ks/ks.cfg
################支持多选择版#########################
xxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx
#直接模仿label修改增加一个新label即可,注意kernel和initrd引导文件相对于根路径的路径问题
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
xxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx
注意:拷贝后的启动引导菜单名称需为default,否则网络引导安装系统时识别不到该菜单
特殊参数说明
- timeout : 超时时间
- menu default : 默认菜单
- kernel : 系统内核
- initrd : 内核启动时候解开该文件作为根文件系统使用
- ks : Kickstart自动应答文件路径
7.安装测试
安装过程中…
注意:如果是用虚拟机做实验,内存设置必须大于2GB,否则会报/dev/root/ does not found 的错误
登录系统参考上文给定的分区reference方案查看系统安装后的分区卷组逻辑卷情况
part /boot --fstype=xfs --ondisk=sda --size=512 --asprimary
part pv.1 --grow --fstype=lvmpv --ondisk=sda --size=1 --asprimary
volgroup vg0 --pesize=4096 pv.1
logvol / --fstype=xfs --grow --name=root --size=1024 --vgname=vg0
logvol swap --fstype="swap" --name=swap --size=1024 --vgname=vg0