本章将学习基于 PXE(预启动执行环境)技术的网络装机方法,并结合 Kickstart 配置实现无人值守自动安装。
1. 系统装机的三种引导方式 *
启动
操作
系统
1.
硬盘
2.
光驱(
u
盘)
3.
网络启动
pxe
2、系统安装过程
加载
boot loader
Boot Loader
是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设
备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统
内核准备好正确的环境
加载启动安装菜单
加载内核和
initrd
系统(文件才能使用文件)
加载根系统()
运行
anaconda
的安装向导
Linux
安装光盘的安装相关文件
在系统光盘的
isolinux
目录下有和安装相关的文件
boot.cat:
相当于
grub
的第一阶段
isolinux.bin
:光盘引导程序,在
mkisofs
的选项中需要明确给出文件路径,这个文件属于
SYSLINUX
项目
isolinux.cfg
:启动菜单的配置文件,当光盘启动后(即运行
isolinux.bin
),会自动去找
isolinux.cfg
文件
vesamenu.c32
:是光盘启动后的启动菜单图形界面,也属于
SYSLINUX
项目,
menu.c32
提供纯文
本的菜单
memtest
:内存检测程序
splash.png
:光盘启动菜单界面的背景图
vmlinuz
:是内核映像
initrd.img
:
ramfs
文件(精简版的
linux
系统,文件系统驱动等)
网卡
3、什么是PXE
通过网络从远程服务器下载并执行引导程序的技术。
4、PXE 原理和实现过程 *
PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 PXE 严格来说并不是一种安装方式,而是一种引导的方式。
服务端:运行DHCP服务,用来分配IP地址,定位引导程序。
运行TFTP服务,提供引导程序下载。
客户端:网卡支持PXE协议 , 主板支持网络协议
pxe是通过网卡引导启动
1.1
实现的硬件条件
1.BIOS
支持
2.
网卡支持(现在基本都已支持)
3.
需要在
bios
中开启开关,服务器一般没打开(
bmc
界面里打开)
4.
网络中有一台
DHCP
服务器以便为客户机自动分配地址、指定引导文件位置
网卡自带
DHCP
功能
dhcp
指明分配的
ip
地址
vsftpd tftp
5.
服务器通过
tftp
服务(简单文件传输协议)来提供系统内核和引导镜像的下载
udp
()协议 网卡自带
这个功能(不支持其他的远程共享服务)
自带的站点(
/var/lib/tftp?
)
initrd.img
(驱动)
vmlinuz
(内核)
pxelinux.cfg/default
(引导文
件)
pxelinux.0
(小型的
grub
程序)
tftp
指明?
2.
实现过程讲解
1.
网卡需要查找相关的
dhcp
服务器(获取地址时间)
2.
找到后
dhcp
服务器提供
ip
地址,和引导程序(
boot loader
)的地址 还提供给客户机
TFTPserver
地址
(
dhcp
本身不提供
tftp
服务)
3.
网卡使用
tftp
客户端吧引导程序加载到内存中来
4.bios
执行引导程序
5.
引导程序会去
TFTP
去查找配置文件
6.
根据配置文件去引导安装系统
7.
系统安装过程
5、pxe 优点
1.
规模化:同时装配多台服务器
2.
自动化:安装系统、配置各种服务
3.
远程实现:不需要光盘、
U
盘等安装介质
6、操作过程
大概过程
1.
分配给同一局域网内新加机器的地址(配置文件)
dhcp
分配地址
指明
tftp
服务器的地址
2. tftp
服务端开启
udp
配置 默认关闭
3.
安装
syslinux
取得
pxelinux.0
文件
4.
安装
vsftpd
服务挂载软件安装源(
mount /dev/sr0 /var/ftp/centos7
)
5.
将四大文件拷入 (
/var/lib/tftpboot
)
initrd.img
pxelinux.0
(类似
grub
)
pxelinux.cfg/default
(手写)
vmlinuz
6.
将服务开启,关闭防火墙,
selinux
具体操作步骤:
1、yum下载
[root@localhost ~] #yum install tftp-server vsftpd syslinux dhcp -y
2.
将配置文件模板复制到
dhcp
目录下
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf## DHCP Server Configuration file.# see /usr/share/doc/dhcp*/dhcpd.conf.example //配置文件模板在此目录下# see dhcpd.conf(5) man page[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf //将模板文件覆盖掉配置文件(有问题就手打一下)cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y[root@test2 ~]# vim /etc/dhcp/dhcpd.confsubnet 192.168.190.0 netmask 255.255.255.0 {range 192.168.190.200 192.168.190.230;option routers 192.168.190.100;# next-server 192.168.190.100; #指定tftp的服务器地址# filename "pxelinux.0"; #指定启动文件}[root@localhost isolinux]# yum install tftp-server -y[root@localhost isolinux]# rpm -ql tftp-server/etc/xinetd.d/tftp/usr/lib/systemd/system/tftp.service/usr/lib/systemd/system/tftp.socket/usr/sbin/in.tftpd/usr/share/doc/tftp-server-5.2/usr/share/doc/tftp-server-5.2/CHANGES/usr/share/doc/tftp-server-5.2/README/usr/share/doc/tftp-server-5.2/README.security/usr/share/man/man8/in.tftpd.8.gz/usr/share/man/man8/tftpd.8.gz/var/lib/tftpboot
主要文件:
#/etc/xinetd.d/tftp //配置文件
#/var/lib/tftpboot //站点
[root@localhost isolinux]# vim /etc/xinetd.d/tftp#14行改成no,启动服务1 # default: off2 # description: The tftp server serves files using the trivial file transfer \3 # protocol. The tftp protocol is often used to boot diskless \4 # workstations, download configuration files to network-awareprinters, \5 # and to start the installation process for some operating systems.6 service tftp7 {8 socket_type = dgram9 protocol = udp10 wait = yes11 user = root12 server = /usr/sbin/in.tftpd13 server_args = -s /var/lib/tftpboot14 disable = no #14行改成no,启动服务15 per_source = 1116 cps = 100 217 flags = IPv418 }
#每项详解
service tftp
{
socket_type = dgram
protocol = udp
wait = no //wait no表示客户机可以多台一起连接,yes表示客 户机只能一台一台连接,表示是否开启多线程一起工作,否则需要等待
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定TFTP根目录(引导文件 的存储路径) -c允许上传
disable = no //disable no表示开启TFTP服务
per_source = 11 //通过限制一个主机的最大连接数,从而防止某个主机 独占某个服务,这里每个IP地址的连接数是11个
cps = 100 2 //表示服务器最多启动100个连接,如果达到这个数 目将停止启动新服务2秒。在此期间不接受任何请求
flags = IPv4
}
[root@test2 ~]# yum install syslinux -y //引导程序文件需要先安装此服务[root@localhost isolinux]# rpm -ql syslinux |grep pxelinux.0 //安装完成后找到该文件的地址/usr/share/syslinux/gpxelinux.0/usr/share/syslinux/pxelinux.0 //地址[root@localhost isolinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot///拷贝到站点文件里[root@localhost centos7]# yum install vsftpd -y[root@localhost centos7]#rpm -ql vsftpd/var/ftp[root@localhost centos7]# cd /var/ftp[root@localhost centos7]# mkdir centos7[root@localhost centos7]# mount /dev/sr0 /var/ftp/centos7/mount: /dev/sr0 写保护,将以只读方式挂载[root@localhost centos7]# cd /var/ftp/centos7/[root@localhost centos7]# lsCentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEYCentOS-Testing-7EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL[root@localhost centos7]# cd images/[root@localhost images]# lsefiboot.img pxeboot TRANS.TBL[root@localhost images]# cd pxeboot/[root@localhost pxeboot]# lsinitrd.img TRANS.TBL vmlinuz[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/[root@localhost pxeboot]# cd /var/lib/tftpboot/[root@test2 tftpboot]# mkdir pxelinux.cfg[root@test2 tftpboot]# cd pxelinux.cfg/[root@test2 pxelinux.cfg]# vim defaultdefault autoprompt 1label autokernel vmlinuzappend initrd=initrd.img method=ftp://192.168.91.100/centos7label linux textkernel vmlinuzappend text initrd =initrd.img method=ftp://192.168.91.100/centos7label linux rescuekernel vmlinuzappend rescue initrd=initrd.img method=ftp://192.168.91.100/centos7[root@test2 pxelinux.cfg]# cd tftpboot[root@test2 tftpboot]# ls #四大文件initrd.img pxelinux.0 pxelinux.cfg/default vmlinuz[root@localhost pxeboot]# systemctl stop firewalld.service[root@localhost pxeboot]# systemctl start dhcpd[root@localhost pxeboot]# systemctl start tftp[root@localhost pxeboot]# systemctl start vsftpd[root@localhost pxeboot]# setenforce 0
1 安装服务 dhcp tftp-server vsftp syslinux2 修改配置文件dhcpnext-server IP 地址 ;filename "pxelinux.0";tftp-server/etc/xinetd.d/tftp14 行 yes no/var/lib/tftpboot四大文件initrd.img vmlinuz ( 光盘内 images)pxelinux.0 (安装 syslinux )pxelinux.cfg (手动创建文件夹)创建 default 的文件关闭防火墙 selinux开启服务
7、 kickstart 无人值守安装
kickstart
文件主要包括三个部分:命令段,程序包段,脚本段
命令段:指明各种安装前配置,如键盘类型等
命令段中的常见命令:
keyboard:
设定键盘类型 lang: 语言类型 zerombr:清除
mbr clearpart:清除分区
part: 创建分区 rootpw: 指明
root
的密码 timezone: 时区 text: 文本安装界面
network:指定网络设置 firewall:设置防火墙设置 selinux:设置
selinux
设置
reboot
:安装完自动重启
user
:安装完成后为系统创建新用户 url: 指明安装源
程序包段:指明要安装的程序包组或程序包,不安装的程序包等
%packages
@^environment group
: 指定环境包组,如:
@^minimal-environment
@group_name
package
-package
%end
脚本段:
%pre:
安装前脚本
%post:
安装后脚本
注意:
CentOS 8,7,6
不同版本的
kickstart
文件格式不尽相同,不可混用
[root@localhost tftpboot] #yum install system-config-kickstart -y #安装图形化工具
下载了虚拟机应用程序里>系统工具里才有kickstart