应答文件编写
1.编写介绍
#平台=x86, AMD64, 或 Intel EM64T
#版本=DEVEL
# 防火墙配置
firewall --disabled
# 安装操作系统而非升级
install
# 使用网络进行安装
url --url="http://my.centos.server/centos/8/"
# Root 密码
rootpw --iscrypted $1$somesalt$someencryptedstring
# 系统授权信息
auth --useshadow --passalgo=sha512
# 使用文本模式安装
text
# 系统键盘
keyboard us
# 系统语言
lang en_US
# SELinux 配置
selinux --enforcing
# 安装日志记录级别
logging --level=info
# 系统时区
timezone America/New_York
# 系统引导程序配置
bootloader --location=mbr
# 清除主引导记录
zerombr
# 分区清理信息
clearpart --all --initlabel
# 磁盘分区信息
part / --fstype="xfs" --size=1 --grow --asprimary
part swap --fstype="swap" --size=1024
# 系统引导程序配置
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# 基础安装的源
repo --name="BaseOS" --baseurl=file:///run/install/repo/BaseOS
# 附加源
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream
%packages
@^minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
1.1 命令介绍
# 1.url:指定安装源的 URL。例如:
url --url=http://mirror.centos.org/centos/7/os/x86_64/
# 2.lang:设置系统的语言。例如:
lang en_US.UTF-8
# 3.keyboard:设置键盘布局。例如:
keyboard us
# 4.rootpw:设置 root 用户的密码。可以是明文密码或加密密码。例如:
rootpw --iscrypted $1$2TeoFGRN$EeykyMirEiMIya57QmbG71 # 加密写法
rootpw --plaintext "yourpassword" # 明文写法
# 5.timezone:设置系统时区。例如:
timezone America/New_York --isUtc
# 6.autopart:自动分区。例如:
autopart --type=lvm
# 7.part 或 partition:创建一个分区。例如:
part / --fstype="ext4" --grow --size=1
将创建一个 ext4 文件系统的根分区,大小至少为 1 MB,并尽可能大。
# 8.network:配置网络设置。例如:
network --bootproto=dhcp --device=eth0 --onboot=on
将配置网络接口 eth0 使用 DHCP 获取 IP 地址,并在启动时激活。
# 9.%packages ... %end:指定要安装的软件包和软件包组。例如:
%packages
@^minimal
wget
curl
%end
这将安装 minimal 软件包组,以及 wget 和 curl 软件包。
# 10.%post ... %end:安装完成后执行的脚本。例如:
%post
echo "Installation completed!" > /root/install.log
%end
这将在安装完成后,在 /root 目录下创建一个名为 install.log 的文件。
# 11.安装方式和媒体
cdrom:从 CD 或 DVD 安装。
harddrive:从硬盘安装。
nfs:从 NFS 服务器安装。
# 12.引导装载程序
bootloader:指定引导装载程序的安装位置和选项。
# 13.用户和账户
user:创建一个新用户。例如:
user --name=john --password=$1$2TeoFGRN$EeykyMirEiMIya57QmbG71 --iscrypted --gecos="John Doe"
group:创建一个新组。
# 14.防火墙
firewall:配置防火墙。
# 15.服务
services:启动或停止服务。
# 16.硬件
device:配置硬件设备。
driverdisk:指定驱动磁盘。
# 17.系统
auth:配置认证设置。
selinux:配置 SELinux。
firstboot:配置首次启动行为。
# 18.X 窗口系统
xconfig:配置 X 窗口系统。
# 19.预安装脚本
%pre ... %end:在安装开始前执行的脚本。
# 20.其他
reboot:安装完成后重启。
poweroff:安装完成后关闭电源。
2.CentOS 7应答文件
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$kIe7kyAB$s6vXjTrLuOq6AJ.cDRvE51
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://10.0.0.109/centos/7/os/x86_64"
# System bootloader configuration
bootloader --append="net.ifnames=0" --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="ext4" --size=10000
part /boot --fstype="ext4" --size=10000
part swap --fstype="swap" --size=2048
%post
releasever=7
basearch=x86_64
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/Base.repo <<EOF
[base]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
https://mirrors.cloud.tencent.com/centos/$releasever/os/$basearch/
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=0
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
https://mirrors.cloud.tencent.com/centos/$releasever/extras/$basearch/
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch/
https://mirrors.cloud.tencent.com/epel/$releasever/$basearch/
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPG-KEY-EPEL-7
EOF
%end
3.CentOS 8应答文件
#version=RHEL8
# Use graphical install
text
reboot
selinux --disabled
firewall --disabled
url --url="http://10.0.0.109/centos/8"
%packages
@^minimal-environment
%end
# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network --hostname=centos8.5
# Use CDROM installation media
# Run the Setup Agent on first boot
firstboot --enable
# 初始化硬盘
zerombr
# 清理标签
#clearpart -all --initlabel
bootloader --append="net.ifnames=0" --location=mbr
ignoredisk --only-use=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part /data --fstype="xfs" --ondisk=sda --size=51200
part swap --fstype="swap" --ondisk=sda --size=2048
part / --fstype="xfs" --ondisk=sda --size=102400
part /boot --fstype="ext4" --ondisk=sda --size=1024
# System timezone
timezone Asia/Shanghai
# Root password
rootpw --iscrypted $1$kIe7kyAB$s6vXjTrLuOq6AJ.cDRvE51
%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
%post
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/Base.repo <<EOF
[xyyBaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
https://mirrors.cloud.tencent.com/centos/$releasever/BaseOS/$basearch/os/
https://mirrors.tuna.tsinghua.edu.cn/cc/$releasever/BaseOS/$basearch/os/
gpgcheck=0
[xyyAppStream]
name=AppStream
baseurl=file:///misc/cd/AppStream
https://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
https://mirrors.cloud.tencent.com/centos/$releasever/AppStream/$basearch/os/
https://mirrors.tuna.tsinghua.edu.cn/cc/$releasever/AppStream/$basearch/os/
gpgcheck=0
[xyyextras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os
https://mirrors.cloud.tencent.com/centos/$releasever/extras/$basearch/os/
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/os/
gpgcheck=0
enabled=1
[xyyepel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch/
https://mirrors.cloud.tencent.com/epel/$releasever/Everything/$basearch/
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch/
gpgcheck=0
enabled=1
%end
4.DHCP工作原理
DHCP (动态主机配置协议,Dynamic Host Configuration Protocol) 是一种网络协议,用于动态地分配 IP 地址给网络中的设备。它使得设备能够自动获取网络配置,无需手动设置,这大大简化了网络管理。
下面是 DHCP 的工作流程:
- 发现(Discover):设备(称为客户端)加入网络时,会广播一个 DHCP Discover 消息,以寻找 DHCP 服务器。这个消息就是在询问“有 DHCP 服务器在吗?”。
- 提供(Offer):DHCP 服务器会响应 DHCP Discover 消息,发送一个 DHCP Offer 消息给客户端。这个消息包含了一个可用的 IP 地址和其他网络配置的提议。
- 请求(Request):客户端收到 DHCP Offer 消息后,会选择一个 DHCP 服务器(如果有多个的话),并向它发送一个 DHCP Request 消息。这个消息告诉服务器,客户端接受其提供的 IP 地址和其他配置。
- 应答(Acknowledge):DHCP 服务器收到 DHCP Request 消息后,会发送一个 DHCP Acknowledge 消息给客户端,确认已经为客户端分配了 IP 地址。
- 租期(Lease):分配给客户端的 IP 地址并不是永久的,它有一个“租期”。租期过期后,客户端必须重新请求 IP 地址。客户端也可以在租期结束之前,提前请求续租。
- 释放(Release):当客户端不再需要该 IP 地址时(例如,设备被关闭或离开网络),它会发送一个 DHCP Release 消息,将 IP 地址返回给 DHCP 服务器。然后这个 IP 地址可以被分配给其他设备。
- NACK(Negative Acknowledgement):如果客户端请求一个无效或者不再可用的 IP 地址(例如,如果 IP 地址已经被其他设备占用,或者客户端移动到了一个新的子网),DHCP 服务器可能会发送一个 NACK 消息给客户端,拒绝其请求。在收到 NACK 消息后,客户端会开始一个新的 DHCP 请求过程。
- 拒绝(Decline):如果客户端检测到提供的 IP 地址已经在网络上被其他设备使用,它会发送一个 Decline 消息给 DHCP 服务器,拒绝这个 IP 地址。然后开始一个新的 DHCP 请求过程。
- 静态 DHCP(或称为 DHCP 预留):在 DHCP 服务器上,管理员可以设置一些特定的规则,使得特定的设备(基于其 MAC 地址)总是获得同一个 IP 地址。这种机制允许网络中的某些设备有固定的 IP 地址,但仍然使用 DHCP 协议来获取网络配置。
- DHCP 中继代理(DHCP Relay Agent):在某些大型网络中,DHCP 服务器可能无法直接到达所有的客户端。在这种情况下,可以使用 DHCP 中继代理。DHCP 中继代理会接收客户端的 DHCP Discover 消息,并将其转发到 DHCP 服务器。然后它再将服务器的回应转发回客户端。
- DHCP 选项(DHCP Options):DHCP 不仅可以分配 IP 地址,还可以提供其他网络配置,例如 DNS 服务器地址、默认网关地址、网络时间协议(NTP)服务器地址等。这些都是通过 DHCP 选项来设置的。
5.搭建DHCP服务器
# 要在公司内网中设置 DHCP 服务器,可以选择各种不同的 DHCP 服务器软件,如 dnsmasq、ISC DHCP server 等。以下是使用 CentOS 系统和 ISC DHCP server 搭建 DHCP 服务器的一般步骤:
# 1.安装 DHCP:
sudo yum install dhcp -y
# 2.配置 DHCP:
# DHCP 的配置文件位于 /etc/dhcp/dhcpd.conf。你需要编辑这个文件来设置你的 DHCP 服务器。以下是一个基本的配置例子:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option domain-name-servers 8.8.8.8;
option domain-name "yourdomain.com";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}
# 在这个配置中,DHCP 服务器会分配 IP 地址范围从 192.168.1.100 到 192.168.1.200 的地址,使用 8.8.8.8 作为 DNS 服务器,网络域名为 yourdomain.com,网关地址为 192.168.1.1,广播地址为 192.168.1.255,租期限制为 600 到 7200 秒。
# 3.启动 DHCP 服务:
# 配置完成后,你可以使用以下命令启动 DHCP 服务:
sudo systemctl start dhcpd
# 并设置为开机自启动:
sudo systemctl enable dhcpd
# 4.验证 DHCP 服务:
sudo systemctl status dhcpd
6.dhcpd.conf
选项
# 如下:
subnet:这个声明定义了一个网络子网。你需要为每个 DHCP 服务管理的子网提供一个 subnet 声明。
netmask:这是子网掩码,用于确定子网的大小。
range:这个选项定义了 DHCP 服务器可以分配的 IP 地址范围。
option domain-name-servers:这个选项定义了你的 DNS 服务器的 IP 地址。你可以用逗号分隔多个 IP 地址。
option domain-name:这个选项定义了域名。
option routers:这个选项定义了默认网关的 IP 地址。
option broadcast-address:这个选项定义了子网的广播地址。
default-lease-time:这个选项定义了客户端如果没有请求特定的租赁期限,则 DHCP 服务器将提供多长时间的租赁(以秒为单位)。默认情况下,这通常设置为 600 秒,也就是 10 分钟。
max-lease-time:这个选项定义了 DHCP 服务器提供的最长租赁期限(以秒为单位)。默认情况下,这通常设置为 7200 秒,也就是 2 小时。
host:这个声明定义了一台主机,可以对其进行特殊配置,如静态 IP 分配。
hardware ethernet:这个选项定义了主机的 MAC 地址。
fixed-address:这个选项定义了分配给特定 MAC 地址的固定 IP 地址。
基本参数
# option 表示客户端的,没加表示服务器的
# 1.subnet 和 netmask:这两个命令定义了你想要 DHCP 服务器管理的网络和子网掩码。例如:
subnet 192.168.1.0 netmask 255.255.255.0 {
...
}
# 这表示 DHCP 服务器将管理 192.168.1.0 网络。
# 2.range:这个命令定义了 DHCP 服务器可以分配的 IP 地址范围。例如:
range 192.168.1.100 192.168.1.200;
# 这表示 DHCP 服务器可以分配从 192.168.1.100 到 192.168.1.200 的 IP 地址。
# 3.option domain-name-servers:这个命令设置了客户端应使用的 DNS 服务器的 IP 地址。例如:
option domain-name-servers 8.8.8.8;
# 这表示客户端应使用 8.8.8.8 作为 DNS 服务器。
# 4.option domain-name:这个命令设置了客户端的 DNS 域名。例如:
option domain-name "yourdomain.com";
# 这表示客户端的 DNS 域名应为 "yourdomain.com"。
# 5.option routers:这个命令设置了客户端的默认网关。例如:
option routers 192.168.1.1;
# 这表示客户端的默认网关应为 192.168.1.1。
# 6.option broadcast-address:这个命令设置了客户端的广播地址。例如:
option broadcast-address 192.168.1.255;
# 这表示客户端的广播地址应为 192.168.1.255。
# 7.default-lease-time 和 max-lease-time:这两个命令设置了客户端租约的默认和最大时间(以秒为单位)。例如:
default-lease-time 600;
max-lease-time 7200;
# 这表示默认租约时间是 600 秒,最大租约时间是 7200 秒。
# 8.host:这个命令可以用于设置预留的 IP 地址,这样特定的客户端(基于其 MAC 地址)可以总是获得相同的 IP 地址。例如:
host myclient {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.50;
}
# 这表示 MAC 地址为 00:11:22:33:44:55 的客户端总是会获得 IP 地址 192.168.1.50。
# 9.option subnet-mask:这个命令用于指定子网掩码。例如:
option subnet-mask 255.255.255.0;
# 10.option time-offset:这个命令用于指定时区偏移(以秒为单位)。例如:
option time-offset -18000; # Eastern Standard Time
# 11.option ntp-servers:这个命令用于指定 NTP(网络时间协议)服务器的地址。例如:
option ntp-servers ntp.your-provider.example;
# 12.option netbios-name-servers:这个命令用于指定 NetBIOS 名称服务器的地址。例如:
option netbios-name-servers 192.168.1.1;
# 13.option netbios-node-type:这个命令用于指定 NetBIOS 节点类型。例如:
option netbios-node-type 2;
# 14.group:这个命令用于创建一个 DHCP 参数组,使得一组设备可以共享相同的 DHCP 参数。例如:
group {
next-server 192.168.1.1;
host tftpclient {
hardware ethernet 00:11:22:33:44:55;
filename "pxelinux.0";
}
}
# 这个例子中,next-server 和 filename 参数将被应用于组中的所有设备。
# 15.allow 和 deny:这两个命令用于控制哪些客户端可以获取 DHCP 租约。例如:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
deny unknown-clients;
}
# 这个例子中,只有已知的(在 DHCP 配置文件中明确指定的)客户端可以获取 IP 地址。
范例
# 1.基础的DHCP配置,定义了一个子网和一个地址池
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "mydomain.example";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}
# 2.静态IP分配(通过指定特定的 MAC 地址为特定的设备分配固定的 IP 地址)
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "mydomain.example";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
# 定义一台主机
host myhost {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.200;
}
}
# 3.多个子网
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "mydomain.example";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.10 192.168.2.100;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "myotherdomain.example";
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
default-lease-time 600;
max-lease-time 7200;
}
配置文件
}
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
option domain-name "example.org";
option domain-name-servers 180.76.76.76,223.5.5.5;
default-lease-time 86400;
max-lease-time 106400;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.120 10.0.0.150;
option routers 10.0.0.2;
next-server 10.0.0.109; #tftp Server
filename "pxelinux.0";
}
host testhost {
hardware ethernet 00:0c:29:a5:07:6c;
fixed-address 10.0.0.122;
}
7.Rocky9.2制作应答文件注意事项
1.启动菜单文件里面
label linux9
menu label Auto Install Rocky Linux ^9
kernel rocky9/vmlinuz
append initrd=rocky9/initrd.img inst.ks=http://10.0.0.109/ks/rocky9.cfg
这里的"inst.ks"之前在centos当中直接使用ks就可以,但是在Rocky 9.2当中弃用了,必须写成inst.ks
2.装机过程中提示空间不足,那么就是内存分配少了,2G不行,需要4G才能启动,装机成功以后再改成1G
3.虚拟机装Rocky9.2提示,没有sda这块硬盘,那么很可能选择错了硬盘类型
IDE
SCSI
SATA
NvMe
这里选择SCSI才会有sda这块硬盘,如果选择了nvme,那么设备名可能是"nvme0n1";如果不是的话,那么在安装程序的命令行,输入"shell",使用lsblk或者fdisk -l查看硬盘的设备名,然后根据根据实际的硬盘设备名更改 Kickstart 文件中的 ignoredisk 对应的硬盘名。
8.Rocky9.2应答文件
#version=RHEL8
# Use graphical install
text
reboot
selinux --disabled
firewall --disabled
url --url="http://10.0.0.109/rocky/9/os/x86_64"
%packages
@^minimal-environment
lrzsz
vim
bash-completion
%end
# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network --hostname=Rocky9.2
# Use CDROM installation media
# Run the Setup Agent on first boot
firstboot --enable
# 初始化硬盘
zerombr
# 清理标签
#clearpart -all --initlabel
bootloader --append="net.ifnames=0" --location=mbr
ignoredisk --only-use=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part /data --fstype="xfs" --ondisk=sda --size=51200
part swap --fstype="swap" --ondisk=sda --size=2048
# System timezone
timezone Asia/Shanghai
# Root password
rootpw --iscrypted $1$vH7uEXwe$tNNw5sVlMl3dvNXk0Hx/i1
%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
0 Comments