PXE批量安装服务器
PXE
PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。
pxe是通过网卡引导启动
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 指明?
系统安装过程
- 加载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系统,文件系统驱动等)
实现过程
1.网卡需要查找相关的dhcp服务器(获取地址时间)
2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
3.网卡使用tftp客户端吧引导程序加载到内存中来
4.bios执行引导程序
5.引导程序会去TFTP去查找配置文件
6.根据配置文件去引导安装系统
7.系统安装过程
建立PXE服务器
下载所需的服务软件
[root@rule ~]# yum install -y dhcp vsftpd tftp-server.x86_64 syslinux
配置DHCP服务器
[root@rule ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@rule ~]# vim /etc/dhcp/dhcpd.conf
30 # This is a very basic subnet declaration.
31
32 subnet 172.16.87.0 netmask 255.255.255.0 {
33 range 172.16.87.100 172.16.87.200;
34 option routers 172.16.87.40;
35 next-sever 172.16.87.40; ----指明DHCP服务器的地址
36 filename "pxelinux.0"; ----指明所需下载的文件
37 }
[root@rule ~]# systemctl restart dhcpd
配置tftp服务器
[root@rule ~]# vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no ----默认为yes改为no,启用tftp
per_source = 11
cps = 100 2
flags = IPv4
}
~
~
在tftp的家目录中存放配置文件
[root@rule ~]# cd /var/lib/tftpboot/ ----共享文件的存放位置
[root@rule tftpboot]# mount /dev/sr0 /mnt ----从镜像文件中获取配置文件
mount: /dev/sr0 写保护,将以只读方式挂载
[root@rule tftpboot]# cd /mnt
[root@rule mnt]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@rule mnt]# cd isolinux/
[root@rule isolinux]# ls
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz
boot.msg initrd.img isolinux.cfg splash.png vesamenu.c32
[root@rule isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@rule isolinux]# cd /var/lib/tftpboot/
[root@rule tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@rule tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@rule tftpboot]# cd pxelinux.cfg/
[root@rule pxelinux.cfg]# vim default ----配置文件特定命名
default linux
timeout 600
label linux
kernel vmlinuz
append initrd=initrd.img method=ftp://172.16.87.40/centos7 ks=ftp://172.16.87.40/ks.cfg
label linux text
kernel vmlinuz
append text initrd =initrd.img method=ftp://172.16.87.40/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://172.16.87.40/centos7
[root@rule pxelinux.cfg]# mkdir /var/ftp/centos7 ----在vsftpd服务器家目录下创建可提供安装包的文件夹
[root@rule pxelinux.cfg]# mount /dev/sr0 /var/ftp/centos7 ----进行挂载
mount: /dev/sr0 写保护,将以只读方式挂载
[root@rule pxelinux.cfg]# cd ..
[root@rule tftpboot]# tree
.
├── initrd.img ----提供小型Linux系统
├── pxelinux.0 ----提供引导文件
├── pxelinux.cfg
│ └── default ----配置文件
└── vmlinuz ----镜像内核
1 directory, 4 files
[root@rule tftpboot]# systemctl restart dhcpd tftp.socket vsftpd ----启用所有的服务
准备kickstart应答文件
安装图形化工具
[root@rule tftpboot]# yum install system-config-kickstart -y
已加载插件:fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 system-config-kickstart.noarch.0.2.9.7-1.el7 将被 安装
--> 正在处理依赖关系 system-config-keyboard >= 1.3.1,它被软件包 system-config-kickstart-2.9.7-1.el7.noarch 需要
--> 正在处理依赖关系 system-config-language,它被软件包 system-config-kickstart-2.9.7-1.el7.noarch 需要
--> 正在处理依赖关系 system-config-date,它被软件包 system-config-kickstart-2.9.7-1.el7.noarch 需要
--> 正在检查事务
---> 软件包 system-config-date.noarch.0.1.10.6-3.el7.centos 将被 安装
--> 正在处理依赖关系 system-config-date-docs,它被软件包 system-config-date-1.10.6-3.el7.centos.noarch 需要
--> 正在处理依赖关系 gnome-python2-canvas,它被软件包 system-config-date-1.10.6-3.el7.centos.noarch 需要
---> 软件包 system-config-keyboard.noarch.0.1.4.0-5.el7 将被 安装
--> 正在处理依赖关系 system-config-keyboard-base = 1.4.0-5.el7,它被软件包 system-config-keyboard-1.4.0-5.el7.noarch 需要
---> 软件包 system-config-language.noarch.0.1.4.0-9.el7 将被 安装
--> 正在处理依赖关系 usermode-gtk,它被软件包 system-config-language-1.4.0-9.el7.noarch 需要
--> 正在检查事务
---> 软件包 gnome-python2-canvas.x86_64.0.2.28.1-14.el7 将被 安装
--> 正在处理依赖关系 gnome-python2(x86-64) = 2.28.1-14.el7,它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
--> 正在处理依赖关系 libgnomecanvas(x86-64) >= 2.8.0,它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
--> 正在处理依赖关系 libgnomecanvas-2.so.0()(64bit),它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
--> 正在处理依赖关系 libart_lgpl_2.so.2()(64bit),它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
---> 软件包 system-config-date-docs.noarch.0.1.0.11-4.el7 将被 安装
--> 正在处理依赖关系 rarian-compat,它被软件包 system-config-date-docs-1.0.11-4.el7.noarch 需要
---> 软件包 system-config-keyboard-base.noarch.0.1.4.0-5.el7 将被 安装
---> 软件包 usermode-gtk.x86_64.0.1.111-6.el7 将被 安装
--> 正在处理依赖关系 usermode = 1.111-6.el7,它被软件包 usermode-gtk-1.111-6.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gnome-python2.x86_64.0.2.28.1-14.el7 将被 安装
---> 软件包 libart_lgpl.x86_64.0.2.3.21-10.el7 将被 安装
---> 软件包 libgnomecanvas.x86_64.0.2.30.3-8.el7 将被 安装
---> 软件包 rarian-compat.x86_64.0.0.8.1-11.el7 将被 安装
--> 正在处理依赖关系 rarian = 0.8.1-11.el7,它被软件包 rarian-compat-0.8.1-11.el7.x86_64 需要
--> 正在处理依赖关系 rarian,它被软件包 rarian-compat-0.8.1-11.el7.x86_64 需要
--> 正在处理依赖关系 librarian.so.0()(64bit),它被软件包 rarian-compat-0.8.1-11.el7.x86_64 需要
---> 软件包 usermode.x86_64.0.1.111-5.el7 将被 升级
---> 软件包 usermode.x86_64.0.1.111-6.el7 将被 更新
--> 正在检查事务
---> 软件包 rarian.x86_64.0.0.8.1-11.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=========================================================================================
Package 架构 版本 源 大小
=========================================================================================
正在安装:
system-config-kickstart noarch 2.9.7-1.el7 ali 348 k
为依赖而安装:
gnome-python2 x86_64 2.28.1-14.el7 ali 47 k
gnome-python2-canvas x86_64 2.28.1-14.el7 ali 34 k
libart_lgpl x86_64 2.3.21-10.el7 ali 67 k
libgnomecanvas x86_64 2.30.3-8.el7 ali 226 k
rarian x86_64 0.8.1-11.el7 ali 98 k
rarian-compat x86_64 0.8.1-11.el7 ali 66 k
system-config-date noarch 1.10.6-3.el7.centos ali 591 k
system-config-date-docs noarch 1.0.11-4.el7 ali 527 k
system-config-keyboard noarch 1.4.0-5.el7 ali 33 k
system-config-keyboard-base noarch 1.4.0-5.el7 ali 103 k
system-config-language noarch 1.4.0-9.el7 ali 133 k
usermode-gtk x86_64 1.111-6.el7 ali 110 k
为依赖而更新:
usermode x86_64 1.111-6.el7 ali 193 k
事务概要
=========================================================================================
安装 1 软件包 (+12 依赖软件包)
升级 ( 1 依赖软件包)
总下载量:2.5 M
Downloading packages:
No Presto metadata available for ali
(1/14): gnome-python2-canvas-2.28.1-14.el7.x86_64.rpm | 34 kB 00:00:00
(2/14): libart_lgpl-2.3.21-10.el7.x86_64.rpm | 67 kB 00:00:00
(3/14): gnome-python2-2.28.1-14.el7.x86_64.rpm | 47 kB 00:00:00
(4/14): rarian-0.8.1-11.el7.x86_64.rpm | 98 kB 00:00:00
(5/14): libgnomecanvas-2.30.3-8.el7.x86_64.rpm | 226 kB 00:00:00
(6/14): rarian-compat-0.8.1-11.el7.x86_64.rpm | 66 kB 00:00:00
(7/14): system-config-date-1.10.6-3.el7.centos.noarch.rpm | 591 kB 00:00:00
(8/14): system-config-keyboard-1.4.0-5.el7.noarch.rpm | 33 kB 00:00:00
(9/14): system-config-keyboard-base-1.4.0-5.el7.noarch.rpm | 103 kB 00:00:00
(10/14): system-config-date-docs-1.0.11-4.el7.noarch.rpm | 527 kB 00:00:00
(11/14): system-config-language-1.4.0-9.el7.noarch.rpm | 133 kB 00:00:00
(12/14): system-config-kickstart-2.9.7-1.el7.noarch.rpm | 348 kB 00:00:00
(13/14): usermode-gtk-1.111-6.el7.x86_64.rpm | 110 kB 00:00:00
(14/14): usermode-1.111-6.el7.x86_64.rpm | 193 kB 00:00:00
-----------------------------------------------------------------------------------------
总计 885 kB/s | 2.5 MB 00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在更新 : usermode-1.111-6.el7.x86_64 1/15
正在安装 : libart_lgpl-2.3.21-10.el7.x86_64 2/15
正在安装 : libgnomecanvas-2.30.3-8.el7.x86_64 3/15
正在安装 : usermode-gtk-1.111-6.el7.x86_64 4/15
正在安装 : system-config-language-1.4.0-9.el7.noarch 5/15
正在安装 : gnome-python2-2.28.1-14.el7.x86_64 6/15
正在安装 : gnome-python2-canvas-2.28.1-14.el7.x86_64 7/15
正在安装 : rarian-0.8.1-11.el7.x86_64 8/15
正在安装 : rarian-compat-0.8.1-11.el7.x86_64 9/15
正在安装 : system-config-date-docs-1.0.11-4.el7.noarch 10/15
正在安装 : system-config-date-1.10.6-3.el7.centos.noarch 11/15
正在安装 : system-config-keyboard-base-1.4.0-5.el7.noarch 12/15
正在安装 : system-config-keyboard-1.4.0-5.el7.noarch 13/15
正在安装 : system-config-kickstart-2.9.7-1.el7.noarch 14/15
清理 : usermode-1.111-5.el7.x86_64 15/15
验证中 : libgnomecanvas-2.30.3-8.el7.x86_64 1/15
验证中 : system-config-keyboard-base-1.4.0-5.el7.noarch 2/15
验证中 : system-config-date-docs-1.0.11-4.el7.noarch 3/15
验证中 : system-config-language-1.4.0-9.el7.noarch 4/15
验证中 : system-config-date-1.10.6-3.el7.centos.noarch 5/15
验证中 : system-config-keyboard-1.4.0-5.el7.noarch 6/15
验证中 : system-config-kickstart-2.9.7-1.el7.noarch 7/15
验证中 : gnome-python2-canvas-2.28.1-14.el7.x86_64 8/15
验证中 : rarian-compat-0.8.1-11.el7.x86_64 9/15
验证中 : rarian-0.8.1-11.el7.x86_64 10/15
验证中 : usermode-gtk-1.111-6.el7.x86_64 11/15
验证中 : libart_lgpl-2.3.21-10.el7.x86_64 12/15
验证中 : usermode-1.111-6.el7.x86_64 13/15
验证中 : gnome-python2-2.28.1-14.el7.x86_64 14/15
验证中 : usermode-1.111-5.el7.x86_64 15/15
已安装:
system-config-kickstart.noarch 0:2.9.7-1.el7
作为依赖被安装:
gnome-python2.x86_64 0:2.28.1-14.el7
gnome-python2-canvas.x86_64 0:2.28.1-14.el7
libart_lgpl.x86_64 0:2.3.21-10.el7
libgnomecanvas.x86_64 0:2.30.3-8.el7
rarian.x86_64 0:0.8.1-11.el7
rarian-compat.x86_64 0:0.8.1-11.el7
system-config-date.noarch 0:1.10.6-3.el7.centos
system-config-date-docs.noarch 0:1.0.11-4.el7
system-config-keyboard.noarch 0:1.4.0-5.el7
system-config-keyboard-base.noarch 0:1.4.0-5.el7
system-config-language.noarch 0:1.4.0-9.el7
usermode-gtk.x86_64 0:1.111-6.el7
作为依赖被升级:
usermode.x86_64 0:1.111-6.el7
完毕!
在真机中打开软件
打开软件
修改基本配置
修改语言时区不使用格林威治时间,增加密码取消加密;勾选安装后重启使用文本模式
设置安装方法
设置获取安装地址
设置引导项
选择安装新引导
配置新分区
清除主引导,配置三个分区/、/boot、swap
/boot:开机启动项
swap:交换分区
/:根主分区(使用剩余所有空间)
关闭防火墙和核心防护
不使用图形界面
设置安装后选项
增加统一UID名字的账户
保存到ftp的家目录下(/var/ftp/)
[root@rule tftpboot]# cd /var/ftp/
[root@rule ftp]# ls
centos7 ks.cfg pub