PXE的使用和介绍
Intro
PXE 是 Preboot eXecution Environment 的简称, 其为是一种网络引导协议, 它允许计算机通过网络启动操作系统. 使用 PXE, 计算机可以从网络上的服务器获取操作系统镜像, 并在启动时通过网络进行引导, 而不是从本地硬盘或其他存储设备引导。
如:
需要 NIC 支持 PXE 操作. 也需要在 BIOS 中开启.
Wake On LAN 是 PXE NICs 的另一个 feature.
PXE 可以用于 diskless 的主机 (即没有磁盘).
PXE 的具体工作过程为:
需要的组件有:
- PXE boot server
- proxyDHCP server
- TFTP server
需要在一台服务器上搭建 DHCP 和 TFTP.
DHCP 服务器负责为主机分配 IP, 提供启动文件的名称以及 TFTP 服务器的 IP.
TFTP
简单介绍这里提到的 TFTP Server.
proxyDHCP
Software that provide PXE extensions to the non-PXE DHCP environment.
NBP
Network Bootstrap Program 文件.
在 PXE 的规范中, NBP 可以是:
- 任意文件名
- 任意大小
NBPs 是 boot chain process 的 first link.
下面就是一种 boot chain process 的示例:
环境配置
DHCP 配置
其配置文件位于 /etc/dhcp
DHCP 服务器监听 udp 的 67 端口.
需要关闭 SELinux, 将 /etc/selinux/config
文件中的:
1 |
|
改为:
1 |
|
然后:
1 |
|
需要全局添加如:
1 |
|
next-server
用于指定 tftp
的 ip, filename
指定网络引导程序. 其为 tftp 配置中 server_args
的相对路径.
pexlinux.0
文件需要从 syslinux
包中获取.
pxelinux.0
文件是一个 network boot loader program 且与系统无关, 而普通的 Linux 安装时的引导程序为 grub2(磁盘的零磁道的第一个扇区)
正常情况下, 一个 Linux 系统安装完成之后, 其启动流程为:
- BIOS 自检
- 读取引导程序
- GRUB (一段固定的可执行代码)
- BIOS 执行引导程序
- 引导程序读取配置文件
/boot/grub/grub.conf
pxelinux.0
的配置文件位于 pxelinux.cfg
文件夹下, 默认文件名为 default
. 修改配置文件可以定制引导菜单.
实验流程:
- 客户端启动系统, 选择从网卡启动
- 从 DHCP 服务器中获取到 IP 地址等信息
- 获取 tftp server 以及网络引导程序 pxelinux.0 的位置
- 通过网卡读取 tftp server 上的 pxelinux.0 文件到内存中
- 在内存中执行引导程序
- 读取引导程序的配置文件
比较重要的两个文件: initrd.img
(驱动程序), vmlinuz
(内核), 每个系统不同, 都可以在 .iso
文件内找到.
添加菜单.
TFTP 配置
修改 /etc/xineted.d/tftp
中:
1 |
|
改为:
1 |
|
然后:
1 |
|
自动安装配置
实现无人值守安装.
在 CentOS:
1 |
|
是 Linux 自带的工具. 其提供无人值守的安装脚本.
可以把安装源挂载到网页上. 如:
1 |
|
配合 apache 配置到 kickstart 中
内核识别 eth0
, 只是有规则改为其他名称.
yum 源为 [development]
需要改为:
1 |
|
可以用 menu default
设置默认菜单.