pxe+ks安装centos
PXE概述
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统
PXE优点
1、规模化:可以同时装配多台服务器;
2、自动化:安装系统、配置各种服务;
3、远程实现:不需要光盘、U盘等介质进行安装
实现PXE安装条件
1、客户机的网卡需要支持PXE协议,且主板支持网络引导。一般服务器都支持,只需要进入BIOS设置允许从Network或LAN启动即可
2、网络中有一台DHCP服务器以便为客户机自动分配IP地址,指定引导文件位置。
3、服务器要通过(简单文件传输协议)服务来提供系统内核和引导镜像文件的下载。
注意事项
安装成功的最关键因素在于kS脚本的编写,其他nginx tftp dhcp只是辅助用于客户机访问ks,源,传输用的
安装步骤
安装组件功能介绍
Kickstart : 将安装过程的参数写入到ks.cfg文件,实现自动安装配置达到无人值守自动安装
: 支持PXE 引导的网卡中从服务器端下载pxelinux.0文件、vmlinuz、initrd.img等内核引导文件
DHCP : PXE引导过程中先获取IP地址,并提供pxelinux.0文件位置
HTTP : 用于下载ks.cfg以及系统镜像文件
配置nginx
- 安装nginx
可以源码编译安装,如果源里面有需要的版本可以yum安装1
yum install -y nginx
- 挂载镜像将centos7最小化镜像挂载到目录
1
mkdir /data/centos/7/os/x86_64 -p
1
mount CentOS-7-x86_64-Minimal-2009.iso /data/centos/7/os/x86_64
- 修改nginx配置
挂载/data目录1
2
3
4
5
6
7
8
9server {
listen 80;
server_name localhost;
location / {
root /data;
index index.html index.php index.htm;
autoindex on; # 允许显示目录
}
} - 启动nginx
1
systemctl enable --now nginx
- 验证结果
访问http://192.168.42.132/centos/7/os/x86_64,最终实现可以访问到centos挂载的内容
配置dhcp服务
- 安装软件
1
yum install -y dhcp
- 修改主机名
1
systemctl set-hostname pxe.com
- 修改配置
修改/etc/dhcp/dhcpd.conf,对自己的一张网卡设置ip地址为192.168.1.100(具体可以自定义)1
2
3
4
5
6
7
8
9
10
11
12设置租约时间和最大租约时间
default-lease-time 600;
max-lease-time 7200;
定义域名
option domain-name "pxe.com";
定义地址池的子网、掩码、网关和地址池范围,定义地址
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.20;
option routers 192.168.1.1;
next-server 192.168.1.100;
filename "pxelinux.0";
} - 启动服务
1
systemctl enable --now dhcpd
编写KS脚本
每个系统安装完毕之后在/root下都有一个anaconda-ks.cfg文件,这其实就是当前系统安装时用的脚本,我们可以根据此文件进行修改,也可以自己重头来写,也可以安装system-config-kickstart此软件进行图形化编写,如果不会就先安装一遍系统然后根据系统的学习
- 设置新系统root密码
这个密码需要替换到ks脚本里面的rootpw,作为新系统的密码1
python -c 'import crypt;print crypt.crypt("niubi.ks")'
- 存放ks脚本
1
2
3mkdir /data/ksdir
touch /data/ksdir/ks7-mini.cfg
chmod +r /data/ksdir/ks7-mini.cfg - ks脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54version=DEVEL
System authorization information
auth --enableshadow --passalgo=sha512
Use pxe install
url --url=http://192.168.1.100/centos/7/os/x86_64
Use graphical install
graphical
Run the Setup Agent on first boot
firstboot --disable
ignoredisk --only-use=sda
Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
System language
lang en_US.UTF-8
Network information
network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain
Root password
rootpw --iscrypted $6$9SJ2mbfniIe1xZMv$vQGhIJeDNIX7MeIgAV36vew9ptH.F8VuHloW3eacdKAxwDFVAa8TViUZlN8SpZgu22EEySuyegRsPlRLRoftN1
System services
services --enabled="chronyd"
System timezone
timezone Asia/Shanghai --isUtc
System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
Partition clearing information
clearpart --none --initlabel
Disk partitioning information
part /boot/efi --fstype="efi" --ondisk=sda --size=200 --fsoptions="umask=0077,shortname=winnt"
part pv.156 --fstype="lvmpv" --ondisk=sda --size=49974
part /boot --fstype="ext4" --ondisk=sda --size=1024
volgroup centos --pesize=4096 pv.156
logvol swap --fstype="swap" --size=2048 --name=swap --vgname=centos
logvol / --fstype="ext4" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos
packages
@^minimal
@core
chrony
kexec-tools
end
addon com_redhat_kdump --enable --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
配置tftp
- 安装软件
1
yum install -y tftp-server syslinux xinetd
- 修改tftp配置修改如下
1
vim /etc/xinetd.d/tftp
1
2
3
4
5
6
7
8
9
10
11
12
13service
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.d
server_args = -s /var/lib/boot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
} - 拷贝文件
1
2
3
4cd /var/lib/tftpboot
mkdir 7 pxelinux.cfg
cp /usr/share/syslinux/{pxelinux.0,menu.c32} .
cp /data/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} 7 - 修改pxe启动项内容如下,请确保http://192.168.1.100/ksdir/ks7-mini.cfg可以访问
1
vim /var/lib/tftpboot/pxelinux.cfg/default
1
2
3
4
5
6
7
8
9
10
11
12
13如果将值修改为正文mini标签的话,默认选择mini标签,不会让用户选择
default menu.c32
timeout 600
背景标题
menu title ########## GXM-PXE Boot Menu ##########
label mini7
menu label install centos mini 7
kernel 7/vmlinuz
append initrd=7/initrd.img ks=http://192.168.1.100/ksdir/ks7-mini.cfg
label local
menu default
menu label ^Boot from local drive
localboot 0xffff - 启动服务
1
systemctl enable --now xinetd tftp
客户端网络引导启动
设置客户端系统为网络启动,查看开机引导画面测试
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 大锤の博客!
评论